matimo 0.1.2__tar.gz → 0.2.0__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.
|
@@ -58,7 +58,6 @@ temp/
|
|
|
58
58
|
|
|
59
59
|
# Personal scratch notes / working docs — not part of the shipped repo
|
|
60
60
|
.local-notes/
|
|
61
|
-
typescript/examples/mcp/matimo-tools/.matimo-approvals.json
|
|
62
61
|
typescript/examples/mcp/matimo-tools/fetch-weather/definition.yaml
|
|
63
62
|
typescript/examples/mcp/matimo-tools/npm_downloads/definition.yaml
|
|
64
63
|
typescript/examples/mcp/matimo-tools/skills/ecosystem-health/SKILL.md
|
|
@@ -68,3 +67,6 @@ typescript/packages/cli/.matimo/certs/server.crt
|
|
|
68
67
|
typescript/packages/cli/.matimo/certs/server.key
|
|
69
68
|
typescript/examples/mcp/.matimo/certs/server.crt
|
|
70
69
|
typescript/examples/mcp/.matimo/certs/server.key
|
|
70
|
+
|
|
71
|
+
# HITL approval manifests are per-machine state (HMAC-signed approvals); never commit one
|
|
72
|
+
**/.matimo-approvals.json
|
matimo-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ROAIQ TECHNOLOGIES PRIVATE LIMITED
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: matimo
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Matimo — framework-agnostic SDK: pre-built providers, skills layer, MCP out of the box, and autonomous agents governed by a policy engine you control
|
|
5
5
|
Project-URL: Homepage, https://matimo.dev
|
|
6
|
-
Project-URL: Documentation, https://matimo.dev/
|
|
6
|
+
Project-URL: Documentation, https://docs.matimo.dev/
|
|
7
7
|
Project-URL: Repository, https://github.com/tallclub/matimo
|
|
8
8
|
Project-URL: Issues, https://github.com/tallclub/matimo/issues
|
|
9
9
|
License: MIT
|
|
10
|
-
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: agentic-ai,agents,agno,ai,ai-governance,crewai,langchain,matimo,mcp,mcp-server,policy-engine,tools
|
|
11
12
|
Classifier: Development Status :: 4 - Beta
|
|
12
13
|
Classifier: Intended Audience :: Developers
|
|
13
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -17,8 +18,10 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
17
18
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
19
|
Classifier: Topic :: Software Development :: Libraries
|
|
19
20
|
Requires-Python: >=3.11
|
|
20
|
-
Requires-Dist: matimo-cli<0.
|
|
21
|
-
Requires-Dist: matimo-core<0.
|
|
21
|
+
Requires-Dist: matimo-cli<0.3.0,>=0.2.0
|
|
22
|
+
Requires-Dist: matimo-core<0.3.0,>=0.2.0
|
|
23
|
+
Provides-Extra: agno
|
|
24
|
+
Requires-Dist: matimo-core[agno]; extra == 'agno'
|
|
22
25
|
Provides-Extra: all
|
|
23
26
|
Requires-Dist: matimo-core[all]; extra == 'all'
|
|
24
27
|
Provides-Extra: aws
|
|
@@ -37,11 +40,11 @@ Description-Content-Type: text/markdown
|
|
|
37
40
|
|
|
38
41
|
# matimo
|
|
39
42
|
|
|
40
|
-
> A framework-agnostic SDK with pre-built providers, a skills knowledge layer, MCP out of the box, and agents that autonomously build new capabilities
|
|
43
|
+
> A framework-agnostic SDK with pre-built providers, a skills knowledge layer, MCP out of the box, and agents that autonomously build new capabilities - governed by a policy engine you control.
|
|
41
44
|
|
|
42
45
|
[](https://pypi.org/project/matimo/)
|
|
43
46
|
[](https://pypi.org/project/matimo/)
|
|
44
|
-
[](https://matimo.dev
|
|
47
|
+
[](https://docs.matimo.dev)
|
|
45
48
|
|
|
46
49
|
`matimo` is the convenience meta-package that installs [`matimo-core`](https://pypi.org/project/matimo-core/) and [`matimo-cli`](https://pypi.org/project/matimo-cli/). Provider packages (Slack, GitHub, Gmail, etc.) are installed separately.
|
|
47
50
|
|
|
@@ -56,6 +59,7 @@ pip install matimo
|
|
|
56
59
|
# With optional framework integrations
|
|
57
60
|
pip install "matimo[langchain]" # LangChain support
|
|
58
61
|
pip install "matimo[crewai]" # CrewAI support
|
|
62
|
+
pip install "matimo[agno]" # Agno support
|
|
59
63
|
pip install "matimo[mcp]" # MCP server support
|
|
60
64
|
|
|
61
65
|
# With secrets backends
|
|
@@ -114,24 +118,16 @@ result = await matimo.execute('slack_send_channel_message', {
|
|
|
114
118
|
### LangChain agent
|
|
115
119
|
|
|
116
120
|
```python
|
|
117
|
-
from matimo import Matimo
|
|
118
|
-
from matimo.integrations.langchain import convert_tools_to_langchain
|
|
121
|
+
from matimo import Matimo, convert_tools_to_langchain
|
|
119
122
|
from langchain_openai import ChatOpenAI
|
|
120
|
-
from langchain.agents import
|
|
121
|
-
from langchain_core.prompts import ChatPromptTemplate
|
|
123
|
+
from langchain.agents import create_agent # LangChain 1.x
|
|
122
124
|
|
|
123
125
|
matimo = await Matimo.init(auto_discover=True)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
('human', '{input}'),
|
|
130
|
-
('placeholder', '{agent_scratchpad}'),
|
|
131
|
-
])
|
|
132
|
-
agent = create_tool_calling_agent(llm, lc_tools, prompt)
|
|
133
|
-
executor = AgentExecutor(agent=agent, tools=lc_tools)
|
|
134
|
-
result = await executor.ainvoke({'input': 'List all Slack channels'})
|
|
126
|
+
slack = [t for t in matimo.list_tools() if t.name.startswith('slack')]
|
|
127
|
+
lc_tools = convert_tools_to_langchain(slack, matimo) # pass a short list: OpenAI accepts at most 128 tools
|
|
128
|
+
|
|
129
|
+
agent = create_agent(ChatOpenAI(model='gpt-4o-mini'), tools=lc_tools)
|
|
130
|
+
result = await agent.ainvoke({'messages': [('user', 'List all Slack channels')]})
|
|
135
131
|
```
|
|
136
132
|
|
|
137
133
|
### CrewAI agent
|
|
@@ -147,13 +143,28 @@ crewai_tools = convert_tools_to_crewai(matimo.list_tools(), matimo)
|
|
|
147
143
|
### MCP server (Claude Desktop / Cursor)
|
|
148
144
|
|
|
149
145
|
```python
|
|
150
|
-
from matimo import Matimo,
|
|
146
|
+
from matimo import Matimo, MCPServer, MCPServerOptions
|
|
151
147
|
|
|
152
148
|
matimo = await Matimo.init(auto_discover=True)
|
|
153
|
-
server =
|
|
149
|
+
server = MCPServer(matimo, MCPServerOptions(transport='stdio'))
|
|
154
150
|
await server.start()
|
|
155
151
|
```
|
|
156
152
|
|
|
153
|
+
Or from the shell: `matimo mcp`.
|
|
154
|
+
|
|
155
|
+
### Approval
|
|
156
|
+
|
|
157
|
+
Calls that need approval (HTTP DELETE, shell commands, tools marked `requires_approval`) ask your callback:
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
from matimo import ApprovalRequest, Matimo
|
|
161
|
+
|
|
162
|
+
async def confirm(request: ApprovalRequest) -> bool:
|
|
163
|
+
return input(f"Allow {request.tool_name}? [y/N] ").strip().lower() == "y"
|
|
164
|
+
|
|
165
|
+
matimo = await Matimo.init(auto_discover=True, on_approval=confirm)
|
|
166
|
+
```
|
|
167
|
+
|
|
157
168
|
---
|
|
158
169
|
|
|
159
170
|
## Provider Packages
|
|
@@ -170,37 +181,39 @@ Install the tools you need:
|
|
|
170
181
|
| [`matimo-twilio`](https://pypi.org/project/matimo-twilio/) | SMS, MMS, message history | `pip install matimo-twilio` |
|
|
171
182
|
| [`matimo-hubspot`](https://pypi.org/project/matimo-hubspot/) | CRM: contacts, deals, companies | `pip install matimo-hubspot` |
|
|
172
183
|
| [`matimo-mailchimp`](https://pypi.org/project/matimo-mailchimp/) | Campaigns, lists, members | `pip install matimo-mailchimp` |
|
|
184
|
+
| [`matimo-microsoft`](https://pypi.org/project/matimo-microsoft/) | Mail, OneDrive/SharePoint, Teams, calendar | `pip install matimo-microsoft` |
|
|
185
|
+
| [`matimo-bruno`](https://pypi.org/project/matimo-bruno/) | Manage and run Bruno API test collections | `pip install matimo-bruno` |
|
|
173
186
|
|
|
174
187
|
---
|
|
175
188
|
|
|
176
189
|
## Key Features
|
|
177
190
|
|
|
178
|
-
- **YAML-defined tools**
|
|
179
|
-
- **10 provider packages**
|
|
180
|
-
- **LangChain / CrewAI / MCP**
|
|
181
|
-
- **Policy engine**
|
|
182
|
-
- **Skills system**
|
|
183
|
-
- **Meta-tools**
|
|
184
|
-
- **Secrets management**
|
|
185
|
-
- **Structured logging**
|
|
191
|
+
- **YAML-defined tools** - define once, use from any framework
|
|
192
|
+
- **10 provider packages** - 100+ pre-built tools ready to use
|
|
193
|
+
- **LangChain / CrewAI / Agno / MCP** - first-class integrations
|
|
194
|
+
- **Policy engine** - risk classification, per-call approval, HITL quarantine, content validation, hash-chained audit log
|
|
195
|
+
- **Skills system** - inject reusable domain knowledge into agents
|
|
196
|
+
- **Meta-tools** - agents can create, approve, and reload tools at runtime
|
|
197
|
+
- **Secrets management** - env, `.env`, Vault, AWS Secrets Manager resolver chain
|
|
198
|
+
- **Structured logging** - JSON/simple formats, configurable log levels
|
|
186
199
|
|
|
187
200
|
---
|
|
188
201
|
|
|
189
202
|
## Documentation
|
|
190
203
|
|
|
191
|
-
- [Getting Started](https://matimo.dev/
|
|
192
|
-
- [API Reference](https://matimo.dev/
|
|
193
|
-
- [LangChain Integration](https://matimo.dev/
|
|
194
|
-
- [CrewAI Integration](https://matimo.dev/
|
|
195
|
-
- [MCP Guide](https://matimo.dev/
|
|
196
|
-
- [Policy & Lifecycle](https://matimo.dev/
|
|
204
|
+
- [Getting Started](https://docs.matimo.dev/getting-started/QUICK_START)
|
|
205
|
+
- [API Reference](https://docs.matimo.dev/api-reference/SDK)
|
|
206
|
+
- [LangChain Integration](https://docs.matimo.dev/framework-integrations/LANGCHAIN)
|
|
207
|
+
- [CrewAI Integration](https://docs.matimo.dev/framework-integrations/CREWAI)
|
|
208
|
+
- [MCP Guide](https://docs.matimo.dev/MCP)
|
|
209
|
+
- [Policy & Lifecycle](https://docs.matimo.dev/api-reference/POLICY_AND_LIFECYCLE)
|
|
197
210
|
|
|
198
211
|
---
|
|
199
212
|
|
|
200
213
|
## Links
|
|
201
214
|
|
|
202
215
|
- **PyPI:** https://pypi.org/project/matimo/
|
|
203
|
-
- **Docs:** https://matimo.dev
|
|
216
|
+
- **Docs:** https://docs.matimo.dev
|
|
204
217
|
- **GitHub:** https://github.com/tallclub/matimo
|
|
205
218
|
- **Changelog:** https://github.com/tallclub/matimo/blob/main/docs/RELEASES.md
|
|
206
219
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# matimo
|
|
2
2
|
|
|
3
|
-
> A framework-agnostic SDK with pre-built providers, a skills knowledge layer, MCP out of the box, and agents that autonomously build new capabilities
|
|
3
|
+
> A framework-agnostic SDK with pre-built providers, a skills knowledge layer, MCP out of the box, and agents that autonomously build new capabilities - governed by a policy engine you control.
|
|
4
4
|
|
|
5
5
|
[](https://pypi.org/project/matimo/)
|
|
6
6
|
[](https://pypi.org/project/matimo/)
|
|
7
|
-
[](https://matimo.dev
|
|
7
|
+
[](https://docs.matimo.dev)
|
|
8
8
|
|
|
9
9
|
`matimo` is the convenience meta-package that installs [`matimo-core`](https://pypi.org/project/matimo-core/) and [`matimo-cli`](https://pypi.org/project/matimo-cli/). Provider packages (Slack, GitHub, Gmail, etc.) are installed separately.
|
|
10
10
|
|
|
@@ -19,6 +19,7 @@ pip install matimo
|
|
|
19
19
|
# With optional framework integrations
|
|
20
20
|
pip install "matimo[langchain]" # LangChain support
|
|
21
21
|
pip install "matimo[crewai]" # CrewAI support
|
|
22
|
+
pip install "matimo[agno]" # Agno support
|
|
22
23
|
pip install "matimo[mcp]" # MCP server support
|
|
23
24
|
|
|
24
25
|
# With secrets backends
|
|
@@ -77,24 +78,16 @@ result = await matimo.execute('slack_send_channel_message', {
|
|
|
77
78
|
### LangChain agent
|
|
78
79
|
|
|
79
80
|
```python
|
|
80
|
-
from matimo import Matimo
|
|
81
|
-
from matimo.integrations.langchain import convert_tools_to_langchain
|
|
81
|
+
from matimo import Matimo, convert_tools_to_langchain
|
|
82
82
|
from langchain_openai import ChatOpenAI
|
|
83
|
-
from langchain.agents import
|
|
84
|
-
from langchain_core.prompts import ChatPromptTemplate
|
|
83
|
+
from langchain.agents import create_agent # LangChain 1.x
|
|
85
84
|
|
|
86
85
|
matimo = await Matimo.init(auto_discover=True)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
('human', '{input}'),
|
|
93
|
-
('placeholder', '{agent_scratchpad}'),
|
|
94
|
-
])
|
|
95
|
-
agent = create_tool_calling_agent(llm, lc_tools, prompt)
|
|
96
|
-
executor = AgentExecutor(agent=agent, tools=lc_tools)
|
|
97
|
-
result = await executor.ainvoke({'input': 'List all Slack channels'})
|
|
86
|
+
slack = [t for t in matimo.list_tools() if t.name.startswith('slack')]
|
|
87
|
+
lc_tools = convert_tools_to_langchain(slack, matimo) # pass a short list: OpenAI accepts at most 128 tools
|
|
88
|
+
|
|
89
|
+
agent = create_agent(ChatOpenAI(model='gpt-4o-mini'), tools=lc_tools)
|
|
90
|
+
result = await agent.ainvoke({'messages': [('user', 'List all Slack channels')]})
|
|
98
91
|
```
|
|
99
92
|
|
|
100
93
|
### CrewAI agent
|
|
@@ -110,13 +103,28 @@ crewai_tools = convert_tools_to_crewai(matimo.list_tools(), matimo)
|
|
|
110
103
|
### MCP server (Claude Desktop / Cursor)
|
|
111
104
|
|
|
112
105
|
```python
|
|
113
|
-
from matimo import Matimo,
|
|
106
|
+
from matimo import Matimo, MCPServer, MCPServerOptions
|
|
114
107
|
|
|
115
108
|
matimo = await Matimo.init(auto_discover=True)
|
|
116
|
-
server =
|
|
109
|
+
server = MCPServer(matimo, MCPServerOptions(transport='stdio'))
|
|
117
110
|
await server.start()
|
|
118
111
|
```
|
|
119
112
|
|
|
113
|
+
Or from the shell: `matimo mcp`.
|
|
114
|
+
|
|
115
|
+
### Approval
|
|
116
|
+
|
|
117
|
+
Calls that need approval (HTTP DELETE, shell commands, tools marked `requires_approval`) ask your callback:
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
from matimo import ApprovalRequest, Matimo
|
|
121
|
+
|
|
122
|
+
async def confirm(request: ApprovalRequest) -> bool:
|
|
123
|
+
return input(f"Allow {request.tool_name}? [y/N] ").strip().lower() == "y"
|
|
124
|
+
|
|
125
|
+
matimo = await Matimo.init(auto_discover=True, on_approval=confirm)
|
|
126
|
+
```
|
|
127
|
+
|
|
120
128
|
---
|
|
121
129
|
|
|
122
130
|
## Provider Packages
|
|
@@ -133,37 +141,39 @@ Install the tools you need:
|
|
|
133
141
|
| [`matimo-twilio`](https://pypi.org/project/matimo-twilio/) | SMS, MMS, message history | `pip install matimo-twilio` |
|
|
134
142
|
| [`matimo-hubspot`](https://pypi.org/project/matimo-hubspot/) | CRM: contacts, deals, companies | `pip install matimo-hubspot` |
|
|
135
143
|
| [`matimo-mailchimp`](https://pypi.org/project/matimo-mailchimp/) | Campaigns, lists, members | `pip install matimo-mailchimp` |
|
|
144
|
+
| [`matimo-microsoft`](https://pypi.org/project/matimo-microsoft/) | Mail, OneDrive/SharePoint, Teams, calendar | `pip install matimo-microsoft` |
|
|
145
|
+
| [`matimo-bruno`](https://pypi.org/project/matimo-bruno/) | Manage and run Bruno API test collections | `pip install matimo-bruno` |
|
|
136
146
|
|
|
137
147
|
---
|
|
138
148
|
|
|
139
149
|
## Key Features
|
|
140
150
|
|
|
141
|
-
- **YAML-defined tools**
|
|
142
|
-
- **10 provider packages**
|
|
143
|
-
- **LangChain / CrewAI / MCP**
|
|
144
|
-
- **Policy engine**
|
|
145
|
-
- **Skills system**
|
|
146
|
-
- **Meta-tools**
|
|
147
|
-
- **Secrets management**
|
|
148
|
-
- **Structured logging**
|
|
151
|
+
- **YAML-defined tools** - define once, use from any framework
|
|
152
|
+
- **10 provider packages** - 100+ pre-built tools ready to use
|
|
153
|
+
- **LangChain / CrewAI / Agno / MCP** - first-class integrations
|
|
154
|
+
- **Policy engine** - risk classification, per-call approval, HITL quarantine, content validation, hash-chained audit log
|
|
155
|
+
- **Skills system** - inject reusable domain knowledge into agents
|
|
156
|
+
- **Meta-tools** - agents can create, approve, and reload tools at runtime
|
|
157
|
+
- **Secrets management** - env, `.env`, Vault, AWS Secrets Manager resolver chain
|
|
158
|
+
- **Structured logging** - JSON/simple formats, configurable log levels
|
|
149
159
|
|
|
150
160
|
---
|
|
151
161
|
|
|
152
162
|
## Documentation
|
|
153
163
|
|
|
154
|
-
- [Getting Started](https://matimo.dev/
|
|
155
|
-
- [API Reference](https://matimo.dev/
|
|
156
|
-
- [LangChain Integration](https://matimo.dev/
|
|
157
|
-
- [CrewAI Integration](https://matimo.dev/
|
|
158
|
-
- [MCP Guide](https://matimo.dev/
|
|
159
|
-
- [Policy & Lifecycle](https://matimo.dev/
|
|
164
|
+
- [Getting Started](https://docs.matimo.dev/getting-started/QUICK_START)
|
|
165
|
+
- [API Reference](https://docs.matimo.dev/api-reference/SDK)
|
|
166
|
+
- [LangChain Integration](https://docs.matimo.dev/framework-integrations/LANGCHAIN)
|
|
167
|
+
- [CrewAI Integration](https://docs.matimo.dev/framework-integrations/CREWAI)
|
|
168
|
+
- [MCP Guide](https://docs.matimo.dev/MCP)
|
|
169
|
+
- [Policy & Lifecycle](https://docs.matimo.dev/api-reference/POLICY_AND_LIFECYCLE)
|
|
160
170
|
|
|
161
171
|
---
|
|
162
172
|
|
|
163
173
|
## Links
|
|
164
174
|
|
|
165
175
|
- **PyPI:** https://pypi.org/project/matimo/
|
|
166
|
-
- **Docs:** https://matimo.dev
|
|
176
|
+
- **Docs:** https://docs.matimo.dev
|
|
167
177
|
- **GitHub:** https://github.com/tallclub/matimo
|
|
168
178
|
- **Changelog:** https://github.com/tallclub/matimo/blob/main/docs/RELEASES.md
|
|
169
179
|
|
|
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "matimo"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Matimo — framework-agnostic SDK: pre-built providers, skills layer, MCP out of the box, and autonomous agents governed by a policy engine you control"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
11
11
|
requires-python = ">=3.11"
|
|
12
|
-
keywords = ["ai", "tools", "agents", "langchain", "crewai", "mcp", "matimo"]
|
|
12
|
+
keywords = ["ai", "tools", "agents", "langchain", "crewai", "agno", "mcp", "matimo", "mcp-server", "agentic-ai", "ai-governance", "policy-engine"]
|
|
13
13
|
classifiers = [
|
|
14
14
|
"Development Status :: 4 - Beta",
|
|
15
15
|
"Intended Audience :: Developers",
|
|
@@ -23,13 +23,14 @@ classifiers = [
|
|
|
23
23
|
# This is a meta-package: pip install matimo pulls in matimo-core and matimo-cli
|
|
24
24
|
# which provides the actual `matimo` Python namespace and CLI tools.
|
|
25
25
|
dependencies = [
|
|
26
|
-
"matimo-core>=0.
|
|
27
|
-
"matimo-cli>=0.
|
|
26
|
+
"matimo-core>=0.2.0,<0.3.0",
|
|
27
|
+
"matimo-cli>=0.2.0,<0.3.0",
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.optional-dependencies]
|
|
31
31
|
langchain = ["matimo-core[langchain]"]
|
|
32
32
|
crewai = ["matimo-core[crewai]"]
|
|
33
|
+
agno = ["matimo-core[agno]"]
|
|
33
34
|
mcp = ["matimo-core[mcp]"]
|
|
34
35
|
dotenv = ["matimo-core[dotenv]"]
|
|
35
36
|
vault = ["matimo-core[vault]"]
|
|
@@ -38,7 +39,7 @@ all = ["matimo-core[all]"]
|
|
|
38
39
|
|
|
39
40
|
[project.urls]
|
|
40
41
|
Homepage = "https://matimo.dev"
|
|
41
|
-
Documentation = "https://matimo.dev/
|
|
42
|
+
Documentation = "https://docs.matimo.dev/"
|
|
42
43
|
Repository = "https://github.com/tallclub/matimo"
|
|
43
44
|
Issues = "https://github.com/tallclub/matimo/issues"
|
|
44
45
|
|
|
@@ -28,7 +28,7 @@ try:
|
|
|
28
28
|
from importlib.metadata import version as _pkg_version
|
|
29
29
|
__version__ = _pkg_version("matimo")
|
|
30
30
|
except Exception:
|
|
31
|
-
__version__ = "0.
|
|
31
|
+
__version__ = "0.2.0" # fallback for editable / source installs
|
|
32
32
|
|
|
33
33
|
# ---------------------------------------------------------------------------
|
|
34
34
|
# matimo-core re-exports
|
|
@@ -41,6 +41,7 @@ from matimo.approval.handler import ( # noqa: E402
|
|
|
41
41
|
ApprovalCallback,
|
|
42
42
|
ApprovalHandler,
|
|
43
43
|
ApprovalRequest,
|
|
44
|
+
definition_requires_approval,
|
|
44
45
|
get_global_approval_handler,
|
|
45
46
|
set_global_approval_handler,
|
|
46
47
|
)
|
|
@@ -129,7 +130,7 @@ from matimo.errors import ( # noqa: E402
|
|
|
129
130
|
|
|
130
131
|
# Executors
|
|
131
132
|
from matimo.executors.command_executor import CommandExecutor # noqa: E402
|
|
132
|
-
from matimo.executors.function_executor import FunctionExecutor # noqa: E402
|
|
133
|
+
from matimo.executors.function_executor import FunctionExecutor, FunctionToolContext # noqa: E402
|
|
133
134
|
from matimo.executors.http_executor import HttpExecutor # noqa: E402
|
|
134
135
|
|
|
135
136
|
# Main entry point + sync API
|
|
@@ -157,12 +158,26 @@ from matimo.mcp.tool_converter import convert_parameters_to_mcp_schema # noqa:
|
|
|
157
158
|
|
|
158
159
|
# Policy
|
|
159
160
|
from matimo.policy.approval_manifest import ApprovalManifest, ApprovalRecord # noqa: E402
|
|
161
|
+
from matimo.policy.audit_sink import ( # noqa: E402
|
|
162
|
+
AUDIT_GENESIS_HASH,
|
|
163
|
+
AuditLogVerification,
|
|
164
|
+
AuditSink,
|
|
165
|
+
JsonlFileSink,
|
|
166
|
+
hash_audit_entry,
|
|
167
|
+
redact_secrets,
|
|
168
|
+
verify_audit_log,
|
|
169
|
+
)
|
|
160
170
|
from matimo.policy.content_validator import ContentViolation, validate_tool_content # noqa: E402
|
|
161
171
|
from matimo.policy.default_policy import DefaultPolicyEngine, PolicyEngine, get_tier_for_tool # noqa: E402
|
|
162
172
|
from matimo.policy.integrity_tracker import IntegrityAction, ToolIntegrityTracker # noqa: E402
|
|
163
173
|
from matimo.policy.policy_loader import load_policy_from_file # noqa: E402
|
|
164
|
-
from matimo.policy.risk_classifier import
|
|
174
|
+
from matimo.policy.risk_classifier import ( # noqa: E402
|
|
175
|
+
classify_execution_risk,
|
|
176
|
+
classify_risk,
|
|
177
|
+
meets_risk_threshold,
|
|
178
|
+
)
|
|
165
179
|
from matimo.policy.types import ( # noqa: E402
|
|
180
|
+
GovernanceMode,
|
|
166
181
|
HITLCallback,
|
|
167
182
|
HITLRequest,
|
|
168
183
|
MatimoEvent,
|
|
@@ -223,6 +238,30 @@ def convert_tools_to_crewai(
|
|
|
223
238
|
return _inner(tools, matimo_instance, credentials)
|
|
224
239
|
|
|
225
240
|
|
|
241
|
+
def convert_tools_to_agno(
|
|
242
|
+
tools: list[ToolDefinition],
|
|
243
|
+
matimo_instance: Matimo,
|
|
244
|
+
credentials: dict[str, str] | None = None,
|
|
245
|
+
**kwargs: object,
|
|
246
|
+
) -> list[object]:
|
|
247
|
+
"""Convert Matimo tools to Agno Function list. Requires agno."""
|
|
248
|
+
from matimo.integrations.agno import convert_tools_to_agno as _inner
|
|
249
|
+
return _inner(tools, matimo_instance, credentials, **kwargs) # type: ignore[arg-type]
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def MatimoTools( # noqa: N802
|
|
253
|
+
matimo_instance: Matimo,
|
|
254
|
+
tools: list[ToolDefinition] | None = None,
|
|
255
|
+
**kwargs: object,
|
|
256
|
+
) -> object:
|
|
257
|
+
"""Build an Agno Toolkit exposing governed Matimo tools. Requires agno.
|
|
258
|
+
|
|
259
|
+
Named in CapWords to match Agno's <Name>Tools toolkit convention.
|
|
260
|
+
"""
|
|
261
|
+
from matimo.integrations.agno import MatimoTools as _inner
|
|
262
|
+
return _inner(matimo_instance, tools, **kwargs) # type: ignore[arg-type]
|
|
263
|
+
|
|
264
|
+
|
|
226
265
|
def get_core_tools_path() -> str:
|
|
227
266
|
"""Return the absolute path to matimo-core's bundled tool definitions.
|
|
228
267
|
|
|
@@ -277,7 +316,7 @@ __all__ = [
|
|
|
277
316
|
"ParsedSkillContent", "SemanticSearchResult",
|
|
278
317
|
"TfIdfEmbeddingProvider", "EmbeddingProvider", "cosine_similarity",
|
|
279
318
|
# Executors
|
|
280
|
-
"HttpExecutor", "CommandExecutor", "FunctionExecutor",
|
|
319
|
+
"HttpExecutor", "CommandExecutor", "FunctionExecutor", "FunctionToolContext",
|
|
281
320
|
# Auth
|
|
282
321
|
"inject_auth_parameters", "extract_parameter_placeholders",
|
|
283
322
|
"OAuth2Handler", "OAuth2ProviderLoader",
|
|
@@ -285,15 +324,19 @@ __all__ = [
|
|
|
285
324
|
# Approval
|
|
286
325
|
"ApprovalHandler", "ApprovalRequest", "ApprovalCallback",
|
|
287
326
|
"get_global_approval_handler", "set_global_approval_handler",
|
|
327
|
+
"definition_requires_approval",
|
|
288
328
|
# Encodings
|
|
289
329
|
"apply_parameter_encodings",
|
|
290
330
|
# Policy
|
|
291
331
|
"PolicyEngine", "DefaultPolicyEngine", "PolicyConfig",
|
|
292
332
|
"PolicyDecision", "PolicyAllowed", "PolicyDenied", "PolicyPendingApproval",
|
|
293
|
-
"RiskLevel", "PolicyTier", "MatimoEvent", "MatimoEventHandler",
|
|
333
|
+
"RiskLevel", "PolicyTier", "MatimoEvent", "MatimoEventHandler", "GovernanceMode",
|
|
294
334
|
"HITLCallback", "HITLRequest", "ContentViolation", "validate_tool_content",
|
|
295
|
-
"classify_risk", "
|
|
335
|
+
"classify_risk", "classify_execution_risk", "meets_risk_threshold",
|
|
336
|
+
"get_tier_for_tool", "ToolIntegrityTracker", "IntegrityAction",
|
|
296
337
|
"ApprovalManifest", "ApprovalRecord", "load_policy_from_file",
|
|
338
|
+
"AuditSink", "JsonlFileSink", "AuditLogVerification", "verify_audit_log",
|
|
339
|
+
"redact_secrets", "hash_audit_entry", "AUDIT_GENESIS_HASH",
|
|
297
340
|
# MCP
|
|
298
341
|
"MCPServer", "MCPServerOptions", "create_mcp_server",
|
|
299
342
|
"convert_parameters_to_mcp_schema",
|
|
@@ -303,6 +346,7 @@ __all__ = [
|
|
|
303
346
|
# Integrations
|
|
304
347
|
"convert_tools_to_langchain", "get_skills_metadata",
|
|
305
348
|
"build_relevant_skill_prompt", "convert_tools_to_crewai",
|
|
349
|
+
"convert_tools_to_agno", "MatimoTools",
|
|
306
350
|
# Decorators
|
|
307
351
|
"tool", "set_global_matimo_instance", "get_global_matimo_instance",
|
|
308
352
|
# Logging
|