persona-sdk-python 0.2.3__tar.gz → 0.2.5__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.
Files changed (30) hide show
  1. persona_sdk_python-0.2.5/PKG-INFO +242 -0
  2. persona_sdk_python-0.2.5/README.md +218 -0
  3. persona_sdk_python-0.2.5/pyproject.toml +38 -0
  4. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/uv.lock +1 -1
  5. persona_sdk_python-0.2.3/PKG-INFO +0 -7
  6. persona_sdk_python-0.2.3/pyproject.toml +0 -16
  7. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/.gitignore +0 -0
  8. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/DEPLOY.md +0 -0
  9. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/bitbucket-pipelines.yml +0 -0
  10. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/__init__.py +0 -0
  11. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/__init__.py +0 -0
  12. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/agents.py +0 -0
  13. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/credentials.py +0 -0
  14. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/features.py +0 -0
  15. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/knowledge_bases.py +0 -0
  16. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/missions.py +0 -0
  17. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/projects.py +0 -0
  18. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/service_prices.py +0 -0
  19. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/sessions.py +0 -0
  20. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/triggers.py +0 -0
  21. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/api/workflows.py +0 -0
  22. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/auth/__init__.py +0 -0
  23. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/auth/api_key_auth.py +0 -0
  24. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/auth/base.py +0 -0
  25. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/auth/bearer_token_auth.py +0 -0
  26. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/client.py +0 -0
  27. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/runners/__init__.py +0 -0
  28. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/runners/agent_runner.py +0 -0
  29. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/runners/resource_retriever.py +0 -0
  30. {persona_sdk_python-0.2.3 → persona_sdk_python-0.2.5}/persona_sdk/runners/tool_invoker.py +0 -0
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: persona-sdk-python
3
+ Version: 0.2.5
4
+ Summary: Async Python SDK for the Persona AI platform
5
+ Project-URL: Homepage, https://persona.applica.guru
6
+ Project-URL: Repository, https://bitbucket.org/applicaguru/persona-sdk-python
7
+ Author: Applica Software Guru
8
+ License: Proprietary
9
+ Keywords: agents,ai,async,persona,sdk
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Framework :: AsyncIO
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: httpx>=0.27.0
22
+ Requires-Dist: persona-models>=0.1.0
23
+ Description-Content-Type: text/markdown
24
+
25
+ # persona-sdk-python
26
+
27
+ Async Python SDK for the [Persona AI](https://persona.applica.guru) platform.
28
+
29
+ ## Installation
30
+
31
+ ```bash
32
+ pip install persona-sdk-python
33
+ ```
34
+
35
+ Or with [uv](https://docs.astral.sh/uv/):
36
+
37
+ ```bash
38
+ uv add persona-sdk-python
39
+ ```
40
+
41
+ Requirements: Python 3.10+
42
+
43
+ ## Quick start
44
+
45
+ ```python
46
+ import asyncio
47
+ from persona_sdk import PersonaSdk
48
+
49
+
50
+ async def main():
51
+ sdk = PersonaSdk(
52
+ base_url="https://persona.applica.guru/api",
53
+ auth="prs_your_project_api_key",
54
+ )
55
+
56
+ # List agents in your project
57
+ agents = await sdk.agents.list()
58
+ print(agents)
59
+
60
+ await sdk.close()
61
+
62
+
63
+ asyncio.run(main())
64
+ ```
65
+
66
+ ## Authentication
67
+
68
+ The SDK supports two authentication methods via the `auth` parameter.
69
+
70
+ ### API key (default)
71
+
72
+ A plain string is wrapped automatically in `ApiKeyAuthenticationProvider` and
73
+ sent as the `x-persona-apikey` header. Accepts:
74
+
75
+ - Master key (full admin access)
76
+ - Project API key (`prs_...`)
77
+ - Agent API key (`prs_ag_...`)
78
+
79
+ ```python
80
+ from persona_sdk import PersonaSdk
81
+
82
+ sdk = PersonaSdk(
83
+ base_url="https://persona.applica.guru/api",
84
+ auth="prs_your_project_api_key",
85
+ )
86
+ ```
87
+
88
+ ### IAM Bearer token
89
+
90
+ For applications that authenticate users via IAM, pass a
91
+ `BearerTokenAuthenticationProvider` with a valid JWT:
92
+
93
+ ```python
94
+ from persona_sdk import PersonaSdk, BearerTokenAuthenticationProvider
95
+
96
+ sdk = PersonaSdk(
97
+ base_url="https://persona.applica.guru/api",
98
+ auth=BearerTokenAuthenticationProvider(iam_jwt_token),
99
+ )
100
+ ```
101
+
102
+ The token is sent as the `Authorization: Bearer <token>` header. The server
103
+ validates it via the IAM service and resolves the user's project automatically.
104
+
105
+ ### Custom provider
106
+
107
+ Implement your own provider by subclassing `AuthenticationProvider`:
108
+
109
+ ```python
110
+ from persona_sdk import AuthenticationProvider
111
+
112
+ class MyProvider(AuthenticationProvider):
113
+ def headers(self) -> dict[str, str]:
114
+ return {"x-custom-header": "value"}
115
+
116
+ def credentials(self) -> str:
117
+ return "my-credentials"
118
+ ```
119
+
120
+ ## Available APIs
121
+
122
+ The `PersonaSdk` instance exposes one client per resource:
123
+
124
+ | Attribute | Description |
125
+ |-----------|-------------|
126
+ | `sdk.agents` | Agent management (CRUD, voices) |
127
+ | `sdk.projects` | Project management and subscriptions |
128
+ | `sdk.sessions` | Sessions, messages, usage |
129
+ | `sdk.knowledge_bases` | Knowledge bases, documents, chunk search |
130
+ | `sdk.workflows` | Workflows, executions, queues |
131
+ | `sdk.triggers` | Triggers and trigger executions |
132
+ | `sdk.missions` | Missions (generate, execute, stop, continue) |
133
+ | `sdk.features` | Feature templates and MCP tools |
134
+ | `sdk.credentials` | OAuth credentials and authorization |
135
+ | `sdk.service_prices` | Service pricing |
136
+
137
+ Each API method is fully async. Always close the SDK when done to release the
138
+ underlying HTTP connection pool:
139
+
140
+ ```python
141
+ sdk = PersonaSdk(
142
+ base_url="https://persona.applica.guru/api",
143
+ auth="prs_your_api_key",
144
+ )
145
+ try:
146
+ agents = await sdk.agents.list()
147
+ finally:
148
+ await sdk.close()
149
+ ```
150
+
151
+ ## CRUD example
152
+
153
+ ```python
154
+ # Create an agent
155
+ agent = await sdk.agents.create({
156
+ "name": "my-agent",
157
+ "model": {"modelName": "gpt-4o"},
158
+ })
159
+
160
+ # Read
161
+ fetched = await sdk.agents.get(agent["id"])
162
+
163
+ # Update
164
+ fetched["name"] = "renamed-agent"
165
+ await sdk.agents.update(agent["id"], fetched)
166
+
167
+ # Delete
168
+ await sdk.agents.delete(agent["id"])
169
+ ```
170
+
171
+ ## Pagination
172
+
173
+ List endpoints accept `keyword`, `page`, and `size`:
174
+
175
+ ```python
176
+ result = await sdk.agents.list(keyword="bot", page=1, size=20)
177
+ # {
178
+ # "items": [...],
179
+ # "total": 42,
180
+ # "page": 1,
181
+ # "size": 20
182
+ # }
183
+ ```
184
+
185
+ ## Workflows
186
+
187
+ If your workflows service runs on a different host, pass `workflows_url`:
188
+
189
+ ```python
190
+ sdk = PersonaSdk(
191
+ base_url="https://persona.applica.guru/api",
192
+ auth="prs_...",
193
+ workflows_url="https://persona.applica.guru/workflows",
194
+ )
195
+
196
+ # Execute a workflow
197
+ result = await sdk.workflows.execute(
198
+ workflow_id="wf-123",
199
+ data={"input": "value"},
200
+ )
201
+ ```
202
+
203
+ ## Runners
204
+
205
+ For higher-level abstractions, the SDK provides runners:
206
+
207
+ ```python
208
+ from persona_sdk import PersonaClient
209
+ from persona_sdk.runners import AgentRunner, invoke_tool, retrieve_resource
210
+
211
+ client = PersonaClient(
212
+ base_url="https://persona.applica.guru/api",
213
+ auth="prs_...",
214
+ )
215
+
216
+ # Run an agent in an existing session
217
+ runner = AgentRunner(client=client, agent_id="agent-1", session_code="sess-1")
218
+ response = await runner.run("Hello, agent!")
219
+
220
+ # Invoke an MCP tool directly
221
+ result = await invoke_tool(
222
+ client=client,
223
+ mcp_server_name="my-mcp",
224
+ transport=...,
225
+ tool_name="search",
226
+ args={"query": "hello"},
227
+ )
228
+ ```
229
+
230
+ ## Proxy support
231
+
232
+ ```python
233
+ sdk = PersonaSdk(
234
+ base_url="https://persona.applica.guru/api",
235
+ auth="prs_...",
236
+ proxy="http://proxy.local:8080",
237
+ )
238
+ ```
239
+
240
+ ## License
241
+
242
+ Proprietary — © Applica Software Guru
@@ -0,0 +1,218 @@
1
+ # persona-sdk-python
2
+
3
+ Async Python SDK for the [Persona AI](https://persona.applica.guru) platform.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install persona-sdk-python
9
+ ```
10
+
11
+ Or with [uv](https://docs.astral.sh/uv/):
12
+
13
+ ```bash
14
+ uv add persona-sdk-python
15
+ ```
16
+
17
+ Requirements: Python 3.10+
18
+
19
+ ## Quick start
20
+
21
+ ```python
22
+ import asyncio
23
+ from persona_sdk import PersonaSdk
24
+
25
+
26
+ async def main():
27
+ sdk = PersonaSdk(
28
+ base_url="https://persona.applica.guru/api",
29
+ auth="prs_your_project_api_key",
30
+ )
31
+
32
+ # List agents in your project
33
+ agents = await sdk.agents.list()
34
+ print(agents)
35
+
36
+ await sdk.close()
37
+
38
+
39
+ asyncio.run(main())
40
+ ```
41
+
42
+ ## Authentication
43
+
44
+ The SDK supports two authentication methods via the `auth` parameter.
45
+
46
+ ### API key (default)
47
+
48
+ A plain string is wrapped automatically in `ApiKeyAuthenticationProvider` and
49
+ sent as the `x-persona-apikey` header. Accepts:
50
+
51
+ - Master key (full admin access)
52
+ - Project API key (`prs_...`)
53
+ - Agent API key (`prs_ag_...`)
54
+
55
+ ```python
56
+ from persona_sdk import PersonaSdk
57
+
58
+ sdk = PersonaSdk(
59
+ base_url="https://persona.applica.guru/api",
60
+ auth="prs_your_project_api_key",
61
+ )
62
+ ```
63
+
64
+ ### IAM Bearer token
65
+
66
+ For applications that authenticate users via IAM, pass a
67
+ `BearerTokenAuthenticationProvider` with a valid JWT:
68
+
69
+ ```python
70
+ from persona_sdk import PersonaSdk, BearerTokenAuthenticationProvider
71
+
72
+ sdk = PersonaSdk(
73
+ base_url="https://persona.applica.guru/api",
74
+ auth=BearerTokenAuthenticationProvider(iam_jwt_token),
75
+ )
76
+ ```
77
+
78
+ The token is sent as the `Authorization: Bearer <token>` header. The server
79
+ validates it via the IAM service and resolves the user's project automatically.
80
+
81
+ ### Custom provider
82
+
83
+ Implement your own provider by subclassing `AuthenticationProvider`:
84
+
85
+ ```python
86
+ from persona_sdk import AuthenticationProvider
87
+
88
+ class MyProvider(AuthenticationProvider):
89
+ def headers(self) -> dict[str, str]:
90
+ return {"x-custom-header": "value"}
91
+
92
+ def credentials(self) -> str:
93
+ return "my-credentials"
94
+ ```
95
+
96
+ ## Available APIs
97
+
98
+ The `PersonaSdk` instance exposes one client per resource:
99
+
100
+ | Attribute | Description |
101
+ |-----------|-------------|
102
+ | `sdk.agents` | Agent management (CRUD, voices) |
103
+ | `sdk.projects` | Project management and subscriptions |
104
+ | `sdk.sessions` | Sessions, messages, usage |
105
+ | `sdk.knowledge_bases` | Knowledge bases, documents, chunk search |
106
+ | `sdk.workflows` | Workflows, executions, queues |
107
+ | `sdk.triggers` | Triggers and trigger executions |
108
+ | `sdk.missions` | Missions (generate, execute, stop, continue) |
109
+ | `sdk.features` | Feature templates and MCP tools |
110
+ | `sdk.credentials` | OAuth credentials and authorization |
111
+ | `sdk.service_prices` | Service pricing |
112
+
113
+ Each API method is fully async. Always close the SDK when done to release the
114
+ underlying HTTP connection pool:
115
+
116
+ ```python
117
+ sdk = PersonaSdk(
118
+ base_url="https://persona.applica.guru/api",
119
+ auth="prs_your_api_key",
120
+ )
121
+ try:
122
+ agents = await sdk.agents.list()
123
+ finally:
124
+ await sdk.close()
125
+ ```
126
+
127
+ ## CRUD example
128
+
129
+ ```python
130
+ # Create an agent
131
+ agent = await sdk.agents.create({
132
+ "name": "my-agent",
133
+ "model": {"modelName": "gpt-4o"},
134
+ })
135
+
136
+ # Read
137
+ fetched = await sdk.agents.get(agent["id"])
138
+
139
+ # Update
140
+ fetched["name"] = "renamed-agent"
141
+ await sdk.agents.update(agent["id"], fetched)
142
+
143
+ # Delete
144
+ await sdk.agents.delete(agent["id"])
145
+ ```
146
+
147
+ ## Pagination
148
+
149
+ List endpoints accept `keyword`, `page`, and `size`:
150
+
151
+ ```python
152
+ result = await sdk.agents.list(keyword="bot", page=1, size=20)
153
+ # {
154
+ # "items": [...],
155
+ # "total": 42,
156
+ # "page": 1,
157
+ # "size": 20
158
+ # }
159
+ ```
160
+
161
+ ## Workflows
162
+
163
+ If your workflows service runs on a different host, pass `workflows_url`:
164
+
165
+ ```python
166
+ sdk = PersonaSdk(
167
+ base_url="https://persona.applica.guru/api",
168
+ auth="prs_...",
169
+ workflows_url="https://persona.applica.guru/workflows",
170
+ )
171
+
172
+ # Execute a workflow
173
+ result = await sdk.workflows.execute(
174
+ workflow_id="wf-123",
175
+ data={"input": "value"},
176
+ )
177
+ ```
178
+
179
+ ## Runners
180
+
181
+ For higher-level abstractions, the SDK provides runners:
182
+
183
+ ```python
184
+ from persona_sdk import PersonaClient
185
+ from persona_sdk.runners import AgentRunner, invoke_tool, retrieve_resource
186
+
187
+ client = PersonaClient(
188
+ base_url="https://persona.applica.guru/api",
189
+ auth="prs_...",
190
+ )
191
+
192
+ # Run an agent in an existing session
193
+ runner = AgentRunner(client=client, agent_id="agent-1", session_code="sess-1")
194
+ response = await runner.run("Hello, agent!")
195
+
196
+ # Invoke an MCP tool directly
197
+ result = await invoke_tool(
198
+ client=client,
199
+ mcp_server_name="my-mcp",
200
+ transport=...,
201
+ tool_name="search",
202
+ args={"query": "hello"},
203
+ )
204
+ ```
205
+
206
+ ## Proxy support
207
+
208
+ ```python
209
+ sdk = PersonaSdk(
210
+ base_url="https://persona.applica.guru/api",
211
+ auth="prs_...",
212
+ proxy="http://proxy.local:8080",
213
+ )
214
+ ```
215
+
216
+ ## License
217
+
218
+ Proprietary — © Applica Software Guru
@@ -0,0 +1,38 @@
1
+ [project]
2
+ name = "persona-sdk-python"
3
+ version = "0.2.5"
4
+ description = "Async Python SDK for the Persona AI platform"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ license = { text = "Proprietary" }
8
+ authors = [
9
+ { name = "Applica Software Guru" },
10
+ ]
11
+ keywords = ["persona", "ai", "agents", "sdk", "async"]
12
+ classifiers = [
13
+ "Development Status :: 4 - Beta",
14
+ "Intended Audience :: Developers",
15
+ "Operating System :: OS Independent",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Programming Language :: Python :: 3.13",
21
+ "Topic :: Software Development :: Libraries :: Python Modules",
22
+ "Framework :: AsyncIO",
23
+ ]
24
+ dependencies = [
25
+ "persona-models>=0.1.0",
26
+ "httpx>=0.27.0",
27
+ ]
28
+
29
+ [project.urls]
30
+ Homepage = "https://persona.applica.guru"
31
+ Repository = "https://bitbucket.org/applicaguru/persona-sdk-python"
32
+
33
+ [build-system]
34
+ requires = ["hatchling"]
35
+ build-backend = "hatchling.build"
36
+
37
+ [tool.hatch.build.targets.wheel]
38
+ packages = ["persona_sdk"]
@@ -106,7 +106,7 @@ wheels = [
106
106
 
107
107
  [[package]]
108
108
  name = "persona-sdk-python"
109
- version = "0.1.2"
109
+ version = "0.1.0"
110
110
  source = { editable = "." }
111
111
  dependencies = [
112
112
  { name = "httpx" },
@@ -1,7 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: persona-sdk-python
3
- Version: 0.2.3
4
- Summary: Python SDK client for Persona AI platform
5
- Requires-Python: >=3.10
6
- Requires-Dist: httpx>=0.27.0
7
- Requires-Dist: persona-models>=0.1.0
@@ -1,16 +0,0 @@
1
- [project]
2
- name = "persona-sdk-python"
3
- version = "0.2.3"
4
- description = "Python SDK client for Persona AI platform"
5
- requires-python = ">=3.10"
6
- dependencies = [
7
- "persona-models>=0.1.0",
8
- "httpx>=0.27.0",
9
- ]
10
-
11
- [build-system]
12
- requires = ["hatchling"]
13
- build-backend = "hatchling.build"
14
-
15
- [tool.hatch.build.targets.wheel]
16
- packages = ["persona_sdk"]