@protolabsai/proto 0.26.25 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +22 -19
  2. package/cli.js +5672 -7641
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -27,7 +27,7 @@ At-a-glance overview vs. upstream Qwen Code. For the full architectural breakdow
27
27
  | Ignore files | `.qwenignore` | `.protoignore` + inherits `.claudeignore` patterns |
28
28
  | ACP / Zed integration | Stock | Cron-in-Session, concurrent Agent calls, SSE/HTTP MCP, internal-part filtering |
29
29
  | Extra built-in tools | Standard set | + browser automation, repo-map (PageRank), task tools, mailbox, LSP, voice/STT |
30
- | Observability | Console | Langfuse OTLP traces with harness-intervention spans (SFT-ready) |
30
+ | Observability | Console | OTLP/HTTP to LGTM stack + Langfuse, opt-in, with `gen_ai.response.thinking` and harness-intervention spans (SFT-ready) |
31
31
  | Release pipeline | Manual | Conventional-commit auto-release (`feat:` → minor, `fix:` → patch) |
32
32
  | VS Code companion | Included | Removed (focus on TUI + ACP/Zed) |
33
33
 
@@ -206,53 +206,56 @@ Both no-op outside a TTY, in screen-reader mode, or under tmux/SSH.
206
206
 
207
207
  ## Observability
208
208
 
209
- proto supports [Langfuse](https://langfuse.com) tracing out of the box. Set three environment variables and every session is fully tracedLLM calls (all providers), tool executions, subagent lifecycles, and turn hierarchy.
209
+ proto ships OpenTelemetry-native, with both a Tempo/LGTM-style ops backend and Langfuse for prompt-grade trace UI. Both are **opt-in**nothing is sent anywhere until `telemetry.enabled` is `true`.
210
210
 
211
211
  ### Setup
212
212
 
213
- Add to the `env` block in `~/.proto/settings.json`:
213
+ Add to `~/.proto/settings.json`:
214
214
 
215
215
  ```json
216
216
  {
217
+ "telemetry": { "enabled": true },
217
218
  "env": {
219
+ "OTEL_INGRESS_TOKEN": "<bearer token from your Infisical or vault>",
218
220
  "LANGFUSE_PUBLIC_KEY": "pk-lf-...",
219
221
  "LANGFUSE_SECRET_KEY": "sk-lf-...",
220
- "LANGFUSE_BASE_URL": "https://cloud.langfuse.com"
222
+ "LANGFUSE_BASE_URL": "https://your-langfuse-instance.example.com"
221
223
  }
222
224
  }
223
225
  ```
224
226
 
225
- `LANGFUSE_BASE_URL` is optional and defaults to `https://cloud.langfuse.com`. For a self-hosted instance, set it to your deployment URL.
227
+ With `telemetry.enabled = true`:
226
228
 
227
- > **Why `settings.json` and not `.env`?** proto walks up from your CWD loading `.env` files, so a project-level `.env` with Langfuse keys would bleed into proto's tracing and mix your traces into the wrong dataset. The `env` block in `settings.json` is proto-namespaced and completely isolated from your projects.
229
+ - **OTLP traces** ship to `https://otel.proto-labs.ai` over HTTP, bearer-auth via `OTEL_INGRESS_TOKEN`. Override `telemetry.otlpEndpoint` / `telemetry.otlpProtocol` to point at a local OTel collector or a different vendor.
230
+ - **Langfuse traces** ship to `LANGFUSE_BASE_URL` (defaults to `https://cloud.langfuse.com`) when both Langfuse keys are present.
231
+
232
+ Without `telemetry.enabled = true`, neither exporter activates regardless of env vars.
233
+
234
+ > **Why `settings.json` and not `.env`?** proto walks up from your CWD loading `.env` files, so a project-level `.env` with telemetry keys would bleed into proto's tracing and mix your traces into the wrong dataset. The `env` block in `settings.json` is proto-namespaced and completely isolated from your projects.
228
235
 
229
236
  ### What gets traced
230
237
 
231
- | Span | Attributes |
232
- | --------------------- | ---------------------------------------------------------------------------------------------------- |
233
- | `turn` | `session.id`, `turn.id` — root span per user prompt |
234
- | `gen_ai chat {model}` | `gen_ai.usage.input_tokens`, `gen_ai.usage.output_tokens`, `gen_ai.request.model` — one per LLM call |
235
- | `tool/{name}` | `tool.name`, `tool.type`, `tool.duration_ms` — one per tool execution |
236
- | `agent/{name}` | `agent.name`, `agent.status`, `agent.duration_ms` — one per subagent |
238
+ | Span | Attributes |
239
+ | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
240
+ | `turn` | `session.id`, `turn.id` — root span per user prompt |
241
+ | `gen_ai chat {model}` | `gen_ai.usage.{input,output,thinking}_tokens`, `gen_ai.request.model`, `gen_ai.response.thinking` (when present) — one per LLM call |
242
+ | `tool/{name}` | `tool.name`, `tool.type`, `tool.duration_ms` — one per tool execution |
243
+ | `agent/{name}` | `agent.name`, `agent.status`, `agent.duration_ms` — one per subagent |
237
244
 
238
245
  All three provider backends are covered: OpenAI-compatible, Anthropic, and Gemini.
239
246
 
240
247
  ### Prompt content logging
241
248
 
242
- Full prompt messages and response text are included in traces by default. To disable:
249
+ Full prompt messages, response text, and reasoning text are included in traces by default. To disable:
243
250
 
244
251
  ```json
245
252
  // ~/.proto/settings.json
246
253
  {
247
- "telemetry": { "logPrompts": false }
254
+ "telemetry": { "enabled": true, "logPrompts": false }
248
255
  }
249
256
  ```
250
257
 
251
- > **Privacy note:** `logPrompts` is enabled by default. When enabled, full prompt and response content is sent to your Langfuse instance. Set to `false` if you want traces without message content.
252
-
253
- ### Langfuse activates independently
254
-
255
- Langfuse tracing activates from env vars alone — it does not require `telemetry.enabled: true` in settings. The general telemetry pipeline (OTLP/GCP) and Langfuse are independent.
258
+ > **Privacy note:** Telemetry is off by default. When you opt in, `logPrompts` defaults to `true` — full prompt, response, and reasoning content are attached to spans (truncated at 10K chars each). Set `logPrompts: false` if you want token counts and timings without message content.
256
259
 
257
260
  ## Task Management
258
261