aixtools 0.1.11__py3-none-any.whl → 0.2.1__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 aixtools might be problematic. Click here for more details.
- aixtools/_version.py +2 -2
- aixtools/agents/agent.py +26 -7
- aixtools/agents/print_nodes.py +54 -0
- aixtools/agents/prompt.py +2 -2
- aixtools/compliance/private_data.py +1 -1
- aixtools/evals/__init__.py +0 -0
- aixtools/evals/discovery.py +174 -0
- aixtools/evals/evals.py +74 -0
- aixtools/evals/run_evals.py +110 -0
- aixtools/logging/log_objects.py +24 -23
- aixtools/mcp/client.py +46 -1
- aixtools/server/__init__.py +0 -6
- aixtools/server/path.py +88 -31
- aixtools/testing/aix_test_model.py +7 -1
- aixtools/tools/doctor/mcp_tool_doctor.py +79 -0
- aixtools/tools/doctor/tool_doctor.py +4 -0
- aixtools/tools/doctor/tool_recommendation.py +5 -0
- aixtools/utils/config.py +0 -1
- {aixtools-0.1.11.dist-info → aixtools-0.2.1.dist-info}/METADATA +185 -30
- {aixtools-0.1.11.dist-info → aixtools-0.2.1.dist-info}/RECORD +23 -18
- aixtools-0.2.1.dist-info/entry_points.txt +4 -0
- aixtools/server/workspace_privacy.py +0 -65
- aixtools-0.1.11.dist-info/entry_points.txt +0 -2
- {aixtools-0.1.11.dist-info → aixtools-0.2.1.dist-info}/WHEEL +0 -0
- {aixtools-0.1.11.dist-info → aixtools-0.2.1.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
aixtools/__init__.py,sha256=9NGHm7LjsQmsvjTZvw6QFJexSvAU4bCoN_KBk9SCa00,260
|
|
2
|
-
aixtools/_version.py,sha256=
|
|
2
|
+
aixtools/_version.py,sha256=vYqoJTG51NOUmYyL0xt8asRK8vUT4lGAdal_EZ59mvw,704
|
|
3
3
|
aixtools/app.py,sha256=JzQ0nrv_bjDQokllIlGHOV0HEb-V8N6k_nGQH-TEsVU,5227
|
|
4
4
|
aixtools/chainlit.md,sha256=yC37Ly57vjKyiIvK4oUvf4DYxZCwH7iocTlx7bLeGLU,761
|
|
5
5
|
aixtools/context.py,sha256=I_MD40ZnvRm5WPKAKqBUAdXIf8YaurkYUUHSVVy-QvU,598
|
|
@@ -26,14 +26,19 @@ aixtools/a2a/google_sdk/utils.py,sha256=hjrNRZywJEUxHHaOttJFQU0FLzteg0Ggtm3qAeXM
|
|
|
26
26
|
aixtools/a2a/google_sdk/pydantic_ai_adapter/agent_executor.py,sha256=MMbhbEnUL6NwSYnisJrDdHW8zJoSyJ3Pzzkt8jqwNdI,7066
|
|
27
27
|
aixtools/a2a/google_sdk/pydantic_ai_adapter/storage.py,sha256=nGoVL7MPoZJW7iVR71laqpUYP308yFKZIifJtvUgpiU,878
|
|
28
28
|
aixtools/agents/__init__.py,sha256=MAW196S2_G7uGqv-VNjvlOETRfuV44WlU1leO7SiR0A,282
|
|
29
|
-
aixtools/agents/agent.py,sha256=
|
|
29
|
+
aixtools/agents/agent.py,sha256=tceQByn-RGBIhW8BOjKoP0yhNzZLwAa6CxwhPhRe3PU,7270
|
|
30
30
|
aixtools/agents/agent_batch.py,sha256=0Zu9yNCRPAQZPjXQ-dIUAmP1uGTVbxVt7xvnMpoJMjU,2251
|
|
31
|
-
aixtools/agents/
|
|
31
|
+
aixtools/agents/print_nodes.py,sha256=wVTngNfqM0As845WTRz6G3Rei_Gr3HuBlvu-G_eXuig,1665
|
|
32
|
+
aixtools/agents/prompt.py,sha256=p9OYnyJ4-MyGXwHPrQeJBhZ2a3RV2HqhtdUUCrTMsAQ,3361
|
|
32
33
|
aixtools/compliance/__init__.py,sha256=vnw0zEdySIJWvDAJ8DCRRaWmY_agEOz1qlpAdhmtiuo,191
|
|
33
|
-
aixtools/compliance/private_data.py,sha256=
|
|
34
|
+
aixtools/compliance/private_data.py,sha256=OOM9mIp3_w0fNgj3VAEWBl7-jrPc19_Ls1pC5dfF5UY,5323
|
|
34
35
|
aixtools/db/__init__.py,sha256=b8vRhme3egV-aUZbAntnOaDkSXB8UT0Xy5oqQhU_z0Q,399
|
|
35
36
|
aixtools/db/database.py,sha256=caWe95GlxZYlxn2ubDmR-_cQUW0ulkpR3BHunKIaOsw,3369
|
|
36
37
|
aixtools/db/vector_db.py,sha256=be4JGyXj3o8VEfy9L6SO1aAoDET_zazMJkYfjlYHTYQ,4133
|
|
38
|
+
aixtools/evals/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
+
aixtools/evals/discovery.py,sha256=nKBMHuM3Q87GFY4U0QXvU-zXmJjR-bnmlwf5cfp5E9s,5907
|
|
40
|
+
aixtools/evals/evals.py,sha256=3oJ6_HjojLOzG8XxdfdTYFk-gxep41nk_viHTsUwFNo,2738
|
|
41
|
+
aixtools/evals/run_evals.py,sha256=oJpGIPF5avq1r275Yd_RJyxUiUgOd00LItdKXfGlAbA,3910
|
|
37
42
|
aixtools/google/client.py,sha256=8yuv_zEZKlmUTI-zRxAb3vjLUrfiwrBhcpNe0hYsO0g,1078
|
|
38
43
|
aixtools/log_view/__init__.py,sha256=0fWLCq9BMo8GoH3Z5WDgvf0-J2TP0XWqtef0f28SHBA,405
|
|
39
44
|
aixtools/log_view/app.py,sha256=DZp3PUM_iS3DpMHqHfFXVACvbZ9PItbOCNMkDjIOfTc,6595
|
|
@@ -45,33 +50,33 @@ aixtools/log_view/node_summary.py,sha256=EJjnBqdBWI-_bI-4nfTxwaost3mtiufb5cK7T54
|
|
|
45
50
|
aixtools/logfilters/__init__.py,sha256=pTD8ujCqjPWBCeB7yv7lmCtnA2KXOnkIv0HExDagkXs,129
|
|
46
51
|
aixtools/logfilters/context_filter.py,sha256=zR3Bnv3fCqXLeb7bCFTmlnWhC6dFIvUb-u712tOnUPk,2259
|
|
47
52
|
aixtools/logging/__init__.py,sha256=b5oYyGQDUHHxhRtzqKUaQPv8hQeWw54rzDXSV8lDY1w,613
|
|
48
|
-
aixtools/logging/log_objects.py,sha256=
|
|
53
|
+
aixtools/logging/log_objects.py,sha256=ooxa9ue3mFq1tOqAGeRBiM_4TsteVdDzR7qKM-j6Ln8,6904
|
|
49
54
|
aixtools/logging/logging_config.py,sha256=LvxV3C75-I0096PpcCIbgM-Cp998LzWXeMM14HYbU20,4985
|
|
50
55
|
aixtools/logging/mcp_log_models.py,sha256=7-H2GJXiiyLhpImuyLLftAGG4skxJal8Swax0ob04MY,3463
|
|
51
56
|
aixtools/logging/mcp_logger.py,sha256=d2I5l4t0d6rQH17w23FpE1IUD8Ax-mSaKfByCH86q4I,6257
|
|
52
57
|
aixtools/logging/model_patch_logging.py,sha256=MY2EvR7ZSctC4hJxNMe8iACeVayUJ2V5In2GAnKdgOo,2880
|
|
53
58
|
aixtools/logging/open_telemetry.py,sha256=fJjF1ou_8GyfNfbyWDQPGK6JAUrUaPwURYPHhXEtDBE,1121
|
|
54
59
|
aixtools/mcp/__init__.py,sha256=tLo2KZ1Ojo-rgEEJBGtZfUw-iOoopWoHDnYQTq3IzfE,163
|
|
55
|
-
aixtools/mcp/client.py,sha256=
|
|
60
|
+
aixtools/mcp/client.py,sha256=aCDLc_AfrjV8JtZLWnKCTnScvFdNoMJZiGQhBUO8t8w,18289
|
|
56
61
|
aixtools/mcp/example_client.py,sha256=QCFGP3NCNJMOKWjUOnFwjnbJhUSb879IA1ZYmwjRnmc,889
|
|
57
62
|
aixtools/mcp/example_server.py,sha256=1SWCyrLWsAnOa81HC4QbPJo_lBVu0b3SZBWI-qDh1vQ,458
|
|
58
63
|
aixtools/mcp/fast_mcp_log.py,sha256=XYOS406dVjn5YTHyGRsRvVNQ0SKlRObfrKj6EeLFjHg,1057
|
|
59
64
|
aixtools/mcp/faulty_mcp.py,sha256=uU9vlNGCS_i2k20wocVMaDHTlYjMQxuzjILad9O1cjA,12807
|
|
60
65
|
aixtools/model_patch/model_patch.py,sha256=JT-oHubIn2LeoSwWbzEQ5vLH7crJmFUecHyQfaAFHa0,1813
|
|
61
|
-
aixtools/server/__init__.py,sha256=
|
|
66
|
+
aixtools/server/__init__.py,sha256=rwPx020YpOzCnrxA80Lc4yLLcIp-Mpe9hNqVO9wDPv0,448
|
|
62
67
|
aixtools/server/app_mounter.py,sha256=0tJ0tC140ezAjnYdlhpLJQjY-TO8NVw7D8LseYCCVY8,3336
|
|
63
|
-
aixtools/server/path.py,sha256=
|
|
68
|
+
aixtools/server/path.py,sha256=nI4yRQcE6gjKx5GG3PmHf7iT1FelT6Q8Xhw4ol9O1e0,5219
|
|
64
69
|
aixtools/server/utils.py,sha256=tZWITIx6M-luV9yve4j3rPtYGSSA6zWS0JWEAySne_M,2276
|
|
65
|
-
aixtools/server/workspace_privacy.py,sha256=grcj82eHSd7gFbb5f_w9nv4TWp50QyU952l0iIPoChM,2375
|
|
66
70
|
aixtools/testing/__init__.py,sha256=mlmaAR2gmS4SbsYNCxnIprmFpFp-syjgVUkpUszo3mE,166
|
|
67
|
-
aixtools/testing/aix_test_model.py,sha256=
|
|
71
|
+
aixtools/testing/aix_test_model.py,sha256=i0xBdmpKoEfJHle6JDmcoJLUENN8Eqt181_WZ7XtDdU,6240
|
|
68
72
|
aixtools/testing/mock_tool.py,sha256=4I0LxxSkLhGIKM2YxCP3cnYI8IYJjdKhfwGZ3dioXsM,2465
|
|
69
73
|
aixtools/testing/model_patch_cache.py,sha256=238gKC_gSpR3BkeejhetObOkpOR1l2Iz3A6B_eUTRNc,10158
|
|
70
74
|
aixtools/tools/doctor/__init__.py,sha256=FPwYzC1eJyw8IH0-BP0wgxSprLy6Y_4yXCek7496f2k,64
|
|
71
|
-
aixtools/tools/doctor/
|
|
72
|
-
aixtools/tools/doctor/
|
|
75
|
+
aixtools/tools/doctor/mcp_tool_doctor.py,sha256=sX2q5GfNkmUYxnXrqMpeGIwGfeL1LpYJR7YTMEP2KUA,2878
|
|
76
|
+
aixtools/tools/doctor/tool_doctor.py,sha256=EY1pshjLGLD0j6cc1ZFtbc0G19I5IbOZwHFDqypE49Q,2661
|
|
77
|
+
aixtools/tools/doctor/tool_recommendation.py,sha256=LYyVOSXdAorWiY4P-ucSA1vLlV5BTEfX4GzBXNE_X0M,1569
|
|
73
78
|
aixtools/utils/__init__.py,sha256=xT6almZBQYMfj4h7Hq9QXDHyVXbOOTxqLsmJsxYYnSw,757
|
|
74
|
-
aixtools/utils/config.py,sha256=
|
|
79
|
+
aixtools/utils/config.py,sha256=JeUbGls1womGZWIp6gPBT0IoAfrljpscKEoKx2eBXjw,4819
|
|
75
80
|
aixtools/utils/config_util.py,sha256=3Ya4Qqhj1RJ1qtTTykQ6iayf5uxlpigPXgEJlTi1wn4,2229
|
|
76
81
|
aixtools/utils/enum_with_description.py,sha256=zjSzWxG74eR4x7dpmb74pLTYCWNSMvauHd7_9LpDYIw,1088
|
|
77
82
|
aixtools/utils/files.py,sha256=8JnxwHJRJcjWCdFpjzWmo0po2fRg8esj4H7sOxElYXU,517
|
|
@@ -81,8 +86,8 @@ aixtools/utils/chainlit/cl_agent_show.py,sha256=vaRuowp4BRvhxEr5hw0zHEJ7iaSF_5bo
|
|
|
81
86
|
aixtools/utils/chainlit/cl_utils.py,sha256=fxaxdkcZg6uHdM8uztxdPowg3a2f7VR7B26VPY4t-3c,5738
|
|
82
87
|
aixtools/vault/__init__.py,sha256=fsr_NuX3GZ9WZ7dGfe0gp_5-z3URxAfwVRXw7Xyc0dU,141
|
|
83
88
|
aixtools/vault/vault.py,sha256=9dZLWdZQk9qN_Q9Djkofw9LUKnJqnrX5H0fGusVLBhA,6037
|
|
84
|
-
aixtools-0.1.
|
|
85
|
-
aixtools-0.1.
|
|
86
|
-
aixtools-0.1.
|
|
87
|
-
aixtools-0.1.
|
|
88
|
-
aixtools-0.1.
|
|
89
|
+
aixtools-0.2.1.dist-info/METADATA,sha256=R4eiEK1fraqHxoVP3VJdh1YMUASCKgME65ETcW7JI4A,24951
|
|
90
|
+
aixtools-0.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
91
|
+
aixtools-0.2.1.dist-info/entry_points.txt,sha256=q8412TG4T0S8K0SKeWp2vkVPIDYQs0jNoHqcQ7qxOiA,155
|
|
92
|
+
aixtools-0.2.1.dist-info/top_level.txt,sha256=wBn-rw9bCtxrR4AYEYgjilNCUVmKY0LWby9Zan2PRJM,9
|
|
93
|
+
aixtools-0.2.1.dist-info/RECORD,,
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Workspace privacy utilities for managing session-level privacy flags.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from pathlib import Path
|
|
6
|
-
|
|
7
|
-
from fastmcp import Context
|
|
8
|
-
|
|
9
|
-
from aixtools.logging.logging_config import get_logger
|
|
10
|
-
from aixtools.server.path import get_workspace_path
|
|
11
|
-
|
|
12
|
-
logger = get_logger(__name__)
|
|
13
|
-
|
|
14
|
-
PRIVACY_FLAG_FILENAME = ".private_data_indicator"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def set_session_private(ctx: Context | tuple[str, str] | None = None) -> bool:
|
|
18
|
-
"""
|
|
19
|
-
Set the current session as private by creating a privacy flag file.
|
|
20
|
-
|
|
21
|
-
Creates an empty file in the session workspace directory
|
|
22
|
-
and sets it as read-only to prevent accidental removal
|
|
23
|
-
|
|
24
|
-
Args:
|
|
25
|
-
ctx: FastMCP context for user/session identification.
|
|
26
|
-
If None, uses current FastMCP request context from HTTP headers.
|
|
27
|
-
If tuple, first part is a user id (username), second part is session id (aka conversation id)
|
|
28
|
-
|
|
29
|
-
Returns:
|
|
30
|
-
bool: True if privacy flag was successfully created, False otherwise.
|
|
31
|
-
"""
|
|
32
|
-
try:
|
|
33
|
-
workspace_path = Path(get_workspace_path(ctx=ctx))
|
|
34
|
-
privacy_file = workspace_path / PRIVACY_FLAG_FILENAME
|
|
35
|
-
workspace_path.mkdir(parents=True, exist_ok=True)
|
|
36
|
-
privacy_file.touch(exist_ok=True)
|
|
37
|
-
privacy_file.chmod(0o444)
|
|
38
|
-
logger.warning("Session marked as private")
|
|
39
|
-
return True
|
|
40
|
-
except (OSError, ValueError, RuntimeError) as e:
|
|
41
|
-
logger.error("Set current session as private: %s", str(e))
|
|
42
|
-
return False
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def is_session_private(ctx: Context | tuple[str, str] | None = None) -> bool:
|
|
46
|
-
"""
|
|
47
|
-
Check if the current session is marked as private.
|
|
48
|
-
|
|
49
|
-
Args:
|
|
50
|
-
ctx: FastMCP context for user/session identification.
|
|
51
|
-
If None, uses current FastMCP request context from HTTP headers.
|
|
52
|
-
If tuple, first part is a user id (username), second part is session id (aka conversation id)
|
|
53
|
-
|
|
54
|
-
Returns:
|
|
55
|
-
bool: True if workspace is private (flag file exists), False otherwise.
|
|
56
|
-
"""
|
|
57
|
-
try:
|
|
58
|
-
workspace_path = Path(get_workspace_path(ctx=ctx))
|
|
59
|
-
privacy_file = workspace_path / PRIVACY_FLAG_FILENAME
|
|
60
|
-
is_private = privacy_file.exists()
|
|
61
|
-
logger.info("Session privacy check, is private: %s", str(is_private))
|
|
62
|
-
return is_private
|
|
63
|
-
except (OSError, ValueError, RuntimeError) as e:
|
|
64
|
-
logger.error("Check session privacy: %s, assuming not private!", str(e))
|
|
65
|
-
return False
|
|
File without changes
|
|
File without changes
|