@matimo/core 0.1.0-alpha.4 → 0.1.0-alpha.6
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.
- package/README.md +86 -0
- package/dist/approval/path-approval.d.ts +80 -0
- package/dist/approval/path-approval.d.ts.map +1 -0
- package/dist/approval/path-approval.js +170 -0
- package/dist/approval/path-approval.js.map +1 -0
- package/dist/auth/oauth2-config.d.ts.map +1 -0
- package/dist/auth/oauth2-config.js.map +1 -0
- package/dist/auth/oauth2-handler.d.ts.map +1 -0
- package/dist/auth/oauth2-handler.js.map +1 -0
- package/dist/auth/oauth2-provider-loader.d.ts.map +1 -0
- package/dist/auth/oauth2-provider-loader.js.map +1 -0
- package/dist/{src/core → core}/schema.d.ts +8 -3
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/{src/core → core}/schema.js +4 -5
- package/dist/core/schema.js.map +1 -0
- package/dist/{src/core → core}/tool-loader.d.ts +16 -4
- package/dist/core/tool-loader.d.ts.map +1 -0
- package/dist/{src/core → core}/tool-loader.js +95 -50
- package/dist/core/tool-loader.js.map +1 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/{src/core → core}/types.js.map +1 -1
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/tool-decorator.d.ts.map +1 -0
- package/dist/decorators/tool-decorator.js.map +1 -0
- package/dist/encodings/parameter-encoding.d.ts.map +1 -0
- package/dist/encodings/parameter-encoding.js.map +1 -0
- package/dist/errors/matimo-error.d.ts.map +1 -0
- package/dist/errors/matimo-error.js.map +1 -0
- package/dist/executors/command-executor.d.ts.map +1 -0
- package/dist/executors/command-executor.js.map +1 -0
- package/dist/executors/function-executor.d.ts.map +1 -0
- package/dist/executors/function-executor.js.map +1 -0
- package/dist/executors/http-executor.d.ts.map +1 -0
- package/dist/executors/http-executor.js.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +2 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/matimo-instance.d.ts.map +1 -0
- package/dist/matimo-instance.js.map +1 -0
- package/package.json +1 -1
- package/tools/calculator/calculator.ts +100 -107
- package/tools/calculator/definition.yaml +2 -3
- package/tools/edit/definition.yaml +114 -0
- package/tools/edit/edit.ts +195 -0
- package/tools/execute/definition.yaml +89 -0
- package/tools/execute/execute.ts +155 -0
- package/tools/read/definition.yaml +105 -0
- package/tools/read/read.ts +128 -0
- package/tools/search/definition.yaml +147 -0
- package/tools/search/search.ts +184 -0
- package/tools/web/definition.yaml +132 -0
- package/tools/web/web.ts +134 -0
- package/dist/src/auth/oauth2-config.d.ts.map +0 -1
- package/dist/src/auth/oauth2-config.js.map +0 -1
- package/dist/src/auth/oauth2-handler.d.ts.map +0 -1
- package/dist/src/auth/oauth2-handler.js.map +0 -1
- package/dist/src/auth/oauth2-provider-loader.d.ts.map +0 -1
- package/dist/src/auth/oauth2-provider-loader.js.map +0 -1
- package/dist/src/core/schema.d.ts.map +0 -1
- package/dist/src/core/schema.js.map +0 -1
- package/dist/src/core/tool-loader.d.ts.map +0 -1
- package/dist/src/core/tool-loader.js.map +0 -1
- package/dist/src/core/tool-registry.d.ts.map +0 -1
- package/dist/src/core/tool-registry.js.map +0 -1
- package/dist/src/core/types.d.ts.map +0 -1
- package/dist/src/decorators/index.d.ts.map +0 -1
- package/dist/src/decorators/index.js.map +0 -1
- package/dist/src/decorators/tool-decorator.d.ts.map +0 -1
- package/dist/src/decorators/tool-decorator.js.map +0 -1
- package/dist/src/encodings/parameter-encoding.d.ts.map +0 -1
- package/dist/src/encodings/parameter-encoding.js.map +0 -1
- package/dist/src/errors/matimo-error.d.ts.map +0 -1
- package/dist/src/errors/matimo-error.js.map +0 -1
- package/dist/src/executors/command-executor.d.ts.map +0 -1
- package/dist/src/executors/command-executor.js.map +0 -1
- package/dist/src/executors/function-executor.d.ts.map +0 -1
- package/dist/src/executors/function-executor.js.map +0 -1
- package/dist/src/executors/http-executor.d.ts.map +0 -1
- package/dist/src/executors/http-executor.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/integrations/langchain.d.ts.map +0 -1
- package/dist/src/integrations/langchain.js.map +0 -1
- package/dist/src/matimo-instance.d.ts.map +0 -1
- package/dist/src/matimo-instance.js.map +0 -1
- package/dist/tools/calculator/calculator.d.ts +0 -26
- package/dist/tools/calculator/calculator.d.ts.map +0 -1
- package/dist/tools/calculator/calculator.js +0 -104
- package/dist/tools/calculator/calculator.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src/auth → auth}/oauth2-config.d.ts +0 -0
- /package/dist/{src/auth → auth}/oauth2-config.js +0 -0
- /package/dist/{src/auth → auth}/oauth2-handler.d.ts +0 -0
- /package/dist/{src/auth → auth}/oauth2-handler.js +0 -0
- /package/dist/{src/auth → auth}/oauth2-provider-loader.d.ts +0 -0
- /package/dist/{src/auth → auth}/oauth2-provider-loader.js +0 -0
- /package/dist/{src/core → core}/tool-registry.d.ts +0 -0
- /package/dist/{src/core → core}/tool-registry.js +0 -0
- /package/dist/{src/core → core}/types.d.ts +0 -0
- /package/dist/{src/core → core}/types.js +0 -0
- /package/dist/{src/decorators → decorators}/index.d.ts +0 -0
- /package/dist/{src/decorators → decorators}/index.js +0 -0
- /package/dist/{src/decorators → decorators}/tool-decorator.d.ts +0 -0
- /package/dist/{src/decorators → decorators}/tool-decorator.js +0 -0
- /package/dist/{src/encodings → encodings}/parameter-encoding.d.ts +0 -0
- /package/dist/{src/encodings → encodings}/parameter-encoding.js +0 -0
- /package/dist/{src/errors → errors}/matimo-error.d.ts +0 -0
- /package/dist/{src/errors → errors}/matimo-error.js +0 -0
- /package/dist/{src/executors → executors}/command-executor.d.ts +0 -0
- /package/dist/{src/executors → executors}/command-executor.js +0 -0
- /package/dist/{src/executors → executors}/function-executor.d.ts +0 -0
- /package/dist/{src/executors → executors}/function-executor.js +0 -0
- /package/dist/{src/executors → executors}/http-executor.d.ts +0 -0
- /package/dist/{src/executors → executors}/http-executor.js +0 -0
- /package/dist/{src/integrations → integrations}/langchain.d.ts +0 -0
- /package/dist/{src/integrations → integrations}/langchain.js +0 -0
- /package/dist/{src/matimo-instance.d.ts → matimo-instance.d.ts} +0 -0
- /package/dist/{src/matimo-instance.js → matimo-instance.js} +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# @matimo/core — Core SDK for Matimo
|
|
2
|
+
|
|
3
|
+
Matimo core provides the TypeScript SDK that loads, validates, and executes YAML-defined tools across frameworks.
|
|
4
|
+
|
|
5
|
+
## 📦 Installation
|
|
6
|
+
|
|
7
|
+
Install the unified package (includes core exports):
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# install unscope package which includes core and cli
|
|
11
|
+
npm install matimo
|
|
12
|
+
pnpm add matimo
|
|
13
|
+
# or install scoped core package directly
|
|
14
|
+
npm insatll @matimo/core
|
|
15
|
+
pnpm add @matimo/core
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 🔧 Purpose
|
|
19
|
+
|
|
20
|
+
`@matimo/core` contains:
|
|
21
|
+
|
|
22
|
+
- `MatimoInstance` — initialization, discovery, registry, and execution API
|
|
23
|
+
- Executors (command, http, function)
|
|
24
|
+
- Decorator utilities (`@tool`, `setGlobalMatimoInstance`)
|
|
25
|
+
- Zod-based schema validation for YAML tool definitions
|
|
26
|
+
- Error types (`MatimoError`) and structured error codes
|
|
27
|
+
|
|
28
|
+
This package is intended to be imported by applications, CLIs, and provider packages.
|
|
29
|
+
|
|
30
|
+
## 🚀 Quick Start
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { MatimoInstance } from 'matimo';
|
|
34
|
+
|
|
35
|
+
// Auto-discover installed @matimo/* tool packages
|
|
36
|
+
const matimo = await MatimoInstance.init({ autoDiscover: true });
|
|
37
|
+
|
|
38
|
+
// List tools
|
|
39
|
+
console.log('Loaded', matimo.listTools().length, 'tools');
|
|
40
|
+
|
|
41
|
+
// Execute a tool
|
|
42
|
+
await matimo.execute('calculator', { operation: 'add', a: 1, b: 2 });
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 🧩 Usage Patterns
|
|
46
|
+
|
|
47
|
+
- Factory pattern: `MatimoInstance.init()` + `matimo.execute()`
|
|
48
|
+
- Decorator pattern: use `@tool()` and `setGlobalMatimoInstance()` for class-based code
|
|
49
|
+
- LangChain integration: convert Matimo tools to LangChain function schemas
|
|
50
|
+
|
|
51
|
+
See the full SDK docs: [docs/api-reference/SDK.md](../../docs/api-reference/SDK.md)
|
|
52
|
+
|
|
53
|
+
## 🔐 Authentication
|
|
54
|
+
|
|
55
|
+
Tools declare authentication in their YAML definitions. `@matimo/core` supports:
|
|
56
|
+
|
|
57
|
+
- API keys (header/query)
|
|
58
|
+
- Bearer/basic tokens
|
|
59
|
+
- OAuth2 (provider integrations handled in provider packages)
|
|
60
|
+
|
|
61
|
+
Tokens are injected from environment variables by convention (for example `SLACK_BOT_TOKEN`, `GMAIL_ACCESS_TOKEN`).
|
|
62
|
+
|
|
63
|
+
## 🧪 Testing & Development
|
|
64
|
+
|
|
65
|
+
To run core package tests:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm --filter "@matimo/core" test
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
To build:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pnpm --filter "@matimo/core" build
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 📚 Contributing
|
|
78
|
+
|
|
79
|
+
See the project CONTRIBUTING guide and `docs/tool-development/ADDING_TOOLS.md` for adding provider packages and tools.
|
|
80
|
+
|
|
81
|
+
- Contributing: https://github.com/tallclub/matimo/blob/main/CONTRIBUTING.md
|
|
82
|
+
- Add tools: ../../docs/tool-development/ADDING_TOOLS.md
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
Part of the Matimo ecosystem — define tools once, use them everywhere.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Approval Manager
|
|
3
|
+
* Interactive approval system for file system operations (read, edit, search)
|
|
4
|
+
*
|
|
5
|
+
* Users implement approval storage (file, DB, etc.) via callback.
|
|
6
|
+
* Matimo handles the approval flow and validation.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Approval callback — user implements this to handle interactive approval
|
|
10
|
+
* Can store approvals in file, DB, memory, etc.
|
|
11
|
+
*/
|
|
12
|
+
export interface ApprovalCallback {
|
|
13
|
+
(requestPath: string, mode: 'read' | 'write' | 'search'): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Path Approval Manager
|
|
17
|
+
* Validates file paths against permanent and temporary approvals
|
|
18
|
+
*/
|
|
19
|
+
export declare class PathApprovalManager {
|
|
20
|
+
private permanentApprovals;
|
|
21
|
+
private approvalCallback;
|
|
22
|
+
private runtimeCache;
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Set the approval callback for interactive approvals
|
|
26
|
+
* Users implement this to prompt and store approvals
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* manager.setApprovalCallback(async (filePath, mode) => {
|
|
31
|
+
* const approved = await promptUser(`Allow ${mode} of ${filePath}?`);
|
|
32
|
+
* if (approved) {
|
|
33
|
+
* await fs.appendFile('.matimo-approvals', `${filePath}\n`);
|
|
34
|
+
* }
|
|
35
|
+
* return approved;
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
setApprovalCallback(callback: ApprovalCallback): void;
|
|
40
|
+
/**
|
|
41
|
+
* Pre-approve a path for the current runtime session
|
|
42
|
+
* Useful for programmatic approval (e.g., called from tests or API)
|
|
43
|
+
*/
|
|
44
|
+
approvePathForSession(filePath: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check if a path is approved for the given operation
|
|
47
|
+
* - Returns true if path matches permanent approvals
|
|
48
|
+
* - Returns true if path was approved in current runtime session
|
|
49
|
+
* - Calls approval callback if interactive mode enabled
|
|
50
|
+
* - Returns false if user denies approval
|
|
51
|
+
*
|
|
52
|
+
* @throws {MatimoError} If approval callback not set and interactive approval needed
|
|
53
|
+
*/
|
|
54
|
+
isApproved(filePath: string, mode?: 'read' | 'write' | 'search'): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Check if a path matches any permanent approvals
|
|
57
|
+
* Supports glob patterns (*, **, ?)
|
|
58
|
+
*/
|
|
59
|
+
private isPermanentlyApproved;
|
|
60
|
+
/**
|
|
61
|
+
* Clear runtime cache (e.g., at start of new session)
|
|
62
|
+
*/
|
|
63
|
+
clearRuntimeCache(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Get approval statistics for logging/audit
|
|
66
|
+
*/
|
|
67
|
+
getStats(): {
|
|
68
|
+
permanentApprovalsCount: number;
|
|
69
|
+
runtimeApprovalsCount: number;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get or create global path approval manager
|
|
74
|
+
*/
|
|
75
|
+
export declare function getPathApprovalManager(): PathApprovalManager;
|
|
76
|
+
/**
|
|
77
|
+
* Set global path approval manager (for testing or custom initialization)
|
|
78
|
+
*/
|
|
79
|
+
export declare function setPathApprovalManager(manager: PathApprovalManager): void;
|
|
80
|
+
//# sourceMappingURL=path-approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-approval.d.ts","sourceRoot":"","sources":["../../src/approval/path-approval.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2CH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,YAAY,CAAmC;;IAUvD;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIrD;;;OAGG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7C;;;;;;;;OAQG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,GAAG,OAAO,GAAG,QAAkB,GAC1C,OAAO,CAAC,OAAO,CAAC;IAuCnB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAe7B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,QAAQ,IAAI;QACV,uBAAuB,EAAE,MAAM,CAAC;QAChC,qBAAqB,EAAE,MAAM,CAAC;KAC/B;CAMF;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAEzE"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Approval Manager
|
|
3
|
+
* Interactive approval system for file system operations (read, edit, search)
|
|
4
|
+
*
|
|
5
|
+
* Users implement approval storage (file, DB, etc.) via callback.
|
|
6
|
+
* Matimo handles the approval flow and validation.
|
|
7
|
+
*/
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import { MatimoError, ErrorCode } from '../errors/matimo-error';
|
|
10
|
+
/**
|
|
11
|
+
* Simple glob pattern matcher (native implementation)
|
|
12
|
+
* Supports: * (any chars in path segment), ** (any number of segments), ? (single char)
|
|
13
|
+
*/
|
|
14
|
+
function matchesGlobPattern(filePath, pattern) {
|
|
15
|
+
// Resolve file path to absolute for comparison
|
|
16
|
+
const resolvedPath = path.resolve(filePath);
|
|
17
|
+
// For patterns: if it's absolute, use as is; if relative, resolve from cwd
|
|
18
|
+
const patternToCheck = pattern.startsWith('/') || pattern.match(/^[A-Z]:/i)
|
|
19
|
+
? pattern // Already absolute
|
|
20
|
+
: path.resolve(pattern); // Relative pattern, resolve from cwd
|
|
21
|
+
// Normalize both to forward slashes for consistent regex
|
|
22
|
+
const normalizedPath = resolvedPath.split(path.sep).join('/');
|
|
23
|
+
const normalizedPattern = patternToCheck.split(path.sep).join('/');
|
|
24
|
+
// Convert glob pattern to regex using placeholders to avoid interference
|
|
25
|
+
const regexPattern = normalizedPattern
|
|
26
|
+
.replace(/\./g, '___DOT___') // Placeholder for .
|
|
27
|
+
.replace(/\*\*\//g, '___DBL_STAR_SLASH___') // Placeholder for **/
|
|
28
|
+
.replace(/\/\*\*/g, '___SLASH_DBL_STAR___') // Placeholder for /**
|
|
29
|
+
.replace(/\*\*/g, '___DBL_STAR___') // Placeholder for **
|
|
30
|
+
.replace(/\*/g, '___STAR___') // Placeholder for *
|
|
31
|
+
.replace(/\?/g, '___QUESTION___') // Placeholder for ?
|
|
32
|
+
// Now replace placeholders with regex patterns
|
|
33
|
+
.replace(/___DBL_STAR_SLASH___/g, '(?:.+/)?') // **/ matches zero or more path segments
|
|
34
|
+
.replace(/___SLASH_DBL_STAR___/g, '(?:/.+)?') // /** matches zero or more path segments
|
|
35
|
+
.replace(/___DBL_STAR___/g, '.*') // ** matches anything
|
|
36
|
+
.replace(/___STAR___/g, '[^/]*') // * matches any chars except /
|
|
37
|
+
.replace(/___QUESTION___/g, '[^/]') // ? matches single char except /
|
|
38
|
+
.replace(/___DOT___/g, '\\.'); // . becomes literal dot
|
|
39
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
40
|
+
return regex.test(normalizedPath);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Path Approval Manager
|
|
44
|
+
* Validates file paths against permanent and temporary approvals
|
|
45
|
+
*/
|
|
46
|
+
export class PathApprovalManager {
|
|
47
|
+
constructor() {
|
|
48
|
+
this.permanentApprovals = [];
|
|
49
|
+
this.approvalCallback = null;
|
|
50
|
+
this.runtimeCache = new Map();
|
|
51
|
+
// Load permanent approvals from environment variable
|
|
52
|
+
const allowedPathsEnv = process.env.MATIMO_EDIT_ALLOWED_PATHS;
|
|
53
|
+
if (allowedPathsEnv) {
|
|
54
|
+
this.permanentApprovals = allowedPathsEnv.split(',').map((p) => p.trim());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Set the approval callback for interactive approvals
|
|
59
|
+
* Users implement this to prompt and store approvals
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* manager.setApprovalCallback(async (filePath, mode) => {
|
|
64
|
+
* const approved = await promptUser(`Allow ${mode} of ${filePath}?`);
|
|
65
|
+
* if (approved) {
|
|
66
|
+
* await fs.appendFile('.matimo-approvals', `${filePath}\n`);
|
|
67
|
+
* }
|
|
68
|
+
* return approved;
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
setApprovalCallback(callback) {
|
|
73
|
+
this.approvalCallback = callback;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Pre-approve a path for the current runtime session
|
|
77
|
+
* Useful for programmatic approval (e.g., called from tests or API)
|
|
78
|
+
*/
|
|
79
|
+
approvePathForSession(filePath) {
|
|
80
|
+
const normalized = path.resolve(filePath);
|
|
81
|
+
this.runtimeCache.set(normalized, true);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if a path is approved for the given operation
|
|
85
|
+
* - Returns true if path matches permanent approvals
|
|
86
|
+
* - Returns true if path was approved in current runtime session
|
|
87
|
+
* - Calls approval callback if interactive mode enabled
|
|
88
|
+
* - Returns false if user denies approval
|
|
89
|
+
*
|
|
90
|
+
* @throws {MatimoError} If approval callback not set and interactive approval needed
|
|
91
|
+
*/
|
|
92
|
+
async isApproved(filePath, mode = 'write') {
|
|
93
|
+
const normalized = path.resolve(filePath);
|
|
94
|
+
// Check runtime cache first
|
|
95
|
+
const cached = this.runtimeCache.get(normalized);
|
|
96
|
+
if (cached === true) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
if (cached === false) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
// Check permanent approvals
|
|
103
|
+
if (this.isPermanentlyApproved(normalized)) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
// If no callback set, deny access
|
|
107
|
+
if (!this.approvalCallback) {
|
|
108
|
+
throw new MatimoError('Path approval required but no approval callback set', ErrorCode.EXECUTION_FAILED, {
|
|
109
|
+
filePath: normalized,
|
|
110
|
+
mode,
|
|
111
|
+
hint: 'Set approval callback with manager.setApprovalCallback() or add path to MATIMO_EDIT_ALLOWED_PATHS',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
// Ask for interactive approval
|
|
115
|
+
const approved = await this.approvalCallback(normalized, mode);
|
|
116
|
+
// Cache the decision for this session
|
|
117
|
+
this.runtimeCache.set(normalized, approved);
|
|
118
|
+
return approved;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if a path matches any permanent approvals
|
|
122
|
+
* Supports glob patterns (*, **, ?)
|
|
123
|
+
*/
|
|
124
|
+
isPermanentlyApproved(filePath) {
|
|
125
|
+
const normalized = path.resolve(filePath);
|
|
126
|
+
return this.permanentApprovals.some((pattern) => {
|
|
127
|
+
// Handle both absolute paths and glob patterns
|
|
128
|
+
if (pattern.includes('*') || pattern.includes('?')) {
|
|
129
|
+
// Pattern contains wildcards, use glob matching
|
|
130
|
+
return matchesGlobPattern(normalized, pattern);
|
|
131
|
+
}
|
|
132
|
+
// Exact match or directory match (no wildcards)
|
|
133
|
+
const approvedPath = path.resolve(pattern);
|
|
134
|
+
return normalized === approvedPath || normalized.startsWith(approvedPath + path.sep);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Clear runtime cache (e.g., at start of new session)
|
|
139
|
+
*/
|
|
140
|
+
clearRuntimeCache() {
|
|
141
|
+
this.runtimeCache.clear();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get approval statistics for logging/audit
|
|
145
|
+
*/
|
|
146
|
+
getStats() {
|
|
147
|
+
return {
|
|
148
|
+
permanentApprovalsCount: this.permanentApprovals.length,
|
|
149
|
+
runtimeApprovalsCount: this.runtimeCache.size,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Singleton instance
|
|
154
|
+
let globalManager = null;
|
|
155
|
+
/**
|
|
156
|
+
* Get or create global path approval manager
|
|
157
|
+
*/
|
|
158
|
+
export function getPathApprovalManager() {
|
|
159
|
+
if (!globalManager) {
|
|
160
|
+
globalManager = new PathApprovalManager();
|
|
161
|
+
}
|
|
162
|
+
return globalManager;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Set global path approval manager (for testing or custom initialization)
|
|
166
|
+
*/
|
|
167
|
+
export function setPathApprovalManager(manager) {
|
|
168
|
+
globalManager = manager;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=path-approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-approval.js","sourceRoot":"","sources":["../../src/approval/path-approval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-config.d.ts","sourceRoot":"","sources":["../../src/auth/oauth2-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-config.js","sourceRoot":"","sources":["../../src/auth/oauth2-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;AA2EH;;;;;;;;;GASG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-handler.d.ts","sourceRoot":"","sources":["../../src/auth/oauth2-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAuB;IAE7C;;;;OAIG;gBACS,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,oBAAoB;IAoBvE;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,gBAAgB;IA2CxB;;OAEG;IACH,YAAY,IAAI,eAAe;IAI/B;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM;IAmB1D;;;;;OAKG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA2B9E;;;;;OAKG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAuC3F;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAKzC;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAGlD;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-handler.js","sourceRoot":"","sources":["../../src/auth/oauth2-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-provider-loader.d.ts","sourceRoot":"","sources":["../../src/auth/oauth2-provider-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAErF;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,WAAW,CAA8C;gBAErD,SAAS,EAAE,MAAM;IAI7B;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAqC5D;;;;OAIG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9D;;;;OAIG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAInE;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,SAAS,CAAC,0BAA0B,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAU1E;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAMzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-provider-loader.js","sourceRoot":"","sources":["../../src/auth/oauth2-provider-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -189,9 +189,14 @@ export declare const ToolDefinitionSchema: z.ZodObject<{
|
|
|
189
189
|
deprecated: z.ZodOptional<z.ZodBoolean>;
|
|
190
190
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
191
191
|
deprecation_message: z.ZodOptional<z.ZodString>;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
192
|
+
}, z.core.$strip>;
|
|
193
|
+
export type ToolDefinition = z.infer<typeof ToolDefinitionSchema> & {
|
|
194
|
+
/**
|
|
195
|
+
* Internal metadata indicating where this tool definition was loaded from.
|
|
196
|
+
* Not part of the external schema; added programmatically after validation.
|
|
197
|
+
*/
|
|
198
|
+
_definitionPath?: string;
|
|
199
|
+
};
|
|
195
200
|
export declare const OAuth2EndpointsSchema: z.ZodObject<{
|
|
196
201
|
authorizationUrl: z.ZodString;
|
|
197
202
|
tokenUrl: z.ZodString;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAGxD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAM3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiChC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,mBAAmB;;;;;;;;iBAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,kBAAkB;;;;;iBAK7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuB/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAAG;IAClE;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAKF,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;iBAanC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAkBpE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,CAsBhF"}
|
|
@@ -76,8 +76,7 @@ export const RateLimitingSchema = z.object({
|
|
|
76
76
|
quota_per_hour: z.number().optional(),
|
|
77
77
|
});
|
|
78
78
|
// Complete tool definition
|
|
79
|
-
export const ToolDefinitionSchema = z
|
|
80
|
-
.object({
|
|
79
|
+
export const ToolDefinitionSchema = z.object({
|
|
81
80
|
name: z.string(),
|
|
82
81
|
description: z.string(),
|
|
83
82
|
version: z.string(),
|
|
@@ -97,9 +96,9 @@ export const ToolDefinitionSchema = z
|
|
|
97
96
|
deprecated: z.boolean().optional(),
|
|
98
97
|
tags: z.array(z.string()).optional(),
|
|
99
98
|
deprecation_message: z.string().optional(),
|
|
100
|
-
_definitionPath: z.string().optional(),
|
|
101
|
-
})
|
|
102
|
-
|
|
99
|
+
// _definitionPath: z.string().optional(), // Internal use for tracking source file path
|
|
100
|
+
});
|
|
101
|
+
// export type ToolDefinition = z.infer<typeof ToolDefinitionSchema>;
|
|
103
102
|
// OAuth2 provider endpoints schema
|
|
104
103
|
export const OAuth2EndpointsSchema = z.object({
|
|
105
104
|
authorizationUrl: z.string().url(),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,19 @@ import { ToolDefinition } from './schema';
|
|
|
2
2
|
/**
|
|
3
3
|
* Tool Loader - Loads and validates YAML/JSON tool definitions
|
|
4
4
|
* Implements TDD pattern: test failures guide implementation
|
|
5
|
+
* Features caching for efficient discovery with thousands of tools
|
|
5
6
|
*/
|
|
6
7
|
export declare class ToolLoader {
|
|
8
|
+
/**
|
|
9
|
+
* Static cache for discovered paths - populated on first autoDiscover call
|
|
10
|
+
* Subsequent calls return cached result (O(1) instead of O(n))
|
|
11
|
+
*/
|
|
12
|
+
private static discoveredPathsCache;
|
|
13
|
+
/**
|
|
14
|
+
* Discover packages using only fs and path (no createRequire needed)
|
|
15
|
+
* Searches for tools in node_modules/@matimo/* and workspace packages
|
|
16
|
+
*/
|
|
17
|
+
private getNodeModulesPath;
|
|
7
18
|
/**
|
|
8
19
|
* Load a single tool from a YAML or JSON file
|
|
9
20
|
* @param filePath - Path to tool definition file
|
|
@@ -25,15 +36,16 @@ export declare class ToolLoader {
|
|
|
25
36
|
*/
|
|
26
37
|
loadToolFromObject(data: unknown): ToolDefinition;
|
|
27
38
|
/**
|
|
28
|
-
* Auto-discover tool packages in node_modules/@matimo/*
|
|
39
|
+
* Auto-discover tool packages in node_modules/@matimo/* and core tools
|
|
40
|
+
* Features efficient caching: first call discovers, subsequent calls return cached result
|
|
29
41
|
* @returns Array of paths to tool directories
|
|
30
42
|
*/
|
|
31
43
|
autoDiscoverPackages(): string[];
|
|
32
44
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
45
|
+
* Clear the discovery cache (useful for testing or dynamic tool loading scenarios)
|
|
46
|
+
* @internal Used for testing only
|
|
35
47
|
*/
|
|
36
|
-
|
|
48
|
+
static clearDiscoveryCache(): void;
|
|
37
49
|
/**
|
|
38
50
|
* Load tools from multiple directories
|
|
39
51
|
* @param dirPaths - Array of directory paths
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-loader.d.ts","sourceRoot":"","sources":["../../src/core/tool-loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAA0B,MAAM,UAAU,CAAC;AAGlE;;;;GAIG;AAEH,qBAAa,UAAU;IACrB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAyB;IAC5D;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAgDlD;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAkDpE;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc;IAIjD;;;;OAIG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAkFhC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,IAAI,IAAI;IAIlC;;;;OAIG;IACH,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;CAkB5E;AAED,eAAe,UAAU,CAAC"}
|