@matimo/core 0.1.0-alpha.6 → 0.1.0-alpha.7

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.
@@ -0,0 +1,23 @@
1
+ export type SQLMode = 'read' | 'write';
2
+ export interface SQLApprovalCallback {
3
+ (sql: string, mode: SQLMode): Promise<boolean>;
4
+ }
5
+ export declare class SQLApprovalManager {
6
+ private permanentApprovals;
7
+ private approvalCallback;
8
+ private runtimeCache;
9
+ constructor();
10
+ setApprovalCallback(cb: SQLApprovalCallback): void;
11
+ approveForSession(sqlSignature: string): void;
12
+ clearRuntimeCache(): void;
13
+ getStats(): {
14
+ permanentApprovalsCount: number;
15
+ runtimeApprovalsCount: number;
16
+ };
17
+ private sqlMatchesPattern;
18
+ isApproved(sql: string, mode?: SQLMode): Promise<boolean>;
19
+ }
20
+ export declare function getSQLApprovalManager(): SQLApprovalManager;
21
+ export declare function setSQLApprovalManager(m: SQLApprovalManager): void;
22
+ export default SQLApprovalManager;
23
+ //# sourceMappingURL=sql-approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-approval.d.ts","sourceRoot":"","sources":["../../src/approval/sql-approval.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvC,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,YAAY,CAAmC;;IAYvD,mBAAmB,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAIlD,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAK7C,iBAAiB,IAAI,IAAI;IAIzB,QAAQ;;;;IAOR,OAAO,CAAC,iBAAiB;IAWnB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,OAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAgCzE;AAID,wBAAgB,qBAAqB,IAAI,kBAAkB,CAG1D;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAEjE;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * SQL Approval Manager
3
+ *
4
+ * Similar API to PathApprovalManager but focused on SQL approval decisions.
5
+ * Supports permanent approvals via `MATIMO_SQL_APPROVED_PATTERNS` (comma-separated)
6
+ * and an interactive `ApprovalCallback` for runtime approval.
7
+ */
8
+ import { MatimoError, ErrorCode } from '../errors/matimo-error';
9
+ export class SQLApprovalManager {
10
+ constructor() {
11
+ this.permanentApprovals = [];
12
+ this.approvalCallback = null;
13
+ this.runtimeCache = new Map();
14
+ const env = process.env.MATIMO_SQL_APPROVED_PATTERNS;
15
+ if (env) {
16
+ this.permanentApprovals = env
17
+ .split(',')
18
+ .map((s) => s.trim())
19
+ .filter(Boolean);
20
+ }
21
+ }
22
+ setApprovalCallback(cb) {
23
+ this.approvalCallback = cb;
24
+ }
25
+ approveForSession(sqlSignature) {
26
+ const key = sqlSignature.trim();
27
+ this.runtimeCache.set(key, true);
28
+ }
29
+ clearRuntimeCache() {
30
+ this.runtimeCache.clear();
31
+ }
32
+ getStats() {
33
+ return {
34
+ permanentApprovalsCount: this.permanentApprovals.length,
35
+ runtimeApprovalsCount: this.runtimeCache.size,
36
+ };
37
+ }
38
+ sqlMatchesPattern(sql, pattern) {
39
+ try {
40
+ const re = new RegExp(pattern, 'i');
41
+ return re.test(sql);
42
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
+ }
44
+ catch (_e) {
45
+ // treat pattern as literal substring if invalid regex
46
+ return sql.toLowerCase().includes(pattern.toLowerCase());
47
+ }
48
+ }
49
+ async isApproved(sql, mode = 'write') {
50
+ const key = sql.trim();
51
+ const cached = this.runtimeCache.get(key);
52
+ if (cached === true)
53
+ return true;
54
+ if (cached === false)
55
+ return false;
56
+ // permanent approvals
57
+ if (this.permanentApprovals.some((p) => this.sqlMatchesPattern(sql, p))) {
58
+ return true;
59
+ }
60
+ // auto-approve env var (useful in CI)
61
+ if (process.env.MATIMO_SQL_AUTO_APPROVE === 'true') {
62
+ this.runtimeCache.set(key, true);
63
+ return true;
64
+ }
65
+ if (!this.approvalCallback) {
66
+ throw new MatimoError('SQL approval required but no approval callback set', ErrorCode.EXECUTION_FAILED, {
67
+ hint: 'Set SQL approval callback with getSQLApprovalManager().setApprovalCallback() or set MATIMO_SQL_APPROVED_PATTERNS / MATIMO_SQL_AUTO_APPROVE',
68
+ });
69
+ }
70
+ const approved = await this.approvalCallback(sql, mode);
71
+ this.runtimeCache.set(key, approved);
72
+ return approved;
73
+ }
74
+ }
75
+ let globalManager = null;
76
+ export function getSQLApprovalManager() {
77
+ if (!globalManager)
78
+ globalManager = new SQLApprovalManager();
79
+ return globalManager;
80
+ }
81
+ export function setSQLApprovalManager(m) {
82
+ globalManager = m;
83
+ }
84
+ export default SQLApprovalManager;
85
+ //# sourceMappingURL=sql-approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-approval.js","sourceRoot":"","sources":["../../src/approval/sql-approval.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -25,4 +25,6 @@ export { convertToolsToLangChain } from './integrations/langchain';
25
25
  export type { LangChainTool } from './integrations/langchain';
26
26
  export { PathApprovalManager, getPathApprovalManager, setPathApprovalManager, } from './approval/path-approval';
27
27
  export type { ApprovalCallback } from './approval/path-approval';
28
+ export { SQLApprovalManager, getSQLApprovalManager, setSQLApprovalManager, } from './approval/sql-approval';
29
+ export type { SQLApprovalCallback } from './approval/sql-approval';
28
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAG9E,OAAO,EACL,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAG9E,OAAO,EACL,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -25,4 +25,6 @@ export { OAuth2Handler } from './auth/oauth2-handler';
25
25
  export { convertToolsToLangChain } from './integrations/langchain';
26
26
  // Path Approval System
27
27
  export { PathApprovalManager, getPathApprovalManager, setPathApprovalManager, } from './approval/path-approval';
28
+ // SQL Approval System
29
+ export { SQLApprovalManager, getSQLApprovalManager, setSQLApprovalManager, } from './approval/sql-approval';
28
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,qBAAqB;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,aAAa;AACb,OAAO,EACL,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAwB;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,qBAAqB;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,aAAa;AACb,OAAO,EACL,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wBAAwB;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,uBAAuB;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAGlC,sBAAsB;AACtB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matimo/core",
3
- "version": "0.1.0-alpha.6",
3
+ "version": "0.1.0-alpha.7",
4
4
  "description": "Core SDK for Matimo: Framework-agnostic YAML-driven tool ecosystem for AI agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",