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
@@ -0,0 +1,415 @@
1
+ # TypeScript Type Definitions Reference
2
+
3
+ Complete type definitions for the Matimo TypeScript SDK.
4
+
5
+ ## Core Types
6
+
7
+ ### ToolDefinition
8
+
9
+ Complete tool definition structure.
10
+
11
+ ```typescript
12
+ interface ToolDefinition {
13
+ name: string;
14
+ description: string;
15
+ version: string;
16
+
17
+ parameters?: Record<string, Parameter>;
18
+ execution: ExecutionConfig;
19
+ output_schema?: OutputSchema;
20
+ authentication?: AuthConfig;
21
+ error_handling?: ErrorHandling;
22
+
23
+ tags?: string[];
24
+ author?: string;
25
+ license?: string;
26
+ }
27
+ ```
28
+
29
+ **Example:**
30
+ ```typescript
31
+ const tool: ToolDefinition = {
32
+ name: 'calculator',
33
+ description: 'Perform basic math operations',
34
+ version: '1.0.0',
35
+ parameters: {
36
+ operation: {
37
+ type: 'string',
38
+ enum: ['add', 'subtract', 'multiply', 'divide'],
39
+ required: true
40
+ },
41
+ a: { type: 'number', required: true },
42
+ b: { type: 'number', required: true }
43
+ },
44
+ execution: {
45
+ type: 'command',
46
+ command: 'node calculator.js',
47
+ args: ['--op', '{operation}', '{a}', '{b}']
48
+ }
49
+ };
50
+ ```
51
+
52
+ ---
53
+
54
+ ### Parameter
55
+
56
+ Define a single tool parameter.
57
+
58
+ ```typescript
59
+ interface Parameter {
60
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
61
+ description?: string;
62
+ required?: boolean;
63
+ default?: unknown;
64
+
65
+ // String constraints
66
+ minLength?: number;
67
+ maxLength?: number;
68
+ pattern?: string;
69
+
70
+ // Number constraints
71
+ minimum?: number;
72
+ maximum?: number;
73
+
74
+ // Enum constraint
75
+ enum?: unknown[];
76
+
77
+ // Array/Object items
78
+ items?: Parameter;
79
+ properties?: Record<string, Parameter>;
80
+ }
81
+ ```
82
+
83
+ **Examples:**
84
+
85
+ ```typescript
86
+ // String parameter with enum
87
+ const operation: Parameter = {
88
+ type: 'string',
89
+ enum: ['add', 'subtract', 'multiply', 'divide'],
90
+ required: true
91
+ };
92
+
93
+ // Number with range
94
+ const count: Parameter = {
95
+ type: 'number',
96
+ minimum: 1,
97
+ maximum: 100,
98
+ required: true
99
+ };
100
+
101
+ // Optional string with pattern
102
+ const email: Parameter = {
103
+ type: 'string',
104
+ pattern: '^[^@]+@[^@]+\\.[^@]+$',
105
+ required: false
106
+ };
107
+
108
+ // Array parameter
109
+ const tags: Parameter = {
110
+ type: 'array',
111
+ items: { type: 'string' },
112
+ required: false
113
+ };
114
+ ```
115
+
116
+ ---
117
+
118
+ ### ExecutionConfig
119
+
120
+ Defines how a tool executes.
121
+
122
+ ```typescript
123
+ type ExecutionConfig = CommandExecution | HttpExecution;
124
+
125
+ interface CommandExecution {
126
+ type: 'command';
127
+ command: string;
128
+ args?: string[];
129
+ working_directory?: string;
130
+ timeout_ms?: number;
131
+ env?: Record<string, string>;
132
+ }
133
+
134
+ interface HttpExecution {
135
+ type: 'http';
136
+ url: string;
137
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
138
+ headers?: Record<string, string>;
139
+ query_params?: Record<string, string>;
140
+ request_body?: unknown;
141
+ timeout_ms?: number;
142
+ parameter_encoding?: ParameterEncoding;
143
+ }
144
+ ```
145
+
146
+ **Examples:**
147
+
148
+ ```typescript
149
+ // Command execution
150
+ const cmdExecution: CommandExecution = {
151
+ type: 'command',
152
+ command: 'python script.py',
153
+ args: ['--param', '{param}'],
154
+ timeout_ms: 30000
155
+ };
156
+
157
+ // HTTP execution
158
+ const httpExecution: HttpExecution = {
159
+ type: 'http',
160
+ url: 'https://api.gmail.com/v1/users/me/messages/send',
161
+ method: 'POST',
162
+ headers: {
163
+ Authorization: 'Bearer {GMAIL_ACCESS_TOKEN}',
164
+ 'Content-Type': 'application/json'
165
+ },
166
+ request_body: {
167
+ raw: '{emailData}'
168
+ }
169
+ };
170
+ ```
171
+
172
+ ---
173
+
174
+ ### AuthConfig
175
+
176
+ Authentication configuration.
177
+
178
+ ```typescript
179
+ interface AuthConfig {
180
+ type: 'oauth2' | 'api_key' | 'basic' | 'bearer';
181
+ provider?: string;
182
+ required_scopes?: string[];
183
+ location?: 'header' | 'query' | 'body';
184
+ parameter_name?: string;
185
+ }
186
+ ```
187
+
188
+ **Examples:**
189
+
190
+ ```typescript
191
+ // OAuth2
192
+ const oauth2: AuthConfig = {
193
+ type: 'oauth2',
194
+ provider: 'google',
195
+ required_scopes: [
196
+ 'https://www.googleapis.com/auth/gmail.send'
197
+ ]
198
+ };
199
+
200
+ // API Key
201
+ const apiKey: AuthConfig = {
202
+ type: 'api_key',
203
+ location: 'header',
204
+ parameter_name: 'X-API-Key'
205
+ };
206
+
207
+ // Bearer token
208
+ const bearer: AuthConfig = {
209
+ type: 'bearer',
210
+ location: 'header',
211
+ parameter_name: 'Authorization'
212
+ };
213
+ ```
214
+
215
+ ---
216
+
217
+ ### OutputSchema
218
+
219
+ Defines tool output structure.
220
+
221
+ ```typescript
222
+ interface OutputSchema {
223
+ type: 'object' | 'string' | 'number' | 'array' | 'boolean';
224
+ description?: string;
225
+ properties?: Record<string, OutputSchema>;
226
+ items?: OutputSchema;
227
+ required?: string[];
228
+ }
229
+ ```
230
+
231
+ **Example:**
232
+
233
+ ```typescript
234
+ const schema: OutputSchema = {
235
+ type: 'object',
236
+ properties: {
237
+ result: { type: 'number' },
238
+ calculation: { type: 'string' },
239
+ timestamp: { type: 'string' }
240
+ },
241
+ required: ['result']
242
+ };
243
+ ```
244
+
245
+ ---
246
+
247
+ ### ErrorHandling
248
+
249
+ Error recovery configuration.
250
+
251
+ ```typescript
252
+ interface ErrorHandling {
253
+ retry?: number;
254
+ backoff_type?: 'linear' | 'exponential';
255
+ initial_delay_ms?: number;
256
+ max_delay_ms?: number;
257
+ }
258
+ ```
259
+
260
+ **Example:**
261
+
262
+ ```typescript
263
+ const errorHandling: ErrorHandling = {
264
+ retry: 3,
265
+ backoff_type: 'exponential',
266
+ initial_delay_ms: 1000,
267
+ max_delay_ms: 30000
268
+ };
269
+ ```
270
+
271
+ ---
272
+
273
+ ## Runtime Types
274
+
275
+ ### MatimoInstance
276
+
277
+ Main SDK class for tool execution.
278
+
279
+ ```typescript
280
+ class MatimoInstance {
281
+ // List all tools
282
+ listTools(): ToolDefinition[];
283
+
284
+ // Get specific tool
285
+ getTool(name: string): ToolDefinition | null;
286
+
287
+ // Find tools by tag
288
+ getToolsByTag(tag: string): ToolDefinition[];
289
+
290
+ // Search tools
291
+ searchTools(query: string): ToolDefinition[];
292
+
293
+ // Execute tool
294
+ execute(
295
+ toolName: string,
296
+ params: Record<string, unknown>
297
+ ): Promise<unknown>;
298
+ }
299
+ ```
300
+
301
+ ---
302
+
303
+ ### MatimoError
304
+
305
+ Error returned by SDK.
306
+
307
+ ```typescript
308
+ interface MatimoError extends Error {
309
+ code: string;
310
+ message: string;
311
+ details?: Record<string, unknown>;
312
+ statusCode?: number;
313
+ }
314
+ ```
315
+
316
+ **Example:**
317
+
318
+ ```typescript
319
+ try {
320
+ await m.execute('unknown-tool', {});
321
+ } catch (error) {
322
+ const matimoError = error as MatimoError;
323
+ console.log(matimoError.code); // 'TOOL_NOT_FOUND'
324
+ console.log(matimoError.message); // 'Tool not found'
325
+ console.log(matimoError.details); // { toolName: 'unknown-tool' }
326
+ }
327
+ ```
328
+
329
+ ---
330
+
331
+ ## Validation Types
332
+
333
+ ### ValidationError
334
+
335
+ Schema validation error.
336
+
337
+ ```typescript
338
+ interface ValidationError {
339
+ field: string;
340
+ message: string;
341
+ expected?: string;
342
+ actual?: string;
343
+ }
344
+ ```
345
+
346
+ ---
347
+
348
+ ## Complete Type Examples
349
+
350
+ ### Using TypeScript Types in Code
351
+
352
+ ```typescript
353
+ import {
354
+ ToolDefinition,
355
+ Parameter,
356
+ ExecutionConfig,
357
+ AuthConfig,
358
+ OutputSchema,
359
+ ErrorHandling,
360
+ MatimoInstance,
361
+ MatimoError
362
+ } from 'matimo';
363
+
364
+ // Load and type tool
365
+ const tool: ToolDefinition = matimo.getTool('calculator')!;
366
+
367
+ // Type parameters
368
+ const params: Record<string, unknown> = {
369
+ operation: 'add',
370
+ a: 5,
371
+ b: 3
372
+ };
373
+
374
+ // Execute with types
375
+ try {
376
+ const result = await matimo.execute('calculator', params);
377
+ console.log(result);
378
+ } catch (error) {
379
+ const matimoError = error as MatimoError;
380
+ if (matimoError.code === 'INVALID_PARAMETERS') {
381
+ console.error('Bad params:', matimoError.details);
382
+ }
383
+ }
384
+ ```
385
+
386
+ ---
387
+
388
+ ### TypeScript Strict Mode
389
+
390
+ All Matimo types are **strict**. Never use `any`:
391
+
392
+ ```typescript
393
+ // ❌ DON'T
394
+ const params: any = { ... };
395
+
396
+ // ✅ DO
397
+ const params: Record<string, unknown> = { ... };
398
+
399
+ // ✅ BETTER (fully typed)
400
+ interface CalculatorParams {
401
+ operation: 'add' | 'subtract' | 'multiply' | 'divide';
402
+ a: number;
403
+ b: number;
404
+ }
405
+ const params: CalculatorParams = { ... };
406
+ ```
407
+
408
+ ---
409
+
410
+ ## Next Steps
411
+
412
+ - **Error Codes**: [Error Reference](./ERRORS.md)
413
+ - **API Methods**: [SDK API Reference](./SDK.md)
414
+ - **Tool Definition**: [YAML Tool Specification](../tool-development/YAML_TOOLS.md)
415
+