glaip-sdk 0.7.7__py3-none-any.whl → 0.7.12__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.
- glaip_sdk/agents/base.py +61 -10
- glaip_sdk/branding.py +113 -2
- glaip_sdk/cli/account_store.py +15 -0
- glaip_sdk/cli/config.py +1 -0
- glaip_sdk/cli/slash/remote_runs_controller.py +2 -0
- glaip_sdk/cli/slash/session.py +331 -30
- glaip_sdk/cli/slash/tui/accounts.tcss +72 -0
- glaip_sdk/cli/slash/tui/accounts_app.py +960 -82
- glaip_sdk/cli/slash/tui/clipboard.py +56 -8
- glaip_sdk/cli/slash/tui/context.py +42 -14
- glaip_sdk/cli/slash/tui/layouts/__init__.py +14 -0
- glaip_sdk/cli/slash/tui/layouts/harlequin.py +160 -0
- glaip_sdk/cli/slash/tui/remote_runs_app.py +119 -12
- glaip_sdk/cli/slash/tui/terminal.py +8 -3
- glaip_sdk/cli/slash/tui/theme/manager.py +28 -2
- glaip_sdk/cli/slash/tui/toast.py +270 -19
- glaip_sdk/cli/tui_settings.py +125 -0
- glaip_sdk/client/run_rendering.py +76 -29
- glaip_sdk/guardrails/__init__.py +80 -0
- glaip_sdk/guardrails/serializer.py +89 -0
- glaip_sdk/payload_schemas/agent.py +1 -0
- glaip_sdk/payload_schemas/guardrails.py +34 -0
- glaip_sdk/runner/langgraph.py +1 -0
- glaip_sdk/tools/base.py +23 -3
- {glaip_sdk-0.7.7.dist-info → glaip_sdk-0.7.12.dist-info}/METADATA +6 -4
- {glaip_sdk-0.7.7.dist-info → glaip_sdk-0.7.12.dist-info}/RECORD +29 -23
- {glaip_sdk-0.7.7.dist-info → glaip_sdk-0.7.12.dist-info}/WHEEL +0 -0
- {glaip_sdk-0.7.7.dist-info → glaip_sdk-0.7.12.dist-info}/entry_points.txt +0 -0
- {glaip_sdk-0.7.7.dist-info → glaip_sdk-0.7.12.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Guardrails package for content filtering and safety checks.
|
|
2
|
+
|
|
3
|
+
This package provides modular guardrail engines and managers for filtering
|
|
4
|
+
harmful content in AI agent interactions. All components support lazy loading
|
|
5
|
+
from aip-agents to maintain Principle VII compliance.
|
|
6
|
+
|
|
7
|
+
Authors:
|
|
8
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from enum import StrEnum
|
|
12
|
+
from typing import TYPE_CHECKING, Any
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from aip_agents.guardrails.engines.nemo import NemoGuardrailEngine
|
|
16
|
+
from aip_agents.guardrails.engines.phrase_matcher import PhraseMatcherEngine
|
|
17
|
+
from aip_agents.guardrails.manager import GuardrailManager
|
|
18
|
+
from aip_agents.guardrails.schemas import GuardrailMode
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ImportableName(StrEnum):
|
|
22
|
+
"""Names of the importable attributes."""
|
|
23
|
+
|
|
24
|
+
GUARDRAIL_MANAGER = "GuardrailManager"
|
|
25
|
+
PHRASE_MATCHER_ENGINE = "PhraseMatcherEngine"
|
|
26
|
+
NEMO_GUARDRAIL_ENGINE = "NemoGuardrailEngine"
|
|
27
|
+
GUARDRAIL_MODE = "GuardrailMode"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# Lazy loading support - components are only imported when actually used
|
|
31
|
+
_LAZY_IMPORTS = {}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def __getattr__(name: str) -> Any:
|
|
35
|
+
"""Lazy import to avoid eager loading of optional aip-agents dependency.
|
|
36
|
+
|
|
37
|
+
This function is called by Python when an attribute is not found in the module.
|
|
38
|
+
It performs the import from aip_agents.guardrails at runtime.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
name: The name of the attribute to get.
|
|
42
|
+
|
|
43
|
+
Returns:
|
|
44
|
+
The attribute value from aip_agents.
|
|
45
|
+
|
|
46
|
+
Raises:
|
|
47
|
+
AttributeError: If the attribute doesn't exist.
|
|
48
|
+
ImportError: If aip-agents is not installed but a component is accessed.
|
|
49
|
+
"""
|
|
50
|
+
if name in _LAZY_IMPORTS:
|
|
51
|
+
return _LAZY_IMPORTS[name]
|
|
52
|
+
|
|
53
|
+
if name == ImportableName.GUARDRAIL_MANAGER:
|
|
54
|
+
from aip_agents.guardrails.manager import GuardrailManager # noqa: PLC0415
|
|
55
|
+
|
|
56
|
+
_LAZY_IMPORTS[name] = GuardrailManager
|
|
57
|
+
return GuardrailManager
|
|
58
|
+
|
|
59
|
+
if name == ImportableName.PHRASE_MATCHER_ENGINE:
|
|
60
|
+
from aip_agents.guardrails.engines.phrase_matcher import ( # noqa: PLC0415
|
|
61
|
+
PhraseMatcherEngine,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
_LAZY_IMPORTS[name] = PhraseMatcherEngine
|
|
65
|
+
return PhraseMatcherEngine
|
|
66
|
+
|
|
67
|
+
if name == ImportableName.NEMO_GUARDRAIL_ENGINE:
|
|
68
|
+
from aip_agents.guardrails.engines.nemo import NemoGuardrailEngine # noqa: PLC0415
|
|
69
|
+
|
|
70
|
+
_LAZY_IMPORTS[name] = NemoGuardrailEngine
|
|
71
|
+
return NemoGuardrailEngine
|
|
72
|
+
|
|
73
|
+
if name == ImportableName.GUARDRAIL_MODE:
|
|
74
|
+
from aip_agents.guardrails.schemas import GuardrailMode # noqa: PLC0415
|
|
75
|
+
|
|
76
|
+
_LAZY_IMPORTS[name] = GuardrailMode
|
|
77
|
+
return GuardrailMode
|
|
78
|
+
|
|
79
|
+
msg = f"module {__name__!r} has no attribute {name!r}"
|
|
80
|
+
raise AttributeError(msg)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Guardrail serialization logic.
|
|
2
|
+
|
|
3
|
+
This module provides functionality to serialize GuardrailManager and its engines
|
|
4
|
+
into the JSON format expected by the GL AIP backend. This keeps the serialization
|
|
5
|
+
logic within the SDK rather than polluting the core aip-agents logic.
|
|
6
|
+
|
|
7
|
+
Authors:
|
|
8
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import TYPE_CHECKING, Any
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from glaip_sdk.guardrails import (
|
|
17
|
+
GuardrailManager,
|
|
18
|
+
NemoGuardrailEngine,
|
|
19
|
+
PhraseMatcherEngine,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _serialize_phrase_matcher(engine: PhraseMatcherEngine) -> dict[str, Any]:
|
|
24
|
+
"""Serialize a PhraseMatcherEngine configuration."""
|
|
25
|
+
config: dict[str, Any] = {}
|
|
26
|
+
|
|
27
|
+
# Extract config from BaseGuardrailEngineConfig
|
|
28
|
+
if hasattr(engine, "config") and engine.config:
|
|
29
|
+
config.update(engine.config.model_dump())
|
|
30
|
+
|
|
31
|
+
# Extract specific fields
|
|
32
|
+
if hasattr(engine, "banned_phrases"):
|
|
33
|
+
config["banned_phrases"] = engine.banned_phrases
|
|
34
|
+
|
|
35
|
+
return config
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _serialize_nemo(engine: NemoGuardrailEngine) -> dict[str, Any]:
|
|
39
|
+
"""Serialize a NemoGuardrailEngine configuration."""
|
|
40
|
+
config: dict[str, Any] = {}
|
|
41
|
+
|
|
42
|
+
# Extract config from BaseGuardrailEngineConfig
|
|
43
|
+
if hasattr(engine, "config") and engine.config:
|
|
44
|
+
config.update(engine.config.model_dump())
|
|
45
|
+
|
|
46
|
+
# Extract specific fields
|
|
47
|
+
nemo_fields = [
|
|
48
|
+
"topic_safety_mode",
|
|
49
|
+
"allowed_topics",
|
|
50
|
+
"denied_topics",
|
|
51
|
+
"include_core_restrictions",
|
|
52
|
+
"core_restriction_categories",
|
|
53
|
+
"config_dict",
|
|
54
|
+
"denial_phrases",
|
|
55
|
+
]
|
|
56
|
+
for field in nemo_fields:
|
|
57
|
+
if hasattr(engine, field):
|
|
58
|
+
val = getattr(engine, field)
|
|
59
|
+
if val is not None:
|
|
60
|
+
config[field] = val
|
|
61
|
+
|
|
62
|
+
return config
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def serialize_guardrail_manager(manager: GuardrailManager) -> dict[str, Any]:
|
|
66
|
+
"""Serialize a GuardrailManager into the backend JSON format.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
manager: The GuardrailManager instance to serialize.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
A dictionary matching the agent_config.guardrails schema.
|
|
73
|
+
"""
|
|
74
|
+
from glaip_sdk.guardrails import NemoGuardrailEngine, PhraseMatcherEngine # noqa: PLC0415
|
|
75
|
+
|
|
76
|
+
engines_config = []
|
|
77
|
+
|
|
78
|
+
if hasattr(manager, "engines"):
|
|
79
|
+
for engine in manager.engines:
|
|
80
|
+
if isinstance(engine, PhraseMatcherEngine):
|
|
81
|
+
engines_config.append({"type": "phrase_matcher", "config": _serialize_phrase_matcher(engine)})
|
|
82
|
+
elif isinstance(engine, NemoGuardrailEngine):
|
|
83
|
+
engines_config.append({"type": "nemo", "config": _serialize_nemo(engine)})
|
|
84
|
+
else:
|
|
85
|
+
# Fallback for unknown engines
|
|
86
|
+
continue
|
|
87
|
+
|
|
88
|
+
enabled = getattr(manager, "enabled", True)
|
|
89
|
+
return {"enabled": enabled, "engines": engines_config}
|
|
@@ -57,6 +57,7 @@ AGENT_FIELD_RULES: Mapping[str, FieldRule] = {
|
|
|
57
57
|
"timeout": FieldRule(cli_managed_create=True, cli_managed_update=True),
|
|
58
58
|
# Fields requiring sanitisation before sending to the API
|
|
59
59
|
"agent_config": FieldRule(requires_sanitization=True),
|
|
60
|
+
"guardrail": FieldRule(requires_sanitization=True),
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""Guardrail payload schemas for API communication.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from collections.abc import Mapping, Sequence
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, Field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class GuardrailEnginePayload(BaseModel):
|
|
14
|
+
"""Payload schema for a single guardrail engine configuration.
|
|
15
|
+
|
|
16
|
+
This model defines the structure for individual safety engines (e.g., phrase_matcher, nemo)
|
|
17
|
+
when communicating with the GL AIP backend.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
type: str = Field(..., description="The type of guardrail engine (e.g., 'phrase_matcher', 'nemo')")
|
|
21
|
+
config: Mapping[str, Any] = Field(..., description="Engine-specific configuration parameters")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class GuardrailPayload(BaseModel):
|
|
25
|
+
"""Payload schema for global guardrail settings.
|
|
26
|
+
|
|
27
|
+
This model acts as the container for all guardrail configurations within the agent_config.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
enabled: bool = Field(default=True, description="Global toggle to enable or disable all guardrails")
|
|
31
|
+
engines: Sequence[GuardrailEnginePayload] = Field(
|
|
32
|
+
default_factory=list,
|
|
33
|
+
description="List of configured guardrail engines",
|
|
34
|
+
)
|
glaip_sdk/runner/langgraph.py
CHANGED
|
@@ -387,6 +387,7 @@ class LangGraphRunner(BaseRunner):
|
|
|
387
387
|
agents=sub_agent_instances if sub_agent_instances else None,
|
|
388
388
|
tool_configs=tool_configs if tool_configs else None,
|
|
389
389
|
tool_output_manager=tool_output_manager,
|
|
390
|
+
guardrail=agent.guardrail,
|
|
390
391
|
**agent_config_params,
|
|
391
392
|
**agent_config_kwargs,
|
|
392
393
|
)
|
glaip_sdk/tools/base.py
CHANGED
|
@@ -387,12 +387,22 @@ class Tool:
|
|
|
387
387
|
if not self._client:
|
|
388
388
|
raise RuntimeError(_CLIENT_NOT_AVAILABLE_MSG)
|
|
389
389
|
|
|
390
|
+
# Handle both Client (has .tools) and ToolClient (direct methods)
|
|
391
|
+
# Priority: Check if client has a 'tools' attribute (Client instance)
|
|
392
|
+
# Otherwise, use client directly (ToolClient instance)
|
|
393
|
+
if hasattr(self._client, "tools") and self._client.tools is not None:
|
|
394
|
+
# Main Client instance - use the tools sub-client
|
|
395
|
+
tools_client = self._client.tools
|
|
396
|
+
else:
|
|
397
|
+
# ToolClient instance - use directly
|
|
398
|
+
tools_client = self._client
|
|
399
|
+
|
|
390
400
|
# Check if file upload is requested
|
|
391
401
|
if "file" in kwargs:
|
|
392
402
|
file_path = kwargs.pop("file")
|
|
393
|
-
response =
|
|
403
|
+
response = tools_client.update_tool_via_file(self._id, file_path, **kwargs)
|
|
394
404
|
else:
|
|
395
|
-
response =
|
|
405
|
+
response = tools_client.update_tool(tool_id=self._id, **kwargs)
|
|
396
406
|
|
|
397
407
|
# Update local properties from response
|
|
398
408
|
if hasattr(response, "name") and response.name:
|
|
@@ -416,7 +426,17 @@ class Tool:
|
|
|
416
426
|
if not self._client:
|
|
417
427
|
raise RuntimeError(_CLIENT_NOT_AVAILABLE_MSG)
|
|
418
428
|
|
|
419
|
-
|
|
429
|
+
# Handle both Client (has .tools) and ToolClient (direct methods)
|
|
430
|
+
# Priority: Check if client has a 'tools' attribute (Client instance)
|
|
431
|
+
# Otherwise, use client directly (ToolClient instance)
|
|
432
|
+
if hasattr(self._client, "tools") and self._client.tools is not None:
|
|
433
|
+
# Main Client instance - use the tools sub-client
|
|
434
|
+
tools_client = self._client.tools
|
|
435
|
+
else:
|
|
436
|
+
# ToolClient instance - use directly
|
|
437
|
+
tools_client = self._client
|
|
438
|
+
|
|
439
|
+
tools_client.delete_tool(self._id)
|
|
420
440
|
self._id = None
|
|
421
441
|
self._client = None
|
|
422
442
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: glaip-sdk
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.12
|
|
4
4
|
Summary: Python SDK and CLI for GL AIP (GDP Labs AI Agent Package) - Build, run, and manage AI agents
|
|
5
5
|
Author-email: Raymond Christopher <raymond.christopher@gdplabs.id>
|
|
6
6
|
License: MIT
|
|
@@ -20,11 +20,13 @@ Requires-Dist: gllm-core-binary>=0.1.0
|
|
|
20
20
|
Requires-Dist: langchain-core>=0.3.0
|
|
21
21
|
Requires-Dist: gllm-tools-binary>=0.1.3
|
|
22
22
|
Provides-Extra: local
|
|
23
|
-
Requires-Dist: aip-agents-binary[local]>=0.5.
|
|
23
|
+
Requires-Dist: aip-agents-binary[local]>=0.5.23; (python_version >= "3.11" and python_version < "3.13") and extra == "local"
|
|
24
24
|
Provides-Extra: memory
|
|
25
|
-
Requires-Dist: aip-agents-binary[memory]>=0.5.
|
|
25
|
+
Requires-Dist: aip-agents-binary[memory]>=0.5.23; (python_version >= "3.11" and python_version < "3.13") and extra == "memory"
|
|
26
26
|
Provides-Extra: privacy
|
|
27
|
-
Requires-Dist: aip-agents-binary[privacy]>=0.5.
|
|
27
|
+
Requires-Dist: aip-agents-binary[privacy]>=0.5.23; (python_version >= "3.11" and python_version < "3.13") and extra == "privacy"
|
|
28
|
+
Provides-Extra: guardrails
|
|
29
|
+
Requires-Dist: aip-agents-binary[guardrails]>=0.5.23; (python_version >= "3.11" and python_version < "3.13") and extra == "guardrails"
|
|
28
30
|
Provides-Extra: dev
|
|
29
31
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
30
32
|
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
glaip_sdk/__init__.py,sha256=YpePGKbCjwqCwvb8yig8cc64z876ch1oSlTlu-CiWfs,1722
|
|
2
2
|
glaip_sdk/_version.py,sha256=5CHGCxx_36fgmMWuEx6jJ2CzzM-i9eBFyQWFwBi23XE,2259
|
|
3
|
-
glaip_sdk/branding.py,sha256=
|
|
3
|
+
glaip_sdk/branding.py,sha256=uF_-c-cg_rFjzJr0NibLiE1Dvv0DpXBXN63wl-Ej88c,11651
|
|
4
4
|
glaip_sdk/exceptions.py,sha256=iAChFClkytXRBLP0vZq1_YjoZxA9i4m4bW1gDLiGR1g,2321
|
|
5
5
|
glaip_sdk/icons.py,sha256=J5THz0ReAmDwIiIooh1_G3Le-mwTJyEjhJDdJ13KRxM,524
|
|
6
6
|
glaip_sdk/rich_components.py,sha256=44Z0V1ZQleVh9gUDGwRR5mriiYFnVGOhm7fFxZYbP8c,4052
|
|
7
7
|
glaip_sdk/agents/__init__.py,sha256=VfYov56edbWuySXFEbWJ_jLXgwnFzPk1KB-9-mfsUCc,776
|
|
8
|
-
glaip_sdk/agents/base.py,sha256=
|
|
8
|
+
glaip_sdk/agents/base.py,sha256=6528sEC2RGwOn0sWqiKiqf5Y_uHEuleN0nT42XlaC0U,46317
|
|
9
9
|
glaip_sdk/cli/__init__.py,sha256=xCCfuF1Yc7mpCDcfhHZTX0vizvtrDSLeT8MJ3V7m5A0,156
|
|
10
|
-
glaip_sdk/cli/account_store.py,sha256=
|
|
10
|
+
glaip_sdk/cli/account_store.py,sha256=u_memecwEQssustZs2wYBrHbEmKUlDfmmL-zO1F3n3A,19034
|
|
11
11
|
glaip_sdk/cli/agent_config.py,sha256=YAbFKrTNTRqNA6b0i0Q3pH-01rhHDRi5v8dxSFwGSwM,2401
|
|
12
12
|
glaip_sdk/cli/auth.py,sha256=bqOHMGIOCg3KXssme3uJBBjEbK0rCEppQ6oq-gJ-hzA,24276
|
|
13
|
-
glaip_sdk/cli/config.py,sha256=
|
|
13
|
+
glaip_sdk/cli/config.py,sha256=hFKQSdqELQZLKBuFnhEirNLDyPJwEmpQuD8nHuWxokg,3051
|
|
14
14
|
glaip_sdk/cli/constants.py,sha256=zqcVtzfj6huW97gbCmhkFqntge1H-c1vnkGqTazADgU,895
|
|
15
15
|
glaip_sdk/cli/context.py,sha256=--Y5vc6lgoAV7cRoUAr9UxSQaLmkMg29FolA7EwoRqM,3803
|
|
16
16
|
glaip_sdk/cli/display.py,sha256=ojgWdGeD5KUnGOmWNqqK4JP-1EaWHWX--DWze3BmIz0,12137
|
|
@@ -23,6 +23,7 @@ glaip_sdk/cli/mcp_validators.py,sha256=cwbz7p_p7_9xVuuF96OBQOdmEgo5UObU6iWWQ2X03
|
|
|
23
23
|
glaip_sdk/cli/pager.py,sha256=TmiMDNpUMuZju7QJ6A_ITqIoEf8Dhv8U6mTXx2Fga1k,7935
|
|
24
24
|
glaip_sdk/cli/resolution.py,sha256=AGvv7kllLcuvk_jdaArJqH3lId4IDEXpHceRZwy14xY,2448
|
|
25
25
|
glaip_sdk/cli/rich_helpers.py,sha256=kO47N8e506rxrN6Oc9mbAWN3Qb536oQPWZy1s9A616g,819
|
|
26
|
+
glaip_sdk/cli/tui_settings.py,sha256=ey9bSlolEj3_SMmjVVV_PY0FkfH1psAFPOl03NlykvI,3867
|
|
26
27
|
glaip_sdk/cli/update_notifier.py,sha256=0zpWxr4nSyz0tiLWyC7EEO2deAnVmsRcVlMV79G2QMI,18049
|
|
27
28
|
glaip_sdk/cli/validators.py,sha256=k4J2ACYJPF6UmWJfENt9OHWdp4RNArVxR3hoeqauO88,5629
|
|
28
29
|
glaip_sdk/cli/commands/__init__.py,sha256=6Z3ASXDut0lAbUX_umBFtxPzzFyqoiZfVeTahThFu1A,219
|
|
@@ -76,22 +77,24 @@ glaip_sdk/cli/slash/accounts_controller.py,sha256=SceJlc2F2ZdlSDkuWO3Js3akL89bVt
|
|
|
76
77
|
glaip_sdk/cli/slash/accounts_shared.py,sha256=Mq5HxlI0YsVEQ0KKISWvyBZhzOFFWCzwRbhF5xwvUbM,2626
|
|
77
78
|
glaip_sdk/cli/slash/agent_session.py,sha256=tuVOme-NbEyr6rwJvsBEKZYWQmsaRf4piJeRvIGu0ns,11384
|
|
78
79
|
glaip_sdk/cli/slash/prompt.py,sha256=q4f1c2zr7ZMUeO6AgOBF2Nz4qgMOXrVPt6WzPRQMbAM,8501
|
|
79
|
-
glaip_sdk/cli/slash/remote_runs_controller.py,sha256=
|
|
80
|
-
glaip_sdk/cli/slash/session.py,sha256=
|
|
80
|
+
glaip_sdk/cli/slash/remote_runs_controller.py,sha256=iLl4a-mu9QU7dcedgEILewPtDIVtFUJkbKGtcx1F66U,21445
|
|
81
|
+
glaip_sdk/cli/slash/session.py,sha256=YJ7UIeWyged1znmBVnGweOzH2l4NKeF5lT9VGdDvQWo,75998
|
|
81
82
|
glaip_sdk/cli/slash/tui/__init__.py,sha256=oBUzeoslYwPKVlhqhgg4I7480b77vQNc9ec0NgdTC1s,977
|
|
82
|
-
glaip_sdk/cli/slash/tui/accounts.tcss,sha256=
|
|
83
|
-
glaip_sdk/cli/slash/tui/accounts_app.py,sha256=
|
|
83
|
+
glaip_sdk/cli/slash/tui/accounts.tcss,sha256=eqFMAuN3PI3YVNDUbrCQpO1-Ko5WZpempPq75_Aejq0,2159
|
|
84
|
+
glaip_sdk/cli/slash/tui/accounts_app.py,sha256=thS4r1NELB9K_OoEI4uJdDGSkRyhzek_2Y0k0yoPvss,71799
|
|
84
85
|
glaip_sdk/cli/slash/tui/background_tasks.py,sha256=SAe1mV2vXB3mJcSGhelU950vf8Lifjhws9iomyIVFKw,2422
|
|
85
|
-
glaip_sdk/cli/slash/tui/clipboard.py,sha256=
|
|
86
|
-
glaip_sdk/cli/slash/tui/context.py,sha256=
|
|
86
|
+
glaip_sdk/cli/slash/tui/clipboard.py,sha256=7fEshhTwHYaj-n7n0W0AsWTs8W0RLZw_9luXxrFTrtw,6227
|
|
87
|
+
glaip_sdk/cli/slash/tui/context.py,sha256=v7XOdRtk5AQ4ZE-QWUhc1s9xVROu8_JjdjVnKx0X9p8,3270
|
|
87
88
|
glaip_sdk/cli/slash/tui/keybind_registry.py,sha256=_rK05BxTxNudYc4iJ9gDxpgeUkjDAq8rarIT-9A-jyM,6739
|
|
88
89
|
glaip_sdk/cli/slash/tui/loading.py,sha256=nW5pv_Tnl9FUOPR3Qf2O5gt1AGHSo3b5-Uofg34F6AE,1909
|
|
89
|
-
glaip_sdk/cli/slash/tui/remote_runs_app.py,sha256=
|
|
90
|
-
glaip_sdk/cli/slash/tui/terminal.py,sha256=
|
|
91
|
-
glaip_sdk/cli/slash/tui/toast.py,sha256=
|
|
90
|
+
glaip_sdk/cli/slash/tui/remote_runs_app.py,sha256=DOmUHeaBg8puERn-htDnYAJgcUHETl457HamQkd0nxY,28550
|
|
91
|
+
glaip_sdk/cli/slash/tui/terminal.py,sha256=ZAC3sB17TGpl-GFeRVm_nI8DQTN3pyti3ynlZ41wT_A,12323
|
|
92
|
+
glaip_sdk/cli/slash/tui/toast.py,sha256=QLL6BBBMjEagzpSEPf3PNBNzQG_EdN5JeAigk66AjVs,11920
|
|
93
|
+
glaip_sdk/cli/slash/tui/layouts/__init__.py,sha256=KT77pZHa7Wz84QlHYT2mfhQ_AXUA-T0eHv_HtAvc1ac,473
|
|
94
|
+
glaip_sdk/cli/slash/tui/layouts/harlequin.py,sha256=pR5BHdWCVK0QZCyr8q6O-vCL_MTZKjMVASdYzkFUkt4,5122
|
|
92
95
|
glaip_sdk/cli/slash/tui/theme/__init__.py,sha256=rtM2ik83YNCRcI1qh_Sf3rnxco2OvCNNT3NbHY6cLvw,432
|
|
93
96
|
glaip_sdk/cli/slash/tui/theme/catalog.py,sha256=G52eU3h8YI9D8XUALVg1KVZ4Lq65VnZdgPS3F_P7XLE,2544
|
|
94
|
-
glaip_sdk/cli/slash/tui/theme/manager.py,sha256=
|
|
97
|
+
glaip_sdk/cli/slash/tui/theme/manager.py,sha256=LBnxEMIwz-8cAlZGYk5tIoAJbOJyGYsmDlyuGJ-LlX4,3945
|
|
95
98
|
glaip_sdk/cli/slash/tui/theme/tokens.py,sha256=ympMRny_d-gHtmnPR-lmNZ-C9SGBy2q-MH81l0L1h-Y,1423
|
|
96
99
|
glaip_sdk/cli/transcript/__init__.py,sha256=yiYHyNtebMCu3BXu56Xm5RBC2tDc865q8UGPnoe6QRs,920
|
|
97
100
|
glaip_sdk/cli/transcript/cache.py,sha256=Wi1uln6HP1U6F-MRTrfnxi9bn6XJTxwWXhREIRPoMqQ,17439
|
|
@@ -108,7 +111,7 @@ glaip_sdk/client/base.py,sha256=BhNaC2TJJ2jVWRTYmfxD3WjYgAyIuWNz9YURdNXXjJo,1824
|
|
|
108
111
|
glaip_sdk/client/hitl.py,sha256=dO_q-43miI0oGrJDyUrZ9MbettQp0hai4kjvPaYm010,3545
|
|
109
112
|
glaip_sdk/client/main.py,sha256=FqN-JIoCTN1pV-3O-ElIbe8t_cWYUDV4S0N8W018De0,9362
|
|
110
113
|
glaip_sdk/client/mcps.py,sha256=-JdaIkg0QE3egJ8p93eoOPULup8KbM2WRCcwlvqlqrA,14492
|
|
111
|
-
glaip_sdk/client/run_rendering.py,sha256=
|
|
114
|
+
glaip_sdk/client/run_rendering.py,sha256=BKe9a_KnL58XNcGlLvbhJAZBh57e8-ykYiqp0bbS4ZE,28860
|
|
112
115
|
glaip_sdk/client/schedules.py,sha256=ZfPzCYzk4YRuPkjkTTgLe5Rqa07mi-h2WmP4H91mMZ0,14113
|
|
113
116
|
glaip_sdk/client/shared.py,sha256=esHlsR0LEfL-pFDaWebQjKKOLl09jsRY-2pllBUn4nU,522
|
|
114
117
|
glaip_sdk/client/tools.py,sha256=NzQTIsn-bjYN9EfGWCBqqawCIVs7auaccFv7BM_3oCc,23871
|
|
@@ -117,6 +120,8 @@ glaip_sdk/client/payloads/agent/__init__.py,sha256=gItEH2zt2secVq6n60oGA-ztdE5mc
|
|
|
117
120
|
glaip_sdk/client/payloads/agent/requests.py,sha256=5FuGEuypaEXlWBhB07JrDca_ecLg4bvo8mjyFBxAV9U,17139
|
|
118
121
|
glaip_sdk/client/payloads/agent/responses.py,sha256=1eRMI4JAIGqTB5zY_7D9ILQDRHPXR06U7JqHSmRp3Qs,1243
|
|
119
122
|
glaip_sdk/config/constants.py,sha256=Y03c6op0e7K0jTQ8bmWXhWAqsnjWxkAhWniq8Z0iEKY,1081
|
|
123
|
+
glaip_sdk/guardrails/__init__.py,sha256=C1gpL2himmv0FfAsR1ywuvBkwXP54-ziPeqqdAo207k,2677
|
|
124
|
+
glaip_sdk/guardrails/serializer.py,sha256=x4WDaGH-kmaPHnIJNi3aJjToYf4Ru_3mIh3yxSWO25U,2832
|
|
120
125
|
glaip_sdk/hitl/__init__.py,sha256=hi_SwW1oBimNnSFPo9Yc-mZWVPzpytlnDWNq2h1_fPo,1572
|
|
121
126
|
glaip_sdk/hitl/base.py,sha256=EUN2igzydlYZ6_qmHU46Gyk3Bk9uyalZkCJ06XMRKJ8,1484
|
|
122
127
|
glaip_sdk/hitl/callback.py,sha256=icKxxa_f8lxFQuXrZVoTt6baWivFL4a4YioWG_U_8k8,1336
|
|
@@ -132,7 +137,8 @@ glaip_sdk/models/mcp.py,sha256=ti_8MUf4k7qbR1gPs9JhqhybMcLUhZxEELtHQrTv2-U,944
|
|
|
132
137
|
glaip_sdk/models/schedule.py,sha256=gfL_b9abaWToMtnCD_iXOsmonQ1sq2dZoLcInvCzZ2o,7248
|
|
133
138
|
glaip_sdk/models/tool.py,sha256=w3nL2DqyCtGgDPCd40Asi9obRGghQjLlC9Vt_p32Mpc,951
|
|
134
139
|
glaip_sdk/payload_schemas/__init__.py,sha256=nTJmzwn2BbEpzZdq-8U24eVHQHxqYO3_-SABMV9lS_Q,142
|
|
135
|
-
glaip_sdk/payload_schemas/agent.py,sha256=
|
|
140
|
+
glaip_sdk/payload_schemas/agent.py,sha256=tQlTOuRQx4e8XUsEmSNgD8NMURzChYdYwkfKbGpK4nY,3254
|
|
141
|
+
glaip_sdk/payload_schemas/guardrails.py,sha256=5e0BrS1isBs9Wzuz3ktnB9YnpfZJHMIsvmS0wDH36E4,1162
|
|
136
142
|
glaip_sdk/registry/__init__.py,sha256=mjvElYE-wwmbriGe-c6qy4on0ccEuWxW_EWWrSbptCw,1667
|
|
137
143
|
glaip_sdk/registry/agent.py,sha256=F0axW4BIUODqnttIOzxnoS5AqQkLZ1i48FTeZNnYkhA,5203
|
|
138
144
|
glaip_sdk/registry/base.py,sha256=0x2ZBhiERGUcf9mQeWlksSYs5TxDG6FxBYQToYZa5D4,4143
|
|
@@ -141,7 +147,7 @@ glaip_sdk/registry/tool.py,sha256=c0Ja4rFYMOKs_1yjDLDZxCId4IjQzprwXzX0iIL8Fio,14
|
|
|
141
147
|
glaip_sdk/runner/__init__.py,sha256=orJ3nLR9P-n1qMaAMWZ_xRS4368YnDpdltg-bX5BlUk,2210
|
|
142
148
|
glaip_sdk/runner/base.py,sha256=KIjcSAyDCP9_mn2H4rXR5gu1FZlwD9pe0gkTBmr6Yi4,2663
|
|
143
149
|
glaip_sdk/runner/deps.py,sha256=Du3hr2R5RHOYCRAv7RVmx661x-ayVXIeZ8JD7ODirTA,3884
|
|
144
|
-
glaip_sdk/runner/langgraph.py,sha256=
|
|
150
|
+
glaip_sdk/runner/langgraph.py,sha256=AcZPybe8Jxu1KfGQcVuHjy8X7OI36xpMBdAyjMsr9Rc,33070
|
|
145
151
|
glaip_sdk/runner/logging_config.py,sha256=OrQgW23t42qQRqEXKH8U4bFg4JG5EEkUJTlbvtU65iE,2528
|
|
146
152
|
glaip_sdk/runner/mcp_adapter/__init__.py,sha256=Rdttfg3N6kg3-DaTCKqaGXKByZyBt0Mwf6FV8s_5kI8,462
|
|
147
153
|
glaip_sdk/runner/mcp_adapter/base_mcp_adapter.py,sha256=ic56fKgb3zgVZZQm3ClWUZi7pE1t4EVq8mOg6AM6hdA,1374
|
|
@@ -153,7 +159,7 @@ glaip_sdk/runner/tool_adapter/langchain_tool_adapter.py,sha256=SgfQM5NgKyYBs34ju
|
|
|
153
159
|
glaip_sdk/schedules/__init__.py,sha256=Ty__lE8ta3a6O7EiEsSXliVOwA3EBLKxKRsjAJt2WUg,482
|
|
154
160
|
glaip_sdk/schedules/base.py,sha256=ZRKWknoxQOYMhX8mjQ7S7oqpy6Wr0xdbzcgIrycsEQ8,9727
|
|
155
161
|
glaip_sdk/tools/__init__.py,sha256=rhGzEqQFCzeMrxmikBuNrMz4PyYczwic28boDKVmoHs,585
|
|
156
|
-
glaip_sdk/tools/base.py,sha256=
|
|
162
|
+
glaip_sdk/tools/base.py,sha256=KRaWWX5cKAvEKtBr4iSOaKQlQ973A4pNOW2KVvA1aYs,17353
|
|
157
163
|
glaip_sdk/utils/__init__.py,sha256=5a1kNLtUriwd1qAT6RU083GOyABS7LMZQacDP4yS9S4,2830
|
|
158
164
|
glaip_sdk/utils/agent_config.py,sha256=RhcHsSOVwOaSC2ggnPuHn36Aa0keGJhs8KGb2InvzRk,7262
|
|
159
165
|
glaip_sdk/utils/bundler.py,sha256=fLumFj1MqqqGA1Mwn05v_cEKPALv3rIPEMvaURpxZ80,15171
|
|
@@ -206,8 +212,8 @@ glaip_sdk/utils/rendering/steps/format.py,sha256=Chnq7OBaj8XMeBntSBxrX5zSmrYeGcO
|
|
|
206
212
|
glaip_sdk/utils/rendering/steps/manager.py,sha256=BiBmTeQMQhjRMykgICXsXNYh1hGsss-fH9BIGVMWFi0,13194
|
|
207
213
|
glaip_sdk/utils/rendering/viewer/__init__.py,sha256=XrxmE2cMAozqrzo1jtDFm8HqNtvDcYi2mAhXLXn5CjI,457
|
|
208
214
|
glaip_sdk/utils/rendering/viewer/presenter.py,sha256=mlLMTjnyeyPVtsyrAbz1BJu9lFGQSlS-voZ-_Cuugv0,5725
|
|
209
|
-
glaip_sdk-0.7.
|
|
210
|
-
glaip_sdk-0.7.
|
|
211
|
-
glaip_sdk-0.7.
|
|
212
|
-
glaip_sdk-0.7.
|
|
213
|
-
glaip_sdk-0.7.
|
|
215
|
+
glaip_sdk-0.7.12.dist-info/METADATA,sha256=yz1DiHtSCtTlxKsNE93PKSHWqRVDHhN-P_BUfMmUafw,8528
|
|
216
|
+
glaip_sdk-0.7.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
217
|
+
glaip_sdk-0.7.12.dist-info/entry_points.txt,sha256=NkhO6FfgX9Zrjn63GuKphf-dLw7KNJvucAcXc7P3aMk,54
|
|
218
|
+
glaip_sdk-0.7.12.dist-info/top_level.txt,sha256=td7yXttiYX2s94-4wFhv-5KdT0rSZ-pnJRSire341hw,10
|
|
219
|
+
glaip_sdk-0.7.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|