golf-mcp 0.2.1__py3-none-any.whl → 0.2.3__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.

Potentially problematic release.


This version of golf-mcp might be problematic. Click here for more details.

Files changed (69) hide show
  1. golf/__init__.py +1 -1
  2. golf/_endpoints.py +2 -2
  3. golf/_endpoints.py.in +6 -0
  4. golf/auth/__init__.py +4 -4
  5. golf/auth/factory.py +4 -2
  6. golf/auth/providers.py +169 -1
  7. golf/core/builder_auth.py +2 -2
  8. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/METADATA +1 -1
  9. golf_mcp-0.2.3.dist-info/RECORD +56 -0
  10. golf/examples/__pycache__/__init__.cpython-311.pyc +0 -0
  11. golf/examples/basic/.coverage +0 -0
  12. golf/examples/basic/__pycache__/auth.cpython-311.pyc +0 -0
  13. golf/examples/basic/htmlcov/.gitignore +0 -2
  14. golf/examples/basic/htmlcov/class_index.html +0 -547
  15. golf/examples/basic/htmlcov/coverage_html_cb_6fb7b396.js +0 -733
  16. golf/examples/basic/htmlcov/favicon_32_cb_58284776.png +0 -0
  17. golf/examples/basic/htmlcov/function_index.html +0 -2091
  18. golf/examples/basic/htmlcov/index.html +0 -349
  19. golf/examples/basic/htmlcov/keybd_closed_cb_ce680311.png +0 -0
  20. golf/examples/basic/htmlcov/status.json +0 -1
  21. golf/examples/basic/htmlcov/style_cb_8e611ae1.css +0 -337
  22. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496___init___py.html +0 -323
  23. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_api_key_py.html +0 -170
  24. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_factory_py.html +0 -430
  25. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_helpers_py.html +0 -288
  26. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_providers_py.html +0 -493
  27. golf/examples/basic/htmlcov/z_1c9a91c0e91c8496_registry_py.html +0 -353
  28. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950___init___py.html +0 -120
  29. golf/examples/basic/htmlcov/z_3ec3b3f490dc0950_instrumentation_py.html +0 -1535
  30. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db___init___py.html +0 -98
  31. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_branding_py.html +0 -289
  32. golf/examples/basic/htmlcov/z_4b8b9dd4ccccc5db_main_py.html +0 -476
  33. golf/examples/basic/htmlcov/z_5a6c4e6bcc86fb2f___init___py.html +0 -97
  34. golf/examples/basic/htmlcov/z_6cadab9ec0df475d___init___py.html +0 -102
  35. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_build_py.html +0 -178
  36. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_init_py.html +0 -387
  37. golf/examples/basic/htmlcov/z_6cadab9ec0df475d_run_py.html +0 -222
  38. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4___init___py.html +0 -106
  39. golf/examples/basic/htmlcov/z_6fcdee0582ba84e4__endpoints_fallback_py.html +0 -107
  40. golf/examples/basic/htmlcov/z_7ba499ed22986217___init___py.html +0 -98
  41. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_auth_py.html +0 -306
  42. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_metrics_py.html +0 -329
  43. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_py.html +0 -1471
  44. golf/examples/basic/htmlcov/z_7ba499ed22986217_builder_telemetry_py.html +0 -186
  45. golf/examples/basic/htmlcov/z_7ba499ed22986217_config_py.html +0 -315
  46. golf/examples/basic/htmlcov/z_7ba499ed22986217_parser_py.html +0 -1149
  47. golf/examples/basic/htmlcov/z_7ba499ed22986217_platform_py.html +0 -279
  48. golf/examples/basic/htmlcov/z_7ba499ed22986217_telemetry_py.html +0 -589
  49. golf/examples/basic/htmlcov/z_7ba499ed22986217_transformer_py.html +0 -286
  50. golf/examples/basic/htmlcov/z_7d7da37693a43688___init___py.html +0 -107
  51. golf/examples/basic/htmlcov/z_7d7da37693a43688_collector_py.html +0 -417
  52. golf/examples/basic/htmlcov/z_7d7da37693a43688_registry_py.html +0 -109
  53. golf/examples/basic/htmlcov/z_abe733142b40ad4e___init___py.html +0 -109
  54. golf/examples/basic/htmlcov/z_abe733142b40ad4e_context_py.html +0 -150
  55. golf/examples/basic/htmlcov/z_abe733142b40ad4e_elicitation_py.html +0 -267
  56. golf/examples/basic/htmlcov/z_abe733142b40ad4e_sampling_py.html +0 -318
  57. golf/examples/basic/prompts/__pycache__/welcome.cpython-311.pyc +0 -0
  58. golf/examples/basic/resources/__pycache__/current_time.cpython-311.pyc +0 -0
  59. golf/examples/basic/resources/__pycache__/info.cpython-311.pyc +0 -0
  60. golf/examples/basic/resources/weather/__pycache__/common.cpython-311.pyc +0 -0
  61. golf/examples/basic/resources/weather/__pycache__/current.cpython-311.pyc +0 -0
  62. golf/examples/basic/resources/weather/__pycache__/forecast.cpython-311.pyc +0 -0
  63. golf/examples/basic/tools/__pycache__/calculator.cpython-311.pyc +0 -0
  64. golf/examples/basic/tools/say/__pycache__/hello.cpython-311.pyc +0 -0
  65. golf_mcp-0.2.1.dist-info/RECORD +0 -110
  66. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/WHEEL +0 -0
  67. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/entry_points.txt +0 -0
  68. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/licenses/LICENSE +0 -0
  69. {golf_mcp-0.2.1.dist-info → golf_mcp-0.2.3.dist-info}/top_level.txt +0 -0
@@ -1,417 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <title>Coverage for /Users/antonigmitruk/golf/src/golf/metrics/collector.py: 0%</title>
6
- <link rel="icon" sizes="32x32" href="favicon_32_cb_58284776.png">
7
- <link rel="stylesheet" href="style_cb_8e611ae1.css" type="text/css">
8
- <script src="coverage_html_cb_6fb7b396.js" defer></script>
9
- </head>
10
- <body class="pyfile">
11
- <header>
12
- <div class="content">
13
- <h1>
14
- <span class="text">Coverage for </span><b>/Users/antonigmitruk/golf/src/golf/metrics/collector.py</b>:
15
- <span class="pc_cov">0%</span>
16
- </h1>
17
- <aside id="help_panel_wrapper">
18
- <input id="help_panel_state" type="checkbox">
19
- <label for="help_panel_state">
20
- <img id="keyboard_icon" src="keybd_closed_cb_ce680311.png" alt="Show/hide keyboard shortcuts">
21
- </label>
22
- <div id="help_panel">
23
- <p class="legend">Shortcuts on this page</p>
24
- <div class="keyhelp">
25
- <p>
26
- <kbd>r</kbd>
27
- <kbd>m</kbd>
28
- <kbd>x</kbd>
29
- &nbsp; toggle line displays
30
- </p>
31
- <p>
32
- <kbd>j</kbd>
33
- <kbd>k</kbd>
34
- &nbsp; next/prev highlighted chunk
35
- </p>
36
- <p>
37
- <kbd>0</kbd> &nbsp; (zero) top of page
38
- </p>
39
- <p>
40
- <kbd>1</kbd> &nbsp; (one) first highlighted chunk
41
- </p>
42
- <p>
43
- <kbd>[</kbd>
44
- <kbd>]</kbd>
45
- &nbsp; prev/next file
46
- </p>
47
- <p>
48
- <kbd>u</kbd> &nbsp; up to the index
49
- </p>
50
- <p>
51
- <kbd>?</kbd> &nbsp; show/hide this help
52
- </p>
53
- </div>
54
- </div>
55
- </aside>
56
- <h2>
57
- <span class="text">95 statements &nbsp;</span>
58
- <button type="button" class="run button_toggle_run" value="run" data-shortcut="r" title="Toggle lines run">0<span class="text"> run</span></button>
59
- <button type="button" class="mis show_mis button_toggle_mis" value="mis" data-shortcut="m" title="Toggle lines missing">95<span class="text"> missing</span></button>
60
- <button type="button" class="exc show_exc button_toggle_exc" value="exc" data-shortcut="x" title="Toggle lines excluded">0<span class="text"> excluded</span></button>
61
- </h2>
62
- <p class="text">
63
- <a id="prevFileLink" class="nav" href="z_7d7da37693a43688___init___py.html">&#xab; prev</a> &nbsp; &nbsp;
64
- <a id="indexLink" class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
65
- <a id="nextFileLink" class="nav" href="z_7d7da37693a43688_registry_py.html">&#xbb; next</a>
66
- &nbsp; &nbsp; &nbsp;
67
- <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
68
- created at 2025-08-16 18:46 +0200
69
- </p>
70
- <aside class="hidden">
71
- <button type="button" class="button_next_chunk" data-shortcut="j"></button>
72
- <button type="button" class="button_prev_chunk" data-shortcut="k"></button>
73
- <button type="button" class="button_top_of_page" data-shortcut="0"></button>
74
- <button type="button" class="button_first_chunk" data-shortcut="1"></button>
75
- <button type="button" class="button_prev_file" data-shortcut="["></button>
76
- <button type="button" class="button_next_file" data-shortcut="]"></button>
77
- <button type="button" class="button_to_index" data-shortcut="u"></button>
78
- <button type="button" class="button_show_hide_help" data-shortcut="?"></button>
79
- </aside>
80
- </div>
81
- </header>
82
- <main id="source">
83
- <p class="pln"><span class="n"><a id="t1" href="#t1">1</a></span><span class="t"><span class="str">"""Metrics collector for Golf MCP servers."""</span>&nbsp;</span><span class="r"></span></p>
84
- <p class="pln"><span class="n"><a id="t2" href="#t2">2</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
85
- <p class="mis show_mis"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">typing</span> <span class="key">import</span> <span class="nam">Optional</span>&nbsp;</span><span class="r"></span></p>
86
- <p class="pln"><span class="n"><a id="t4" href="#t4">4</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
87
- <p class="pln"><span class="n"><a id="t5" href="#t5">5</a></span><span class="t"><span class="com"># Global metrics collector instance</span>&nbsp;</span><span class="r"></span></p>
88
- <p class="mis show_mis"><span class="n"><a id="t6" href="#t6">6</a></span><span class="t"><span class="nam">_metrics_collector</span><span class="op">:</span> <span class="nam">Optional</span><span class="op">[</span><span class="str">"MetricsCollector"</span><span class="op">]</span> <span class="op">=</span> <span class="key">None</span>&nbsp;</span><span class="r"></span></p>
89
- <p class="pln"><span class="n"><a id="t7" href="#t7">7</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
90
- <p class="pln"><span class="n"><a id="t8" href="#t8">8</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
91
- <p class="mis show_mis"><span class="n"><a id="t9" href="#t9">9</a></span><span class="t"><span class="key">class</span> <span class="nam">MetricsCollector</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
92
- <p class="pln"><span class="n"><a id="t10" href="#t10">10</a></span><span class="t"> <span class="str">"""Collects metrics for Golf MCP servers using Prometheus client."""</span>&nbsp;</span><span class="r"></span></p>
93
- <p class="pln"><span class="n"><a id="t11" href="#t11">11</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
94
- <p class="mis show_mis"><span class="n"><a id="t12" href="#t12">12</a></span><span class="t"> <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">enabled</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="key">False</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
95
- <p class="pln"><span class="n"><a id="t13" href="#t13">13</a></span><span class="t"> <span class="str">"""Initialize the metrics collector.</span>&nbsp;</span><span class="r"></span></p>
96
- <p class="pln"><span class="n"><a id="t14" href="#t14">14</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
97
- <p class="pln"><span class="n"><a id="t15" href="#t15">15</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
98
- <p class="pln"><span class="n"><a id="t16" href="#t16">16</a></span><span class="t"><span class="str"> enabled: Whether metrics collection is enabled</span>&nbsp;</span><span class="r"></span></p>
99
- <p class="pln"><span class="n"><a id="t17" href="#t17">17</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
100
- <p class="mis show_mis"><span class="n"><a id="t18" href="#t18">18</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="nam">enabled</span>&nbsp;</span><span class="r"></span></p>
101
- <p class="mis show_mis"><span class="n"><a id="t19" href="#t19">19</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span> <span class="op">=</span> <span class="op">{</span><span class="op">}</span>&nbsp;</span><span class="r"></span></p>
102
- <p class="pln"><span class="n"><a id="t20" href="#t20">20</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
103
- <p class="mis show_mis"><span class="n"><a id="t21" href="#t21">21</a></span><span class="t"> <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
104
- <p class="mis show_mis"><span class="n"><a id="t22" href="#t22">22</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_init_prometheus_metrics</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
105
- <p class="pln"><span class="n"><a id="t23" href="#t23">23</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
106
- <p class="mis show_mis"><span class="n"><a id="t24" href="#t24">24</a></span><span class="t"> <span class="key">def</span> <span class="nam">_init_prometheus_metrics</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
107
- <p class="pln"><span class="n"><a id="t25" href="#t25">25</a></span><span class="t"> <span class="str">"""Initialize Prometheus metrics if enabled."""</span>&nbsp;</span><span class="r"></span></p>
108
- <p class="mis show_mis"><span class="n"><a id="t26" href="#t26">26</a></span><span class="t"> <span class="key">try</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
109
- <p class="mis show_mis"><span class="n"><a id="t27" href="#t27">27</a></span><span class="t"> <span class="key">from</span> <span class="nam">prometheus_client</span> <span class="key">import</span> <span class="nam">Counter</span><span class="op">,</span> <span class="nam">Histogram</span><span class="op">,</span> <span class="nam">Gauge</span>&nbsp;</span><span class="r"></span></p>
110
- <p class="pln"><span class="n"><a id="t28" href="#t28">28</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
111
- <p class="pln"><span class="n"><a id="t29" href="#t29">29</a></span><span class="t"> <span class="com"># Tool execution metrics</span>&nbsp;</span><span class="r"></span></p>
112
- <p class="mis show_mis"><span class="n"><a id="t30" href="#t30">30</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"tool_executions"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
113
- <p class="pln"><span class="n"><a id="t31" href="#t31">31</a></span><span class="t"> <span class="str">"golf_tool_executions_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
114
- <p class="pln"><span class="n"><a id="t32" href="#t32">32</a></span><span class="t"> <span class="str">"Total number of tool executions"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
115
- <p class="pln"><span class="n"><a id="t33" href="#t33">33</a></span><span class="t"> <span class="op">[</span><span class="str">"tool_name"</span><span class="op">,</span> <span class="str">"status"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
116
- <p class="pln"><span class="n"><a id="t34" href="#t34">34</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
117
- <p class="pln"><span class="n"><a id="t35" href="#t35">35</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
118
- <p class="mis show_mis"><span class="n"><a id="t36" href="#t36">36</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"tool_duration"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Histogram</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
119
- <p class="pln"><span class="n"><a id="t37" href="#t37">37</a></span><span class="t"> <span class="str">"golf_tool_duration_seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
120
- <p class="pln"><span class="n"><a id="t38" href="#t38">38</a></span><span class="t"> <span class="str">"Tool execution duration in seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
121
- <p class="pln"><span class="n"><a id="t39" href="#t39">39</a></span><span class="t"> <span class="op">[</span><span class="str">"tool_name"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
122
- <p class="pln"><span class="n"><a id="t40" href="#t40">40</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
123
- <p class="pln"><span class="n"><a id="t41" href="#t41">41</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
124
- <p class="pln"><span class="n"><a id="t42" href="#t42">42</a></span><span class="t"> <span class="com"># HTTP request metrics</span>&nbsp;</span><span class="r"></span></p>
125
- <p class="mis show_mis"><span class="n"><a id="t43" href="#t43">43</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"http_requests"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
126
- <p class="pln"><span class="n"><a id="t44" href="#t44">44</a></span><span class="t"> <span class="str">"golf_http_requests_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
127
- <p class="pln"><span class="n"><a id="t45" href="#t45">45</a></span><span class="t"> <span class="str">"Total number of HTTP requests"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
128
- <p class="pln"><span class="n"><a id="t46" href="#t46">46</a></span><span class="t"> <span class="op">[</span><span class="str">"method"</span><span class="op">,</span> <span class="str">"status_code"</span><span class="op">,</span> <span class="str">"path"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
129
- <p class="pln"><span class="n"><a id="t47" href="#t47">47</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
130
- <p class="pln"><span class="n"><a id="t48" href="#t48">48</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
131
- <p class="mis show_mis"><span class="n"><a id="t49" href="#t49">49</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"http_duration"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Histogram</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
132
- <p class="pln"><span class="n"><a id="t50" href="#t50">50</a></span><span class="t"> <span class="str">"golf_http_request_duration_seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
133
- <p class="pln"><span class="n"><a id="t51" href="#t51">51</a></span><span class="t"> <span class="str">"HTTP request duration in seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
134
- <p class="pln"><span class="n"><a id="t52" href="#t52">52</a></span><span class="t"> <span class="op">[</span><span class="str">"method"</span><span class="op">,</span> <span class="str">"path"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
135
- <p class="pln"><span class="n"><a id="t53" href="#t53">53</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
136
- <p class="pln"><span class="n"><a id="t54" href="#t54">54</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
137
- <p class="pln"><span class="n"><a id="t55" href="#t55">55</a></span><span class="t"> <span class="com"># Resource access metrics</span>&nbsp;</span><span class="r"></span></p>
138
- <p class="mis show_mis"><span class="n"><a id="t56" href="#t56">56</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"resource_reads"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
139
- <p class="pln"><span class="n"><a id="t57" href="#t57">57</a></span><span class="t"> <span class="str">"golf_resource_reads_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
140
- <p class="pln"><span class="n"><a id="t58" href="#t58">58</a></span><span class="t"> <span class="str">"Total number of resource reads"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
141
- <p class="pln"><span class="n"><a id="t59" href="#t59">59</a></span><span class="t"> <span class="op">[</span><span class="str">"resource_uri"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
142
- <p class="pln"><span class="n"><a id="t60" href="#t60">60</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
143
- <p class="pln"><span class="n"><a id="t61" href="#t61">61</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
144
- <p class="pln"><span class="n"><a id="t62" href="#t62">62</a></span><span class="t"> <span class="com"># Prompt generation metrics</span>&nbsp;</span><span class="r"></span></p>
145
- <p class="mis show_mis"><span class="n"><a id="t63" href="#t63">63</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"prompt_generations"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
146
- <p class="pln"><span class="n"><a id="t64" href="#t64">64</a></span><span class="t"> <span class="str">"golf_prompt_generations_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
147
- <p class="pln"><span class="n"><a id="t65" href="#t65">65</a></span><span class="t"> <span class="str">"Total number of prompt generations"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
148
- <p class="pln"><span class="n"><a id="t66" href="#t66">66</a></span><span class="t"> <span class="op">[</span><span class="str">"prompt_name"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
149
- <p class="pln"><span class="n"><a id="t67" href="#t67">67</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
150
- <p class="pln"><span class="n"><a id="t68" href="#t68">68</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
151
- <p class="pln"><span class="n"><a id="t69" href="#t69">69</a></span><span class="t"> <span class="com"># Sampling metrics</span>&nbsp;</span><span class="r"></span></p>
152
- <p class="mis show_mis"><span class="n"><a id="t70" href="#t70">70</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sampling_requests"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
153
- <p class="pln"><span class="n"><a id="t71" href="#t71">71</a></span><span class="t"> <span class="str">"golf_sampling_requests_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
154
- <p class="pln"><span class="n"><a id="t72" href="#t72">72</a></span><span class="t"> <span class="str">"Total number of sampling requests"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
155
- <p class="pln"><span class="n"><a id="t73" href="#t73">73</a></span><span class="t"> <span class="op">[</span><span class="str">"sampling_type"</span><span class="op">,</span> <span class="str">"status"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
156
- <p class="pln"><span class="n"><a id="t74" href="#t74">74</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
157
- <p class="pln"><span class="n"><a id="t75" href="#t75">75</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
158
- <p class="mis show_mis"><span class="n"><a id="t76" href="#t76">76</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sampling_duration"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Histogram</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
159
- <p class="pln"><span class="n"><a id="t77" href="#t77">77</a></span><span class="t"> <span class="str">"golf_sampling_duration_seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
160
- <p class="pln"><span class="n"><a id="t78" href="#t78">78</a></span><span class="t"> <span class="str">"Sampling request duration in seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
161
- <p class="pln"><span class="n"><a id="t79" href="#t79">79</a></span><span class="t"> <span class="op">[</span><span class="str">"sampling_type"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
162
- <p class="pln"><span class="n"><a id="t80" href="#t80">80</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
163
- <p class="pln"><span class="n"><a id="t81" href="#t81">81</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
164
- <p class="mis show_mis"><span class="n"><a id="t82" href="#t82">82</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sampling_tokens"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Histogram</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
165
- <p class="pln"><span class="n"><a id="t83" href="#t83">83</a></span><span class="t"> <span class="str">"golf_sampling_tokens"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
166
- <p class="pln"><span class="n"><a id="t84" href="#t84">84</a></span><span class="t"> <span class="str">"Number of tokens in sampling responses"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
167
- <p class="pln"><span class="n"><a id="t85" href="#t85">85</a></span><span class="t"> <span class="op">[</span><span class="str">"sampling_type"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
168
- <p class="pln"><span class="n"><a id="t86" href="#t86">86</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
169
- <p class="pln"><span class="n"><a id="t87" href="#t87">87</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
170
- <p class="pln"><span class="n"><a id="t88" href="#t88">88</a></span><span class="t"> <span class="com"># Elicitation metrics</span>&nbsp;</span><span class="r"></span></p>
171
- <p class="mis show_mis"><span class="n"><a id="t89" href="#t89">89</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"elicitation_requests"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
172
- <p class="pln"><span class="n"><a id="t90" href="#t90">90</a></span><span class="t"> <span class="str">"golf_elicitation_requests_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
173
- <p class="pln"><span class="n"><a id="t91" href="#t91">91</a></span><span class="t"> <span class="str">"Total number of elicitation requests"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
174
- <p class="pln"><span class="n"><a id="t92" href="#t92">92</a></span><span class="t"> <span class="op">[</span><span class="str">"elicitation_type"</span><span class="op">,</span> <span class="str">"status"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
175
- <p class="pln"><span class="n"><a id="t93" href="#t93">93</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
176
- <p class="pln"><span class="n"><a id="t94" href="#t94">94</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
177
- <p class="mis show_mis"><span class="n"><a id="t95" href="#t95">95</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"elicitation_duration"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Histogram</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
178
- <p class="pln"><span class="n"><a id="t96" href="#t96">96</a></span><span class="t"> <span class="str">"golf_elicitation_duration_seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
179
- <p class="pln"><span class="n"><a id="t97" href="#t97">97</a></span><span class="t"> <span class="str">"Elicitation request duration in seconds"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
180
- <p class="pln"><span class="n"><a id="t98" href="#t98">98</a></span><span class="t"> <span class="op">[</span><span class="str">"elicitation_type"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
181
- <p class="pln"><span class="n"><a id="t99" href="#t99">99</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
182
- <p class="pln"><span class="n"><a id="t100" href="#t100">100</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
183
- <p class="pln"><span class="n"><a id="t101" href="#t101">101</a></span><span class="t"> <span class="com"># Error metrics</span>&nbsp;</span><span class="r"></span></p>
184
- <p class="mis show_mis"><span class="n"><a id="t102" href="#t102">102</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"errors"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
185
- <p class="pln"><span class="n"><a id="t103" href="#t103">103</a></span><span class="t"> <span class="str">"golf_errors_total"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
186
- <p class="pln"><span class="n"><a id="t104" href="#t104">104</a></span><span class="t"> <span class="str">"Total number of errors"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
187
- <p class="pln"><span class="n"><a id="t105" href="#t105">105</a></span><span class="t"> <span class="op">[</span><span class="str">"component_type"</span><span class="op">,</span> <span class="str">"error_type"</span><span class="op">]</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
188
- <p class="pln"><span class="n"><a id="t106" href="#t106">106</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
189
- <p class="pln"><span class="n"><a id="t107" href="#t107">107</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
190
- <p class="pln"><span class="n"><a id="t108" href="#t108">108</a></span><span class="t"> <span class="com"># Session metrics</span>&nbsp;</span><span class="r"></span></p>
191
- <p class="mis show_mis"><span class="n"><a id="t109" href="#t109">109</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sessions_total"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Counter</span><span class="op">(</span><span class="str">"golf_sessions_total"</span><span class="op">,</span> <span class="str">"Total number of sessions created"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
192
- <p class="pln"><span class="n"><a id="t110" href="#t110">110</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
193
- <p class="mis show_mis"><span class="n"><a id="t111" href="#t111">111</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"session_duration"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Histogram</span><span class="op">(</span>&nbsp;</span><span class="r"></span></p>
194
- <p class="pln"><span class="n"><a id="t112" href="#t112">112</a></span><span class="t"> <span class="str">"golf_session_duration_seconds"</span><span class="op">,</span> <span class="str">"Session duration in seconds"</span>&nbsp;</span><span class="r"></span></p>
195
- <p class="pln"><span class="n"><a id="t113" href="#t113">113</a></span><span class="t"> <span class="op">)</span>&nbsp;</span><span class="r"></span></p>
196
- <p class="pln"><span class="n"><a id="t114" href="#t114">114</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
197
- <p class="pln"><span class="n"><a id="t115" href="#t115">115</a></span><span class="t"> <span class="com"># System metrics</span>&nbsp;</span><span class="r"></span></p>
198
- <p class="mis show_mis"><span class="n"><a id="t116" href="#t116">116</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"uptime"</span><span class="op">]</span> <span class="op">=</span> <span class="nam">Gauge</span><span class="op">(</span><span class="str">"golf_uptime_seconds"</span><span class="op">,</span> <span class="str">"Server uptime in seconds"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
199
- <p class="pln"><span class="n"><a id="t117" href="#t117">117</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
200
- <p class="mis show_mis"><span class="n"><a id="t118" href="#t118">118</a></span><span class="t"> <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
201
- <p class="pln"><span class="n"><a id="t119" href="#t119">119</a></span><span class="t"> <span class="com"># Prometheus client not available, disable metrics</span>&nbsp;</span><span class="r"></span></p>
202
- <p class="mis show_mis"><span class="n"><a id="t120" href="#t120">120</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="op">=</span> <span class="key">False</span>&nbsp;</span><span class="r"></span></p>
203
- <p class="pln"><span class="n"><a id="t121" href="#t121">121</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
204
- <p class="mis show_mis"><span class="n"><a id="t122" href="#t122">122</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_tool_execution</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">tool_name</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
205
- <p class="pln"><span class="n"><a id="t123" href="#t123">123</a></span><span class="t"> <span class="str">"""Record a tool execution.</span>&nbsp;</span><span class="r"></span></p>
206
- <p class="pln"><span class="n"><a id="t124" href="#t124">124</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
207
- <p class="pln"><span class="n"><a id="t125" href="#t125">125</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
208
- <p class="pln"><span class="n"><a id="t126" href="#t126">126</a></span><span class="t"><span class="str"> tool_name: Name of the tool that was executed</span>&nbsp;</span><span class="r"></span></p>
209
- <p class="pln"><span class="n"><a id="t127" href="#t127">127</a></span><span class="t"><span class="str"> status: Execution status ('success' or 'error')</span>&nbsp;</span><span class="r"></span></p>
210
- <p class="pln"><span class="n"><a id="t128" href="#t128">128</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
211
- <p class="mis show_mis"><span class="n"><a id="t129" href="#t129">129</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"tool_executions"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
212
- <p class="mis show_mis"><span class="n"><a id="t130" href="#t130">130</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
213
- <p class="pln"><span class="n"><a id="t131" href="#t131">131</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
214
- <p class="mis show_mis"><span class="n"><a id="t132" href="#t132">132</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"tool_executions"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">tool_name</span><span class="op">=</span><span class="nam">tool_name</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="nam">status</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
215
- <p class="pln"><span class="n"><a id="t133" href="#t133">133</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
216
- <p class="mis show_mis"><span class="n"><a id="t134" href="#t134">134</a></span><span class="t"> <span class="key">def</span> <span class="nam">record_tool_duration</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">tool_name</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">duration</span><span class="op">:</span> <span class="nam">float</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
217
- <p class="pln"><span class="n"><a id="t135" href="#t135">135</a></span><span class="t"> <span class="str">"""Record tool execution duration.</span>&nbsp;</span><span class="r"></span></p>
218
- <p class="pln"><span class="n"><a id="t136" href="#t136">136</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
219
- <p class="pln"><span class="n"><a id="t137" href="#t137">137</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
220
- <p class="pln"><span class="n"><a id="t138" href="#t138">138</a></span><span class="t"><span class="str"> tool_name: Name of the tool</span>&nbsp;</span><span class="r"></span></p>
221
- <p class="pln"><span class="n"><a id="t139" href="#t139">139</a></span><span class="t"><span class="str"> duration: Execution duration in seconds</span>&nbsp;</span><span class="r"></span></p>
222
- <p class="pln"><span class="n"><a id="t140" href="#t140">140</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
223
- <p class="mis show_mis"><span class="n"><a id="t141" href="#t141">141</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"tool_duration"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
224
- <p class="mis show_mis"><span class="n"><a id="t142" href="#t142">142</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
225
- <p class="pln"><span class="n"><a id="t143" href="#t143">143</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
226
- <p class="mis show_mis"><span class="n"><a id="t144" href="#t144">144</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"tool_duration"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">tool_name</span><span class="op">=</span><span class="nam">tool_name</span><span class="op">)</span><span class="op">.</span><span class="nam">observe</span><span class="op">(</span><span class="nam">duration</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
227
- <p class="pln"><span class="n"><a id="t145" href="#t145">145</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
228
- <p class="mis show_mis"><span class="n"><a id="t146" href="#t146">146</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_http_request</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">method</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">:</span> <span class="nam">int</span><span class="op">,</span> <span class="nam">path</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
229
- <p class="pln"><span class="n"><a id="t147" href="#t147">147</a></span><span class="t"> <span class="str">"""Record an HTTP request.</span>&nbsp;</span><span class="r"></span></p>
230
- <p class="pln"><span class="n"><a id="t148" href="#t148">148</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
231
- <p class="pln"><span class="n"><a id="t149" href="#t149">149</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
232
- <p class="pln"><span class="n"><a id="t150" href="#t150">150</a></span><span class="t"><span class="str"> method: HTTP method (GET, POST, etc.)</span>&nbsp;</span><span class="r"></span></p>
233
- <p class="pln"><span class="n"><a id="t151" href="#t151">151</a></span><span class="t"><span class="str"> status_code: HTTP status code</span>&nbsp;</span><span class="r"></span></p>
234
- <p class="pln"><span class="n"><a id="t152" href="#t152">152</a></span><span class="t"><span class="str"> path: Request path</span>&nbsp;</span><span class="r"></span></p>
235
- <p class="pln"><span class="n"><a id="t153" href="#t153">153</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
236
- <p class="mis show_mis"><span class="n"><a id="t154" href="#t154">154</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"http_requests"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
237
- <p class="mis show_mis"><span class="n"><a id="t155" href="#t155">155</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
238
- <p class="pln"><span class="n"><a id="t156" href="#t156">156</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
239
- <p class="mis show_mis"><span class="n"><a id="t157" href="#t157">157</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"http_requests"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">method</span><span class="op">=</span><span class="nam">method</span><span class="op">,</span> <span class="nam">status_code</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">status_code</span><span class="op">)</span><span class="op">,</span> <span class="nam">path</span><span class="op">=</span><span class="nam">path</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
240
- <p class="pln"><span class="n"><a id="t158" href="#t158">158</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
241
- <p class="mis show_mis"><span class="n"><a id="t159" href="#t159">159</a></span><span class="t"> <span class="key">def</span> <span class="nam">record_http_duration</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">method</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">path</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">duration</span><span class="op">:</span> <span class="nam">float</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
242
- <p class="pln"><span class="n"><a id="t160" href="#t160">160</a></span><span class="t"> <span class="str">"""Record HTTP request duration.</span>&nbsp;</span><span class="r"></span></p>
243
- <p class="pln"><span class="n"><a id="t161" href="#t161">161</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
244
- <p class="pln"><span class="n"><a id="t162" href="#t162">162</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
245
- <p class="pln"><span class="n"><a id="t163" href="#t163">163</a></span><span class="t"><span class="str"> method: HTTP method</span>&nbsp;</span><span class="r"></span></p>
246
- <p class="pln"><span class="n"><a id="t164" href="#t164">164</a></span><span class="t"><span class="str"> path: Request path</span>&nbsp;</span><span class="r"></span></p>
247
- <p class="pln"><span class="n"><a id="t165" href="#t165">165</a></span><span class="t"><span class="str"> duration: Request duration in seconds</span>&nbsp;</span><span class="r"></span></p>
248
- <p class="pln"><span class="n"><a id="t166" href="#t166">166</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
249
- <p class="mis show_mis"><span class="n"><a id="t167" href="#t167">167</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"http_duration"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
250
- <p class="mis show_mis"><span class="n"><a id="t168" href="#t168">168</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
251
- <p class="pln"><span class="n"><a id="t169" href="#t169">169</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
252
- <p class="mis show_mis"><span class="n"><a id="t170" href="#t170">170</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"http_duration"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">method</span><span class="op">=</span><span class="nam">method</span><span class="op">,</span> <span class="nam">path</span><span class="op">=</span><span class="nam">path</span><span class="op">)</span><span class="op">.</span><span class="nam">observe</span><span class="op">(</span><span class="nam">duration</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
253
- <p class="pln"><span class="n"><a id="t171" href="#t171">171</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
254
- <p class="mis show_mis"><span class="n"><a id="t172" href="#t172">172</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_resource_read</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">resource_uri</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
255
- <p class="pln"><span class="n"><a id="t173" href="#t173">173</a></span><span class="t"> <span class="str">"""Record a resource read.</span>&nbsp;</span><span class="r"></span></p>
256
- <p class="pln"><span class="n"><a id="t174" href="#t174">174</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
257
- <p class="pln"><span class="n"><a id="t175" href="#t175">175</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
258
- <p class="pln"><span class="n"><a id="t176" href="#t176">176</a></span><span class="t"><span class="str"> resource_uri: URI of the resource that was read</span>&nbsp;</span><span class="r"></span></p>
259
- <p class="pln"><span class="n"><a id="t177" href="#t177">177</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
260
- <p class="mis show_mis"><span class="n"><a id="t178" href="#t178">178</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"resource_reads"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
261
- <p class="mis show_mis"><span class="n"><a id="t179" href="#t179">179</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
262
- <p class="pln"><span class="n"><a id="t180" href="#t180">180</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
263
- <p class="mis show_mis"><span class="n"><a id="t181" href="#t181">181</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"resource_reads"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">resource_uri</span><span class="op">=</span><span class="nam">resource_uri</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
264
- <p class="pln"><span class="n"><a id="t182" href="#t182">182</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
265
- <p class="mis show_mis"><span class="n"><a id="t183" href="#t183">183</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_prompt_generation</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">prompt_name</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
266
- <p class="pln"><span class="n"><a id="t184" href="#t184">184</a></span><span class="t"> <span class="str">"""Record a prompt generation.</span>&nbsp;</span><span class="r"></span></p>
267
- <p class="pln"><span class="n"><a id="t185" href="#t185">185</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
268
- <p class="pln"><span class="n"><a id="t186" href="#t186">186</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
269
- <p class="pln"><span class="n"><a id="t187" href="#t187">187</a></span><span class="t"><span class="str"> prompt_name: Name of the prompt that was generated</span>&nbsp;</span><span class="r"></span></p>
270
- <p class="pln"><span class="n"><a id="t188" href="#t188">188</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
271
- <p class="mis show_mis"><span class="n"><a id="t189" href="#t189">189</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"prompt_generations"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
272
- <p class="mis show_mis"><span class="n"><a id="t190" href="#t190">190</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
273
- <p class="pln"><span class="n"><a id="t191" href="#t191">191</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
274
- <p class="mis show_mis"><span class="n"><a id="t192" href="#t192">192</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"prompt_generations"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">prompt_name</span><span class="op">=</span><span class="nam">prompt_name</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
275
- <p class="pln"><span class="n"><a id="t193" href="#t193">193</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
276
- <p class="mis show_mis"><span class="n"><a id="t194" href="#t194">194</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_error</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">component_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">error_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
277
- <p class="pln"><span class="n"><a id="t195" href="#t195">195</a></span><span class="t"> <span class="str">"""Record an error.</span>&nbsp;</span><span class="r"></span></p>
278
- <p class="pln"><span class="n"><a id="t196" href="#t196">196</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
279
- <p class="pln"><span class="n"><a id="t197" href="#t197">197</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
280
- <p class="pln"><span class="n"><a id="t198" href="#t198">198</a></span><span class="t"><span class="str"> component_type: Type of component ('tool', 'resource', 'prompt', 'http')</span>&nbsp;</span><span class="r"></span></p>
281
- <p class="pln"><span class="n"><a id="t199" href="#t199">199</a></span><span class="t"><span class="str"> error_type: Type of error ('timeout', 'auth_error',</span>&nbsp;</span><span class="r"></span></p>
282
- <p class="pln"><span class="n"><a id="t200" href="#t200">200</a></span><span class="t"><span class="str"> 'validation_error', etc.)</span>&nbsp;</span><span class="r"></span></p>
283
- <p class="pln"><span class="n"><a id="t201" href="#t201">201</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
284
- <p class="mis show_mis"><span class="n"><a id="t202" href="#t202">202</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"errors"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
285
- <p class="mis show_mis"><span class="n"><a id="t203" href="#t203">203</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
286
- <p class="pln"><span class="n"><a id="t204" href="#t204">204</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
287
- <p class="mis show_mis"><span class="n"><a id="t205" href="#t205">205</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"errors"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">component_type</span><span class="op">=</span><span class="nam">component_type</span><span class="op">,</span> <span class="nam">error_type</span><span class="op">=</span><span class="nam">error_type</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
288
- <p class="pln"><span class="n"><a id="t206" href="#t206">206</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
289
- <p class="mis show_mis"><span class="n"><a id="t207" href="#t207">207</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_session</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
290
- <p class="pln"><span class="n"><a id="t208" href="#t208">208</a></span><span class="t"> <span class="str">"""Record a new session."""</span>&nbsp;</span><span class="r"></span></p>
291
- <p class="mis show_mis"><span class="n"><a id="t209" href="#t209">209</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"sessions_total"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
292
- <p class="mis show_mis"><span class="n"><a id="t210" href="#t210">210</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
293
- <p class="pln"><span class="n"><a id="t211" href="#t211">211</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
294
- <p class="mis show_mis"><span class="n"><a id="t212" href="#t212">212</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sessions_total"</span><span class="op">]</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
295
- <p class="pln"><span class="n"><a id="t213" href="#t213">213</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
296
- <p class="mis show_mis"><span class="n"><a id="t214" href="#t214">214</a></span><span class="t"> <span class="key">def</span> <span class="nam">record_session_duration</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">duration</span><span class="op">:</span> <span class="nam">float</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
297
- <p class="pln"><span class="n"><a id="t215" href="#t215">215</a></span><span class="t"> <span class="str">"""Record session duration.</span>&nbsp;</span><span class="r"></span></p>
298
- <p class="pln"><span class="n"><a id="t216" href="#t216">216</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
299
- <p class="pln"><span class="n"><a id="t217" href="#t217">217</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
300
- <p class="pln"><span class="n"><a id="t218" href="#t218">218</a></span><span class="t"><span class="str"> duration: Session duration in seconds</span>&nbsp;</span><span class="r"></span></p>
301
- <p class="pln"><span class="n"><a id="t219" href="#t219">219</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
302
- <p class="mis show_mis"><span class="n"><a id="t220" href="#t220">220</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"session_duration"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
303
- <p class="mis show_mis"><span class="n"><a id="t221" href="#t221">221</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
304
- <p class="pln"><span class="n"><a id="t222" href="#t222">222</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
305
- <p class="mis show_mis"><span class="n"><a id="t223" href="#t223">223</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"session_duration"</span><span class="op">]</span><span class="op">.</span><span class="nam">observe</span><span class="op">(</span><span class="nam">duration</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
306
- <p class="pln"><span class="n"><a id="t224" href="#t224">224</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
307
- <p class="mis show_mis"><span class="n"><a id="t225" href="#t225">225</a></span><span class="t"> <span class="key">def</span> <span class="nam">set_uptime</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">seconds</span><span class="op">:</span> <span class="nam">float</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
308
- <p class="pln"><span class="n"><a id="t226" href="#t226">226</a></span><span class="t"> <span class="str">"""Set the server uptime.</span>&nbsp;</span><span class="r"></span></p>
309
- <p class="pln"><span class="n"><a id="t227" href="#t227">227</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
310
- <p class="pln"><span class="n"><a id="t228" href="#t228">228</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
311
- <p class="pln"><span class="n"><a id="t229" href="#t229">229</a></span><span class="t"><span class="str"> seconds: Server uptime in seconds</span>&nbsp;</span><span class="r"></span></p>
312
- <p class="pln"><span class="n"><a id="t230" href="#t230">230</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
313
- <p class="mis show_mis"><span class="n"><a id="t231" href="#t231">231</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"uptime"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
314
- <p class="mis show_mis"><span class="n"><a id="t232" href="#t232">232</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
315
- <p class="pln"><span class="n"><a id="t233" href="#t233">233</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
316
- <p class="mis show_mis"><span class="n"><a id="t234" href="#t234">234</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"uptime"</span><span class="op">]</span><span class="op">.</span><span class="nam">set</span><span class="op">(</span><span class="nam">seconds</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
317
- <p class="pln"><span class="n"><a id="t235" href="#t235">235</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
318
- <p class="mis show_mis"><span class="n"><a id="t236" href="#t236">236</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_sampling</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">sampling_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
319
- <p class="pln"><span class="n"><a id="t237" href="#t237">237</a></span><span class="t"> <span class="str">"""Record a sampling request.</span>&nbsp;</span><span class="r"></span></p>
320
- <p class="pln"><span class="n"><a id="t238" href="#t238">238</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
321
- <p class="pln"><span class="n"><a id="t239" href="#t239">239</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
322
- <p class="pln"><span class="n"><a id="t240" href="#t240">240</a></span><span class="t"><span class="str"> sampling_type: Type of sampling ('sample', 'structured', 'context')</span>&nbsp;</span><span class="r"></span></p>
323
- <p class="pln"><span class="n"><a id="t241" href="#t241">241</a></span><span class="t"><span class="str"> status: Request status ('success' or 'error')</span>&nbsp;</span><span class="r"></span></p>
324
- <p class="pln"><span class="n"><a id="t242" href="#t242">242</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
325
- <p class="mis show_mis"><span class="n"><a id="t243" href="#t243">243</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"sampling_requests"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
326
- <p class="mis show_mis"><span class="n"><a id="t244" href="#t244">244</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
327
- <p class="pln"><span class="n"><a id="t245" href="#t245">245</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
328
- <p class="mis show_mis"><span class="n"><a id="t246" href="#t246">246</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sampling_requests"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">sampling_type</span><span class="op">=</span><span class="nam">sampling_type</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="nam">status</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
329
- <p class="pln"><span class="n"><a id="t247" href="#t247">247</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
330
- <p class="mis show_mis"><span class="n"><a id="t248" href="#t248">248</a></span><span class="t"> <span class="key">def</span> <span class="nam">record_sampling_duration</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">sampling_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">duration</span><span class="op">:</span> <span class="nam">float</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
331
- <p class="pln"><span class="n"><a id="t249" href="#t249">249</a></span><span class="t"> <span class="str">"""Record sampling request duration.</span>&nbsp;</span><span class="r"></span></p>
332
- <p class="pln"><span class="n"><a id="t250" href="#t250">250</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
333
- <p class="pln"><span class="n"><a id="t251" href="#t251">251</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
334
- <p class="pln"><span class="n"><a id="t252" href="#t252">252</a></span><span class="t"><span class="str"> sampling_type: Type of sampling</span>&nbsp;</span><span class="r"></span></p>
335
- <p class="pln"><span class="n"><a id="t253" href="#t253">253</a></span><span class="t"><span class="str"> duration: Request duration in seconds</span>&nbsp;</span><span class="r"></span></p>
336
- <p class="pln"><span class="n"><a id="t254" href="#t254">254</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
337
- <p class="mis show_mis"><span class="n"><a id="t255" href="#t255">255</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"sampling_duration"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
338
- <p class="mis show_mis"><span class="n"><a id="t256" href="#t256">256</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
339
- <p class="pln"><span class="n"><a id="t257" href="#t257">257</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
340
- <p class="mis show_mis"><span class="n"><a id="t258" href="#t258">258</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sampling_duration"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">sampling_type</span><span class="op">=</span><span class="nam">sampling_type</span><span class="op">)</span><span class="op">.</span><span class="nam">observe</span><span class="op">(</span><span class="nam">duration</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
341
- <p class="pln"><span class="n"><a id="t259" href="#t259">259</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
342
- <p class="mis show_mis"><span class="n"><a id="t260" href="#t260">260</a></span><span class="t"> <span class="key">def</span> <span class="nam">record_sampling_tokens</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">sampling_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">token_count</span><span class="op">:</span> <span class="nam">int</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
343
- <p class="pln"><span class="n"><a id="t261" href="#t261">261</a></span><span class="t"> <span class="str">"""Record sampling token count.</span>&nbsp;</span><span class="r"></span></p>
344
- <p class="pln"><span class="n"><a id="t262" href="#t262">262</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
345
- <p class="pln"><span class="n"><a id="t263" href="#t263">263</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
346
- <p class="pln"><span class="n"><a id="t264" href="#t264">264</a></span><span class="t"><span class="str"> sampling_type: Type of sampling</span>&nbsp;</span><span class="r"></span></p>
347
- <p class="pln"><span class="n"><a id="t265" href="#t265">265</a></span><span class="t"><span class="str"> token_count: Number of tokens in the response</span>&nbsp;</span><span class="r"></span></p>
348
- <p class="pln"><span class="n"><a id="t266" href="#t266">266</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
349
- <p class="mis show_mis"><span class="n"><a id="t267" href="#t267">267</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"sampling_tokens"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
350
- <p class="mis show_mis"><span class="n"><a id="t268" href="#t268">268</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
351
- <p class="pln"><span class="n"><a id="t269" href="#t269">269</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
352
- <p class="mis show_mis"><span class="n"><a id="t270" href="#t270">270</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"sampling_tokens"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">sampling_type</span><span class="op">=</span><span class="nam">sampling_type</span><span class="op">)</span><span class="op">.</span><span class="nam">observe</span><span class="op">(</span><span class="nam">token_count</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
353
- <p class="pln"><span class="n"><a id="t271" href="#t271">271</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
354
- <p class="mis show_mis"><span class="n"><a id="t272" href="#t272">272</a></span><span class="t"> <span class="key">def</span> <span class="nam">increment_elicitation</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">elicitation_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">status</span><span class="op">:</span> <span class="nam">str</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
355
- <p class="pln"><span class="n"><a id="t273" href="#t273">273</a></span><span class="t"> <span class="str">"""Record an elicitation request.</span>&nbsp;</span><span class="r"></span></p>
356
- <p class="pln"><span class="n"><a id="t274" href="#t274">274</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
357
- <p class="pln"><span class="n"><a id="t275" href="#t275">275</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
358
- <p class="pln"><span class="n"><a id="t276" href="#t276">276</a></span><span class="t"><span class="str"> elicitation_type: Type of elicitation ('elicit', 'confirmation')</span>&nbsp;</span><span class="r"></span></p>
359
- <p class="pln"><span class="n"><a id="t277" href="#t277">277</a></span><span class="t"><span class="str"> status: Request status ('success' or 'error')</span>&nbsp;</span><span class="r"></span></p>
360
- <p class="pln"><span class="n"><a id="t278" href="#t278">278</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
361
- <p class="mis show_mis"><span class="n"><a id="t279" href="#t279">279</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"elicitation_requests"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
362
- <p class="mis show_mis"><span class="n"><a id="t280" href="#t280">280</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
363
- <p class="pln"><span class="n"><a id="t281" href="#t281">281</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
364
- <p class="mis show_mis"><span class="n"><a id="t282" href="#t282">282</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"elicitation_requests"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">elicitation_type</span><span class="op">=</span><span class="nam">elicitation_type</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="nam">status</span><span class="op">)</span><span class="op">.</span><span class="nam">inc</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
365
- <p class="pln"><span class="n"><a id="t283" href="#t283">283</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
366
- <p class="mis show_mis"><span class="n"><a id="t284" href="#t284">284</a></span><span class="t"> <span class="key">def</span> <span class="nam">record_elicitation_duration</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">elicitation_type</span><span class="op">:</span> <span class="nam">str</span><span class="op">,</span> <span class="nam">duration</span><span class="op">:</span> <span class="nam">float</span><span class="op">)</span> <span class="op">-></span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
367
- <p class="pln"><span class="n"><a id="t285" href="#t285">285</a></span><span class="t"> <span class="str">"""Record elicitation request duration.</span>&nbsp;</span><span class="r"></span></p>
368
- <p class="pln"><span class="n"><a id="t286" href="#t286">286</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
369
- <p class="pln"><span class="n"><a id="t287" href="#t287">287</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
370
- <p class="pln"><span class="n"><a id="t288" href="#t288">288</a></span><span class="t"><span class="str"> elicitation_type: Type of elicitation</span>&nbsp;</span><span class="r"></span></p>
371
- <p class="pln"><span class="n"><a id="t289" href="#t289">289</a></span><span class="t"><span class="str"> duration: Request duration in seconds</span>&nbsp;</span><span class="r"></span></p>
372
- <p class="pln"><span class="n"><a id="t290" href="#t290">290</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
373
- <p class="mis show_mis"><span class="n"><a id="t291" href="#t291">291</a></span><span class="t"> <span class="key">if</span> <span class="key">not</span> <span class="nam">self</span><span class="op">.</span><span class="nam">enabled</span> <span class="key">or</span> <span class="str">"elicitation_duration"</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
374
- <p class="mis show_mis"><span class="n"><a id="t292" href="#t292">292</a></span><span class="t"> <span class="key">return</span>&nbsp;</span><span class="r"></span></p>
375
- <p class="pln"><span class="n"><a id="t293" href="#t293">293</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
376
- <p class="mis show_mis"><span class="n"><a id="t294" href="#t294">294</a></span><span class="t"> <span class="nam">self</span><span class="op">.</span><span class="nam">_metrics</span><span class="op">[</span><span class="str">"elicitation_duration"</span><span class="op">]</span><span class="op">.</span><span class="nam">labels</span><span class="op">(</span><span class="nam">elicitation_type</span><span class="op">=</span><span class="nam">elicitation_type</span><span class="op">)</span><span class="op">.</span><span class="nam">observe</span><span class="op">(</span><span class="nam">duration</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
377
- <p class="pln"><span class="n"><a id="t295" href="#t295">295</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
378
- <p class="pln"><span class="n"><a id="t296" href="#t296">296</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
379
- <p class="mis show_mis"><span class="n"><a id="t297" href="#t297">297</a></span><span class="t"><span class="key">def</span> <span class="nam">init_metrics_collector</span><span class="op">(</span><span class="nam">enabled</span><span class="op">:</span> <span class="nam">bool</span> <span class="op">=</span> <span class="key">False</span><span class="op">)</span> <span class="op">-></span> <span class="nam">MetricsCollector</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
380
- <p class="pln"><span class="n"><a id="t298" href="#t298">298</a></span><span class="t"> <span class="str">"""Initialize the global metrics collector.</span>&nbsp;</span><span class="r"></span></p>
381
- <p class="pln"><span class="n"><a id="t299" href="#t299">299</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
382
- <p class="pln"><span class="n"><a id="t300" href="#t300">300</a></span><span class="t"><span class="str"> Args:</span>&nbsp;</span><span class="r"></span></p>
383
- <p class="pln"><span class="n"><a id="t301" href="#t301">301</a></span><span class="t"><span class="str"> enabled: Whether to enable metrics collection</span>&nbsp;</span><span class="r"></span></p>
384
- <p class="pln"><span class="n"><a id="t302" href="#t302">302</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
385
- <p class="pln"><span class="n"><a id="t303" href="#t303">303</a></span><span class="t"><span class="str"> Returns:</span>&nbsp;</span><span class="r"></span></p>
386
- <p class="pln"><span class="n"><a id="t304" href="#t304">304</a></span><span class="t"><span class="str"> The initialized metrics collector</span>&nbsp;</span><span class="r"></span></p>
387
- <p class="pln"><span class="n"><a id="t305" href="#t305">305</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
388
- <p class="pln"><span class="n"><a id="t306" href="#t306">306</a></span><span class="t"> <span class="key">global</span> <span class="nam">_metrics_collector</span>&nbsp;</span><span class="r"></span></p>
389
- <p class="mis show_mis"><span class="n"><a id="t307" href="#t307">307</a></span><span class="t"> <span class="nam">_metrics_collector</span> <span class="op">=</span> <span class="nam">MetricsCollector</span><span class="op">(</span><span class="nam">enabled</span><span class="op">=</span><span class="nam">enabled</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
390
- <p class="mis show_mis"><span class="n"><a id="t308" href="#t308">308</a></span><span class="t"> <span class="key">return</span> <span class="nam">_metrics_collector</span>&nbsp;</span><span class="r"></span></p>
391
- <p class="pln"><span class="n"><a id="t309" href="#t309">309</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
392
- <p class="pln"><span class="n"><a id="t310" href="#t310">310</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
393
- <p class="mis show_mis"><span class="n"><a id="t311" href="#t311">311</a></span><span class="t"><span class="key">def</span> <span class="nam">get_metrics_collector</span><span class="op">(</span><span class="op">)</span> <span class="op">-></span> <span class="nam">MetricsCollector</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
394
- <p class="pln"><span class="n"><a id="t312" href="#t312">312</a></span><span class="t"> <span class="str">"""Get the global metrics collector instance.</span>&nbsp;</span><span class="r"></span></p>
395
- <p class="pln"><span class="n"><a id="t313" href="#t313">313</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
396
- <p class="pln"><span class="n"><a id="t314" href="#t314">314</a></span><span class="t"><span class="str"> Returns:</span>&nbsp;</span><span class="r"></span></p>
397
- <p class="pln"><span class="n"><a id="t315" href="#t315">315</a></span><span class="t"><span class="str"> The metrics collector, or a disabled one if not initialized</span>&nbsp;</span><span class="r"></span></p>
398
- <p class="pln"><span class="n"><a id="t316" href="#t316">316</a></span><span class="t"><span class="str"> """</span>&nbsp;</span><span class="r"></span></p>
399
- <p class="pln"><span class="n"><a id="t317" href="#t317">317</a></span><span class="t"> <span class="key">global</span> <span class="nam">_metrics_collector</span>&nbsp;</span><span class="r"></span></p>
400
- <p class="mis show_mis"><span class="n"><a id="t318" href="#t318">318</a></span><span class="t"> <span class="key">if</span> <span class="nam">_metrics_collector</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
401
- <p class="mis show_mis"><span class="n"><a id="t319" href="#t319">319</a></span><span class="t"> <span class="nam">_metrics_collector</span> <span class="op">=</span> <span class="nam">MetricsCollector</span><span class="op">(</span><span class="nam">enabled</span><span class="op">=</span><span class="key">False</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
402
- <p class="mis show_mis"><span class="n"><a id="t320" href="#t320">320</a></span><span class="t"> <span class="key">return</span> <span class="nam">_metrics_collector</span>&nbsp;</span><span class="r"></span></p>
403
- </main>
404
- <footer>
405
- <div class="content">
406
- <p>
407
- <a class="nav" href="z_7d7da37693a43688___init___py.html">&#xab; prev</a> &nbsp; &nbsp;
408
- <a class="nav" href="index.html">&Hat; index</a> &nbsp; &nbsp;
409
- <a class="nav" href="z_7d7da37693a43688_registry_py.html">&#xbb; next</a>
410
- &nbsp; &nbsp; &nbsp;
411
- <a class="nav" href="https://coverage.readthedocs.io/en/7.6.12">coverage.py v7.6.12</a>,
412
- created at 2025-08-16 18:46 +0200
413
- </p>
414
- </div>
415
- </footer>
416
- </body>
417
- </html>