matimo 0.1.0-alpha.1

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 (90) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +651 -0
  3. package/dist/auth/oauth2-config.d.ts +104 -0
  4. package/dist/auth/oauth2-config.d.ts.map +1 -0
  5. package/dist/auth/oauth2-config.js +38 -0
  6. package/dist/auth/oauth2-config.js.map +1 -0
  7. package/dist/auth/oauth2-handler.d.ts +130 -0
  8. package/dist/auth/oauth2-handler.d.ts.map +1 -0
  9. package/dist/auth/oauth2-handler.js +265 -0
  10. package/dist/auth/oauth2-handler.js.map +1 -0
  11. package/dist/auth/oauth2-provider-loader.d.ts +68 -0
  12. package/dist/auth/oauth2-provider-loader.d.ts.map +1 -0
  13. package/dist/auth/oauth2-provider-loader.js +120 -0
  14. package/dist/auth/oauth2-provider-loader.js.map +1 -0
  15. package/dist/core/schema.d.ts +238 -0
  16. package/dist/core/schema.d.ts.map +1 -0
  17. package/dist/core/schema.js +168 -0
  18. package/dist/core/schema.js.map +1 -0
  19. package/dist/core/tool-loader.d.ts +29 -0
  20. package/dist/core/tool-loader.d.ts.map +1 -0
  21. package/dist/core/tool-loader.js +98 -0
  22. package/dist/core/tool-loader.js.map +1 -0
  23. package/dist/core/tool-registry.d.ts +48 -0
  24. package/dist/core/tool-registry.d.ts.map +1 -0
  25. package/dist/core/tool-registry.js +89 -0
  26. package/dist/core/tool-registry.js.map +1 -0
  27. package/dist/core/types.d.ts +143 -0
  28. package/dist/core/types.d.ts.map +1 -0
  29. package/dist/core/types.js +5 -0
  30. package/dist/core/types.js.map +1 -0
  31. package/dist/decorators/index.d.ts +2 -0
  32. package/dist/decorators/index.d.ts.map +1 -0
  33. package/dist/decorators/index.js +2 -0
  34. package/dist/decorators/index.js.map +1 -0
  35. package/dist/decorators/tool-decorator.d.ts +97 -0
  36. package/dist/decorators/tool-decorator.d.ts.map +1 -0
  37. package/dist/decorators/tool-decorator.js +154 -0
  38. package/dist/decorators/tool-decorator.js.map +1 -0
  39. package/dist/encodings/parameter-encoding.d.ts +51 -0
  40. package/dist/encodings/parameter-encoding.d.ts.map +1 -0
  41. package/dist/encodings/parameter-encoding.js +116 -0
  42. package/dist/encodings/parameter-encoding.js.map +1 -0
  43. package/dist/errors/matimo-error.d.ts +34 -0
  44. package/dist/errors/matimo-error.d.ts.map +1 -0
  45. package/dist/errors/matimo-error.js +49 -0
  46. package/dist/errors/matimo-error.js.map +1 -0
  47. package/dist/executors/command-executor.d.ts +19 -0
  48. package/dist/executors/command-executor.d.ts.map +1 -0
  49. package/dist/executors/command-executor.js +94 -0
  50. package/dist/executors/command-executor.js.map +1 -0
  51. package/dist/executors/http-executor.d.ts +26 -0
  52. package/dist/executors/http-executor.d.ts.map +1 -0
  53. package/dist/executors/http-executor.js +133 -0
  54. package/dist/executors/http-executor.js.map +1 -0
  55. package/dist/index.d.ts +22 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +23 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/matimo-instance.d.ts +98 -0
  60. package/dist/matimo-instance.d.ts.map +1 -0
  61. package/dist/matimo-instance.js +260 -0
  62. package/dist/matimo-instance.js.map +1 -0
  63. package/docs/Gemfile +5 -0
  64. package/docs/RELEASES.md +69 -0
  65. package/docs/ROADMAP.md +138 -0
  66. package/docs/_config.yml +27 -0
  67. package/docs/api-reference/ERRORS.md +445 -0
  68. package/docs/api-reference/SDK.md +582 -0
  69. package/docs/api-reference/TYPES.md +415 -0
  70. package/docs/architecture/OAUTH.md +1366 -0
  71. package/docs/architecture/OVERVIEW.md +564 -0
  72. package/docs/assets/logo.png +0 -0
  73. package/docs/community/COMMIT_GUIDELINES.md +552 -0
  74. package/docs/framework-integrations/LANGCHAIN.md +286 -0
  75. package/docs/getting-started/QUICK_START.md +211 -0
  76. package/docs/getting-started/YOUR_FIRST_TOOL.md +217 -0
  77. package/docs/getting-started/installation.md +124 -0
  78. package/docs/index.md +288 -0
  79. package/docs/tool-development/DECORATOR_GUIDE.md +633 -0
  80. package/docs/tool-development/OAUTH_LINK.md +5 -0
  81. package/docs/tool-development/PROVIDER_CONFIGURATION.md +458 -0
  82. package/docs/tool-development/TESTING.md +412 -0
  83. package/docs/tool-development/TOOL_SPECIFICATION.md +793 -0
  84. package/docs/tool-development/YAML_TOOLS.md +65 -0
  85. package/docs/troubleshooting/FAQ.md +391 -0
  86. package/docs/user-guide/AUTHENTICATION.md +255 -0
  87. package/docs/user-guide/DEVELOPMENT_STANDARDS.md +698 -0
  88. package/docs/user-guide/SDK_PATTERNS.md +316 -0
  89. package/docs/user-guide/TOOL_DISCOVERY.md +209 -0
  90. package/package.json +96 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tallclub
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.
package/README.md ADDED
@@ -0,0 +1,651 @@
1
+ # Matimo — Toolbox For AI Agents
2
+
3
+ <p align="center">
4
+ <img src="./docs/assets/logo.png" alt="Matimo Logo" width="300" />
5
+ </p>
6
+ <p align="center">
7
+ <strong>Matimo - "to be powerful"</strong>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <a href="https://github.com/tallclub/matimo/actions/workflows/ci.yml?branch=main"><img src="https://img.shields.io/github/actions/workflow/status/tallclub/matimo/ci.yml?branch=main&style=for-the-badge" alt="CI status"></a>
12
+ <a href="https://www.npmjs.com/package/matimo"><img src="https://img.shields.io/npm/v/matimo.svg?style=for-the-badge" alt="npm version"></a>
13
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge" alt="MIT License"></a>
14
+ <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.9+-blue?style=for-the-badge" alt="TypeScript"></a>
15
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-18+-green?style=for-the-badge" alt="Node.js"></a>
16
+ </p>
17
+
18
+ **Matimo** is a universal, configuration-driven AI tools ecosystem accessible through **multiple integration paths**. Define tools **once in YAML** and access them via SDK, MCP server, CLI, or HTTP — across any AI framework or agent system.
19
+
20
+ If you want tools that feel **fast, maintainable, and framework-agnostic**, this is it.
21
+
22
+ [Documentation](./docs) · [Getting Started](./docs/getting-started/QUICK_START.md) · [API Reference](./docs/api-reference/SDK.md) · [Tool Spec](./docs/tool-development/TOOL_SPECIFICATION.md) · [GitHub](https://github.com/tallclub/matimo) · [Why Matimo?](#why-matimo)
23
+
24
+ ## Quick Start (TL;DR)
25
+
26
+ Runtime: **Node ≥18**, **pnpm 8.15+**
27
+
28
+ ```bash
29
+ # Clone and install
30
+ git clone https://github.com/tallclub/matimo.git
31
+ cd matimo
32
+ pnpm install
33
+ pnpm build
34
+
35
+ # Run tests
36
+ pnpm test
37
+
38
+ # Start using
39
+ const { matimo } = require('matimo');
40
+ const m = await matimo.init('./tools');
41
+ const result = await m.execute('calculator', { operation: 'add', a: 5, b: 3 });
42
+ ```
43
+
44
+ Prefer factory pattern (simple) or decorator pattern (class-based code). See [SDK Usage Patterns - Level 1](#level-1-pure-sdk-patterns-no-framework-required) for details.
45
+
46
+ ---
47
+
48
+ ## Why Matimo?
49
+
50
+ ### The Problem It Solves
51
+
52
+ Building agent workflows is exciting but painful: every framework (LangChain, CrewAI, AutoGen, LlamaIndex, custom TS agents, Claude via MCP, etc.) has its own way of defining, calling, and executing tools.
53
+
54
+ You end up duplicating tool logic, schemas, and integrations repeatedly.
55
+
56
+ **Matimo fixes this.** Define tools **once** in clean YAML files (with Zod validation for safety) and use them everywhere:
57
+
58
+ - **Pure TypeScript SDK** (factory or decorator patterns)
59
+ - **LangChain** (examples included)
60
+ - **MCP Server** (Claude-native) — coming soon
61
+ - **REST API** — coming soon
62
+ - **CLI** — coming soon
63
+ - **Python SDK** — coming soon
64
+ - **Tool Marketplace** (2000+ tools goal) — coming soon
65
+
66
+ **Define once → Plug into any agent ecosystem.**
67
+
68
+ ### Why Open Source?
69
+
70
+ I built Matimo because I needed it while working on my own agent product — and I couldn't find a truly framework-agnostic, fully open-source alternative (most are paid or tightly coupled to one framework).
71
+
72
+ I'm a solo developer (nomadic coder at heart), so this project needs **your help** to become the go-to standard for agent tools.
73
+
74
+ ### How You Can Help Right Now
75
+
76
+ - ⭐ **Star the repo** to show support and increase visibility
77
+ - 🐛 **Open issues** for bugs, missing features, or pain points
78
+ - 💡 **Suggest tools** to add (YAML examples welcome!)
79
+ - 🔀 **Submit PRs** — we follow TDD + Conventional Commits (see CONTRIBUTING.md)
80
+ - 📢 **Spread the word** on X/Twitter, Reddit (r/LocalLLM, r/AI_Agents, etc.), Discord communities
81
+
82
+ Let's build a simple, powerful shovel for the agentic world together.
83
+
84
+ With ❤️
85
+ [Sajesh](https://www.linkedin.com/in/sajeshnair/)
86
+ Creator of Matimo
87
+
88
+ ---
89
+
90
+ ## Built so far
91
+
92
+ **SDK with 2 Patterns**
93
+
94
+ - Factory pattern (simple, recommended)
95
+ - Decorator pattern (class-based agents)
96
+
97
+ **Tool Execution & Discovery**
98
+
99
+ - YAML/JSON tool definitions with validation
100
+ - Command executor (shell commands + parameter templating)
101
+ - HTTP executor (REST APIs with auth)
102
+ - Tool registry with search, filter, discover
103
+
104
+ **Quality & Type Safety**
105
+
106
+ - 100% test passing
107
+ - Full TypeScript strict mode (zero `any` types)
108
+ - Zod schema validation
109
+ - ESLint clean
110
+
111
+ **3 Example Tools**
112
+
113
+ - Calculator (command execution)
114
+ - HTTP Client (HTTP execution)
115
+ - Echo Tool (simple command)
116
+
117
+ **4 Gmail Tools**
118
+
119
+ - Create Draft
120
+
121
+ - Get Message
122
+ - List Message
123
+ - Send Email
124
+
125
+ ## Planned
126
+ **Add Tools** - Github, Slack, Jira, Notion, etc
127
+
128
+ **MCP Server** — Claude & MCP client integration
129
+
130
+ **REST API** — HTTP endpoints for tool execution
131
+
132
+ **CLI** — Command-line tool management & testing
133
+
134
+ **OAuth2** — GitHub, Google, Slack authentication
135
+
136
+ **Python SDK** — Multi-language support
137
+
138
+ **Health Monitoring** — Detect API schema changes
139
+
140
+ **Rate Limiting** — Token bucket algorithm per tool
141
+
142
+
143
+ ## Installation
144
+
145
+ ```bash
146
+ # Coming soon to npm
147
+ npm install matimo
148
+ pnpm add matimo
149
+
150
+ # For now: clone and build locally
151
+ git clone https://github.com/tallclub/matimo.git
152
+ cd matimo && pnpm install && pnpm build
153
+ ```
154
+
155
+ ## SDK Usage Patterns
156
+
157
+ ### Level 1: Pure SDK Patterns (No Framework Required)
158
+
159
+ Use Matimo directly without any AI framework. Perfect for CLI tools, backends, scheduled jobs, and simple integrations.
160
+
161
+ #### 1. Factory Pattern (Recommended for Simple Use Cases)
162
+
163
+ Simplest, ergonomic, single-initialization API:
164
+
165
+ ```typescript
166
+ import { matimo } from 'matimo';
167
+
168
+ // Initialize once
169
+ const matimoInstance = await matimo.init('./tools');
170
+
171
+ // Execute tools by name
172
+ const result = await matimoInstance.execute('calculator', {
173
+ operation: 'add',
174
+ a: 5,
175
+ b: 3,
176
+ });
177
+
178
+ // Discover tools
179
+ const allTools = matimoInstance.listTools();
180
+ const tool = matimoInstance.getTool('calculator');
181
+ const mathTools = matimoInstance.getToolsByTag('math');
182
+ const results = matimoInstance.searchTools('calculator');
183
+ ```
184
+
185
+ **Use when:** You need simple tool execution without LLM orchestration.
186
+
187
+ #### 2. Decorator Pattern (Recommended for Class-Based Code)
188
+
189
+ For class-based applications with automatic tool binding:
190
+
191
+ ```typescript
192
+ import { tool } from 'matimo';
193
+ import { matimo } from 'matimo';
194
+
195
+ // Initialize Matimo (once)
196
+ const matimoInstance = await matimo.init('./tools');
197
+
198
+ // NOTE: `setGlobalMatimoInstance()` is convenient for quick demos.
199
+ // For production code prefer explicit injection (constructor/factory) or an explicit binder.
200
+
201
+ // Constructor / DI example (recommended for production)
202
+ class MyAgent {
203
+ constructor(public matimo: MatimoInstance) {}
204
+
205
+ @tool('calculator')
206
+ async calculate(operation: string, a: number, b: number) {
207
+ // @tool decorator intercepts this call
208
+ // Argument order matches tool parameters: operation, a, b
209
+ // Method body can be empty - decorator does the work
210
+ }
211
+
212
+ @tool('github-get-repo')
213
+ async getRepo(owner: string, repo: string) {
214
+ // @tool decorator intercepts this call
215
+ // Argument order matches tool parameters: owner, repo
216
+ // Method body can be empty - decorator does the work
217
+ }
218
+ }
219
+
220
+ const agent = new MyAgent(matimoInstance);
221
+ // When you call agent.calculate('add', 5, 3):
222
+ // 1. @tool decorator intercepts the call
223
+ // 2. Decorator maps arguments to parameters: { operation: 'add', a: 5, b: 3 }
224
+ // 3. Decorator calls matimo.execute('calculator', {...})
225
+ // 4. Result is returned to you
226
+ const result = await agent.calculate('add', 5, 3);
227
+ ```
228
+
229
+ **Use when:** You prefer method-based calling style or class-based architecture.
230
+
231
+ **How @tool decorator works:**
232
+
233
+ - ✅ **Intercepts method calls** - Decorator intercepts and executes via Matimo
234
+ - ✅ **Auto-maps arguments** - Method args become tool parameters (in order)
235
+ - ✅ **Auto-executes tool** - Calls `matimo.execute(toolName, params)` automatically
236
+ - ✅ **Returns tool result** - The result from Matimo is returned to you
237
+ - ✅ **Fully scalable** - Add 100 tools = just add 100 `@tool()` decorated methods, no routing code
238
+ - ✅ **Works with DI** - Uses instance property or global instance
239
+ - ✅ **Method body optional** - Can be empty since decorator replaces it
240
+
241
+ ### Level 2: Framework Integration Patterns (With AI Framework)
242
+
243
+ Integrate Matimo tools with LangChain(TS), CrewAI (coming soon) , or other AI frameworks for intelligent tool orchestration. The LLM automatically decides which tool to use.
244
+
245
+ #### LangChain Integration (Recommended for AI Agents)
246
+
247
+ Three complete, production-ready examples in [examples/langchain](./examples/langchain):
248
+
249
+ 1. **LangChain Official API** (⭐ Most Recommended)
250
+ - Uses `createAgent()` + `tool()` from LangChain core
251
+ - Automatic schema generation and tool orchestration
252
+ - [See example](./examples/langchain/agents/langchain-agent.ts)
253
+
254
+ 2. **Decorator Pattern with LangChain**
255
+ - Uses `@tool()` decorators with OpenAI function calling
256
+ - Integrates Matimo tools into class-based LangChain agents
257
+ - [See example](./examples/langchain/agents/decorator-pattern-agent.ts)
258
+
259
+ 3. **Factory Pattern with LangChain**
260
+ - Direct `matimo.execute()` calls in LangChain agent
261
+ - Simple functional approach
262
+ - [See example](./examples/langchain/agents/factory-pattern-agent.ts)
263
+
264
+ All examples load tools from YAML once and reuse them across patterns — **single source of truth**.
265
+
266
+ **Quick Start:** See [examples/langchain/README.md](./examples/langchain/README.md) for setup instructions and running the agents.
267
+
268
+ **Use when:** You need intelligent tool selection based on natural language prompts.
269
+
270
+ ## Integration Paths
271
+
272
+ ### SDK (Available Now)
273
+
274
+ **Level 1: Pure SDK** (No framework required)
275
+
276
+ - **Factory Pattern** — Simplest API for any use case
277
+ - **Decorator Pattern** — Best for class-based code
278
+
279
+ See [SDK Usage Patterns - Level 1](#level-1-pure-sdk-patterns-no-framework-required) above for examples.
280
+
281
+ **Level 2: Framework Integration** (With AI framework)
282
+
283
+ - **LangChain Integration** — Production-ready AI agents with OpenAI GPT
284
+ - **CrewAI Integration** — Coming in Phase 2
285
+ - **Anthropic SDK Integration** — Coming in Phase 2
286
+
287
+ See [SDK Usage Patterns - Level 2](#level-2-framework-integration-patterns-with-ai-framework) above and [examples/langchain/README.md](./examples/langchain/README.md) for complete working examples.
288
+
289
+ ### Advanced (Coming Soon)
290
+
291
+ **MCP Server (Claude Integration)**
292
+
293
+ ```typescript
294
+ import { MCPServer } from 'matimo/mcp';
295
+
296
+ const server = new MCPServer({
297
+ toolsPath: './tools',
298
+ autoLoad: true,
299
+ });
300
+
301
+ await server.start();
302
+ // Claude can now discover and call all loaded tools
303
+ ```
304
+
305
+ **REST API (HTTP Endpoints)**
306
+
307
+ ```bash
308
+ # Coming soon
309
+ matimo api --port 3000
310
+
311
+ curl -X POST http://localhost:3000/tools/calculator/execute \
312
+ -d '{"operation":"add","a":5,"b":3}'
313
+ ```
314
+
315
+ **CLI (Command Line)**
316
+
317
+ ```bash
318
+ matimo list # List all tools
319
+ matimo execute calculator --operation add --a 5 --b 3
320
+ matimo validate tools/calculator.yaml # Validate tool YAML
321
+ matimo test calculator # Test tool
322
+ ```
323
+
324
+ ## Tool Definition (YAML)
325
+
326
+ Tools are defined once in YAML, executed everywhere. Each tool specifies its execution type, parameters, schema, and auth:
327
+
328
+ ```yaml
329
+ name: calculator
330
+ version: 1.0.0
331
+ description: Perform basic mathematical operations
332
+
333
+ parameters:
334
+ operation:
335
+ type: string
336
+ enum: [add, subtract, multiply, divide]
337
+ required: true
338
+ description: Mathematical operation
339
+ a:
340
+ type: number
341
+ required: true
342
+ description: First operand
343
+ b:
344
+ type: number
345
+ required: true
346
+ description: Second operand
347
+
348
+ execution:
349
+ type: command
350
+ command: ts-node
351
+ args: ['tools/calculator/calculator.ts', '{operation}', '{a}', '{b}']
352
+ timeout: 30000
353
+
354
+ output_schema:
355
+ type: object
356
+ properties:
357
+ result:
358
+ type: number
359
+ description: Calculation result
360
+
361
+ error_handling:
362
+ retry: 3
363
+ backoff_type: exponential
364
+ initial_delay_ms: 1000
365
+ ```
366
+
367
+ ### Execution Types
368
+
369
+ **Implemented:**
370
+
371
+ - **`command`** — Shell commands with parameter templating
372
+ - **`http`** — REST APIs with auth and response validation
373
+
374
+ **Coming:**
375
+
376
+ - **`script`** — Safe JavaScript/Python execution (sandboxed)
377
+ - **`docker`** — Containerized execution
378
+ - **`custom`** — External executables
379
+
380
+ ## Architecture
381
+
382
+ ```
383
+ ┌─────────────────────────────────────────────┐
384
+ │ AI Agents & Frameworks │
385
+ │ (Claude, LangChain, CrewAI, Custom) │
386
+ └──────────┬────────────────┬─────────────────┘
387
+ │ │
388
+ ┌─────▼─────┐ ┌─────▼─────┐
389
+ │ SDK │ │ MCP │
390
+ │ │ │ │
391
+ └─────┬─────┘ └──────┬────┘
392
+ │ │
393
+ └────────┬───────┘
394
+
395
+ ┌──────────▼──────────┐
396
+ │ Matimo Core │
397
+ │ - Loader │
398
+ │ - Validator │
399
+ │ - Executors │
400
+ └──────────┬──────────┘
401
+
402
+ ┌────────────┼────────────┐
403
+ │ │ │
404
+ ▼ ▼ ▼
405
+ ┌────────┐ ┌──────────┐ ┌────────┐
406
+ │Command │ │ HTTP │ │ Schema │
407
+ │Exec │ │ Exec │ │Validate│
408
+ └────────┘ └──────────┘ └────────┘
409
+ │ │ │
410
+ └────────────┼────────────┘
411
+
412
+ ┌───────────▼───────────┐
413
+ │ Tool Definitions │
414
+ │ (YAML/JSON files) │
415
+ │ calculator │
416
+ │ http-client │
417
+ │ echo-tool │
418
+ │ 1000+ coming soon │
419
+ └───────────────────────┘
420
+ ```
421
+
422
+ ## Project Structure
423
+
424
+ ```
425
+ matimo/
426
+ ├── src/
427
+ │ ├── core/ # Core types, schemas
428
+ │ ├── executors/ # Command & HTTP execution
429
+ │ ├── decorators/ # @tool decorator pattern
430
+ │ ├── mcp/ # MCP server
431
+ │ ├── cli/ # CLI interface
432
+ │ ├── errors/ # Error handling
433
+ │ └── logging/ # Structured logging
434
+ ├── tools/
435
+ │ ├── calculator/ # Calculator tool
436
+ │ ├── echo-tool/ # Echo tool
437
+ │ └── http-client/ # HTTP client tool
438
+ ├── test/ # tests
439
+ │ ├── unit/
440
+ │ └── integration/
441
+ ├── docs/
442
+ │ ├── quick-start.md
443
+ │ ├── api.md
444
+ │ ├── tool-spec.md
445
+ │ └── ...
446
+ └── package.json
447
+ ```
448
+
449
+ ## Development
450
+
451
+ ### Prerequisites
452
+
453
+ - **Node.js** 18+
454
+ - **pnpm** 8.15+
455
+ - **TypeScript** 5.9+
456
+
457
+ ### Setup
458
+
459
+ ```bash
460
+ git clone https://github.com/tallclub/matimo.git
461
+ cd matimo
462
+ pnpm install
463
+ pnpm build
464
+ ```
465
+
466
+ ### Commands
467
+
468
+ ```bash
469
+ pnpm build # Compile TypeScript
470
+ pnpm test # Run all tests
471
+ pnpm test:watch # Watch mode
472
+ pnpm test:coverage # Coverage report
473
+ pnpm lint # ESLint
474
+ pnpm format # Prettier formatting
475
+ ```
476
+
477
+ ### Testing
478
+
479
+ Matimo uses Jest with TypeScript. Tests follow TDD principles:
480
+
481
+ ```bash
482
+ pnpm test # All tests
483
+ pnpm test types.test.ts # Specific file
484
+ pnpm test:watch # Watch mode
485
+ pnpm test:coverage # Coverage (target: 80%+)
486
+ ```
487
+
488
+ **Coverage Target:** 80%+ (currently 112 tests, 11+ suites)
489
+
490
+ ## Community
491
+
492
+ We welcome contributions!
493
+
494
+ ### Getting Started
495
+
496
+ 1. **Fork** the repository
497
+ 2. **Create branch** (`git checkout -b feature/amazing-feature`)
498
+ 3. **Write tests first** (TDD approach)
499
+ 4. **Make changes**
500
+ 5. **Run tests** (`pnpm test && pnpm lint`)
501
+ 6. **Commit** with conventional commits
502
+ 7. **Push** and open PR
503
+
504
+ ### Commit Format
505
+
506
+ We enforce [Conventional Commits](https://www.conventionalcommits.org/):
507
+
508
+ ```
509
+ feat(scope): short description
510
+ fix(executor): validate parameters
511
+ docs(readme): update guide
512
+ test(decorator): add tests
513
+ ```
514
+
515
+ ### What Can You Contribute?
516
+
517
+ - Core SDK improvements
518
+ - Bug fixes
519
+ - Documentation
520
+ - Test coverage
521
+ - Tool definitions
522
+ - New executor types
523
+ - Performance optimizations
524
+ - Security
525
+ - Ideas
526
+
527
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines.
528
+
529
+ ## Documentation
530
+
531
+ - **[Quick Start](./docs/getting-started/QUICK_START.md)** — Get up and running in 5 minutes
532
+ - **[API Reference](./docs/api-reference/SDK.md)** — Complete SDK API
533
+ - **[Tool Specification](./docs/tool-development/TOOL_SPECIFICATION.md)** — How to write YAML tools
534
+ - **[Decorator Guide](./docs/tool-development/DECORATOR_GUIDE.md)** — Using @tool decorators
535
+ - **[Commit Guidelines](./docs/community/COMMIT_GUIDELINES.md)** — Conventional commits
536
+ - **[Development Standards](./docs/user-guide/DEVELOPMENT_STANDARDS.md)** — Code quality rules
537
+ - **[Architecture Overview](./docs/architecture/OVERVIEW.md)** — System design and patterns
538
+ - **[Framework Integrations](./docs/framework-integrations/LANGCHAIN.md)** — LangChain, CrewAI patterns
539
+
540
+ ## Roadmap
541
+
542
+ ### Foundation (Complete)
543
+
544
+ **Completed:**
545
+
546
+ - Tool loading (YAML/JSON)
547
+ - Command & HTTP executors
548
+ - Factory & Decorator patterns
549
+ - Tool registry & discovery
550
+ - 112+ tests (100% passing)
551
+ - Full TypeScript strict mode
552
+
553
+ ### Reliability (Coming)
554
+
555
+ **Upcoming:**
556
+
557
+ - MCP server (Claude integration)
558
+ - CLI tool management
559
+ - REST API server
560
+ - OAuth2 authentication
561
+ - Rate limiting
562
+ - Health monitoring
563
+
564
+ ### Ecosystem (Coming)
565
+
566
+ **Future:**
567
+
568
+ - Python SDK
569
+ - MCP
570
+ - Skills/Workflows (multi-tool orchestration)
571
+ - 2000+ pre-configured tools
572
+
573
+ ## Performance Benchemark Expected
574
+
575
+ - **Tool Execution:** <100ms overhead per call
576
+ - **Schema Validation:** <10ms per request
577
+ - **Memory:** ~50MB base + 1-2MB per loaded tool
578
+ - **Concurrency:** 100+ simultaneous tools
579
+
580
+ ## Security
581
+
582
+ ### Implemented
583
+
584
+ **Currently:**
585
+
586
+ - No hardcoded credentials (environment variables only)
587
+ - Input validation (Zod schemas)
588
+ - Safe error messages (no secret leaks)
589
+ - Full TypeScript strict mode
590
+
591
+ ### Coming
592
+
593
+ **Next:**
594
+
595
+ - Response validation against schemas
596
+ - Health monitoring (detect API changes)
597
+ - OAuth2 token management
598
+ - Rate limiting
599
+
600
+ **Future:**
601
+
602
+ - Sandboxed execution (Docker/Firejail)
603
+ - Encryption at rest
604
+ - Audit logging
605
+ - Zero-trust architecture
606
+
607
+ See [SECURITY.md](./SECURITY.md) for detailed guidelines.
608
+
609
+ ## License
610
+
611
+ MIT © 2026 Matimo Contributors
612
+
613
+ ## Support
614
+
615
+ - 📖 [Docs](./docs)
616
+ - 💬 [Discussions](https://github.com/tallclub/matimo/discussions)
617
+ - 🐛 [Issues](https://github.com/tallclub/matimo/issues)
618
+
619
+ ## Contributors
620
+
621
+ <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
622
+ [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-)
623
+ <!-- ALL-CONTRIBUTORS-BADGE:END -->
624
+
625
+ <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
626
+ <!-- prettier-ignore-start -->
627
+ <!-- markdownlint-disable -->
628
+ <table>
629
+ <tbody>
630
+ <tr>
631
+ <td align="center" valign="top" width="14.28%"><a href="https://github.com/tallclub"><img src="https://avatars.githubusercontent.com/u/112923179?v=4?s=100" width="50px;" alt="tallclub" style="border-radius: 50%;"/>
632
+ </tr>
633
+ </tbody>
634
+ </table>
635
+
636
+ <!-- markdownlint-restore -->
637
+ <!-- prettier-ignore-end -->
638
+
639
+ <!-- ALL-CONTRIBUTORS-LIST:END -->
640
+
641
+ Contributions are welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
642
+
643
+ ## Star History
644
+
645
+ [![Star History Chart](https://api.star-history.com/svg?repos=tallclub/matimo&type=date&legend=top-left)](https://www.star-history.com/#tallclub/matimo&type=date&legend=top-left)
646
+
647
+ ---
648
+
649
+ **Ready to integrate AI tools across your framework?**
650
+
651
+ [Get Started Now →](./docs/QUICK_START.md)