persona-sdk-python 0.2.19__tar.gz → 0.2.21__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/PKG-INFO +1 -1
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/__init__.py +11 -5
- persona_sdk_python-0.2.21/persona_sdk/api/markup_rules.py +50 -0
- persona_sdk_python-0.2.21/persona_sdk/api/providers.py +65 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/pyproject.toml +1 -1
- persona_sdk_python-0.2.19/persona_sdk/api/known_models.py +0 -49
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/.gitignore +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/DEPLOY.md +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/README.md +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/bitbucket-pipelines.yml +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/_serde.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/__init__.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/agents.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/credentials.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/features.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/human_tasks.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/knowledge_bases.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/missions.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/projects.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/service_prices.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/sessions.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/triggers.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/api/workflows.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/auth/__init__.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/auth/api_key_auth.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/auth/base.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/auth/bearer_token_auth.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/client.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/runners/__init__.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/runners/agent_runner.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/runners/resource_retriever.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/runners/tool_invoker.py +0 -0
- {persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: persona-sdk-python
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.21
|
|
4
4
|
Summary: Async Python SDK for the Persona AI platform
|
|
5
5
|
Project-URL: Homepage, https://persona.applica.guru
|
|
6
6
|
Project-URL: Repository, https://bitbucket.org/applicaguru/persona-sdk-python
|
|
@@ -3,10 +3,11 @@ from typing import Union
|
|
|
3
3
|
from persona_sdk.api.agents import AgentsApi
|
|
4
4
|
from persona_sdk.api.credentials import CredentialsApi
|
|
5
5
|
from persona_sdk.api.features import FeaturesApi
|
|
6
|
-
from persona_sdk.api.known_models import KnownModelsApi
|
|
7
6
|
from persona_sdk.api.knowledge_bases import KnowledgeBasesApi
|
|
7
|
+
from persona_sdk.api.markup_rules import MarkupRulesApi
|
|
8
8
|
from persona_sdk.api.missions import MissionsApi
|
|
9
9
|
from persona_sdk.api.projects import ProjectsApi
|
|
10
|
+
from persona_sdk.api.providers import ProvidersApi
|
|
10
11
|
from persona_sdk.api.service_prices import ServicePricesApi
|
|
11
12
|
from persona_sdk.api.sessions import SessionsApi
|
|
12
13
|
from persona_sdk.api.triggers import TriggersApi
|
|
@@ -31,10 +32,11 @@ from persona_models.knowledge_bases import (
|
|
|
31
32
|
KnowledgeBaseDocument,
|
|
32
33
|
SearchChunksRequest,
|
|
33
34
|
)
|
|
34
|
-
from persona_models.
|
|
35
|
+
from persona_models.markup import MarkupRule
|
|
35
36
|
from persona_models.mcp import GenerationRequest
|
|
36
37
|
from persona_models.missions import CreateMissionRequest, Mission
|
|
37
38
|
from persona_models.projects import Project
|
|
39
|
+
from persona_models.providers import Provider, ProviderModel
|
|
38
40
|
from persona_models.service_prices import ServicePrice, UsageCost
|
|
39
41
|
from persona_models.sessions import GenerationResponse, Message, Session
|
|
40
42
|
from persona_models.triggers import Trigger, TriggerExecutionResult
|
|
@@ -49,10 +51,11 @@ __all__ = [
|
|
|
49
51
|
"AgentsApi",
|
|
50
52
|
"CredentialsApi",
|
|
51
53
|
"FeaturesApi",
|
|
52
|
-
"KnownModelsApi",
|
|
53
54
|
"KnowledgeBasesApi",
|
|
55
|
+
"MarkupRulesApi",
|
|
54
56
|
"MissionsApi",
|
|
55
57
|
"ProjectsApi",
|
|
58
|
+
"ProvidersApi",
|
|
56
59
|
"ServicePricesApi",
|
|
57
60
|
"SessionsApi",
|
|
58
61
|
"TriggersApi",
|
|
@@ -68,12 +71,14 @@ __all__ = [
|
|
|
68
71
|
"KnowledgeBase",
|
|
69
72
|
"KnowledgeBaseDocument",
|
|
70
73
|
"SearchChunksRequest",
|
|
71
|
-
"KnownModel",
|
|
72
74
|
"GenerationRequest",
|
|
73
75
|
"GenerationResponse",
|
|
74
76
|
"CreateMissionRequest",
|
|
75
77
|
"Mission",
|
|
76
78
|
"Project",
|
|
79
|
+
"Provider",
|
|
80
|
+
"ProviderModel",
|
|
81
|
+
"MarkupRule",
|
|
77
82
|
"ServicePrice",
|
|
78
83
|
"UsageCost",
|
|
79
84
|
"Message",
|
|
@@ -142,7 +147,8 @@ class PersonaSdk:
|
|
|
142
147
|
self.features = FeaturesApi(self.client)
|
|
143
148
|
self.missions = MissionsApi(self.client)
|
|
144
149
|
self.service_prices = ServicePricesApi(self.client)
|
|
145
|
-
self.
|
|
150
|
+
self.providers = ProvidersApi(self.client)
|
|
151
|
+
self.markup_rules = MarkupRulesApi(self.client)
|
|
146
152
|
|
|
147
153
|
async def close(self):
|
|
148
154
|
await self.client.close()
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from persona_models.common import Paginated
|
|
6
|
+
from persona_models.markup import MarkupRule
|
|
7
|
+
|
|
8
|
+
from persona_sdk._serde import dump_payload
|
|
9
|
+
from persona_sdk.client import PersonaClient
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MarkupRulesApi:
|
|
13
|
+
"""Markup rules (super admin). Global or per-project."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, client: PersonaClient):
|
|
16
|
+
self._client = client
|
|
17
|
+
|
|
18
|
+
async def list(
|
|
19
|
+
self,
|
|
20
|
+
project_id: str | None = None,
|
|
21
|
+
keyword: str | None = None,
|
|
22
|
+
page: int = 1,
|
|
23
|
+
size: int = 50,
|
|
24
|
+
) -> Paginated[MarkupRule]:
|
|
25
|
+
params: dict[str, Any] = {"page": page, "size": size}
|
|
26
|
+
if project_id:
|
|
27
|
+
params["projectId"] = project_id
|
|
28
|
+
if keyword:
|
|
29
|
+
params["keyword"] = keyword
|
|
30
|
+
data = await self._client.get("/markup-rules", params=params)
|
|
31
|
+
return Paginated[MarkupRule].model_validate(data)
|
|
32
|
+
|
|
33
|
+
async def get(self, markup_rule_id: str) -> MarkupRule:
|
|
34
|
+
data = await self._client.get(f"/markup-rules/{markup_rule_id}")
|
|
35
|
+
return MarkupRule.model_validate(data)
|
|
36
|
+
|
|
37
|
+
async def create(self, markup_rule: MarkupRule | dict[str, Any]) -> MarkupRule:
|
|
38
|
+
data = await self._client.post("/markup-rules", json=dump_payload(markup_rule))
|
|
39
|
+
return MarkupRule.model_validate(data)
|
|
40
|
+
|
|
41
|
+
async def update(
|
|
42
|
+
self, markup_rule_id: str, markup_rule: MarkupRule | dict[str, Any]
|
|
43
|
+
) -> MarkupRule:
|
|
44
|
+
data = await self._client.put(
|
|
45
|
+
f"/markup-rules/{markup_rule_id}", json=dump_payload(markup_rule)
|
|
46
|
+
)
|
|
47
|
+
return MarkupRule.model_validate(data)
|
|
48
|
+
|
|
49
|
+
async def delete(self, markup_rule_id: str) -> None:
|
|
50
|
+
await self._client.delete(f"/markup-rules/{markup_rule_id}")
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from persona_models.common import Paginated
|
|
6
|
+
from persona_models.providers import Provider, ProviderModel
|
|
7
|
+
|
|
8
|
+
from persona_sdk._serde import dump_payload
|
|
9
|
+
from persona_sdk.client import PersonaClient
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ProvidersApi:
|
|
13
|
+
"""Managed LLM providers (super admin). Global or per-project; api keys are
|
|
14
|
+
stored encrypted and returned masked."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, client: PersonaClient):
|
|
17
|
+
self._client = client
|
|
18
|
+
|
|
19
|
+
async def list(
|
|
20
|
+
self,
|
|
21
|
+
project_id: str | None = None,
|
|
22
|
+
keyword: str | None = None,
|
|
23
|
+
page: int = 1,
|
|
24
|
+
size: int = 100,
|
|
25
|
+
) -> Paginated[Provider]:
|
|
26
|
+
params: dict[str, Any] = {"page": page, "size": size}
|
|
27
|
+
if project_id:
|
|
28
|
+
params["projectId"] = project_id
|
|
29
|
+
if keyword:
|
|
30
|
+
params["keyword"] = keyword
|
|
31
|
+
data = await self._client.get("/providers", params=params)
|
|
32
|
+
return Paginated[Provider].model_validate(data)
|
|
33
|
+
|
|
34
|
+
async def get(self, provider_id: str) -> Provider:
|
|
35
|
+
data = await self._client.get(f"/providers/{provider_id}")
|
|
36
|
+
return Provider.model_validate(data)
|
|
37
|
+
|
|
38
|
+
async def create(self, provider: Provider | dict[str, Any]) -> Provider:
|
|
39
|
+
data = await self._client.post("/providers", json=dump_payload(provider))
|
|
40
|
+
return Provider.model_validate(data)
|
|
41
|
+
|
|
42
|
+
async def update(
|
|
43
|
+
self, provider_id: str, provider: Provider | dict[str, Any]
|
|
44
|
+
) -> Provider:
|
|
45
|
+
data = await self._client.put(
|
|
46
|
+
f"/providers/{provider_id}", json=dump_payload(provider)
|
|
47
|
+
)
|
|
48
|
+
return Provider.model_validate(data)
|
|
49
|
+
|
|
50
|
+
async def delete(self, provider_id: str) -> None:
|
|
51
|
+
await self._client.delete(f"/providers/{provider_id}")
|
|
52
|
+
|
|
53
|
+
async def available(self) -> list[str]:
|
|
54
|
+
"""Provider names litellm supports (for the 'add provider' picker). Admin."""
|
|
55
|
+
return await self._client.get("/providers/available")
|
|
56
|
+
|
|
57
|
+
async def names(self) -> list[str]:
|
|
58
|
+
"""Names of providers configured for the caller (global + their project),
|
|
59
|
+
no credentials. Authenticated (not admin) — for the model selector."""
|
|
60
|
+
return await self._client.get("/provider-names")
|
|
61
|
+
|
|
62
|
+
async def models(self, provider: str) -> list[ProviderModel]:
|
|
63
|
+
"""Model suggestions (chat, with capabilities) for a provider, from litellm."""
|
|
64
|
+
data = await self._client.get("/provider-models", params={"provider": provider})
|
|
65
|
+
return [ProviderModel.model_validate(m) for m in data]
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from persona_models.common import Paginated
|
|
6
|
-
from persona_models.known_models import KnownModel
|
|
7
|
-
|
|
8
|
-
from persona_sdk._serde import dump_payload
|
|
9
|
-
from persona_sdk.client import PersonaClient
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class KnownModelsApi:
|
|
13
|
-
def __init__(self, client: PersonaClient):
|
|
14
|
-
self._client = client
|
|
15
|
-
|
|
16
|
-
async def list(
|
|
17
|
-
self, keyword: str | None = None, page: int = 1, size: int = 100
|
|
18
|
-
) -> Paginated[KnownModel]:
|
|
19
|
-
params: dict[str, Any] = {"page": page, "size": size}
|
|
20
|
-
if keyword:
|
|
21
|
-
params["keyword"] = keyword
|
|
22
|
-
data = await self._client.get("/known-models", params=params)
|
|
23
|
-
return Paginated[KnownModel].model_validate(data)
|
|
24
|
-
|
|
25
|
-
async def get(self, known_model_id: str) -> KnownModel:
|
|
26
|
-
data = await self._client.get(f"/known-models/{known_model_id}")
|
|
27
|
-
return KnownModel.model_validate(data)
|
|
28
|
-
|
|
29
|
-
async def create(
|
|
30
|
-
self, known_model: KnownModel | dict[str, Any]
|
|
31
|
-
) -> KnownModel:
|
|
32
|
-
data = await self._client.post(
|
|
33
|
-
"/known-models", json=dump_payload(known_model)
|
|
34
|
-
)
|
|
35
|
-
return KnownModel.model_validate(data)
|
|
36
|
-
|
|
37
|
-
async def update(
|
|
38
|
-
self,
|
|
39
|
-
known_model_id: str,
|
|
40
|
-
known_model: KnownModel | dict[str, Any],
|
|
41
|
-
) -> KnownModel:
|
|
42
|
-
data = await self._client.put(
|
|
43
|
-
f"/known-models/{known_model_id}", json=dump_payload(known_model)
|
|
44
|
-
)
|
|
45
|
-
return KnownModel.model_validate(data)
|
|
46
|
-
|
|
47
|
-
async def delete(self, known_model_id: str) -> KnownModel:
|
|
48
|
-
data = await self._client.delete(f"/known-models/{known_model_id}")
|
|
49
|
-
return KnownModel.model_validate(data)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/auth/bearer_token_auth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{persona_sdk_python-0.2.19 → persona_sdk_python-0.2.21}/persona_sdk/runners/resource_retriever.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|