meshagent-tools 0.16.0__tar.gz → 0.19.1__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 (29) hide show
  1. meshagent_tools-0.19.1/CHANGELOG.md +108 -0
  2. {meshagent_tools-0.16.0/meshagent_tools.egg-info → meshagent_tools-0.19.1}/PKG-INFO +2 -2
  3. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/database.py +97 -25
  4. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/storage.py +1 -1
  5. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/toolkit.py +1 -1
  6. meshagent_tools-0.19.1/meshagent/tools/version.py +1 -0
  7. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1/meshagent_tools.egg-info}/PKG-INFO +2 -2
  8. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent_tools.egg-info/requires.txt +1 -1
  9. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/pyproject.toml +1 -1
  10. meshagent_tools-0.16.0/CHANGELOG.md +0 -66
  11. meshagent_tools-0.16.0/meshagent/tools/version.py +0 -1
  12. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/LICENSE +0 -0
  13. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/MANIFEST.in +0 -0
  14. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/README.md +0 -0
  15. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/__init__.py +0 -0
  16. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/blob.py +0 -0
  17. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/config.py +0 -0
  18. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/discovery.py +0 -0
  19. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/document_tools.py +0 -0
  20. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/hosting.py +0 -0
  21. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/multi_tool.py +0 -0
  22. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/pydantic.py +0 -0
  23. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/strict_schema.py +0 -0
  24. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/tool.py +0 -0
  25. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent/tools/web_toolkit.py +0 -0
  26. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent_tools.egg-info/SOURCES.txt +0 -0
  27. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent_tools.egg-info/dependency_links.txt +0 -0
  28. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/meshagent_tools.egg-info/top_level.txt +0 -0
  29. {meshagent_tools-0.16.0 → meshagent_tools-0.19.1}/setup.cfg +0 -0
@@ -0,0 +1,108 @@
1
+ ## [0.19.1]
2
+ - Add optional metadata to agent chat contexts and propagate it through message-stream LLM delegation, including recording thread participant lists
3
+ - Add an option for the mailbot CLI to delegate LLM interactions to a remote participant instead of using the local LLM adapter
4
+
5
+ ## [0.19.0]
6
+ - Add a reusable transcript logger/transcriber agent that writes conversation segments to transcript documents from live conversation events or user-turn completion
7
+ - Add optional voicebot transcription via a provided transcript path, wrapping the voice agent to persist user/assistant speech to a transcript document
8
+ - Refactor meeting transcription to use the shared transcript logger with per-participant sessions and improved session lifecycle cleanup
9
+ - Breaking change: starting a new email thread no longer accepts attachments; attachments are now handled by a dedicated “new thread with attachments” tool that downloads files from room storage before sending
10
+ - Simplify CLI agent room-rules loading and ensure worker message toolkits include inherited toolkits
11
+
12
+ ## [0.18.2]
13
+ - Stability
14
+
15
+ ## [0.18.1]
16
+ - Updated OpenAI Python SDK dependency to `openai~=2.14.0` (from `~2.6.0`).
17
+ - Breaking: OpenAI Responses adapter no longer sends tool definitions with requests, disabling tool/function calling via the Responses API.
18
+ - CLI deploy commands now report “Deployed service” on successful deploys.
19
+ - Shell toolkit/tool builders now pass the configured shell image via the `image` field.
20
+
21
+ ## [0.18.0]
22
+ - Added local TCP port-forwarding helper that bridges to the remote tunnel WebSocket
23
+ - Added a CLI `port forward` command to expose container ports locally
24
+ - Added `writable_root_fs` support when running containers
25
+ - Added `host_port` support for service port specs
26
+ - Added `ApiScope.tunnels` support in participant tokens (including `agent_default(tunnels=...)`)
27
+ - Added container-based Playwright “computer use” and enabled computer-use toolkits for chatbot/worker/mailbot flows
28
+ - Removed `scrapybara` from the computers package dependencies
29
+ - OpenAI proxy client can now optionally log requests/responses with redacted authorization headers
30
+
31
+ ## [0.17.1]
32
+ - Prevented worker toolkit lifecycle collisions when running alongside other toolkits by isolating the worker’s remote toolkit handling.
33
+ - Improved the error message when attempting to start a single-room agent more than once.
34
+
35
+ ## [0.17.0]
36
+ - Added scheduled tasks support to the Python accounts client (create/update/list/delete scheduled tasks) with typed models
37
+ - Added mailbox CRUD helpers to the Python accounts client and improved error handling with typed HTTP exceptions (404/403/409/400/5xx)
38
+ - Added `RequiredTable` requirement type plus helper to create required tables, indexes, and optimize them automatically
39
+ - Added database namespace support for database toolkit operations (inspect/search/insert/update/delete in a namespace)
40
+ - Enhanced worker and mail agents (per-message tool selection, optional remote toolkit exposure for queue task submission, reply-all/cc support)
41
+ - Updated Python dependency: `supabase-auth` from `~2.12.3` to `~2.22.3`
42
+
43
+ ## [0.16.0]
44
+ - Add optional `namespace` support across database client operations (list/inspect/create/drop/index/etc.) to target namespaced tables
45
+ - Update dependencies `livekit-api` to `~1.1` (from `>=1.0`) and `livekit-agents`/`livekit-plugins-openai`/`livekit-plugins-silero`/`livekit-plugins-turn-detector` to `~1.3` (from `~1.2`)
46
+
47
+ ## [0.15.0]
48
+ - Added new UI schema widgets for `tabs`/`tab` (including initial tab selection and active background styling) plus a `visible` boolean widget property for conditional rendering.
49
+ - Updated Python LiveKit integration dependencies to include `livekit==1.0.20`.
50
+
51
+ ## [0.14.0]
52
+ - Breaking change: toolkit extension hooks were simplified to a synchronous `get_toolkit_builders()` API and tool selection now uses per-toolkit configuration objects (not just tool names)
53
+ - `LLMTaskRunner` now supports per-client and per-room rules, plus dynamically injected required toolkits at call time
54
+ - `TaskRunner.ask` now supports optional binary attachments; `LLMTaskRunner` can unpack tar attachments and pass images/files into the LLM conversation context
55
+ - `AgentsClient.ask` now returns `TextResponse` when the agent responds with plain text (instead of always treating answers as JSON)
56
+ - Added a CLI `task-runner` command to run/join LLM task runners with configurable rules, schemas, toolkits, and optional remote LLM delegation
57
+
58
+ ## [0.13.0]
59
+ - Added `initial_json` and explicit schema support when opening MeshDocuments, enabling schema-first document initialization
60
+ - Added binary attachment support when invoking agent tools so tool calls can include raw payload data
61
+ - Breaking change: toolkit construction is now async and receives the active room client, enabling toolkits that introspect room state during build
62
+ - Added database schema inspection and JSON Schema mappings for data types to support tool input validation and generation
63
+ - Introduced database toolkits (list/inspect/search/insert/update/delete) and integrated optional per-table enablement into the chatbot/mailbot/helpers CLI flows
64
+
65
+ ## [0.12.0]
66
+ - Reduce worker-queue logging verbosity to avoid logging full message payloads
67
+
68
+ ## [0.11.0]
69
+ - Stability
70
+
71
+ ## [0.10.1]
72
+ - Stability
73
+
74
+ ## [0.10.0]
75
+ - Stability
76
+
77
+ ## [0.9.3]
78
+ - Stability
79
+
80
+ ## [0.9.2]
81
+ - Stability
82
+
83
+ ## [0.9.1]
84
+ - Stability
85
+
86
+ ## [0.9.0]
87
+ - Stability
88
+
89
+ ## [0.8.4]
90
+ - Stability
91
+
92
+ ## [0.8.3]
93
+ - Stability
94
+
95
+ ## [0.8.2]
96
+ - Stability
97
+
98
+ ## [0.8.1]
99
+ - Stability
100
+
101
+ ## [0.8.0]
102
+ - Stability
103
+
104
+ ## [0.7.2]
105
+ - Stability
106
+
107
+ ## [0.7.1]
108
+ - Stability
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshagent-tools
3
- Version: 0.16.0
3
+ Version: 0.19.1
4
4
  Summary: Tools for Meshagent
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Documentation, https://docs.meshagent.com
@@ -12,7 +12,7 @@ License-File: LICENSE
12
12
  Requires-Dist: pyjwt~=2.10
13
13
  Requires-Dist: pytest~=8.4
14
14
  Requires-Dist: pytest-asyncio~=0.26
15
- Requires-Dist: meshagent-api~=0.16.0
15
+ Requires-Dist: meshagent-api~=0.19.1
16
16
  Requires-Dist: aiohttp~=3.10
17
17
  Requires-Dist: opentelemetry-distro~=0.54b1
18
18
  Dynamic: license-file
@@ -2,7 +2,7 @@ from .config import ToolkitConfig
2
2
  from .tool import Tool
3
3
  from .toolkit import ToolContext, ToolkitBuilder
4
4
  from .hosting import RemoteToolkit, Toolkit
5
- from typing import Literal
5
+ from typing import Literal, Optional
6
6
  from meshagent.api.room_server_client import DataType, RoomClient
7
7
 
8
8
 
@@ -27,8 +27,15 @@ class ListTablesTool(Tool):
27
27
 
28
28
 
29
29
  class InsertRowsTool(Tool):
30
- def __init__(self, *, table: str, schema: dict[str, DataType]):
30
+ def __init__(
31
+ self,
32
+ *,
33
+ table: str,
34
+ schema: dict[str, DataType],
35
+ namespace: Optional[list[str]] = None,
36
+ ):
31
37
  self.table = table
38
+ self.namespace = namespace
32
39
 
33
40
  input_schema = {
34
41
  "type": "object",
@@ -54,12 +61,21 @@ class InsertRowsTool(Tool):
54
61
  )
55
62
 
56
63
  async def execute(self, context: ToolContext, *, rows):
57
- await context.room.database.insert(table=self.table, records=rows)
64
+ await context.room.database.insert(
65
+ table=self.table, records=rows, namespace=self.namespace
66
+ )
58
67
 
59
68
 
60
69
  class DeleteRowsTool(Tool):
61
- def __init__(self, *, table: str, schema: dict[str, DataType]):
70
+ def __init__(
71
+ self,
72
+ *,
73
+ table: str,
74
+ schema: dict[str, DataType],
75
+ namespace: Optional[list[str]] = None,
76
+ ):
62
77
  self.table = table
78
+ self.namespace = namespace
63
79
 
64
80
  input_schema = {
65
81
  "type": "object",
@@ -89,14 +105,23 @@ class DeleteRowsTool(Tool):
89
105
  search[k] = v
90
106
 
91
107
  await context.room.database.delete(
92
- table=self.table, where=search if len(search) > 0 else None
108
+ table=self.table,
109
+ where=search if len(search) > 0 else None,
110
+ namespace=self.namespace,
93
111
  )
94
112
  return {"ok": True}
95
113
 
96
114
 
97
115
  class UpdateTool(Tool):
98
- def __init__(self, *, table: str, schema: dict[str, DataType]):
116
+ def __init__(
117
+ self,
118
+ *,
119
+ table: str,
120
+ schema: dict[str, DataType],
121
+ namespace: Optional[list[str]] = None,
122
+ ):
99
123
  self.table = table
124
+ self.namespace = namespace
100
125
 
101
126
  columns = ""
102
127
 
@@ -138,14 +163,23 @@ class UpdateTool(Tool):
138
163
  )
139
164
 
140
165
  async def execute(self, context: ToolContext, *, where: str, values: dict):
141
- await context.room.database.update(table=self.table, where=where, values=values)
166
+ await context.room.database.update(
167
+ table=self.table, where=where, values=values, namespace=self.namespace
168
+ )
142
169
 
143
170
  return {"ok": True}
144
171
 
145
172
 
146
173
  class SearchTool(Tool):
147
- def __init__(self, *, table: str, schema: dict[str, DataType]):
174
+ def __init__(
175
+ self,
176
+ *,
177
+ table: str,
178
+ schema: dict[str, DataType],
179
+ namespace: Optional[list[str]] = None,
180
+ ):
148
181
  self.table = table
182
+ self.namespace = namespace
149
183
 
150
184
  input_schema = {
151
185
  "type": "object",
@@ -176,14 +210,23 @@ class SearchTool(Tool):
176
210
 
177
211
  return {
178
212
  "rows": await context.room.database.search(
179
- table=self.table, where=search if len(search) > 0 else None
213
+ table=self.table,
214
+ where=search if len(search) > 0 else None,
215
+ namespace=self.namespace,
180
216
  )
181
217
  }
182
218
 
183
219
 
184
220
  class AdvancedSearchTool(Tool):
185
- def __init__(self, *, table: str, schema: dict[str, DataType]):
221
+ def __init__(
222
+ self,
223
+ *,
224
+ table: str,
225
+ schema: dict[str, DataType],
226
+ namespace: Optional[list[str]] = None,
227
+ ):
186
228
  self.table = table
229
+ self.namespace = namespace
187
230
 
188
231
  columns = ""
189
232
 
@@ -211,14 +254,22 @@ class AdvancedSearchTool(Tool):
211
254
 
212
255
  async def execute(self, context: ToolContext, *, where: str):
213
256
  return {
214
- "rows": await context.room.database.search(table=self.table, where=where)
257
+ "rows": await context.room.database.search(
258
+ table=self.table, where=where, namespace=self.namespace
259
+ )
215
260
  }
216
261
 
217
262
 
218
263
  class AdvancedDeleteRowsTool(Tool):
219
- def __init__(self, *, table: str, schema: dict[str, DataType]):
264
+ def __init__(
265
+ self,
266
+ *,
267
+ table: str,
268
+ schema: dict[str, DataType],
269
+ namespace: Optional[list[str]] = None,
270
+ ):
220
271
  self.table = table
221
-
272
+ self.namespace = namespace
222
273
  columns = ""
223
274
 
224
275
  for k, v in schema.items():
@@ -244,13 +295,19 @@ class AdvancedDeleteRowsTool(Tool):
244
295
  )
245
296
 
246
297
  async def execute(self, context: ToolContext, *, where: str):
247
- await context.room.database.delete(table=self.table, where=where)
298
+ await context.room.database.delete(
299
+ table=self.table, where=where, namespace=self.namespace
300
+ )
248
301
  return {"ok": True}
249
302
 
250
303
 
251
304
  class DatabaseToolkit(RemoteToolkit):
252
305
  def __init__(
253
- self, *, tables: dict[str, dict[str, DataType]], read_only: bool = False
306
+ self,
307
+ *,
308
+ tables: dict[str, dict[str, DataType]],
309
+ read_only: bool = False,
310
+ namespace: Optional[list[str]] = None,
254
311
  ):
255
312
  tools = [
256
313
  # ListTablesTool()
@@ -258,13 +315,25 @@ class DatabaseToolkit(RemoteToolkit):
258
315
 
259
316
  for table, schema in tables.items():
260
317
  if not read_only:
261
- tools.append(InsertRowsTool(table=table, schema=schema))
262
- tools.append(UpdateTool(table=table, schema=schema))
263
- tools.append(DeleteRowsTool(table=table, schema=schema))
264
- tools.append(AdvancedDeleteRowsTool(table=table, schema=schema))
265
-
266
- tools.append(SearchTool(table=table, schema=schema))
267
- tools.append(AdvancedSearchTool(table=table, schema=schema))
318
+ tools.append(
319
+ InsertRowsTool(table=table, schema=schema, namespace=namespace)
320
+ )
321
+ tools.append(
322
+ UpdateTool(table=table, schema=schema, namespace=namespace)
323
+ )
324
+ tools.append(
325
+ DeleteRowsTool(table=table, schema=schema, namespace=namespace)
326
+ )
327
+ tools.append(
328
+ AdvancedDeleteRowsTool(
329
+ table=table, schema=schema, namespace=namespace
330
+ )
331
+ )
332
+
333
+ tools.append(SearchTool(table=table, schema=schema, namespace=namespace))
334
+ tools.append(
335
+ AdvancedSearchTool(table=table, schema=schema, namespace=namespace)
336
+ )
268
337
 
269
338
  super().__init__(
270
339
  name="database",
@@ -275,8 +344,9 @@ class DatabaseToolkit(RemoteToolkit):
275
344
 
276
345
 
277
346
  class DatabaseToolkitConfig(ToolkitConfig):
278
- name: str = Literal["database"]
347
+ name: Literal["database"] = "database"
279
348
  tables: list[str]
349
+ namespace: Optional[list[str]] = None
280
350
  read_only: bool
281
351
 
282
352
 
@@ -289,5 +359,7 @@ class DatabaseToolkitBuilder(ToolkitBuilder):
289
359
  ) -> Toolkit:
290
360
  tables = {}
291
361
  for t in config.tables:
292
- tables[t] = await room.database.inspect(table=t)
293
- return DatabaseToolkit(tables=tables, read_only=config.read_only)
362
+ tables[t] = await room.database.inspect(table=t, namespace=config.namespace)
363
+ return DatabaseToolkit(
364
+ tables=tables, read_only=config.read_only, namespace=config.namespace
365
+ )
@@ -197,7 +197,7 @@ class StorageToolkit(RemoteToolkit):
197
197
 
198
198
 
199
199
  class StorageToolkitConfig(ToolkitConfig):
200
- name: str = Literal["storage"]
200
+ name: Literal["storage"] = "storage"
201
201
 
202
202
 
203
203
  class StorageToolkitBuilder(ToolkitBuilder):
@@ -24,7 +24,7 @@ class ToolkitConfig(ToolkitConfig):
24
24
 
25
25
  def make_basic_toolkit_config_cls(toolkit: "Toolkit"):
26
26
  class CustomToolkitConfig:
27
- name: Literal[toolkit.name]
27
+ name: Literal[toolkit.name] = toolkit.name
28
28
 
29
29
  return CustomToolkitConfig
30
30
 
@@ -0,0 +1 @@
1
+ __version__ = "0.19.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshagent-tools
3
- Version: 0.16.0
3
+ Version: 0.19.1
4
4
  Summary: Tools for Meshagent
5
5
  License-Expression: Apache-2.0
6
6
  Project-URL: Documentation, https://docs.meshagent.com
@@ -12,7 +12,7 @@ License-File: LICENSE
12
12
  Requires-Dist: pyjwt~=2.10
13
13
  Requires-Dist: pytest~=8.4
14
14
  Requires-Dist: pytest-asyncio~=0.26
15
- Requires-Dist: meshagent-api~=0.16.0
15
+ Requires-Dist: meshagent-api~=0.19.1
16
16
  Requires-Dist: aiohttp~=3.10
17
17
  Requires-Dist: opentelemetry-distro~=0.54b1
18
18
  Dynamic: license-file
@@ -1,6 +1,6 @@
1
1
  pyjwt~=2.10
2
2
  pytest~=8.4
3
3
  pytest-asyncio~=0.26
4
- meshagent-api~=0.16.0
4
+ meshagent-api~=0.19.1
5
5
  aiohttp~=3.10
6
6
  opentelemetry-distro~=0.54b1
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "pyjwt~=2.10",
13
13
  "pytest~=8.4",
14
14
  "pytest-asyncio~=0.26",
15
- "meshagent-api~=0.16.0",
15
+ "meshagent-api~=0.19.1",
16
16
  "aiohttp~=3.10",
17
17
  "opentelemetry-distro~=0.54b1"
18
18
  ]
@@ -1,66 +0,0 @@
1
- ## [0.16.0]
2
- - Add optional `namespace` support across database client operations (list/inspect/create/drop/index/etc.) to target namespaced tables
3
- - Update dependencies `livekit-api` to `~1.1` (from `>=1.0`) and `livekit-agents`/`livekit-plugins-openai`/`livekit-plugins-silero`/`livekit-plugins-turn-detector` to `~1.3` (from `~1.2`)
4
-
5
- ## [0.15.0]
6
- - Added new UI schema widgets for `tabs`/`tab` (including initial tab selection and active background styling) plus a `visible` boolean widget property for conditional rendering.
7
- - Updated Python LiveKit integration dependencies to include `livekit==1.0.20`.
8
-
9
- ## [0.14.0]
10
- - Breaking change: toolkit extension hooks were simplified to a synchronous `get_toolkit_builders()` API and tool selection now uses per-toolkit configuration objects (not just tool names)
11
- - `LLMTaskRunner` now supports per-client and per-room rules, plus dynamically injected required toolkits at call time
12
- - `TaskRunner.ask` now supports optional binary attachments; `LLMTaskRunner` can unpack tar attachments and pass images/files into the LLM conversation context
13
- - `AgentsClient.ask` now returns `TextResponse` when the agent responds with plain text (instead of always treating answers as JSON)
14
- - Added a CLI `task-runner` command to run/join LLM task runners with configurable rules, schemas, toolkits, and optional remote LLM delegation
15
-
16
- ## [0.13.0]
17
- - Added `initial_json` and explicit schema support when opening MeshDocuments, enabling schema-first document initialization
18
- - Added binary attachment support when invoking agent tools so tool calls can include raw payload data
19
- - Breaking change: toolkit construction is now async and receives the active room client, enabling toolkits that introspect room state during build
20
- - Added database schema inspection and JSON Schema mappings for data types to support tool input validation and generation
21
- - Introduced database toolkits (list/inspect/search/insert/update/delete) and integrated optional per-table enablement into the chatbot/mailbot/helpers CLI flows
22
-
23
- ## [0.12.0]
24
- - Reduce worker-queue logging verbosity to avoid logging full message payloads
25
-
26
- ## [0.11.0]
27
- - Stability
28
-
29
- ## [0.10.1]
30
- - Stability
31
-
32
- ## [0.10.0]
33
- - Stability
34
-
35
- ## [0.9.3]
36
- - Stability
37
-
38
- ## [0.9.2]
39
- - Stability
40
-
41
- ## [0.9.1]
42
- - Stability
43
-
44
- ## [0.9.0]
45
- - Stability
46
-
47
- ## [0.8.4]
48
- - Stability
49
-
50
- ## [0.8.3]
51
- - Stability
52
-
53
- ## [0.8.2]
54
- - Stability
55
-
56
- ## [0.8.1]
57
- - Stability
58
-
59
- ## [0.8.0]
60
- - Stability
61
-
62
- ## [0.7.2]
63
- - Stability
64
-
65
- ## [0.7.1]
66
- - Stability
@@ -1 +0,0 @@
1
- __version__ = "0.16.0"