loopview 0.1.0__py3-none-any.whl

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 (51) hide show
  1. loopview/__init__.py +3 -0
  2. loopview/app.py +252 -0
  3. loopview/cli.py +128 -0
  4. loopview/cost/__init__.py +1 -0
  5. loopview/cost/pricing.json +62 -0
  6. loopview/cost/pricing.py +74 -0
  7. loopview/cost/split.py +228 -0
  8. loopview/demo_data/flagship.otlp.jsonl +13 -0
  9. loopview/devtools/__init__.py +1 -0
  10. loopview/devtools/dump_normalized.py +211 -0
  11. loopview/ingest/__init__.py +1 -0
  12. loopview/ingest/otlp.py +305 -0
  13. loopview/ingest/raw.py +47 -0
  14. loopview/live.py +154 -0
  15. loopview/normalize/__init__.py +1 -0
  16. loopview/normalize/adapters/__init__.py +14 -0
  17. loopview/normalize/adapters/base.py +87 -0
  18. loopview/normalize/adapters/gen_ai.py +252 -0
  19. loopview/normalize/adapters/generic.py +22 -0
  20. loopview/normalize/adapters/openinference.py +367 -0
  21. loopview/normalize/derived_tools.py +90 -0
  22. loopview/normalize/loop_nodes.py +193 -0
  23. loopview/normalize/normalizer.py +326 -0
  24. loopview/normalize/schema.py +161 -0
  25. loopview/normalize/transitions.py +106 -0
  26. loopview/py.typed +0 -0
  27. loopview/static/assets/elk-worker.min-DfmSo98M.js +22 -0
  28. loopview/static/assets/index-CEGppBgk.css +1 -0
  29. loopview/static/assets/index-DzC96LiQ.js +21 -0
  30. loopview/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  31. loopview/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  32. loopview/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  33. loopview/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  34. loopview/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  35. loopview/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  36. loopview/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  37. loopview/static/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  38. loopview/static/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  39. loopview/static/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  40. loopview/static/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  41. loopview/static/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  42. loopview/static/index.html +13 -0
  43. loopview/store/__init__.py +1 -0
  44. loopview/store/capture.py +112 -0
  45. loopview/store/memory.py +165 -0
  46. loopview/tools/__init__.py +1 -0
  47. loopview/tools/report.py +347 -0
  48. loopview-0.1.0.dist-info/METADATA +72 -0
  49. loopview-0.1.0.dist-info/RECORD +51 -0
  50. loopview-0.1.0.dist-info/WHEEL +4 -0
  51. loopview-0.1.0.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.4
2
+ Name: loopview
3
+ Version: 0.1.0
4
+ Summary: Watch your AI agents run as a live graph, from any OpenTelemetry trace.
5
+ Keywords: ai-agents,llm,opentelemetry,observability,debugging,tracing
6
+ Author: YasmineZerai
7
+ Author-email: YasmineZerai <zeraiyasmine7@gmail.com>
8
+ License-Expression: Apache-2.0
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Topic :: Software Development :: Debuggers
16
+ Classifier: Topic :: System :: Monitoring
17
+ Requires-Dist: fastapi>=0.115
18
+ Requires-Dist: uvicorn>=0.30
19
+ Requires-Dist: pydantic>=2.7
20
+ Requires-Dist: opentelemetry-proto>=1.45
21
+ Requires-Python: >=3.11
22
+ Project-URL: Homepage, https://github.com/YasmineZerai/loopview
23
+ Project-URL: Demo, https://yasminezerai.github.io/loopview/
24
+ Project-URL: Documentation, https://github.com/YasmineZerai/loopview#readme
25
+ Project-URL: Issues, https://github.com/YasmineZerai/loopview/issues
26
+ Description-Content-Type: text/markdown
27
+
28
+ # loopview
29
+
30
+ **Debug your AI agents as a live graph, whatever framework they're built with.**
31
+
32
+ See which agent ran, what it thought, which tool failed, what it did next, and what it cost.
33
+ LangGraph, Pydantic AI, CrewAI, the OpenAI Agents SDK or your own loop: one view, from
34
+ standard OpenTelemetry, on your machine.
35
+
36
+ ![loopview replaying a multi-agent run](https://raw.githubusercontent.com/YasmineZerai/loopview/main/docs/demo.gif)
37
+
38
+ [Live demo](https://yasminezerai.github.io/loopview/) ·
39
+ [Documentation](https://github.com/YasmineZerai/loopview#readme)
40
+
41
+ ## Try it
42
+
43
+ ```sh
44
+ uvx loopview demo
45
+ ```
46
+
47
+ Your browser opens on a recorded multi-agent run. No API key needed.
48
+
49
+ ## Watch your own agent
50
+
51
+ ```sh
52
+ uvx loopview # UI and OTLP endpoint on http://127.0.0.1:4318
53
+ ```
54
+
55
+ In your agent's environment:
56
+
57
+ ```sh
58
+ pip install loopview-sdk
59
+ ```
60
+
61
+ ```python
62
+ import loopview_sdk
63
+
64
+ loopview_sdk.connect() # at the start of your program
65
+ ```
66
+
67
+ `connect()` switches on the OpenTelemetry instrumentation of every agent framework and model
68
+ SDK it finds installed. Agents in other languages can send OTLP over HTTP to
69
+ `http://127.0.0.1:4318/v1/traces`.
70
+
71
+ Which instrumentation package each framework needs, and everything else, is in the
72
+ [README on GitHub](https://github.com/YasmineZerai/loopview#connect-your-agent).
@@ -0,0 +1,51 @@
1
+ loopview/__init__.py,sha256=llYI_lSb0TCI3si9-oUSOM_QZf2mGlzpruVB9MaXQbc,106
2
+ loopview/app.py,sha256=fVwcmicaQ4tjY-BOe70qsZrzoOI9HI7R6dji7xb4qyM,10422
3
+ loopview/cli.py,sha256=N8mM46yqpgdm051U5jAEjj7CqsioiJJHetuRgLR59lw,4707
4
+ loopview/cost/__init__.py,sha256=eLxeYwQJMUk3k5q_KgKc6fK9UR5D2oM1Ev_fl3-Hugk,79
5
+ loopview/cost/pricing.json,sha256=hSUYyKBNQtX5hNgAggCViAJVY0qrzVp5GQfdCc48NE8,9985
6
+ loopview/cost/pricing.py,sha256=v9unLEQZv1Xp5v7WdQKvnTahrDW9rb0x1mJ_7upt06s,2359
7
+ loopview/cost/split.py,sha256=NZN4J45AD3oTyPk4YJXFVosVj5UqQdZlgCXFt6h9FYo,9151
8
+ loopview/demo_data/flagship.otlp.jsonl,sha256=h8Etmjq4BWyypE2RrjmjFdHYamuUOj46lYrqgjrp4ws,1413694
9
+ loopview/devtools/__init__.py,sha256=C_hX9T3og-ZWYgTdzN5Jsz1fV2I3VcJpcYRDyiUAVEk,44
10
+ loopview/devtools/dump_normalized.py,sha256=N5ZHLKrCljShyulBYvvNxRsNRTA2ehxt5AVOqwB2QQw,9409
11
+ loopview/ingest/__init__.py,sha256=2FOkWPllkwfSY51r1_2d1aqmkBDh0YIvKZa0IcNOutM,60
12
+ loopview/ingest/otlp.py,sha256=vBMJjMvAVKT_x8djJQMoMt4z8uE-m1gg-FvVuSnm3G4,11260
13
+ loopview/ingest/raw.py,sha256=hgNCxL08K2GlGXpaWafbqFaRvuoKwYfF7xomqEQ6ww8,1645
14
+ loopview/live.py,sha256=kkPB6ZILcVn2EVQViejOnt_wNY8BEq04xlb2tS9A1BI,6344
15
+ loopview/normalize/__init__.py,sha256=wVPLQY30SzGcMuPx1DOEB1jDbIYYAbq34cjb0oMTLp8,77
16
+ loopview/normalize/adapters/__init__.py,sha256=Sam_Cw_9qcSpMWtdx3HC-Fxpm9msFe1ForWa4_jE0-E,595
17
+ loopview/normalize/adapters/base.py,sha256=lV7xlE9xJehl14gjTf5g52zs7tMx68bd0Bjnu-WBNzs,2736
18
+ loopview/normalize/adapters/gen_ai.py,sha256=DPZPT7c21GLV9kFexamlOykTzdMXk6dmo0pUArIOgAw,9631
19
+ loopview/normalize/adapters/generic.py,sha256=ofk8QI6r3a4Vh_rM5Y50kK5Fab7HLHnDUts_SZV1oJg,765
20
+ loopview/normalize/adapters/openinference.py,sha256=G7jrv051wPaq7zpo9uFwu-3XM-0gv60fuF6JBVgMwUk,15063
21
+ loopview/normalize/derived_tools.py,sha256=igOTbNJBDnei42FGLbs0L4KJxDAqE-2gcYwr1bBSMQA,4371
22
+ loopview/normalize/loop_nodes.py,sha256=QoCub_-jkNU1uYfeqMtHTiPlEOIu83fgi-ZtgmXQyBQ,7825
23
+ loopview/normalize/normalizer.py,sha256=zwyjmhf_qWDP6fphbtQvxHegN7IAGmJITlfTortsvJ8,12705
24
+ loopview/normalize/schema.py,sha256=flmvebZN_rC9SK6pPswZk5lt5dfIPyhr_qfkpy7hV4Y,5896
25
+ loopview/normalize/transitions.py,sha256=7CUzxNDPPH6OdftZ3IPC9I8KLT1kGIYLBVKcxLn8srI,4429
26
+ loopview/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ loopview/static/assets/elk-worker.min-DfmSo98M.js,sha256=x6UTvV-ZfnSEq2CAsWurNonOcWIlzc-RDsljNuK0IKc,1424028
28
+ loopview/static/assets/index-CEGppBgk.css,sha256=ZqbnSBVqRgyEQhnn1B1yj8MIXQ8InJpeqJ1wJH1RNNc,67410
29
+ loopview/static/assets/index-DzC96LiQ.js,sha256=QErZ2dezRrHJjc5d-HvECR-dO8Ck0fb1YraAkkqiGq8,499747
30
+ loopview/static/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2,sha256=yhVwYzOaxK1BjyFPOr_tEZsHmKtNN3OGzlyeWnpDXr0,25960
31
+ loopview/static/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2,sha256=cdXuk8wenx1SCjqLZkVt4Yx4edjfCdV_zS6v91_vAHU,18748
32
+ loopview/static/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2,sha256=bp4CCiX5tW1BjywIWx08CXJaTaI_5pOltGMGRgZzIZA,11232
33
+ loopview/static/assets/inter-greek-wght-normal-CkhJZR-_.woff2,sha256=G-NEjikvvwX_4Xb-HkPxNQE9ULHn0yStGlWPYj07tvY,18996
34
+ loopview/static/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2,sha256=NLnFBMq3pz43t0Y0OkSRMuVs97VIGvLLgdx03P8lyVY,85068
35
+ loopview/static/assets/inter-latin-wght-normal-Dx4kXJAl.woff2,sha256=MQDndehhbNJhG-7PojpCY9cDdYZ4m0PwNSNqLm-9TGI,48256
36
+ loopview/static/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2,sha256=XGb54H6QxtSsSSLMaNYN4mwXsYWOZ3-15gP845UrP_I,10252
37
+ loopview/static/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2,sha256=0nRgTEB1f5jwffYjqLj7UZRQim-k9UE6ehB_CeO3RSo,12108
38
+ loopview/static/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2,sha256=7oYxmAd_MJP_qBwHJYHMS9YIoE5gqKnAuEY5bOTxQQk,9004
39
+ loopview/static/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2,sha256=eb_aubpGfibupBIubyVn4YjdigmoxzDVAfxIfEq5nG4,15196
40
+ loopview/static/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2,sha256=GL5FJyS_3CNsB0ypSiSaf0GoZ1LH0EqyWM6e1WUfan4,40404
41
+ loopview/static/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2,sha256=Ioh5Xaid2X5kiVS5biK0UBvYXfxFMmRGCyUviItYLKI,7504
42
+ loopview/static/index.html,sha256=eOJ33AgjWLKxm-YLHZbaO5ADsZyTZV8FqWlLEWim1s0,393
43
+ loopview/store/__init__.py,sha256=0waqc4EsMt0E1vkg4WJvFRvW_yJvasYUNFVcKFdefgY,74
44
+ loopview/store/capture.py,sha256=Za5YWYM7ej3zzdsFQJKdSC3w-V4ziq9iJmzIyE_5Gi4,3918
45
+ loopview/store/memory.py,sha256=MK66MaOg4_PDIG_N2yM2-2C6ODVfYS0TjdVQ_LXdzoY,6665
46
+ loopview/tools/__init__.py,sha256=cnYQFw07Q5iKXFAs7XpQMyl4fWyU1ePssSaXtVH3viU,68
47
+ loopview/tools/report.py,sha256=zdkQDk36iZ6lrPKdpU6iloa6OWiGHlkgI7ktqh4TJ6g,13601
48
+ loopview-0.1.0.dist-info/WHEEL,sha256=cmC5s21ojypbVslldL7IJq3hjZH-tINy4rziKePFsG0,81
49
+ loopview-0.1.0.dist-info/entry_points.txt,sha256=cUF40S0OICzR0G-MRUKSfqaznvGGp7my0VuXRfhedxo,48
50
+ loopview-0.1.0.dist-info/METADATA,sha256=xce-bqLlfrwX4x3ttkEnu8-DjJFrLitsvuL0s8ZhmAw,2452
51
+ loopview-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.12.23
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ loopview = loopview.cli:main
3
+