wizardflow 0.7.0__tar.gz → 0.7.1__tar.gz

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 (110) hide show
  1. {wizardflow-0.7.0 → wizardflow-0.7.1}/PKG-INFO +4 -2
  2. {wizardflow-0.7.0 → wizardflow-0.7.1}/README.md +3 -1
  3. {wizardflow-0.7.0 → wizardflow-0.7.1}/docs/cli.md +1 -1
  4. {wizardflow-0.7.0 → wizardflow-0.7.1}/docs/opentelemetry.md +11 -6
  5. {wizardflow-0.7.0 → wizardflow-0.7.1}/pyproject.toml +1 -1
  6. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/__init__.py +2 -2
  7. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/cli.py +9 -1
  8. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/client.py +2 -2
  9. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/otel.py +2 -2
  10. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/otel_file_exporter.py +1 -1
  11. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/otel_mapping.py +1 -1
  12. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_cli.py +16 -0
  13. {wizardflow-0.7.0 → wizardflow-0.7.1}/.gitignore +0 -0
  14. {wizardflow-0.7.0 → wizardflow-0.7.1}/CONTRIBUTING.md +0 -0
  15. {wizardflow-0.7.0 → wizardflow-0.7.1}/LICENSE +0 -0
  16. {wizardflow-0.7.0 → wizardflow-0.7.1}/assets/demo.gif +0 -0
  17. {wizardflow-0.7.0 → wizardflow-0.7.1}/docs/jsonl-file-format.md +0 -0
  18. {wizardflow-0.7.0 → wizardflow-0.7.1}/docs/recording.md +0 -0
  19. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/data_types.py +0 -0
  20. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/multibranch.html +0 -0
  21. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/multibranch.md +0 -0
  22. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/multibranch.py +0 -0
  23. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/quickstart.html +0 -0
  24. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/quickstart.md +0 -0
  25. {wizardflow-0.7.0 → wizardflow-0.7.1}/examples/quickstart.py +0 -0
  26. {wizardflow-0.7.0 → wizardflow-0.7.1}/scripts/build_ui.py +0 -0
  27. {wizardflow-0.7.0 → wizardflow-0.7.1}/scripts/live_trace_demo.py +0 -0
  28. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_render.py +0 -0
  29. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/404.html +0 -0
  30. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/__next.__PAGE__.txt +0 -0
  31. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/__next._full.txt +0 -0
  32. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/__next._head.txt +0 -0
  33. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/__next._index.txt +0 -0
  34. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/__next._tree.txt +0 -0
  35. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/H81QsKAgLXQMK2H6vyBjb/_buildManifest.js +0 -0
  36. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/H81QsKAgLXQMK2H6vyBjb/_clientMiddlewareManifest.js +0 -0
  37. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/H81QsKAgLXQMK2H6vyBjb/_ssgManifest.js +0 -0
  38. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/05-c3ty_6dwfk.js +0 -0
  39. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/09s72r58ijxwx.js +0 -0
  40. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/0cz1d0mv5g_q7.js +0 -0
  41. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/0d1yav018wi6n.js +0 -0
  42. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/0fizjutis9uvx.js +0 -0
  43. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/14a18doinx71t.css +0 -0
  44. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/14mrh2-p_w84d.js +0 -0
  45. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/18clj6xsyhc_j.css +0 -0
  46. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/1_way7swvumpv.js +0 -0
  47. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/1diz-5jfxjm5x.js +0 -0
  48. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/1por0fhggxwcm.js +0 -0
  49. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/2-j1b74l3lxxu.css +0 -0
  50. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/24c18qa28ilul.css +0 -0
  51. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/27jktro2p5rq9.js +0 -0
  52. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/2dclsx_n3obic.js +0 -0
  53. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/2gj5bmeov-r8f.js +0 -0
  54. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/2l6srvxdnb-io.js +0 -0
  55. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/310vm2bl3xxpt.js +0 -0
  56. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/32c7h_m2amh5m.js +0 -0
  57. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/352yh6c3r6-0k.js +0 -0
  58. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/3fxdmyfsnxue6.js +0 -0
  59. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/3n7dm2ojtyzwn.js +0 -0
  60. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/3q-c23s8gv3du.js +0 -0
  61. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/3rdqn8rx95pw7.js +0 -0
  62. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/414c1-tn-1aef.js +0 -0
  63. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/43x_68q2b6gcs.js +0 -0
  64. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/chunks/turbopack-2fblmukzx7kws.js +0 -0
  65. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2 +0 -0
  66. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/53b9e256198e5412-s.390ncx5urfkfu.woff2 +0 -0
  67. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/5ce348bf30bf5439-s.31988l_ccedte.woff2 +0 -0
  68. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2 +0 -0
  69. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/7178b3e590c64307-s.21jp631_3pja2.woff2 +0 -0
  70. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/797e433ab948586e-s.p.0r6juujl39pe6.woff2 +0 -0
  71. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2 +0 -0
  72. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2 +0 -0
  73. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2 +0 -0
  74. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2 +0 -0
  75. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2 +0 -0
  76. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_next/static/media/icon.09qublg69ek7b.svg +0 -0
  77. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found/__next._full.txt +0 -0
  78. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found/__next._head.txt +0 -0
  79. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found/__next._index.txt +0 -0
  80. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found/__next._not-found/__PAGE__.txt +0 -0
  81. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found/__next._not-found.txt +0 -0
  82. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found/__next._tree.txt +0 -0
  83. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found.html +0 -0
  84. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/_not-found.txt +0 -0
  85. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/icon.svg +0 -0
  86. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/index.html +0 -0
  87. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/index.txt +0 -0
  88. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/opengraph-image +0 -0
  89. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/robots.txt +0 -0
  90. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/sitemap.xml +0 -0
  91. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow/__next._full.txt +0 -0
  92. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow/__next._head.txt +0 -0
  93. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow/__next._index.txt +0 -0
  94. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow/__next._tree.txt +0 -0
  95. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow/__next.why-wizardflow/__PAGE__.txt +0 -0
  96. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow/__next.why-wizardflow.txt +0 -0
  97. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow.html +0 -0
  98. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/_ui/why-wizardflow.txt +0 -0
  99. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/constants.py +0 -0
  100. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/html.py +0 -0
  101. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/markdown.py +0 -0
  102. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/py.typed +0 -0
  103. {wizardflow-0.7.0 → wizardflow-0.7.1}/src/wizardflow/reader.py +0 -0
  104. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/conftest.py +0 -0
  105. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_html.py +0 -0
  106. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_markdown.py +0 -0
  107. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_otel.py +0 -0
  108. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_otel_file_exporter.py +0 -0
  109. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_reader.py +0 -0
  110. {wizardflow-0.7.0 → wizardflow-0.7.1}/tests/test_trace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: wizardflow
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: Python SDK for recording agent flows into the WizardFlow / AgentTrace file format.
5
5
  Project-URL: Homepage, https://getwizardflow.com
6
6
  Project-URL: Documentation, https://getwizardflow.com
@@ -163,7 +163,9 @@ without changing their JSONL/UI label:
163
163
  node.log("quality", 0.92, otel_attribute="app.response.quality")
164
164
  ```
165
165
 
166
- Content export is privacy-conscious and disabled by default. See the
166
+ Content export is enabled by default when OTel export is enabled, with
167
+ `otel_include_content=False` and CLI `--no-include-content` available when the
168
+ receiver should only get metadata. See the
167
169
  [OpenTelemetry guide](https://github.com/lkleonk/wizardflow/blob/main/sdk/python/docs/opentelemetry.md)
168
170
  for provider ownership, GenAI mappings, content controls, graph events, and
169
171
  independent JSONL/OTel lifecycles. Existing artifacts can be exported later:
@@ -116,7 +116,9 @@ without changing their JSONL/UI label:
116
116
  node.log("quality", 0.92, otel_attribute="app.response.quality")
117
117
  ```
118
118
 
119
- Content export is privacy-conscious and disabled by default. See the
119
+ Content export is enabled by default when OTel export is enabled, with
120
+ `otel_include_content=False` and CLI `--no-include-content` available when the
121
+ receiver should only get metadata. See the
120
122
  [OpenTelemetry guide](https://github.com/lkleonk/wizardflow/blob/main/sdk/python/docs/opentelemetry.md)
121
123
  for provider ownership, GenAI mappings, content controls, graph events, and
122
124
  independent JSONL/OTel lifecycles. Existing artifacts can be exported later:
@@ -97,7 +97,7 @@ creates one `wizardflow.message` trace per message.
97
97
  | --- | --- | --- |
98
98
  | `--endpoint` | OTel environment | OTLP/HTTP traces endpoint |
99
99
  | `--trace-scope` | `recording` | `recording` or `message` trace boundaries |
100
- | `--include-content` | off | Export bounded input, output, and structured log content |
100
+ | `--include-content` / `--no-include-content` | on | Export or omit bounded input, output, and structured log content |
101
101
  | `--content-max-bytes` | `16_384` | Maximum bytes for each exported content value |
102
102
  | `--export-graph` | off | Add the WizardFlow graph event to each root |
103
103
  | `--graph-max-bytes` | `65_536` | Maximum full graph-event content size |
@@ -38,10 +38,11 @@ rooted at `wizardflow.run`. `--trace-scope message` creates one new trace per
38
38
  message, rooted at `wizardflow.message`. Both modes preserve recorded node
39
39
  timestamps and use the same semantic mapper as live export.
40
40
 
41
- Content and graph export remain opt-in:
41
+ Content export is enabled by default so the receiving UI shows useful inputs,
42
+ outputs, and structured logs on the first export. Graph export remains opt-in:
42
43
 
43
44
  ```bash
44
- wizardflow otel export run.jsonl --include-content --export-graph
45
+ wizardflow otel export run.jsonl --export-graph
45
46
  ```
46
47
 
47
48
  The endpoint may instead come from `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, or
@@ -61,7 +62,7 @@ trace = wizardflow.init(
61
62
  otel=True,
62
63
  otel_endpoint="http://localhost:4318/v1/traces",
63
64
  otel_trace_scope="message",
64
- otel_include_content=False,
65
+ otel_include_content=True, # default; set False to omit recorded content
65
66
  otel_content_max_bytes=16_384,
66
67
  export_graph_to_otel=False,
67
68
  )
@@ -240,15 +241,19 @@ WizardFlow never guesses GenAI semantics from a generic label. A record with
240
241
 
241
242
  ## Content privacy and size bounds
242
243
 
243
- Content export is disabled by default. With `otel_include_content=False`:
244
+ Content export is enabled by default once OTel export itself is enabled. This
245
+ can include prompts, responses, retrieved documents, and tool results. Use
246
+ `otel_include_content=False` for live export or `--no-include-content` for the
247
+ CLI when the receiving system should only receive metadata. With content
248
+ disabled:
244
249
 
245
250
  - semantic input/output is omitted;
246
251
  - structured generic logs are omitted;
247
252
  - scalar generic logs still export;
248
253
  - usage and compatible model parameters still export as metadata.
249
254
 
250
- Set `otel_include_content=True` only when the receiving system is appropriate
251
- for the data. Exported content is deterministically serialized and bounded by
255
+ Only export content to a receiving system appropriate for the data. Exported
256
+ content is deterministically serialized and bounded by
252
257
  `otel_content_max_bytes`, measured as UTF-8 bytes. JSONL always retains the
253
258
  original untruncated value.
254
259
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "wizardflow"
7
- version = "0.7.0"
7
+ version = "0.7.1"
8
8
  description = "Python SDK for recording agent flows into the WizardFlow / AgentTrace file format."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -84,7 +84,7 @@ def init(
84
84
  otel: bool = False,
85
85
  otel_endpoint: Optional[str] = None,
86
86
  otel_trace_scope: str = "recording",
87
- otel_include_content: bool = False,
87
+ otel_include_content: bool = True,
88
88
  otel_content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
89
89
  export_graph_to_otel: bool = False,
90
90
  ) -> Client:
@@ -132,7 +132,7 @@ def init_from_langgraph(
132
132
  otel: bool = False,
133
133
  otel_endpoint: Optional[str] = None,
134
134
  otel_trace_scope: str = "recording",
135
- otel_include_content: bool = False,
135
+ otel_include_content: bool = True,
136
136
  otel_content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
137
137
  export_graph_to_otel: bool = False,
138
138
  ) -> Client:
@@ -217,7 +217,15 @@ def _build_parser() -> argparse.ArgumentParser:
217
217
  default="recording",
218
218
  help="Create one recording trace (default) or one trace per message.",
219
219
  )
220
- otel_export.add_argument("--include-content", action="store_true")
220
+ otel_export.add_argument(
221
+ "--include-content",
222
+ action=argparse.BooleanOptionalAction,
223
+ default=True,
224
+ help=(
225
+ "Export bounded input, output, and structured log content (default: "
226
+ "enabled; use --no-include-content to omit it)."
227
+ ),
228
+ )
221
229
  otel_export.add_argument("--content-max-bytes", type=_positive_int, default=16_384)
222
230
  otel_export.add_argument("--export-graph", action="store_true")
223
231
  otel_export.add_argument("--graph-max-bytes", type=_positive_int, default=65_536)
@@ -404,7 +404,7 @@ class Client:
404
404
  otel: bool = False,
405
405
  otel_endpoint: Optional[str] = None,
406
406
  otel_trace_scope: str = "recording",
407
- otel_include_content: bool = False,
407
+ otel_include_content: bool = True,
408
408
  otel_content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
409
409
  export_graph_to_otel: bool = False,
410
410
  ):
@@ -509,7 +509,7 @@ class Client:
509
509
  otel: bool = False,
510
510
  otel_endpoint: Optional[str] = None,
511
511
  otel_trace_scope: str = "recording",
512
- otel_include_content: bool = False,
512
+ otel_include_content: bool = True,
513
513
  otel_content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
514
514
  export_graph_to_otel: bool = False,
515
515
  ) -> "Client":
@@ -50,7 +50,7 @@ class OTelBridge:
50
50
  trace_api: Any = None,
51
51
  provider: Any = None,
52
52
  trace_scope: str = "recording",
53
- include_content: bool = False,
53
+ include_content: bool = True,
54
54
  content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
55
55
  export_graph: bool = False,
56
56
  graph_max_bytes: int = DEFAULT_GRAPH_MAX_BYTES,
@@ -277,7 +277,7 @@ def create_otel_bridge(
277
277
  *,
278
278
  project_name: Optional[str] = None,
279
279
  trace_scope: str = "recording",
280
- include_content: bool = False,
280
+ include_content: bool = True,
281
281
  content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
282
282
  export_graph: bool = False,
283
283
  graph_max_bytes: int = DEFAULT_GRAPH_MAX_BYTES,
@@ -19,7 +19,7 @@ from .reader import TraceChain
19
19
  class ExportOptions:
20
20
  endpoint: str
21
21
  trace_scope: str = "recording"
22
- include_content: bool = False
22
+ include_content: bool = True
23
23
  content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES
24
24
  export_graph: bool = False
25
25
  graph_max_bytes: int = DEFAULT_GRAPH_MAX_BYTES
@@ -188,7 +188,7 @@ def map_node_attributes(
188
188
  kind: str,
189
189
  payloads: Iterable[Mapping[str, Any]],
190
190
  message_meta: Optional[Mapping[str, Any]] = None,
191
- include_content: bool = False,
191
+ include_content: bool = True,
192
192
  content_max_bytes: int = DEFAULT_CONTENT_MAX_BYTES,
193
193
  ) -> Dict[str, Any]:
194
194
  """Project one resolved node execution into span attributes."""
@@ -11,6 +11,7 @@ import pytest
11
11
  from wizardflow.cli import (
12
12
  TRACE_ROUTE,
13
13
  WizardFlowCliError,
14
+ _build_parser,
14
15
  _is_agent_trace_file,
15
16
  _load_trace,
16
17
  _make_handler,
@@ -25,6 +26,21 @@ from wizardflow.cli import (
25
26
  )
26
27
 
27
28
 
29
+ def test_otel_export_cli_includes_content_by_default_with_opt_out():
30
+ parser = _build_parser()
31
+ default = parser.parse_args(["otel", "export", "trace.jsonl"])
32
+ opted_out = parser.parse_args(
33
+ ["otel", "export", "trace.jsonl", "--no-include-content"]
34
+ )
35
+ explicit = parser.parse_args(
36
+ ["otel", "export", "trace.jsonl", "--include-content"]
37
+ )
38
+
39
+ assert default.include_content is True
40
+ assert opted_out.include_content is False
41
+ assert explicit.include_content is True
42
+
43
+
28
44
  def test_otel_endpoint_resolution(monkeypatch):
29
45
  monkeypatch.delenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", raising=False)
30
46
  monkeypatch.setenv("OTEL_EXPORTER_OTLP_ENDPOINT", "http://collector:4318/")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes