From 2e169f7cfacc4e8eb3e12cbcaa7f2de09c9daac1 Mon Sep 17 00:00:00 2001 From: JacobPEvans <20714140+JacobPEvans@users.noreply.github.com> Date: Sat, 25 Apr 2026 09:08:04 -0400 Subject: [PATCH] feat: scaffold pilot pack from VisiCore/cc-edge-claude-code-io - Replace template skeletons with VisiCore gold-standard content: default/inputs.yml (file monitor + OTLP gRPC sources) default/pipelines/route.yml (claude-code-session-logs + claude-code-otel) default/pipelines/claude-code-otel/conf.yml default/pipelines/claude-code-session-logs/conf.yml default/samples.yml, default/pack.yml data/samples/ (19 captured sample events) package.json, README.md - Preserve template tooling (tests/, Makefile, docker-compose.yml, .github/workflows/) for DRY across packs - Validated locally: 7/7 route tests pass, pipeline tests skipped pending fixture authoring Pilot for the dryvist/cc-edge-pack-template DRY scaffold; fixtures will be added incrementally per data/samples/.expected.json convention. --- README.md | 535 +++++++++++++++--- data/samples/.gitkeep | 6 - data/samples/36cP1M.json | 1 + data/samples/CBxGTZ.json | 1 + data/samples/DBvKLd.json | 1 + data/samples/Io4OFW.json | 1 + data/samples/OsXDpa.json | 1 + data/samples/QS0mDG.json | 1 + data/samples/QtXzUr.json | 1 + data/samples/aukWzL.json | 1 + data/samples/bCOM2K.json | 1 + data/samples/bw3bbR.json | 1 + data/samples/go9A8j.json | 1 + data/samples/hO8QQb.json | 1 + data/samples/k0h8NP.json | 1 + data/samples/kkcx4D.json | 1 + data/samples/lCrlnQ.json | 1 + data/samples/mSfzuP.json | 1 + data/samples/nuJv6j.json | 1 + data/samples/smpLil.json | 1 + data/samples/viOToM.json | 1 + default/inputs.yml | 65 ++- default/pack.yml | 5 +- default/pipelines/claude-code-otel/conf.yml | 10 + .../claude-code-session-logs/conf.yml | 10 + default/pipelines/route.yml | 26 +- default/samples.yml | 168 +++++- package.json | 14 +- 28 files changed, 716 insertions(+), 142 deletions(-) delete mode 100644 data/samples/.gitkeep create mode 100644 data/samples/36cP1M.json create mode 100644 data/samples/CBxGTZ.json create mode 100644 data/samples/DBvKLd.json create mode 100644 data/samples/Io4OFW.json create mode 100644 data/samples/OsXDpa.json create mode 100644 data/samples/QS0mDG.json create mode 100644 data/samples/QtXzUr.json create mode 100644 data/samples/aukWzL.json create mode 100644 data/samples/bCOM2K.json create mode 100644 data/samples/bw3bbR.json create mode 100644 data/samples/go9A8j.json create mode 100644 data/samples/hO8QQb.json create mode 100644 data/samples/k0h8NP.json create mode 100644 data/samples/kkcx4D.json create mode 100644 data/samples/lCrlnQ.json create mode 100644 data/samples/mSfzuP.json create mode 100644 data/samples/nuJv6j.json create mode 100644 data/samples/smpLil.json create mode 100644 data/samples/viOToM.json create mode 100644 default/pipelines/claude-code-otel/conf.yml create mode 100644 default/pipelines/claude-code-session-logs/conf.yml diff --git a/README.md b/README.md index ff8e541..2506ce0 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,481 @@ -# cc-edge-pack-template +# Claude Code Pack For Edge -Template repository for new Cribl Edge / Stream packs. Provides the full DRY scaffolding (test harness, validation, release packaging, Makefile, Docker setup) so per-pack repos only contain pack-specific configuration and fixture data. +## Overview -This template is built around two existing references: +This Cribl Edge pack collects Claude Code telemetry from two sources and forwards it to a Cribl Stream worker group for indexing, analysis, and search: -- **Layout & convention**: based on [`VisiCore/cc-edge-claude-code-io`](https://github.com/VisiCore/cc-edge-claude-code-io), the gold-standard pack deployed to the Cribl dispensary. -- **Test pattern**: adopts the [criblpacks](https://github.com/criblpacks) approach (Python + Docker + Cribl management API). See [`criblpacks/cribl-palo-alto-networks/test/`](https://github.com/criblpacks/cribl-palo-alto-networks/tree/main/test). +1. **Session logs** — Monitors the Claude Code projects directory for `.jsonl` conversation transcript files and ships them in real time. +2. **OpenTelemetry (OTLP)** — Receives metrics and logs from Claude Code's built-in OTEL instrumentation via gRPC on port 4317. -CI delegates entirely to reusable workflows in [`dryvist/.github`](https://github.com/dryvist/.github). +## Architecture -## Installation +``` +Claude Code (CLI) ──writes──▶ ~/.claude/projects/**/*.jsonl + │ │ + │ Cribl Edge (file monitor) + │ │ + └──OTLP/gRPC:4317──▶ Cribl Edge (OpenTelemetry source) + │ + Cribl HTTP ──▶ Cribl Stream Worker Group +``` + +## Data Sources + +This pack collects two distinct types of data from Claude Code. You can enable one or both depending on your needs. + +### Session Logs (File Monitor) + +The file monitor input reads the `.jsonl` transcript files that Claude Code writes to disk during every conversation. These contain the **full content** of each session — what the user asked, what Claude responded, which tools were invoked, and what they returned. Use this data for: + +- **Audit and compliance** — Complete record of every interaction +- **Session replay** — Reconstruct exactly what happened in a conversation +- **Content analysis** — Search across prompts, responses, and tool outputs +- **Cost tracking** — Per-session model usage, token counts, and USD cost from summary events + +### OpenTelemetry (OTLP) + +The OTLP input receives **operational telemetry** pushed directly from Claude Code's built-in OpenTelemetry instrumentation over gRPC. This is structured metrics and logs — not conversation content. Use this data for: + +- **Observability dashboards** — API latency, error rates, throughput +- **Resource monitoring** — Token consumption trends, model usage patterns +- **Alerting** — Detect anomalies in cost, latency, or error rates +- **Fleet-wide visibility** — Aggregate telemetry across multiple developers or hosts + +### Choosing Between Them + +``` +Session Logs (File Monitor) +─────────────────────────────────────────────────── +What it captures Full conversation content (prompts, responses, tool calls) +Data format JSONL (one JSON object per line) +Collection method Cribl Edge reads files from disk +Best for Audit, compliance, session replay, content search +Permissions needed Filesystem read access to ~/.claude/projects/ +Contains PII Yes + +OpenTelemetry (OTLP) +─────────────────────────────────────────────────── +What it captures Operational metrics and instrumented logs +Data format OTLP (standard OpenTelemetry protocol) +Collection method Claude Code pushes telemetry over gRPC +Best for Dashboards, alerting, performance monitoring +Permissions needed Network access to port 4317 +Contains PII No +``` + +--- + +## Requirements + +- **Cribl Edge** 4.17.0+ +- **Claude Code** installed for the local user +- **Supported platforms:** Linux, macOS (Sonoma 14+, Sequoia 15+, Tahoe 26), Windows (Server 2016/2019/2022, Windows 10/11) +- **Filesystem permissions:** The Cribl Edge process must have read access to `~/.claude/projects/` and its contents (if using the file monitor input) +- **Port 4317** available for the OTLP gRPC listener (if using the OpenTelemetry input) -Create a new pack repo from this template: +--- -```sh -gh repo create my-org/cc-edge-mything-io \ - --template dryvist/cc-edge-pack-template \ - --public \ - --clone +## Setup: Session Logs (File Monitor) -cd cc-edge-mything-io -make install # creates .venv at repo root and installs deps +The file monitor input requires two things: an environment variable telling Cribl Edge where the session logs live, and filesystem permissions so the Cribl Edge process can read them. + +### Step 1: Set the `CLAUDE_HOME` Environment Variable + +The file monitor path uses `$CLAUDE_HOME` to resolve the correct session log directory. This variable must be set in the Cribl Edge environment. Restart the Cribl service after setting it. + +> Note: replace `` with the user that runs Claude Code. + +#### Linux + +```bash +export CLAUDE_HOME=/home//.claude/projects/ ``` -If you prefer the GitHub UI: navigate to this repo, click **Use this template** → **Create a new repository**. +#### macOS -## Usage +```bash +export CLAUDE_HOME=/Users//.claude/projects/ +``` + +#### Windows -After scaffolding from the template: +Set the environment variable for the Cribl Edge service. You can do this during MSI installation or via the system environment: + +```powershell +# PowerShell (run as Administrator) +[System.Environment]::SetEnvironmentVariable("CLAUDE_HOME", "C:\Users\\.claude\projects\", "Machine") +``` -1. **Customize `package.json`**: replace `name`, `description`, `displayName`, `tags`. Pack name MUST follow the validator convention `cc-edge--io` (or `cc-stream--io`). -2. **Set the pack type in `.github/workflows/test.yml`**: change `pack_type: edge` to `stream` if this is a Stream pack. -3. **Define your inputs** in `default/inputs.yml`. Every input must declare `metadata.datatype` so route filters can match. -4. **Define your routes** in `default/pipelines/route.yml`. Replace the `REPLACE_*` placeholders. All routes MUST `output: __group` (validator rule). -5. **Define your pipelines** in `default/pipelines//conf.yml`. No pipeline named `main` (validator rule). -6. **Drop sample events** in `data/samples/*.json` and catalog them in `default/samples.yml`. -7. **Author test fixtures** in `tests/fixtures//`: - - `.json` (input) - - `.expected.json` (optional partial-match expected output) -8. **Run locally**: `make docker-up && make test` -9. **Validate**: `make validate` builds the `.crbl` and prints the command to run [`/validate-pack`](https://github.com/VisiCore/vct-cribl-pack-validator) against it. -10. **Push & release**: tag `vX.Y.Z` and the release workflow builds and uploads the `.crbl` to a GitHub release. +Or add it via **System Properties > Environment Variables > System variables**. -## Layout +> After setting the variable, restart the Cribl Edge service for it to take effect. ``` -. -├── .github/workflows/ -│ ├── release.yml # Calls dryvist reusable workflow -│ └── test.yml # Calls dryvist reusable workflow -├── data/ -│ └── samples/ # Cribl sample events (referenced by samples.yml) -├── default/ -│ ├── inputs.yml # Source definitions — pack-specific -│ ├── pack.yml # Branding (logo) — pack-specific -│ ├── pipelines/ -│ │ ├── route.yml # Routes — pack-specific -│ │ └── /conf.yml # Pipeline functions — pack-specific -│ └── samples.yml # Sample catalog — pack-specific -├── tests/ -│ ├── conftest.py # GENERIC — never modify -│ ├── cribl_client.py # GENERIC — never modify -│ ├── test_pipelines.py # GENERIC — never modify -│ ├── test_routes.py # GENERIC — never modify -│ ├── requirements.txt # GENERIC — bump versions in template, propagate -│ ├── fixtures/ # Per-pack fixture data -│ │ └── / -│ │ ├── .json # input -│ │ └── .expected.json # expected (optional) -│ └── README.md -├── docker-compose.yml # GENERIC — never modify -├── Makefile # GENERIC — never modify -├── package.json # PACK-SPECIFIC — name, version, tags -├── README.md # PACK-SPECIFIC — describe your pack -├── LICENSE # GENERIC — Apache-2.0 -└── CLAUDE.md # GENERIC — AI assistant guidance +Platform Session Log Path +───────────────────────────────────────────────────────── +Linux /home/{user}/.claude/projects/ +macOS /Users/{user}/.claude/projects/ +Windows C:\Users\{user}\.claude\projects\ ``` -The "GENERIC" files are propagated from this template. When the template improves, downstream packs should pull the changes via cherry-pick or by re-running the relevant section. When something is pack-specific, edit it freely in the pack repo. +> **Note:** Some recent Claude Code versions on Linux may use `~/.config/claude/projects/` instead. Verify which directory contains your `.jsonl` session files before configuring the input. -## API +### Step 2: Grant Filesystem Permissions -This template doesn't expose a programmatic API. It provides: +Claude Code creates `.jsonl` files with restrictive permissions. The approach to granting Cribl Edge read access differs by platform. -- **CLI surface (Makefile)**: `make help`, `install`, `build`, `docker-up`, `docker-down`, `test`, `validate`, `clean` -- **Test fixture surface**: filesystem convention under `tests/fixtures//.{json,expected.json}` — see `tests/README.md` for details -- **CI surface**: `.github/workflows/test.yml` and `release.yml` — both delegate to `dryvist/.github` reusable workflows +#### Linux -## Contributing +Cribl Edge typically runs as the `cribl` user. Since Claude Code creates files with mode `0600` (owner-only), POSIX ACLs are required to grant read access without changing file ownership. -This template is the source of truth for shared pack infrastructure across the Cribl pack ecosystem. Changes here propagate to every downstream pack. +**Directory ACLs:** -When updating: +```bash +# Grant cribl user access to traverse to the projects directory +setfacl -m u:cribl:r-x /home//.claude +setfacl -m u:cribl:r-x /home//.claude/projects -1. Make changes in this repo on a feature branch. -2. Open a PR against `main`. Note that the template's own CI workflows are gated on `is_template == false`, so they won't run here — verify against a real pack instead. -3. Pick a downstream pack (e.g. `VisiCore/cc-edge-claude-code-io`) and apply the same changes there in a parallel PR. Confirm CI green. -4. Merge both. Document the propagation expectation in the PR description. +# Set default ACLs so new subdirectories inherit permissions +setfacl -R -d -m u:cribl:r-x /home//.claude/projects/ +setfacl -R -d -m m::r-x /home//.claude/projects/ +``` -## License +**File ACL Mask Fix:** + +Claude Code creates files with mode `0600`, which sets the POSIX ACL mask to `---` and nullifies all ACL grants. Fix existing files and directories: + +```bash +# Fix mask on files (r-- is sufficient for regular files) +find /home//.claude/projects/ -type f -exec setfacl -m m::r {} + + +# Fix mask on directories (r-x needed for traversal) +find /home//.claude/projects/ -type d -exec setfacl -m m::r-x {} + +``` + +**Cron Job for New Files:** + +Since Claude Code will keep creating files with mode `0600`, add a cron job to periodically fix ACL masks on new `.jsonl` files. This cron entry must be added to the **`cribl` user's** crontab (not root), so the ACL changes are applied in the correct user context: + +```bash +# Edit the cribl user's crontab +sudo crontab -u cribl -e + +# Add this entry (runs every 5 minutes) +*/5 * * * * find /home//.claude/projects/ -type f -name "*.jsonl" ! -perm /g+r -exec setfacl -m m::r {} + 2>/dev/null +``` + +**Verification:** + +```bash +# Confirm cribl user can read a session file +sudo -u cribl cat /home//.claude/projects//.jsonl | head -1 + +# Check that ACL mask is r-- (not ---) on .jsonl files +getfacl /home//.claude/projects//.jsonl | grep mask +# Expected: mask::r-- +``` + +#### macOS + +On macOS, Cribl Edge is typically installed under the current user account (not a separate `cribl` service user). If Edge is running as the same user that owns the Claude Code session files, no additional permission changes are needed. + +If Edge runs as a different user, grant read access using macOS ACLs: + +```bash +# Grant the cribl user read access to the projects directory +chmod +a "cribl allow read,readattr,readextattr,readsecurity,list,search" /Users//.claude +chmod +a "cribl allow read,readattr,readextattr,readsecurity,list,search" /Users//.claude/projects + +# Apply recursively to existing contents +chmod -R +a "cribl allow read,readattr,readextattr,readsecurity,list,search" /Users//.claude/projects/ +``` + +> **Note:** macOS does not support POSIX ACL masks the way Linux does. The `chmod +a` syntax is macOS-specific (uses the NFSv4 ACL model). A periodic `launchd` job or cron entry may still be needed if new files are created with restrictive permissions. + +**Verification:** + +```bash +# List ACLs on the projects directory +ls -le /Users//.claude/projects/ + +# Test read access (if running Edge as a different user) +sudo -u cribl cat /Users//.claude/projects//.jsonl | head -1 +``` + +#### Windows + +On Windows, Cribl Edge runs as the `LocalSystem` account by default. `LocalSystem` has broad read access to local files, so in most cases no additional permissions are required. + +If Cribl Edge is configured to run under a custom service account, grant that account read access to the Claude Code projects directory: + +```powershell +# PowerShell (run as Administrator) +$path = "C:\Users\\.claude\projects" +$acl = Get-Acl $path +$rule = New-Object System.Security.AccessControl.FileSystemAccessRule( + "", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow" +) +$acl.AddAccessRule($rule) +Set-Acl $path $acl +``` + +Or use `icacls` from an elevated command prompt: + +```cmd +icacls "C:\Users\\.claude\projects" /grant ":(OI)(CI)RX" /T +``` + +**Verification:** + +```powershell +# Check effective permissions +icacls "C:\Users\\.claude\projects" + +# Test that the Cribl service can read a session file +Get-Content "C:\Users\\.claude\projects\\.jsonl" -First 1 +``` + +--- + +## Setup: OpenTelemetry (OTLP) + +The OTLP input is preconfigured in the pack and listens on port 4317 out of the box — no Cribl-side setup is needed. You just need to configure Claude Code to send telemetry to it. + +Set the following environment variables in the shell where you run Claude Code: + +```bash +export CLAUDE_CODE_ENABLE_TELEMETRY=1 +export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 +export OTEL_EXPORTER_OTLP_PROTOCOL=grpc +export OTEL_METRICS_EXPORTER=otlp +export OTEL_LOGS_EXPORTER=otlp +export OTEL_METRIC_EXPORT_INTERVAL=60000 +export OTEL_LOGS_EXPORT_INTERVAL=5000 +export OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta +``` -Apache-2.0 — see `LICENSE`. +``` +Variable Description +───────────────────────────────────────────────────────────────────────────────────────── +CLAUDE_CODE_ENABLE_TELEMETRY Enables Claude Code's built-in OTel instrumentation +OTEL_EXPORTER_OTLP_ENDPOINT OTLP collector endpoint (Cribl Edge OTLP source) +OTEL_EXPORTER_OTLP_PROTOCOL Transport protocol (grpc) +OTEL_METRICS_EXPORTER Metrics exporter type (otlp) +OTEL_LOGS_EXPORTER Logs exporter type (otlp) +OTEL_METRIC_EXPORT_INTERVAL Metrics flush interval in ms (default: 60000) +OTEL_LOGS_EXPORT_INTERVAL Logs flush interval in ms (default: 5000) +OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE Metrics temporality (delta) +``` + +> **Tip:** Add these exports to your shell profile (`.bashrc`, `.zshrc`, etc.) so they persist across sessions. If Cribl Edge is running on a remote host, replace `localhost` with the appropriate hostname or IP. + +--- + +## Pack Components + +These are preconfigured in the pack. This section is for reference — no action is needed here unless you want to customize the defaults. + +### Input: `Session-Logs-File-Monitor` + +- **Type:** File Monitor +- **Path:** Resolves via `$CLAUDE_HOME` +- **Filter:** `*.jsonl` +- **Recursive:** Yes +- **Poll interval:** 10 seconds +- **Metadata:** `datatype == 'claude-code-session-logs'` + +Monitors all Claude Code session transcript files. Each `.jsonl` file represents a single conversation session and contains structured JSON events (messages, tool calls, tool results, file snapshots, etc.). + +### Input: `claude-code-otel` + +- **Type:** OpenTelemetry (`open_telemetry`) +- **Protocol:** gRPC +- **Host:** `0.0.0.0` +- **Port:** `4317` +- **TLS:** Disabled +- **Auth:** None +- **OTLP Version:** 1.3.1 +- **Max active connections:** 1000 +- **Metadata:** `datatype == ''claude-code-otel'` + +Receives OTLP telemetry (metrics and logs) directly from Claude Code over gRPC. + +### Route: Session Logs (File Monitor) + +- **Filter:** `datatype=='claude-code-session-logs'` +- **Pipeline:** `claude-code-session-logs` +- **Output:** `Send to Fleet Routes` + +### Route: OpenTelemetry (OTLP) + +- **Filter:** `datatype=='claude-code-otel'` +- **Pipeline:** `claude-code-otel` +- **Output:** `Send to Fleet Routes` + +> **Note:** This pack sends all events to the global route table via **Send to Routes**. Configure your destination + (Splunk, S3, Elastic, etc.) in the fleet's global routes and outputs + +--- + +## Reference: Session Log Event Types + +Each line in a `.jsonl` session log file is a standalone JSON object. Most event types share a common envelope with fields like `sessionId`, `uuid`, `timestamp`, `cwd`, and `type`. The `assistant` and `user` events additionally carry an API-shaped `message` object with `content` blocks and `usage` telemetry. + +### Top-Level Event Types + +Identified by the `type` field on each JSON object: + +``` +Type Description +───────────────────────────────────────────────────────── +assistant Claude's response turns (text, tool invocations, token usage) +user User messages and tool results (stdout/stderr) returned to Claude +summary Conversation summary metadata (model, token counts, cost, turns, duration) +file-history-snapshot File state checkpoints for session undo/restore +system Internal system events (hook summaries, configuration signals) +progress Wrapper for real-time progress updates (see subtypes below) +queue-operation Message queue lifecycle events (enqueue/dequeue) +``` + +### Progress Subtypes + +`progress` events contain a `data.type` field that identifies the specific kind of progress update: + +``` +Subtype Description +───────────────────────────────────────────────────────── +agent_progress Subagent (Task tool) execution progress and streamed responses +tool_result Completed tool execution results returned to the model +hook_progress User-configured hook lifecycle events (start, stop, output) +text Streamed text fragments during assistant response generation +bash_progress Real-time output from long-running Bash tool commands +query_update Web search query sent to a search provider +search_results_received Web search results returned from a search provider +create File or resource creation events from tool execution +update File or resource modification events from tool execution +mcp_progress MCP (Model Context Protocol) server tool execution progress +``` + +### Example Event (summary) + +```json +{ + "type": "summary", + "summary": { + "model": "claude-opus-4-6", + "inputTokens": 42531, + "outputTokens": 1247, + "totalCostUSD": 0.285, + "numTurns": 8, + "durationMs": 134520 + } +} +``` + +--- + +## Reference: OpenTelemetry Metrics and Events + +Claude Code emits 13 telemetry signals over OTLP — 8 metrics and 5 events. -## References +### Metrics -- [VisiCore/cc-edge-claude-code-io](https://github.com/VisiCore/cc-edge-claude-code-io) — pilot pack and structural reference -- [VisiCore/vct-cribl-pack-validator](https://github.com/VisiCore/vct-cribl-pack-validator) — Claude Code skill running 27+ structural checks -- [criblpacks](https://github.com/criblpacks) — Cribl's official pack org; we adopt their test pattern -- [dryvist/.github](https://github.com/dryvist/.github) — hosts the reusable workflows this template calls -- [Cribl management API](https://docs.cribl.io/api-reference/) -- [Cribl pack docs](https://docs.cribl.io/stream/packs/) +Exported via `OTEL_METRICS_EXPORTER`. These are numerical measurements collected at the interval defined by `OTEL_METRIC_EXPORT_INTERVAL`. + +``` +Metric Description +───────────────────────────────────────────────────────────────────────────── +claude_code.session.count Number of Claude Code sessions started +claude_code.cost.usage Cost in USD incurred by API calls +claude_code.token.usage Token consumption (input and output) +claude_code.active_time.total Total active time spent in sessions +claude_code.lines_of_code.count Lines of code written or modified +claude_code.code_edit_tool.decision Code edit tool invocation decisions (accept/reject) +claude_code.pull_request.count Pull requests created +claude_code.commit.count Git commits created +``` + +### Events + +Exported via `OTEL_LOGS_EXPORTER`. These are discrete log entries emitted when specific actions occur during a session. + +``` +Event Description +───────────────────────────────────────────────────────────────────────────── +claude_code.user_prompt User prompt submitted to Claude +claude_code.tool_result Result returned from a tool execution +claude_code.api_request API request sent to the Claude API +claude_code.api_error Error response received from the Claude API +claude_code.tool_decision Model's decision to invoke a specific tool +``` + +--- + +## Troubleshooting + +### File Monitor + +**No events flowing:** + +1. Verify `$CLAUDE_HOME` is set correctly and points to the right directory for your OS. +2. Check that the file monitor discovered files in the Cribl Edge logs. +3. Verify the route is not disabled in the Cribl UI. +4. Confirm the output destination is reachable. + +**EACCES errors in worker log (Linux):** +The `cribl` user cannot read the `.jsonl` files. Run the ACL mask fix commands from the [Linux permissions](#linux) section and restart the Cribl Edge worker: + +```bash +sudo -u cribl /opt/cribl/bin/cribl restart +``` + +**Access denied errors (Windows):** +If running Edge under a custom service account (not `LocalSystem`), apply the NTFS permissions from the [Windows permissions](#windows) section and restart the Cribl Edge service: + +```powershell +Restart-Service CriblEdge +``` + +**Path separator issues (Windows):** +Ensure the `CLAUDE_HOME` variable uses backslashes (`\`) and not forward slashes. The File Monitor source on Windows expects native Windows paths. + +**Stale file tracking:** +Cribl Edge tracks file state in its kvstore. If you need to re-ingest files from the beginning, stop the worker, clear the relevant kvstore directories, and restart. + +- Linux/macOS: `/opt/cribl/state/kvstore/default/file_claude-code-logs*/` +- Windows: `C:\ProgramData\Cribl\state\kvstore\default\file_claude-code-logs*\` + +### OpenTelemetry + +**No OTLP telemetry arriving:** + +1. Confirm `CLAUDE_CODE_ENABLE_TELEMETRY=1` is set in the Claude Code shell environment. +2. Verify `OTEL_EXPORTER_OTLP_ENDPOINT` points to the correct Cribl Edge host and port (`http://localhost:4317`). +3. Check that port 4317 is not blocked by a firewall or already in use by another process. +4. Inspect the Cribl Edge worker logs for connection or parsing errors on the OTLP source. +5. Verify the `claude-code-otel` input is not disabled in the Cribl UI. + +--- + +## Release Notes + + - **1.0.0** — 2026-03-18 + - Initial release + - File monitor input for Claude Code `.jsonl` session logs + - OpenTelemetry (OTLP/gRPC) source for Claude Code native telemetry + - Cross-platform support (Linux, macOS, Windows) + +## Authors + +* Andrew Hendrix - +* Jacob Evans - + +To contact us, please email . + +## Contributing to the Pack + +To contribute to this Pack, or to report any issues or enhancement requests, please connect with **VisiCore Tech** on [Cribl Community Slack](https://cribl-community.slack.com) or email us at: . + +## License +--- +This Pack uses the following license: [`Apache 2.0`](https://github.com/criblio/appscope/blob/master/LICENSE) \ No newline at end of file diff --git a/data/samples/.gitkeep b/data/samples/.gitkeep deleted file mode 100644 index 4f6a1aa..0000000 --- a/data/samples/.gitkeep +++ /dev/null @@ -1,6 +0,0 @@ -# Cribl sample events live here. Each .json file is a Cribl-formatted sample -# (typically a list of {"_raw": "..."} objects, optionally with structured fields). -# -# These files are referenced by default/samples.yml and surfaced in Cribl's UI -# "Sample Data" preview pane. They can also be reused as test fixture inputs -# (copy or symlink into tests/fixtures//). diff --git a/data/samples/36cP1M.json b/data/samples/36cP1M.json new file mode 100644 index 0000000..09737fb --- /dev/null +++ b/data/samples/36cP1M.json @@ -0,0 +1 @@ +[{"_raw":"{\n \"parentUuid\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n \"isSidechain\": false,\n \"userType\": \"external\",\n \"cwd\": \"/home/user/Documents/my-project\",\n \"sessionId\": \"11111111-2222-3333-4444-555555555555\",\n \"version\": \"2.1.44\",\n \"gitBranch\": \"HEAD\",\n \"slug\": \"example-session-slug\",\n \"type\": \"progress\",\n \"data\": {\n \"message\": {\n \"type\": \"assistant\",\n \"timestamp\": \"2026-02-17T06:12:01.254Z\",\n \"message\": {\n \"model\": \"claude-opus-4-6\",\n \"id\": \"msg_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"type\": \"message\",\n \"role\": \"assistant\",\n \"content\": [\n {\n \"type\": \"tool_use\",\n \"id\": \"toolu_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"name\": \"Grep\",\n \"input\": {\n \"pattern\": \"cc-edge|cc-logs|claude|nvidia-smi\",\n \"path\": \"/opt/cribl/state\",\n \"-i\": true,\n \"output_mode\": \"files_with_matches\",\n \"glob\": \"*.yml\"\n },\n \"caller\": {\n \"type\": \"direct\"\n }\n }\n ],\n \"stop_reason\": null,\n \"stop_sequence\": null,\n \"usage\": {\n \"input_tokens\": 1,\n \"cache_creation_input_tokens\": 2262,\n \"cache_read_input_tokens\": 31127,\n \"cache_creation\": {\n \"ephemeral_5m_input_tokens\": 0,\n \"ephemeral_1h_input_tokens\": 2262\n },\n \"output_tokens\": 3,\n \"service_tier\": \"standard\",\n \"inference_geo\": \"not_available\"\n },\n \"context_management\": null\n },\n \"requestId\": \"req_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"uuid\": \"22222222-3333-4444-5555-666666666666\"\n },\n \"normalizedMessages\": [],\n \"type\": \"agent_progress\",\n \"prompt\": \"Find the Cribl Edge pack configuration files related to the project. Search the Cribl Edge install directory for relevant inputs, pipelines, routes, and pack manifests.\",\n \"agentId\": \"a7f6898\"\n },\n \"toolUseID\": \"agent_msg_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"parentToolUseID\": \"toolu_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"uuid\": \"77777777-8888-9999-aaaa-bbbbbbbbbbbb\",\n \"timestamp\": \"2026-02-17T06:12:01.254Z\"\n}"}] \ No newline at end of file diff --git a/data/samples/CBxGTZ.json b/data/samples/CBxGTZ.json new file mode 100644 index 0000000..9dd7f48 --- /dev/null +++ b/data/samples/CBxGTZ.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.code_edit_tool.decision\", \"description\": \"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"decision\": \"accept\", \"source\": \"user_temporary\", \"tool_name\": \"Edit\", \"language\": \"Markdown\"}, \"start_time_unix_nano\": 1771396752487000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 1}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"decision\": \"accept\", \"source\": \"config\", \"tool_name\": \"Edit\", \"language\": \"Markdown\"}, \"start_time_unix_nano\": 1771396760924000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 3}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398784.613,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.code_edit_tool.decision\", \"description\": \"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"decision\": \"accept\", \"source\": \"config\", \"tool_name\": \"Edit\", \"language\": \"Markdown\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 4}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398784.613,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.code_edit_tool.decision\", \"description\": \"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"decision\": \"accept\", \"source\": \"config\", \"tool_name\": \"Edit\", \"language\": \"Markdown\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 2}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398784.613,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.code_edit_tool.decision\", \"description\": \"Count of code editing tool permission decisions (accept/reject) for Edit, Write, and NotebookEdit tools\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"decision\": \"accept\", \"source\": \"config\", \"tool_name\": \"Edit\", \"language\": \"Markdown\"}, \"start_time_unix_nano\": 1771397047134000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 1}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398784.613,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/DBvKLd.json b/data/samples/DBvKLd.json new file mode 100644 index 0000000..ccc0a66 --- /dev/null +++ b/data/samples/DBvKLd.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396485040000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.002825}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396486737000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.15184875}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.195168}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396604348000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.00509}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396601307000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.0873675}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.002575}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.2008905}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.1121595}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.000699}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.32575825}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.000424}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.15087975}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.000402}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.00041799999999999997}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.051481}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.cost.usage\", \"description\": \"Cost of the Claude Code session\", \"unit\": \"USD\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\"}, \"start_time_unix_nano\": 1771397022840000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.00040300000000000004}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\"}, \"start_time_unix_nano\": 1771397024742000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.212693}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398973.427,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/Io4OFW.json b/data/samples/Io4OFW.json new file mode 100644 index 0000000..2374157 --- /dev/null +++ b/data/samples/Io4OFW.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.session.count\", \"description\": \"Count of CLI sessions started\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\"}, \"start_time_unix_nano\": 1771396481546000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 1}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399037.192,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/OsXDpa.json b/data/samples/OsXDpa.json new file mode 100644 index 0000000..eb1234f --- /dev/null +++ b/data/samples/OsXDpa.json @@ -0,0 +1 @@ +[{"_raw":"{\n \"parentUuid\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n \"isSidechain\": false,\n \"userType\": \"external\",\n \"cwd\": \"/home/user/Documents/my-project\",\n \"sessionId\": \"11111111-2222-3333-4444-555555555555\",\n \"version\": \"2.1.44\",\n \"gitBranch\": \"HEAD\",\n \"slug\": \"example-session-slug\",\n \"type\": \"system\",\n \"subtype\": \"stop_hook_summary\",\n \"hookCount\": 1,\n \"hookInfos\": [\n {\n \"command\": \"${CLAUDE_PLUGIN_ROOT}/hooks/stop-hook.sh\"\n }\n ],\n \"hookErrors\": [],\n \"preventedContinuation\": false,\n \"stopReason\": \"\",\n \"hasOutput\": false,\n \"level\": \"suggestion\",\n \"timestamp\": \"2026-02-17T05:59:38.737Z\",\n \"uuid\": \"22222222-3333-4444-5555-666666666666\",\n \"toolUseID\": \"33333333-4444-5555-6666-777777777777\"\n}"}] \ No newline at end of file diff --git a/data/samples/QS0mDG.json b/data/samples/QS0mDG.json new file mode 100644 index 0000000..29fd244 --- /dev/null +++ b/data/samples/QS0mDG.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.pull_request.count\", \"description\": \"Number of pull requests created\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\"}, \"start_time_unix_nano\": 1771396481546000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 1}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399564.529,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/QtXzUr.json b/data/samples/QtXzUr.json new file mode 100644 index 0000000..4e0ce37 --- /dev/null +++ b/data/samples/QtXzUr.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396485040000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 2285}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396485041000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 108}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396485041000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396485041000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396486737000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 7}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396486737000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 399}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396486737000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 38665}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396486737000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 19601}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 296}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 363}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 19601}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 27970}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396604348000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 4110}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396604348000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 196}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396604348000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396604348000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396601307000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 7}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396601307000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 673}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396601307000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 121365}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396601307000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 1572}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 2070}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 101}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 7}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 1218}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 193511}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 11784}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 4}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 1140}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 150104}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 1374}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 344}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 71}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 300}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 2223}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 214829}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 25803}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 314}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 22}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 598}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 532}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 247992}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 1695}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 302}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 20}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 303}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 23}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 298}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 250}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 83882}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 288}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.token.usage\", \"description\": \"Number of tokens used\", \"unit\": \"tokens\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771397022841000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 308}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771397022841000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 19}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771397022841000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-haiku-4-5-20251001\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771397022841000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 0}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"input\"}, \"start_time_unix_nano\": 1771397024742000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 300}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"output\"}, \"start_time_unix_nano\": 1771397024742000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 1342}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheRead\"}, \"start_time_unix_nano\": 1771397024742000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 174386}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"model\": \"claude-opus-4-6\", \"type\": \"cacheCreation\"}, \"start_time_unix_nano\": 1771397024742000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 14472}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399007.564,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/aukWzL.json b/data/samples/aukWzL.json new file mode 100644 index 0000000..688065e --- /dev/null +++ b/data/samples/aukWzL.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771396482348000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 26.215000000000003}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396484345000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 13.639999999999999}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 5.8180000000000005}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771396541304000000, \"time_unix_nano\": 1771396601307000000, \"exemplars\": [], \"flags\": 0, \"value\": 11.737999999999998}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396601307000000, \"time_unix_nano\": 1771396661307000000, \"exemplars\": [], \"flags\": 0, \"value\": 20.182000000000006}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396661307000000, \"time_unix_nano\": 1771396721310000000, \"exemplars\": [], \"flags\": 0, \"value\": 36.523}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396721310000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 24.595}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 34.252}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771396819190000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 20.242}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 14.747999999999998}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 8.981000000000002}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 27.10100000000001}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771396901313000000, \"time_unix_nano\": 1771396961314000000, \"exemplars\": [], \"flags\": 0, \"value\": 7.882000000000001}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771396961314000000, \"time_unix_nano\": 1771397021316000000, \"exemplars\": [], \"flags\": 0, \"value\": 48.98300000000001}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.active_time.total\", \"description\": \"Total active time in seconds\", \"unit\": \"s\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"user\"}, \"start_time_unix_nano\": 1771397021316000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 0.341}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"cli\"}, \"start_time_unix_nano\": 1771397022182000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 30.657999999999998}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398998.936,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/bCOM2K.json b/data/samples/bCOM2K.json new file mode 100644 index 0000000..ba934af --- /dev/null +++ b/data/samples/bCOM2K.json @@ -0,0 +1 @@ +[{"_raw":"{\n \"parentUuid\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n \"isSidechain\": false,\n \"userType\": \"external\",\n \"cwd\": \"/home/user/Documents/my-project\",\n \"sessionId\": \"11111111-2222-3333-4444-555555555555\",\n \"version\": \"2.1.44\",\n \"gitBranch\": \"HEAD\",\n \"slug\": \"example-session-slug\",\n \"type\": \"user\",\n \"message\": {\n \"role\": \"user\",\n \"content\": [\n {\n \"tool_use_id\": \"toolu_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"type\": \"tool_result\",\n \"content\": \"Tue Feb 17 05:59:13 AM UTC 2026\\n---\\n{\\\"time\\\":\\\"2026-02-17T05:57:32.590Z\\\",\\\"cid\\\":\\\"w0\\\",\\\"channel\\\":\\\"input\\\",\\\"level\\\":\\\"info\\\",\\\"message\\\":\\\"initializing input\\\",\\\"disabled\\\":false,\\\"sendToRoutes\\\":true,\\\"type\\\":\\\"file\\\",\\\"path\\\":\\\"/home/user/.claude/projects/\\\",\\\"metadata\\\":[{\\\"name\\\":\\\"datatype\\\",\\\"value\\\":\\\"'cc'\\\"}],\\\"id\\\":\\\"cc-logs\\\"}\\n{\\\"time\\\":\\\"2026-02-17T05:57:32.740Z\\\",\\\"cid\\\":\\\"w0\\\",\\\"channel\\\":\\\"input:cc-logs\\\",\\\"level\\\":\\\"info\\\",\\\"message\\\":\\\"FileMonitor collector added.\\\",\\\"ioType\\\":\\\"source\\\",\\\"ioName\\\":\\\"file\\\",\\\"file\\\":\\\"/home/user/.claude/projects/-home-user-Documents-my-project/11111111-2222-3333-4444-555555555555.jsonl\\\"}\\n{\\\"time\\\":\\\"2026-02-17T05:58:05.035Z\\\",\\\"cid\\\":\\\"w0\\\",\\\"channel\\\":\\\"server\\\",\\\"level\\\":\\\"info\\\",\\\"message\\\":\\\"_raw stats\\\",\\\"inEvents\\\":336,\\\"outEvents\\\":336,\\\"droppedEvents\\\":0,\\\"inBytes\\\":116935,\\\"outBytes\\\":230451,\\\"cpuPerc\\\":12.12,\\\"mem\\\":{\\\"heap\\\":157,\\\"rss\\\":250},\\\"pid\\\":17196}\",\n \"is_error\": false\n }\n ]\n },\n \"uuid\": \"22222222-3333-4444-5555-666666666666\",\n \"timestamp\": \"2026-02-17T05:59:13.407Z\",\n \"toolUseResult\": {\n \"stdout\": \"\",\n \"stderr\": \"\",\n \"interrupted\": false,\n \"isImage\": false,\n \"noOutputExpected\": false\n },\n \"sourceToolAssistantUUID\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"\n}"}] \ No newline at end of file diff --git a/data/samples/bw3bbR.json b/data/samples/bw3bbR.json new file mode 100644 index 0000000..c3f4072 --- /dev/null +++ b/data/samples/bw3bbR.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.commit.count\", \"description\": \"Number of git commits created\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\"}, \"start_time_unix_nano\": 1771396481546000000, \"time_unix_nano\": 1771396541304000000, \"exemplars\": [], \"flags\": 0, \"value\": 3}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771399583.1,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/go9A8j.json b/data/samples/go9A8j.json new file mode 100644 index 0000000..83cb21a --- /dev/null +++ b/data/samples/go9A8j.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396482746000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_request\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_request\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:42.745Z\"}, \"model\": {\"string_value\": \"claude-haiku-4-5-20251001\"}, \"cost_usd\": {\"string_value\": \"0.002825\"}, \"duration_ms\": {\"string_value\": \"1150\"}, \"input_tokens\": {\"string_value\": \"2285\"}, \"output_tokens\": {\"string_value\": \"108\"}, \"cache_read_tokens\": {\"string_value\": \"0\"}, \"cache_creation_tokens\": {\"string_value\": \"0\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399256.227,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396487546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_request\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_request\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:47.545Z\"}, \"model\": {\"string_value\": \"claude-opus-4-6\"}, \"cost_usd\": {\"string_value\": \"0.05438\"}, \"duration_ms\": {\"string_value\": \"3842\"}, \"input_tokens\": {\"string_value\": \"7\"}, \"output_tokens\": {\"string_value\": \"892\"}, \"cache_read_tokens\": {\"string_value\": \"12450\"}, \"cache_creation_tokens\": {\"string_value\": \"3200\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399256.227,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396498046000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_request\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_request\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:58.046Z\"}, \"model\": {\"string_value\": \"claude-opus-4-6\"}, \"cost_usd\": {\"string_value\": \"0.04213\"}, \"duration_ms\": {\"string_value\": \"2910\"}, \"input_tokens\": {\"string_value\": \"1543\"}, \"output_tokens\": {\"string_value\": \"647\"}, \"cache_read_tokens\": {\"string_value\": \"15800\"}, \"cache_creation_tokens\": {\"string_value\": \"0\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399256.227,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396506546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_request\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_request\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:06.545Z\"}, \"model\": {\"string_value\": \"claude-opus-4-6\"}, \"cost_usd\": {\"string_value\": \"0.05534\"}, \"duration_ms\": {\"string_value\": \"4120\"}, \"input_tokens\": {\"string_value\": \"2100\"}, \"output_tokens\": {\"string_value\": \"1203\"}, \"cache_read_tokens\": {\"string_value\": \"15800\"}, \"cache_creation_tokens\": {\"string_value\": \"0\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399256.227,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396521546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_request\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_request\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:21.545Z\"}, \"model\": {\"string_value\": \"claude-opus-4-6\"}, \"cost_usd\": {\"string_value\": \"0.03198\"}, \"duration_ms\": {\"string_value\": \"2205\"}, \"input_tokens\": {\"string_value\": \"890\"}, \"output_tokens\": {\"string_value\": \"445\"}, \"cache_read_tokens\": {\"string_value\": \"18200\"}, \"cache_creation_tokens\": {\"string_value\": \"0\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399256.227,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/hO8QQb.json b/data/samples/hO8QQb.json new file mode 100644 index 0000000..59b40cd --- /dev/null +++ b/data/samples/hO8QQb.json @@ -0,0 +1 @@ +[{"_raw":"{\n \"parentUuid\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n \"isSidechain\": false,\n \"userType\": \"external\",\n \"cwd\": \"/home/user/Documents/my-project\",\n \"sessionId\": \"11111111-2222-3333-4444-555555555555\",\n \"version\": \"2.1.44\",\n \"gitBranch\": \"HEAD\",\n \"slug\": \"example-session-slug\",\n \"message\": {\n \"model\": \"claude-opus-4-6\",\n \"id\": \"msg_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"type\": \"message\",\n \"role\": \"assistant\",\n \"content\": [\n {\n \"type\": \"tool_use\",\n \"id\": \"toolu_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"name\": \"Bash\",\n \"input\": {\n \"command\": \"modinfo nvidia | grep -E \\\"^version|^filename\\\"\",\n \"description\": \"Check installed nvidia module version\"\n },\n \"caller\": {\n \"type\": \"direct\"\n }\n }\n ],\n \"stop_reason\": null,\n \"stop_sequence\": null,\n \"usage\": {\n \"input_tokens\": 1,\n \"cache_creation_input_tokens\": 2961,\n \"cache_read_input_tokens\": 19604,\n \"cache_creation\": {\n \"ephemeral_5m_input_tokens\": 0,\n \"ephemeral_1h_input_tokens\": 2961\n },\n \"output_tokens\": 4,\n \"service_tier\": \"standard\",\n \"inference_geo\": \"not_available\"\n }\n },\n \"requestId\": \"req_XXXXXXXXXXXXXXXXXXXXXXXXX\",\n \"type\": \"assistant\",\n \"uuid\": \"66666666-7777-8888-9999-aaaaaaaaaaaa\",\n \"timestamp\": \"2026-02-17T07:14:02.004Z\"\n}"}] \ No newline at end of file diff --git a/data/samples/k0h8NP.json b/data/samples/k0h8NP.json new file mode 100644 index 0000000..a6d2754 --- /dev/null +++ b/data/samples/k0h8NP.json @@ -0,0 +1 @@ +[{"_raw":"{\n \"type\": \"file-history-snapshot\",\n \"messageId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n \"snapshot\": {\n \"messageId\": \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n \"trackedFileBackups\": {},\n \"timestamp\": \"2026-02-17T07:17:20.940Z\"\n },\n \"isSnapshotUpdate\": false\n}"}] \ No newline at end of file diff --git a/data/samples/kkcx4D.json b/data/samples/kkcx4D.json new file mode 100644 index 0000000..4634d2e --- /dev/null +++ b/data/samples/kkcx4D.json @@ -0,0 +1 @@ +[{"_raw":"{\n \"type\": \"queue-operation\",\n \"operation\": \"dequeue\",\n \"timestamp\": \"2026-02-17T07:17:36.939Z\",\n \"sessionId\": \"11111111-2222-3333-4444-555555555555\"\n}"}] \ No newline at end of file diff --git a/data/samples/lCrlnQ.json b/data/samples/lCrlnQ.json new file mode 100644 index 0000000..a7542cf --- /dev/null +++ b/data/samples/lCrlnQ.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.lines_of_code.count\", \"description\": \"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"added\"}, \"start_time_unix_nano\": 1771396760932000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 21}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"removed\"}, \"start_time_unix_nano\": 1771396760932000000, \"time_unix_nano\": 1771396781311000000, \"exemplars\": [], \"flags\": 0, \"value\": 3}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398988.492,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.lines_of_code.count\", \"description\": \"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"added\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 42}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"removed\"}, \"start_time_unix_nano\": 1771396781311000000, \"time_unix_nano\": 1771396841310000000, \"exemplars\": [], \"flags\": 0, \"value\": 1}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398988.492,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.lines_of_code.count\", \"description\": \"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"added\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 2}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"removed\"}, \"start_time_unix_nano\": 1771396841310000000, \"time_unix_nano\": 1771396901313000000, \"exemplars\": [], \"flags\": 0, \"value\": 2}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398988.492,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_metrics\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"metrics\": [{\"name\": \"claude_code.lines_of_code.count\", \"description\": \"Count of lines of code modified, with the 'type' attribute indicating whether lines were added or removed\", \"unit\": \"\", \"data\": {\"data_points\": [{\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"added\"}, \"start_time_unix_nano\": 1771397047140000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 34}, {\"attributes\": {\"user.id\": \"REDACTED_USER_HASH\", \"session.id\": \"session-0001\", \"organization.id\": \"00000000-0000-0000-0000-000000000001\", \"user.email\": \"user@redacted.example\", \"user.account_uuid\": \"00000000-0000-0000-0000-000000000000\", \"terminal.type\": \"ssh-session\", \"type\": \"removed\"}, \"start_time_unix_nano\": 1771397047140000000, \"time_unix_nano\": 1771397081316000000, \"exemplars\": [], \"flags\": 0, \"value\": 2}], \"aggregation_temporality\": 1, \"is_monotonic\": true}, \"metadata\": {}, \"__type\": \"sum\"}]}]}","_time":1771398988.492,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/mSfzuP.json b/data/samples/mSfzuP.json new file mode 100644 index 0000000..c35fc10 --- /dev/null +++ b/data/samples/mSfzuP.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396483946000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:43.945Z\"}, \"tool_name\": {\"string_value\": \"Read\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"config\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396486646000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:46.646Z\"}, \"tool_name\": {\"string_value\": \"Bash\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_permanent\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396489846000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:49.846Z\"}, \"tool_name\": {\"string_value\": \"Edit\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_temporary\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396499446000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:59.446Z\"}, \"tool_name\": {\"string_value\": \"Write\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_temporary\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396503446000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:03.446Z\"}, \"tool_name\": {\"string_value\": \"Bash\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_permanent\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396519046000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:19.046Z\"}, \"tool_name\": {\"string_value\": \"Read\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"config\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396523546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_decision\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_decision\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:23.545Z\"}, \"tool_name\": {\"string_value\": \"Write\"}, \"decision\": {\"string_value\": \"reject\"}, \"source\": {\"string_value\": \"user_reject\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399126.568,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/nuJv6j.json b/data/samples/nuJv6j.json new file mode 100644 index 0000000..111a277 --- /dev/null +++ b/data/samples/nuJv6j.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396481546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.user_prompt\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.user_prompt\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:41.545Z\"}, \"prompt_length\": {\"string_value\": \"47\"}, \"prompt\": {\"string_value\": \"REDACTED\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399294.67,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396496546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.user_prompt\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.user_prompt\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:56.545Z\"}, \"prompt_length\": {\"string_value\": \"128\"}, \"prompt\": {\"string_value\": \"REDACTED\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399294.67,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396516546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.user_prompt\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.user_prompt\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:16.545Z\"}, \"prompt_length\": {\"string_value\": \"23\"}, \"prompt\": {\"string_value\": \"REDACTED\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399294.67,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/smpLil.json b/data/samples/smpLil.json new file mode 100644 index 0000000..fcc0dc1 --- /dev/null +++ b/data/samples/smpLil.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396501546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_error\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_error\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:01.545Z\"}, \"model\": {\"string_value\": \"claude-opus-4-6\"}, \"error\": {\"string_value\": \"REDACTED_ERROR_MESSAGE\"}, \"status_code\": {\"string_value\": \"529\"}, \"duration_ms\": {\"string_value\": \"892\"}, \"attempt\": {\"string_value\": \"1\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399244.365,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396502446000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.api_error\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.api_error\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:02.446Z\"}, \"model\": {\"string_value\": \"claude-opus-4-6\"}, \"error\": {\"string_value\": \"REDACTED_ERROR_MESSAGE\"}, \"status_code\": {\"string_value\": \"529\"}, \"duration_ms\": {\"string_value\": \"1045\"}, \"attempt\": {\"string_value\": \"2\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399244.365,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/data/samples/viOToM.json b/data/samples/viOToM.json new file mode 100644 index 0000000..ce9111f --- /dev/null +++ b/data/samples/viOToM.json @@ -0,0 +1 @@ +[{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396484046000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_result\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_result\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:44.046Z\"}, \"tool_name\": {\"string_value\": \"Read\"}, \"success\": {\"string_value\": \"true\"}, \"duration_ms\": {\"string_value\": \"45\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"config\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399269.813,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396486746000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_result\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_result\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:46.745Z\"}, \"tool_name\": {\"string_value\": \"Bash\"}, \"success\": {\"string_value\": \"true\"}, \"duration_ms\": {\"string_value\": \"1823\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_permanent\"}, \"tool_parameters\": {\"string_value\": \"{\\\"bash_command\\\": \\\"REDACTED\\\", \\\"timeout\\\": 30000, \\\"description\\\": \\\"REDACTED\\\", \\\"sandbox\\\": \\\"false\\\"}\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399269.813,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396489946000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_result\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_result\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:49.945Z\"}, \"tool_name\": {\"string_value\": \"Edit\"}, \"success\": {\"string_value\": \"true\"}, \"duration_ms\": {\"string_value\": \"312\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_temporary\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399269.813,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396499546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_result\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_result\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:34:59.545Z\"}, \"tool_name\": {\"string_value\": \"Write\"}, \"success\": {\"string_value\": \"true\"}, \"duration_ms\": {\"string_value\": \"89\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_temporary\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399269.813,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396503546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_result\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_result\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:03.545Z\"}, \"tool_name\": {\"string_value\": \"Bash\"}, \"success\": {\"string_value\": \"false\"}, \"duration_ms\": {\"string_value\": \"5012\"}, \"error\": {\"string_value\": \"REDACTED_ERROR_MESSAGE\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"user_permanent\"}, \"tool_parameters\": {\"string_value\": \"{\\\"bash_command\\\": \\\"REDACTED\\\", \\\"timeout\\\": 30000, \\\"description\\\": \\\"REDACTED\\\", \\\"sandbox\\\": \\\"false\\\"}\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399269.813,"cribl_breaker":"Break on newlines"},{"_raw":"{\"resource\": {\"dropped_attributes_count\": 0, \"attributes\": {\"host.arch\": \"amd64\", \"os.type\": \"linux\", \"os.version\": \"REDACTED\", \"service.name\": \"claude-code\", \"service.version\": \"2.1.45\"}}, \"scope_logs\": [{\"scope\": {\"name\": \"com.anthropic.claude_code\", \"version\": \"2.1.45\", \"dropped_attributes_count\": 0}, \"log_records\": [{\"time_unix_nano\": 1771396519546000000, \"severity_number\": 9, \"severity_text\": \"INFO\", \"body\": {\"string_value\": \"claude_code.tool_result\"}, \"attributes\": {\"user.id\": {\"string_value\": \"REDACTED_USER_HASH\"}, \"session.id\": {\"string_value\": \"session-0001\"}, \"organization.id\": {\"string_value\": \"00000000-0000-0000-0000-000000000001\"}, \"user.account_uuid\": {\"string_value\": \"00000000-0000-0000-0000-000000000000\"}, \"terminal.type\": {\"string_value\": \"ssh-session\"}, \"event.name\": {\"string_value\": \"claude_code.tool_result\"}, \"event.timestamp\": {\"string_value\": \"2026-02-18T06:35:19.545Z\"}, \"tool_name\": {\"string_value\": \"Read\"}, \"success\": {\"string_value\": \"true\"}, \"duration_ms\": {\"string_value\": \"32\"}, \"decision\": {\"string_value\": \"accept\"}, \"source\": {\"string_value\": \"config\"}}, \"flags\": 0, \"trace_id\": \"\", \"span_id\": \"\"}]}]}","_time":1771399269.813,"cribl_breaker":"Break on newlines"}] \ No newline at end of file diff --git a/default/inputs.yml b/default/inputs.yml index b2f2a49..39b9332 100644 --- a/default/inputs.yml +++ b/default/inputs.yml @@ -1,17 +1,48 @@ -# Input definitions (sources). Each input MUST set a metadata.datatype field -# so route filters can match it. See VisiCore/cc-edge-claude-code-io/default/inputs.yml -# for a complete example with file-monitor and OTLP inputs. -# -# Example skeleton: -# -# inputs: -# my-input-id: -# type: file -# disabled: false -# sendToRoutes: true -# path: $MY_LOG_PATH -# filenames: ['*.log'] -# metadata: -# - name: datatype -# value: "'my-datatype'" -inputs: {} +inputs: + Session-Logs-File-Monitor: + disabled: false + sendToRoutes: true + pqEnabled: false + streamtags: [] + mode: manual + interval: 10 + filenames: + - "*.jsonl" + filterArchivedFiles: false + tailOnly: false + idleTimeout: 300 + checkFileModTime: false + forceText: false + hashLen: 256 + staleChannelFlushMs: 10000 + suppressMissingPathErrors: false + deleteFiles: false + saltHash: false + includeUnidentifiableBinary: false + recurse: true + type: file + path: $CLAUDE_HOME + metadata: + - name: datatype + value: "'claude-code-session-logs'" + claude-code-otel: + disabled: false + sendToRoutes: true + pqEnabled: false + streamtags: + - vct + host: 0.0.0.0 + port: 4317 + tls: + disabled: true + protocol: grpc + extractSpans: false + extractMetrics: false + otlpVersion: 1.3.1 + authType: none + maxActiveCxn: 1000 + extractLogs: false + type: open_telemetry + metadata: + - name: datatype + value: "'claude-code-otel'" diff --git a/default/pack.yml b/default/pack.yml index a5ce0f5..b803336 100644 --- a/default/pack.yml +++ b/default/pack.yml @@ -1,4 +1 @@ -# Cribl pack manifest. Customary contents: -# - logo: data:image/png;base64,... (small base64-encoded PNG, displayed in Cribl UI) -# See VisiCore/cc-edge-claude-code-io/default/pack.yml for an example. -logo: '' +logo: data:image/png;base64,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 diff --git a/default/pipelines/claude-code-otel/conf.yml b/default/pipelines/claude-code-otel/conf.yml new file mode 100644 index 0000000..0f73518 --- /dev/null +++ b/default/pipelines/claude-code-otel/conf.yml @@ -0,0 +1,10 @@ +output: default +streamtags: + - vct + - ai + - claudecode + - anthropic +groups: {} +asyncFuncTimeout: 1000 +functions: [] +description: "" diff --git a/default/pipelines/claude-code-session-logs/conf.yml b/default/pipelines/claude-code-session-logs/conf.yml new file mode 100644 index 0000000..0f73518 --- /dev/null +++ b/default/pipelines/claude-code-session-logs/conf.yml @@ -0,0 +1,10 @@ +output: default +streamtags: + - vct + - ai + - claudecode + - anthropic +groups: {} +asyncFuncTimeout: 1000 +functions: [] +description: "" diff --git a/default/pipelines/route.yml b/default/pipelines/route.yml index 0ba8123..18f6e6e 100644 --- a/default/pipelines/route.yml +++ b/default/pipelines/route.yml @@ -2,19 +2,25 @@ id: default groups: {} comments: [] routes: - # Replace this placeholder route with your real routes. - # Validator rules: - # - id and pipeline must be descriptive (no 'main', no 'route1') - # - filter must be a real expression (not literally 'false' / '0') - # - output MUST be __group (not input_id) - - id: REPLACE_ROUTE_ID - name: Replace With Route Name + - id: default + name: Session Logs (File Monitor) final: true disabled: false - pipeline: REPLACE_PIPELINE_NAME - description: "Placeholder — replace id, name, pipeline, and filter." + pipeline: claude-code-session-logs + description: "" enableOutputExpression: false targetContext: group - filter: "datatype=='replace-with-your-datatype'" + filter: datatype=='claude-code-session-logs' + clones: [] + output: __group + - id: jZR327 + name: OpenTelemetry (OTLP) + final: true + disabled: false + pipeline: claude-code-otel + description: "" + enableOutputExpression: false + targetContext: group + filter: datatype=='claude-code-otel' clones: [] output: __group diff --git a/default/samples.yml b/default/samples.yml index a6d84cf..09dc0d8 100644 --- a/default/samples.yml +++ b/default/samples.yml @@ -1,9 +1,159 @@ -# Catalog of sample events for Cribl's UI sample-data preview. -# Add one entry per file in data/samples/.json: -# -# : -# sampleName: .log -# description: -# created: -# size: -# numEvents: +hO8QQb: + sampleName: sanitized_assistant.log + created: 1771394574676 + size: 1542 + numEvents: 1 + description: A single assistant turn containing a tool invocation. The usage + block tracks input/output tokens and cache efficiency. The content array can + include text, tool_use, and tool_result blocks. +k0h8NP: + sampleName: sanitized_file-history-snapshot.log + created: 1771394667232 + size: 317 + numEvents: 1 + description: Emitted when Claude Code checkpoints the state of tracked files. + Used internally for session undo/restore. The trackedFileBackups object maps + file paths to their backed-up contents (empty here because no files were + modified at this point). +36cP1M: + sampleName: sanitized_progress.log + description: Intermediate agent progress events emitted during multi-step tool + use. Contains the sub-agent's current assistant message (including tool + invocations and token usage), the original prompt that spawned the agent, + and parent/child tool-use IDs that link the step back to the top-level + conversation turn. + created: 1771394806642 + size: 2395 + numEvents: 1 +OsXDpa: + sampleName: sanitized_system.log + description: Internal system events such as hook execution summaries. The + stop_hook_summary subtype records the results of stop hooks that ran at the + end of a turn, including which hooks fired, any errors encountered, and + whether the hook prevented Claude from continuing. + created: 1771394922513 + size: 832 + numEvents: 1 +bCOM2K: + sampleName: sanitized_user.log + description: User-initiated messages and tool results returned to Claude. The + content array contains tool_result blocks with stdout/stderr from executed + commands. The toolUseResult object provides structured access to the same + output along with metadata like interrupted and isImage flags. + created: 1771394985326 + size: 2208 + numEvents: 1 +kkcx4D: + sampleName: sanitized_queue-operation.log + description: Internal message queue lifecycle events. Tracks enqueue and dequeue + operations as messages are added to and removed from the processing queue + within a session. + tags: "" + created: 1771395094056 + size: 189 + numEvents: 1 +CBxGTZ: + sampleName: sanitized_code_edit_tool_decision.json + tags: "" + created: 1771398781029 + size: 5717 + numEvents: 4 + description: Counts accept/reject decisions specifically for Edit, Write, and + NotebookEdit tools. Includes language attribute so you can see which file + types get the most AI edits and how much developers trust the suggestions. +DBvKLd: + sampleName: sanitized_cost_usage.json + created: 1771398969849 + size: 14216 + numEvents: 9 + description: Tracks cumulative cost in USD per API request, broken down by + model. Essential for chargeback calculations and tracking spend across users + and teams. +lCrlnQ: + sampleName: sanitized_lines_of_code_count.json + created: 1771398984911 + size: 6664 + numEvents: 4 + description: Counts lines modified with a type attribute of added or removed. + Proxy for productivity impact, best used alongside commit/PR data. +aukWzL: + sampleName: sanitized_active_time_total.json + created: 1771398995354 + size: 14217 + numEvents: 10 + description: Accumulates seconds of active usage (typing prompts, receiving + responses) — excludes idle time. Good for measuring actual developer + engagement vs wall-clock session length. +QtXzUr: + sampleName: sanitized_token_usage.json + created: 1771399004033 + size: 39746 + numEvents: 9 + description: Counts tokens consumed, with a type attribute splitting across + input, output, cacheRead, and cacheCreation. Combined with cost, this lets + you measure cache efficiency. +Io4OFW: + sampleName: sanitized_session_count.json + created: 1771399033605 + size: 1107 + numEvents: 1 + description: Increments once each time a Claude Code CLI session starts. Useful + for tracking adoption and engagement across users/teams. +mSfzuP: + sampleName: sanitized_event_tool_decision.json + created: 1771399122999 + size: 8951 + numEvents: 7 + description: Logged when a tool permission decision is made, regardless of + outcome. Captures tool name, accept/reject, and the decision source (config, + user_permanent, user_temporary, user_abort, user_reject). Useful for + understanding trust patterns and whether developers are overriding allowlist + configs. +smpLil: + sampleName: sanitized_event_api_error.json + created: 1771399240782 + size: 2748 + numEvents: 2 + description: Logged when an API call fails. Includes status code, error message, + duration, and attempt number for retries. Great for alerting on rate limits + (429) or overloaded (529) patterns. +go9A8j: + sampleName: sanitized_event_api_request.json + created: 1771399252648 + size: 7428 + numEvents: 5 + description: Logged for every successful API call to Claude. Includes model, + cost, duration, and full token breakdown + (input/output/cacheRead/cacheCreation). The event-level complement to the + aggregated token and cost metrics. +viOToM: + sampleName: sanitized_event_tool_result.json + created: 1771399266227 + size: 8605 + numEvents: 6 + description: Logged when any tool finishes execution. Includes tool name, + success/failure, duration in ms, the user's accept/reject decision, decision + source, and for Bash tools the command parameters. This is your richest + event for understanding what Claude is actually doing. +nuJv6j: + sampleName: sanitized_event_user_prompt.json + created: 1771399291083 + size: 3680 + numEvents: 3 + description: Logged each time a user submits a prompt. Captures prompt_length + always; actual prompt content only if OTEL_LOG_USER_PROMPTS=1 is set + (redacted by default). +QS0mDG: + sampleName: sanitized_pull_request_count.json + created: 1771399561086 + size: 1114 + numEvents: 1 + description: Increments when Claude Code creates a pull request. Only fires if + the session actually triggers a PR creation. +bw3bbR: + sampleName: sanitized_commit_count.json + created: 1771399579521 + size: 1104 + numEvents: 1 + description: Increments when Claude Code creates a git commit. Same idea — only + fires on actual commit actions during the session. diff --git a/package.json b/package.json index 5b41bdb..fa60410 100644 --- a/package.json +++ b/package.json @@ -1,13 +1 @@ -{ - "name": "REPLACE-WITH-PACK-NAME", - "version": "0.0.1", - "minLogStreamVersion": "4.17.0", - "author": "Your Name ", - "description": "REPLACE: Brief description of what this pack does.", - "displayName": "REPLACE With Display Name", - "tags": { - "streamtags": ["replace", "with", "tags"], - "dataType": ["logs"] - }, - "exports": [] -} +{"name": "cc-edge-claude-code-io", "version": "1.0.0", "minLogStreamVersion": "4.17.0", "author": "VisiCore Tech - CriblPacks@VisiCoreTech.com ", "description": "This Cribl Edge Pack collects Claude Code telemetry from two sources \u2014 session log files (.jsonl transcripts) via a file monitor and operational metrics/logs via OpenTelemetry (OTLP/gRPC) \u2014 and forwards them to a Cribl Stream worker group for indexing, analysis, and search.", "displayName": "Claude Code Pack For Edge", "tags": {"streamtags": ["vct", "ai", "claude", "anthropic"], "dataType": ["logs"]}, "exports": []} \ No newline at end of file