@matimo/core 0.1.0-alpha.8 → 0.1.0
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 +341 -14
- package/dist/approval/approval-handler.d.ts +5 -1
- package/dist/approval/approval-handler.d.ts.map +1 -1
- package/dist/approval/approval-handler.js +6 -0
- package/dist/approval/approval-handler.js.map +1 -1
- package/dist/core/schema.d.ts +41 -10
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +40 -4
- package/dist/core/schema.js.map +1 -1
- package/dist/core/skill-content-parser.d.ts +91 -0
- package/dist/core/skill-content-parser.d.ts.map +1 -0
- package/dist/core/skill-content-parser.js +248 -0
- package/dist/core/skill-content-parser.js.map +1 -0
- package/dist/core/skill-loader.d.ts +46 -0
- package/dist/core/skill-loader.d.ts.map +1 -0
- package/dist/core/skill-loader.js +310 -0
- package/dist/core/skill-loader.js.map +1 -0
- package/dist/core/skill-registry.d.ts +131 -0
- package/dist/core/skill-registry.d.ts.map +1 -0
- package/dist/core/skill-registry.js +316 -0
- package/dist/core/skill-registry.js.map +1 -0
- package/dist/core/tfidf-embedding.d.ts +45 -0
- package/dist/core/tfidf-embedding.d.ts.map +1 -0
- package/dist/core/tfidf-embedding.js +199 -0
- package/dist/core/tfidf-embedding.js.map +1 -0
- package/dist/core/tool-loader.d.ts +3 -1
- package/dist/core/tool-loader.d.ts.map +1 -1
- package/dist/core/tool-loader.js +33 -10
- package/dist/core/tool-loader.js.map +1 -1
- package/dist/core/types.d.ts +203 -6
- package/dist/core/types.d.ts.map +1 -1
- package/dist/encodings/parameter-encoding.d.ts +1 -1
- package/dist/encodings/parameter-encoding.d.ts.map +1 -1
- package/dist/encodings/parameter-encoding.js +9 -4
- package/dist/encodings/parameter-encoding.js.map +1 -1
- package/dist/errors/matimo-error.d.ts +11 -2
- package/dist/errors/matimo-error.d.ts.map +1 -1
- package/dist/errors/matimo-error.js +25 -1
- package/dist/errors/matimo-error.js.map +1 -1
- package/dist/executors/command-executor.d.ts +9 -2
- package/dist/executors/command-executor.d.ts.map +1 -1
- package/dist/executors/command-executor.js +29 -5
- package/dist/executors/command-executor.js.map +1 -1
- package/dist/executors/function-executor.d.ts +10 -3
- package/dist/executors/function-executor.d.ts.map +1 -1
- package/dist/executors/function-executor.js +44 -24
- package/dist/executors/function-executor.js.map +1 -1
- package/dist/executors/http-executor.d.ts +79 -4
- package/dist/executors/http-executor.d.ts.map +1 -1
- package/dist/executors/http-executor.js +232 -28
- package/dist/executors/http-executor.js.map +1 -1
- package/dist/index.d.ts +25 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/langchain.d.ts +55 -0
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +71 -4
- package/dist/integrations/langchain.js.map +1 -1
- package/dist/logging/logger.d.ts +8 -2
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/winston-logger.d.ts.map +1 -1
- package/dist/logging/winston-logger.js +9 -1
- package/dist/logging/winston-logger.js.map +1 -1
- package/dist/matimo-instance.d.ts +230 -18
- package/dist/matimo-instance.d.ts.map +1 -1
- package/dist/matimo-instance.js +739 -40
- package/dist/matimo-instance.js.map +1 -1
- package/dist/mcp/index.d.ts +18 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +24 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +141 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -0
- package/dist/mcp/mcp-server.js +754 -0
- package/dist/mcp/mcp-server.js.map +1 -0
- package/dist/mcp/secrets/aws-resolver.d.ts +41 -0
- package/dist/mcp/secrets/aws-resolver.d.ts.map +1 -0
- package/dist/mcp/secrets/aws-resolver.js +141 -0
- package/dist/mcp/secrets/aws-resolver.js.map +1 -0
- package/dist/mcp/secrets/dotenv-resolver.d.ts +23 -0
- package/dist/mcp/secrets/dotenv-resolver.d.ts.map +1 -0
- package/dist/mcp/secrets/dotenv-resolver.js +94 -0
- package/dist/mcp/secrets/dotenv-resolver.js.map +1 -0
- package/dist/mcp/secrets/env-resolver.d.ts +14 -0
- package/dist/mcp/secrets/env-resolver.d.ts.map +1 -0
- package/dist/mcp/secrets/env-resolver.js +27 -0
- package/dist/mcp/secrets/env-resolver.js.map +1 -0
- package/dist/mcp/secrets/index.d.ts +14 -0
- package/dist/mcp/secrets/index.d.ts.map +1 -0
- package/dist/mcp/secrets/index.js +13 -0
- package/dist/mcp/secrets/index.js.map +1 -0
- package/dist/mcp/secrets/resolver-chain.d.ts +34 -0
- package/dist/mcp/secrets/resolver-chain.d.ts.map +1 -0
- package/dist/mcp/secrets/resolver-chain.js +141 -0
- package/dist/mcp/secrets/resolver-chain.js.map +1 -0
- package/dist/mcp/secrets/types.d.ts +73 -0
- package/dist/mcp/secrets/types.d.ts.map +1 -0
- package/dist/mcp/secrets/types.js +8 -0
- package/dist/mcp/secrets/types.js.map +1 -0
- package/dist/mcp/secrets/vault-resolver.d.ts +43 -0
- package/dist/mcp/secrets/vault-resolver.d.ts.map +1 -0
- package/dist/mcp/secrets/vault-resolver.js +127 -0
- package/dist/mcp/secrets/vault-resolver.js.map +1 -0
- package/dist/mcp/tool-converter.d.ts +40 -0
- package/dist/mcp/tool-converter.d.ts.map +1 -0
- package/dist/mcp/tool-converter.js +185 -0
- package/dist/mcp/tool-converter.js.map +1 -0
- package/dist/policy/approval-manifest.d.ts +76 -0
- package/dist/policy/approval-manifest.d.ts.map +1 -0
- package/dist/policy/approval-manifest.js +197 -0
- package/dist/policy/approval-manifest.js.map +1 -0
- package/dist/policy/content-validator.d.ts +19 -0
- package/dist/policy/content-validator.d.ts.map +1 -0
- package/dist/policy/content-validator.js +196 -0
- package/dist/policy/content-validator.js.map +1 -0
- package/dist/policy/default-policy.d.ts +46 -0
- package/dist/policy/default-policy.d.ts.map +1 -0
- package/dist/policy/default-policy.js +241 -0
- package/dist/policy/default-policy.js.map +1 -0
- package/dist/policy/events.d.ts +71 -0
- package/dist/policy/events.d.ts.map +1 -0
- package/dist/policy/events.js +8 -0
- package/dist/policy/events.js.map +1 -0
- package/dist/policy/index.d.ts +13 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +9 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/integrity-tracker.d.ts +62 -0
- package/dist/policy/integrity-tracker.d.ts.map +1 -0
- package/dist/policy/integrity-tracker.js +79 -0
- package/dist/policy/integrity-tracker.js.map +1 -0
- package/dist/policy/policy-loader.d.ts +58 -0
- package/dist/policy/policy-loader.d.ts.map +1 -0
- package/dist/policy/policy-loader.js +156 -0
- package/dist/policy/policy-loader.js.map +1 -0
- package/dist/policy/risk-classifier.d.ts +18 -0
- package/dist/policy/risk-classifier.d.ts.map +1 -0
- package/dist/policy/risk-classifier.js +47 -0
- package/dist/policy/risk-classifier.js.map +1 -0
- package/dist/policy/types.d.ts +131 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +8 -0
- package/dist/policy/types.js.map +1 -0
- package/package.json +22 -6
- package/tools/matimo_approve_tool/definition.yaml +36 -0
- package/tools/matimo_approve_tool/matimo_approve_tool.ts +90 -0
- package/tools/matimo_create_skill/definition.yaml +46 -0
- package/tools/matimo_create_skill/matimo_create_skill.ts +75 -0
- package/tools/matimo_create_tool/definition.yaml +48 -0
- package/tools/matimo_create_tool/matimo_create_tool.ts +137 -0
- package/tools/matimo_get_skill/definition.yaml +60 -0
- package/tools/matimo_get_skill/matimo_get_skill.ts +182 -0
- package/tools/matimo_get_tool/definition.yaml +36 -0
- package/tools/matimo_get_tool/matimo_get_tool.ts +56 -0
- package/tools/matimo_get_tool_status/definition.yaml +42 -0
- package/tools/matimo_get_tool_status/matimo_get_tool_status.ts +101 -0
- package/tools/matimo_list_skills/definition.yaml +52 -0
- package/tools/matimo_list_skills/matimo_list_skills.ts +138 -0
- package/tools/matimo_list_user_tools/definition.yaml +32 -0
- package/tools/matimo_list_user_tools/matimo_list_user_tools.ts +74 -0
- package/tools/matimo_reload_tools/definition.yaml +35 -0
- package/tools/matimo_reload_tools/matimo_reload_tools.ts +29 -0
- package/tools/matimo_search_tools/definition.yaml +32 -0
- package/tools/matimo_search_tools/matimo_search_tools.ts +82 -0
- package/tools/matimo_validate_skill/definition.yaml +43 -0
- package/tools/matimo_validate_skill/matimo_validate_skill.ts +137 -0
- package/tools/matimo_validate_tool/definition.yaml +34 -0
- package/tools/matimo_validate_tool/matimo_validate_tool.ts +168 -0
- package/tools/read/read.ts +0 -2
- package/tools/shared/skill-validation.ts +335 -0
- package/LICENSE +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Secrets Manager Secret Resolver
|
|
3
|
+
*
|
|
4
|
+
* Reads secrets from AWS Secrets Manager.
|
|
5
|
+
* Lazy-imports @aws-sdk/client-secrets-manager — optional peer dependency.
|
|
6
|
+
* Uses AWS default credential chain (IAM roles, env vars, instance profiles).
|
|
7
|
+
* Implements TTL-based caching to reduce API calls.
|
|
8
|
+
*
|
|
9
|
+
* Required peer dep: @aws-sdk/client-secrets-manager >= 3.0.0
|
|
10
|
+
* Install: pnpm add @aws-sdk/client-secrets-manager
|
|
11
|
+
*/
|
|
12
|
+
import type { SecretResolver } from './types';
|
|
13
|
+
export interface AwsResolverOptions {
|
|
14
|
+
region?: string;
|
|
15
|
+
secretId?: string;
|
|
16
|
+
cacheTtlMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class AwsSecretsManagerResolver implements SecretResolver {
|
|
19
|
+
readonly name = "aws-sm";
|
|
20
|
+
private client;
|
|
21
|
+
private readonly region;
|
|
22
|
+
private readonly secretId;
|
|
23
|
+
private readonly cacheTtlMs;
|
|
24
|
+
private cache;
|
|
25
|
+
private cacheTimestamp;
|
|
26
|
+
constructor(options?: AwsResolverOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Lazy-import AWS SDK and create client.
|
|
29
|
+
* Throws a clear error if the package is not installed.
|
|
30
|
+
*/
|
|
31
|
+
private getClient;
|
|
32
|
+
/**
|
|
33
|
+
* Fetch all secrets from AWS Secrets Manager and cache them.
|
|
34
|
+
* Expects the secret value to be a JSON string of key-value pairs.
|
|
35
|
+
*/
|
|
36
|
+
private fetchSecrets;
|
|
37
|
+
resolve(key: string): Promise<string | undefined>;
|
|
38
|
+
resolveAll(keys: string[]): Promise<Record<string, string>>;
|
|
39
|
+
dispose(): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=aws-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-resolver.d.ts","sourceRoot":"","sources":["../../../src/mcp/secrets/aws-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAS9C,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,yBAA0B,YAAW,cAAc;IAC9D,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,cAAc,CAAK;gBAEf,OAAO,GAAE,kBAAuB;IAM5C;;;OAGG;YACW,SAAS;IAmCvB;;;OAGG;YACW,YAAY;IA4EpB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKjD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAW3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Secrets Manager Secret Resolver
|
|
3
|
+
*
|
|
4
|
+
* Reads secrets from AWS Secrets Manager.
|
|
5
|
+
* Lazy-imports @aws-sdk/client-secrets-manager — optional peer dependency.
|
|
6
|
+
* Uses AWS default credential chain (IAM roles, env vars, instance profiles).
|
|
7
|
+
* Implements TTL-based caching to reduce API calls.
|
|
8
|
+
*
|
|
9
|
+
* Required peer dep: @aws-sdk/client-secrets-manager >= 3.0.0
|
|
10
|
+
* Install: pnpm add @aws-sdk/client-secrets-manager
|
|
11
|
+
*/
|
|
12
|
+
import { MatimoError, ErrorCode } from '../../errors/matimo-error';
|
|
13
|
+
import { getGlobalMatimoLogger } from '../../logging';
|
|
14
|
+
/** Default cache TTL: 5 minutes */
|
|
15
|
+
const DEFAULT_CACHE_TTL_MS = 300000;
|
|
16
|
+
/** Default secret ID in AWS Secrets Manager */
|
|
17
|
+
const DEFAULT_SECRET_ID = 'matimo/credentials';
|
|
18
|
+
export class AwsSecretsManagerResolver {
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
this.name = 'aws-sm';
|
|
21
|
+
this.client = null;
|
|
22
|
+
this.cache = null;
|
|
23
|
+
this.cacheTimestamp = 0;
|
|
24
|
+
this.region = options.region ?? process.env.AWS_REGION ?? 'us-east-1';
|
|
25
|
+
this.secretId = options.secretId ?? DEFAULT_SECRET_ID;
|
|
26
|
+
this.cacheTtlMs = options.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Lazy-import AWS SDK and create client.
|
|
30
|
+
* Throws a clear error if the package is not installed.
|
|
31
|
+
*/
|
|
32
|
+
async getClient() {
|
|
33
|
+
if (this.client) {
|
|
34
|
+
return this.client;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
// @ts-ignore — optional peer dependency, may not be installed
|
|
38
|
+
const awsModule = await import('@aws-sdk/client-secrets-manager');
|
|
39
|
+
const { SecretsManagerClient } = awsModule;
|
|
40
|
+
this.client = new SecretsManagerClient({ region: this.region });
|
|
41
|
+
return this.client;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof Error &&
|
|
45
|
+
(error.message.includes('Cannot find module') ||
|
|
46
|
+
error.message.includes('MODULE_NOT_FOUND') ||
|
|
47
|
+
error.message.includes('ERR_MODULE_NOT_FOUND'))) {
|
|
48
|
+
throw new MatimoError('@aws-sdk/client-secrets-manager package is required for AWS Secrets Manager resolution. Install: pnpm add @aws-sdk/client-secrets-manager', ErrorCode.AUTH_FAILED, { resolver: this.name });
|
|
49
|
+
}
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Fetch all secrets from AWS Secrets Manager and cache them.
|
|
55
|
+
* Expects the secret value to be a JSON string of key-value pairs.
|
|
56
|
+
*/
|
|
57
|
+
async fetchSecrets() {
|
|
58
|
+
const now = Date.now();
|
|
59
|
+
// Return cache if still valid
|
|
60
|
+
if (this.cache && now - this.cacheTimestamp < this.cacheTtlMs) {
|
|
61
|
+
return this.cache;
|
|
62
|
+
}
|
|
63
|
+
const logger = getGlobalMatimoLogger();
|
|
64
|
+
logger.debug('Fetching secrets from AWS Secrets Manager', {
|
|
65
|
+
resolver: this.name,
|
|
66
|
+
secretId: this.secretId,
|
|
67
|
+
region: this.region,
|
|
68
|
+
});
|
|
69
|
+
try {
|
|
70
|
+
const client = await this.getClient();
|
|
71
|
+
// Dynamic import for the command class
|
|
72
|
+
// @ts-ignore — optional peer dependency, may not be installed
|
|
73
|
+
const awsModule = await import('@aws-sdk/client-secrets-manager');
|
|
74
|
+
const { GetSecretValueCommand } = awsModule;
|
|
75
|
+
const response = await client.send(new GetSecretValueCommand({ SecretId: this.secretId }));
|
|
76
|
+
if (!response.SecretString) {
|
|
77
|
+
logger.warn('AWS secret has no SecretString (binary secrets not supported)', {
|
|
78
|
+
resolver: this.name,
|
|
79
|
+
secretId: this.secretId,
|
|
80
|
+
});
|
|
81
|
+
this.cache = {};
|
|
82
|
+
this.cacheTimestamp = now;
|
|
83
|
+
return this.cache;
|
|
84
|
+
}
|
|
85
|
+
// Parse JSON key-value pairs
|
|
86
|
+
try {
|
|
87
|
+
this.cache = JSON.parse(response.SecretString);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
logger.warn('AWS secret is not valid JSON — treating as single value', {
|
|
91
|
+
resolver: this.name,
|
|
92
|
+
secretId: this.secretId,
|
|
93
|
+
});
|
|
94
|
+
// If not JSON, store under the secretId as a single key
|
|
95
|
+
this.cache = { [this.secretId]: response.SecretString };
|
|
96
|
+
}
|
|
97
|
+
this.cacheTimestamp = now;
|
|
98
|
+
logger.debug('AWS Secrets Manager secrets loaded', {
|
|
99
|
+
resolver: this.name,
|
|
100
|
+
keyCount: Object.keys(this.cache).length,
|
|
101
|
+
});
|
|
102
|
+
return this.cache;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
// If it's our own MatimoError (missing package), re-throw
|
|
106
|
+
if (error instanceof MatimoError) {
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
logger.warn('AWS Secrets Manager resolver unreachable — falling back to next resolver', {
|
|
110
|
+
resolver: this.name,
|
|
111
|
+
error: error instanceof Error ? error.message : String(error),
|
|
112
|
+
});
|
|
113
|
+
// Return stale cache if available, otherwise empty
|
|
114
|
+
if (this.cache) {
|
|
115
|
+
logger.warn('Using stale AWS Secrets Manager cache', { resolver: this.name });
|
|
116
|
+
return this.cache;
|
|
117
|
+
}
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async resolve(key) {
|
|
122
|
+
const secrets = await this.fetchSecrets();
|
|
123
|
+
return secrets[key];
|
|
124
|
+
}
|
|
125
|
+
async resolveAll(keys) {
|
|
126
|
+
const secrets = await this.fetchSecrets();
|
|
127
|
+
const result = {};
|
|
128
|
+
for (const key of keys) {
|
|
129
|
+
if (key in secrets) {
|
|
130
|
+
result[key] = secrets[key];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
async dispose() {
|
|
136
|
+
this.cache = null;
|
|
137
|
+
this.cacheTimestamp = 0;
|
|
138
|
+
this.client = null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=aws-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-resolver.js","sourceRoot":"","sources":["../../../src/mcp/secrets/aws-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,mCAAmC;AACnC,MAAM,oBAAoB,GAAG,MAAO,CAAC;AACrC,+CAA+C;AAC/C,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAQ/C,MAAM,OAAO,yBAAyB;IAWpC,YAAY,UAA8B,EAAE;QAVnC,SAAI,GAAG,QAAQ,CAAC;QAEjB,WAAM,GAAY,IAAI,CAAC;QAKvB,UAAK,GAAkC,IAAI,CAAC;QAC5C,mBAAc,GAAG,CAAC,CAAC;QAGzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,SAAS;QAGrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAEX,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAClE,MAAM,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;YAE3C,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,MAEX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBAC3C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;oBAC1C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EACjD,CAAC;gBACD,MAAM,IAAI,WAAW,CACnB,2IAA2I,EAC3I,SAAS,CAAC,WAAW,EACrB,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CACxB,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,YAAY;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;YACxD,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEtC,uCAAuC;YACvC,8DAA8D;YAC9D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAClE,MAAM,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;YAE5C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAE3F,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,+DAA+D,EAAE;oBAC3E,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAA2B,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;oBACrE,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;gBACH,wDAAwD;gBACxD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1D,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAE1B,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBACjD,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;aACzC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0DAA0D;YAC1D,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,0EAA0E,EAAE;gBACtF,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YAEH,mDAAmD;YACnD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9E,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAc;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dotenv Secret Resolver
|
|
3
|
+
*
|
|
4
|
+
* Reads secrets from a .env file. Does NOT mutate process.env —
|
|
5
|
+
* the resolver chain handles merging and priority.
|
|
6
|
+
* For local development convenience only.
|
|
7
|
+
*/
|
|
8
|
+
import type { SecretResolver } from './types';
|
|
9
|
+
export declare class DotenvSecretResolver implements SecretResolver {
|
|
10
|
+
readonly name = "dotenv";
|
|
11
|
+
private cache;
|
|
12
|
+
private readonly filePath;
|
|
13
|
+
constructor(filePath?: string);
|
|
14
|
+
private loadFile;
|
|
15
|
+
resolve(key: string): Promise<string | undefined>;
|
|
16
|
+
resolveAll(keys: string[]): Promise<Record<string, string>>;
|
|
17
|
+
/**
|
|
18
|
+
* Return all key-value pairs from the .env file.
|
|
19
|
+
* Used by seedProcessEnv() to eagerly populate process.env.
|
|
20
|
+
*/
|
|
21
|
+
getAllEntries(): Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=dotenv-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotenv-resolver.d.ts","sourceRoot":"","sources":["../../../src/mcp/secrets/dotenv-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA2C9C,qBAAa,oBAAqB,YAAW,cAAc;IACzD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,CAAC,EAAE,MAAM;IAI7B,OAAO,CAAC,QAAQ;IA2BV,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMjD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAWjE;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAGxC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dotenv Secret Resolver
|
|
3
|
+
*
|
|
4
|
+
* Reads secrets from a .env file. Does NOT mutate process.env —
|
|
5
|
+
* the resolver chain handles merging and priority.
|
|
6
|
+
* For local development convenience only.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync, existsSync } from 'fs';
|
|
9
|
+
import { resolve as resolvePath } from 'path';
|
|
10
|
+
import { getGlobalMatimoLogger } from '../../logging';
|
|
11
|
+
/**
|
|
12
|
+
* Parse a .env file into key-value pairs.
|
|
13
|
+
* Handles quotes, comments, and empty lines.
|
|
14
|
+
*/
|
|
15
|
+
function parseDotenv(content) {
|
|
16
|
+
const result = {};
|
|
17
|
+
const lines = content.split('\n');
|
|
18
|
+
for (const rawLine of lines) {
|
|
19
|
+
const line = rawLine.trim();
|
|
20
|
+
// Skip empty lines and comments
|
|
21
|
+
if (!line || line.startsWith('#')) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const eqIndex = line.indexOf('=');
|
|
25
|
+
if (eqIndex === -1) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const key = line.substring(0, eqIndex).trim();
|
|
29
|
+
let value = line.substring(eqIndex + 1).trim();
|
|
30
|
+
// Remove surrounding quotes (single or double)
|
|
31
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
32
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
33
|
+
value = value.slice(1, -1);
|
|
34
|
+
}
|
|
35
|
+
if (key) {
|
|
36
|
+
result[key] = value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
export class DotenvSecretResolver {
|
|
42
|
+
constructor(filePath) {
|
|
43
|
+
this.name = 'dotenv';
|
|
44
|
+
this.cache = null;
|
|
45
|
+
this.filePath = filePath ?? resolvePath(process.cwd(), '.env');
|
|
46
|
+
}
|
|
47
|
+
loadFile() {
|
|
48
|
+
if (this.cache !== null) {
|
|
49
|
+
return this.cache;
|
|
50
|
+
}
|
|
51
|
+
if (!existsSync(this.filePath)) {
|
|
52
|
+
const logger = getGlobalMatimoLogger();
|
|
53
|
+
logger.debug(`Dotenv file not found: ${this.filePath}`, { resolver: this.name });
|
|
54
|
+
this.cache = {};
|
|
55
|
+
return this.cache;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const content = readFileSync(this.filePath, 'utf-8');
|
|
59
|
+
this.cache = parseDotenv(content);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
const logger = getGlobalMatimoLogger();
|
|
63
|
+
logger.warn(`Failed to read dotenv file: ${this.filePath}`, {
|
|
64
|
+
resolver: this.name,
|
|
65
|
+
error: error instanceof Error ? error.message : String(error),
|
|
66
|
+
});
|
|
67
|
+
this.cache = {};
|
|
68
|
+
}
|
|
69
|
+
return this.cache;
|
|
70
|
+
}
|
|
71
|
+
async resolve(key) {
|
|
72
|
+
const data = this.loadFile();
|
|
73
|
+
// Check both MATIMO_ prefixed and raw key (same logic as env resolver)
|
|
74
|
+
return data[`MATIMO_${key}`] ?? data[key];
|
|
75
|
+
}
|
|
76
|
+
async resolveAll(keys) {
|
|
77
|
+
const result = {};
|
|
78
|
+
for (const key of keys) {
|
|
79
|
+
const value = await this.resolve(key);
|
|
80
|
+
if (value !== undefined) {
|
|
81
|
+
result[key] = value;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Return all key-value pairs from the .env file.
|
|
88
|
+
* Used by seedProcessEnv() to eagerly populate process.env.
|
|
89
|
+
*/
|
|
90
|
+
getAllEntries() {
|
|
91
|
+
return { ...this.loadFile() };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=dotenv-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotenv-resolver.js","sourceRoot":"","sources":["../../../src/mcp/secrets/dotenv-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Variable Secret Resolver
|
|
3
|
+
*
|
|
4
|
+
* Default resolver — reads secrets from process.env.
|
|
5
|
+
* Checks MATIMO_<KEY> first, then <KEY> directly.
|
|
6
|
+
* This matches the existing injectAuthParameters() behavior.
|
|
7
|
+
*/
|
|
8
|
+
import type { SecretResolver } from './types';
|
|
9
|
+
export declare class EnvSecretResolver implements SecretResolver {
|
|
10
|
+
readonly name = "env";
|
|
11
|
+
resolve(key: string): Promise<string | undefined>;
|
|
12
|
+
resolveAll(keys: string[]): Promise<Record<string, string>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=env-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-resolver.d.ts","sourceRoot":"","sources":["../../../src/mcp/secrets/env-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,IAAI,SAAS;IAEhB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKjD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAUlE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Variable Secret Resolver
|
|
3
|
+
*
|
|
4
|
+
* Default resolver — reads secrets from process.env.
|
|
5
|
+
* Checks MATIMO_<KEY> first, then <KEY> directly.
|
|
6
|
+
* This matches the existing injectAuthParameters() behavior.
|
|
7
|
+
*/
|
|
8
|
+
export class EnvSecretResolver {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.name = 'env';
|
|
11
|
+
}
|
|
12
|
+
async resolve(key) {
|
|
13
|
+
// Priority: MATIMO_ prefixed → raw key
|
|
14
|
+
return process.env[`MATIMO_${key}`] ?? process.env[key];
|
|
15
|
+
}
|
|
16
|
+
async resolveAll(keys) {
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const key of keys) {
|
|
19
|
+
const value = await this.resolve(key);
|
|
20
|
+
if (value !== undefined) {
|
|
21
|
+
result[key] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=env-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-resolver.js","sourceRoot":"","sources":["../../../src/mcp/secrets/env-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAO,iBAAiB;IAA9B;QACW,SAAI,GAAG,KAAK,CAAC;IAiBxB,CAAC;IAfC,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,uCAAuC;QACvC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAc;QAC7B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Resolvers — public API
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all resolver types, implementations, and the chain factory.
|
|
5
|
+
*/
|
|
6
|
+
export type { SecretResolver, SecretResolverConfig, SecretResolverChainConfig, EnvResolverConfig, DotenvResolverConfig, VaultResolverConfig, AwsSecretsManagerResolverConfig, } from './types';
|
|
7
|
+
export { EnvSecretResolver } from './env-resolver';
|
|
8
|
+
export { DotenvSecretResolver } from './dotenv-resolver';
|
|
9
|
+
export { VaultSecretResolver } from './vault-resolver';
|
|
10
|
+
export type { VaultResolverOptions } from './vault-resolver';
|
|
11
|
+
export { AwsSecretsManagerResolver } from './aws-resolver';
|
|
12
|
+
export type { AwsResolverOptions } from './aws-resolver';
|
|
13
|
+
export { SecretResolverChain, createResolverChain } from './resolver-chain';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Resolvers — public API
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all resolver types, implementations, and the chain factory.
|
|
5
|
+
*/
|
|
6
|
+
// Implementations
|
|
7
|
+
export { EnvSecretResolver } from './env-resolver';
|
|
8
|
+
export { DotenvSecretResolver } from './dotenv-resolver';
|
|
9
|
+
export { VaultSecretResolver } from './vault-resolver';
|
|
10
|
+
export { AwsSecretsManagerResolver } from './aws-resolver';
|
|
11
|
+
// Chain
|
|
12
|
+
export { SecretResolverChain, createResolverChain } from './resolver-chain';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,QAAQ;AACR,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Resolver Chain
|
|
3
|
+
*
|
|
4
|
+
* Tries resolvers in order; first non-undefined value wins per key.
|
|
5
|
+
* Includes a factory function to instantiate resolvers from config objects.
|
|
6
|
+
*/
|
|
7
|
+
import type { SecretResolver, SecretResolverChainConfig } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Chain of secret resolvers.
|
|
10
|
+
* Tries each resolver in order; first non-undefined value wins.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SecretResolverChain implements SecretResolver {
|
|
13
|
+
readonly name = "chain";
|
|
14
|
+
private readonly resolvers;
|
|
15
|
+
constructor(resolvers: SecretResolver[]);
|
|
16
|
+
resolve(key: string): Promise<string | undefined>;
|
|
17
|
+
resolveAll(keys: string[]): Promise<Record<string, string>>;
|
|
18
|
+
dispose(): Promise<void>;
|
|
19
|
+
/** Get the list of resolvers in the chain (for testing/debugging) */
|
|
20
|
+
getResolvers(): ReadonlyArray<SecretResolver>;
|
|
21
|
+
/**
|
|
22
|
+
* Eagerly load all .env entries into process.env.
|
|
23
|
+
* Only seeds keys that are not already set in process.env.
|
|
24
|
+
* This ensures server config like MATIMO_MCP_TOKEN is available
|
|
25
|
+
* before tool registration and HTTP token checks.
|
|
26
|
+
*/
|
|
27
|
+
seedProcessEnv(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a SecretResolverChain from a config object.
|
|
31
|
+
* If no config is provided, defaults to env-only resolution.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createResolverChain(config?: SecretResolverChainConfig): SecretResolverChain;
|
|
34
|
+
//# sourceMappingURL=resolver-chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver-chain.d.ts","sourceRoot":"","sources":["../../../src/mcp/secrets/resolver-chain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAwB,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAmC/F;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAEjC,SAAS,EAAE,cAAc,EAAE;IAIjC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmBjD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA4B3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,qEAAqE;IACrE,YAAY,IAAI,aAAa,CAAC,cAAc,CAAC;IAI7C;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAyBtC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,mBAAmB,CAO3F"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Resolver Chain
|
|
3
|
+
*
|
|
4
|
+
* Tries resolvers in order; first non-undefined value wins per key.
|
|
5
|
+
* Includes a factory function to instantiate resolvers from config objects.
|
|
6
|
+
*/
|
|
7
|
+
import { EnvSecretResolver } from './env-resolver';
|
|
8
|
+
import { DotenvSecretResolver } from './dotenv-resolver';
|
|
9
|
+
import { VaultSecretResolver } from './vault-resolver';
|
|
10
|
+
import { AwsSecretsManagerResolver } from './aws-resolver';
|
|
11
|
+
import { getGlobalMatimoLogger } from '../../logging';
|
|
12
|
+
/**
|
|
13
|
+
* Create a SecretResolver instance from a config object.
|
|
14
|
+
*/
|
|
15
|
+
function createResolver(config) {
|
|
16
|
+
switch (config.type) {
|
|
17
|
+
case 'env':
|
|
18
|
+
return new EnvSecretResolver();
|
|
19
|
+
case 'dotenv':
|
|
20
|
+
return new DotenvSecretResolver(config.path);
|
|
21
|
+
case 'vault':
|
|
22
|
+
return new VaultSecretResolver({
|
|
23
|
+
addr: config.addr,
|
|
24
|
+
token: config.token,
|
|
25
|
+
secretPath: config.secretPath,
|
|
26
|
+
namespace: config.namespace,
|
|
27
|
+
cacheTtlMs: config.cacheTtlMs,
|
|
28
|
+
});
|
|
29
|
+
case 'aws':
|
|
30
|
+
return new AwsSecretsManagerResolver({
|
|
31
|
+
region: config.region,
|
|
32
|
+
secretId: config.secretId,
|
|
33
|
+
cacheTtlMs: config.cacheTtlMs,
|
|
34
|
+
});
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unknown secret resolver type: ${config.type}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Chain of secret resolvers.
|
|
41
|
+
* Tries each resolver in order; first non-undefined value wins.
|
|
42
|
+
*/
|
|
43
|
+
export class SecretResolverChain {
|
|
44
|
+
constructor(resolvers) {
|
|
45
|
+
this.name = 'chain';
|
|
46
|
+
this.resolvers = resolvers;
|
|
47
|
+
}
|
|
48
|
+
async resolve(key) {
|
|
49
|
+
for (const resolver of this.resolvers) {
|
|
50
|
+
try {
|
|
51
|
+
const value = await resolver.resolve(key);
|
|
52
|
+
if (value !== undefined) {
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const logger = getGlobalMatimoLogger();
|
|
58
|
+
logger.warn(`Secret resolver '${resolver.name}' failed for key '${key}'`, {
|
|
59
|
+
resolver: resolver.name,
|
|
60
|
+
error: error instanceof Error ? error.message : String(error),
|
|
61
|
+
});
|
|
62
|
+
// Continue to next resolver
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
async resolveAll(keys) {
|
|
68
|
+
const result = {};
|
|
69
|
+
const remaining = new Set(keys);
|
|
70
|
+
for (const resolver of this.resolvers) {
|
|
71
|
+
if (remaining.size === 0)
|
|
72
|
+
break;
|
|
73
|
+
try {
|
|
74
|
+
const resolved = await resolver.resolveAll([...remaining]);
|
|
75
|
+
for (const [key, value] of Object.entries(resolved)) {
|
|
76
|
+
if (!(key in result)) {
|
|
77
|
+
result[key] = value;
|
|
78
|
+
remaining.delete(key);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
const logger = getGlobalMatimoLogger();
|
|
84
|
+
logger.warn(`Secret resolver '${resolver.name}' failed for resolveAll`, {
|
|
85
|
+
resolver: resolver.name,
|
|
86
|
+
error: error instanceof Error ? error.message : String(error),
|
|
87
|
+
});
|
|
88
|
+
// Continue to next resolver
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
async dispose() {
|
|
94
|
+
for (const resolver of this.resolvers) {
|
|
95
|
+
if (resolver.dispose) {
|
|
96
|
+
await resolver.dispose();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Get the list of resolvers in the chain (for testing/debugging) */
|
|
101
|
+
getResolvers() {
|
|
102
|
+
return this.resolvers;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Eagerly load all .env entries into process.env.
|
|
106
|
+
* Only seeds keys that are not already set in process.env.
|
|
107
|
+
* This ensures server config like MATIMO_MCP_TOKEN is available
|
|
108
|
+
* before tool registration and HTTP token checks.
|
|
109
|
+
*/
|
|
110
|
+
async seedProcessEnv() {
|
|
111
|
+
const logger = getGlobalMatimoLogger();
|
|
112
|
+
let seeded = 0;
|
|
113
|
+
for (const resolver of this.resolvers) {
|
|
114
|
+
if ('getAllEntries' in resolver &&
|
|
115
|
+
typeof resolver.getAllEntries === 'function') {
|
|
116
|
+
const entries = resolver.getAllEntries();
|
|
117
|
+
for (const [key, value] of Object.entries(entries)) {
|
|
118
|
+
if (!process.env[key]) {
|
|
119
|
+
process.env[key] = value;
|
|
120
|
+
seeded++;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (seeded > 0) {
|
|
126
|
+
logger.info(`Seeded ${seeded} env vars from .env file`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Create a SecretResolverChain from a config object.
|
|
132
|
+
* If no config is provided, defaults to env-only resolution.
|
|
133
|
+
*/
|
|
134
|
+
export function createResolverChain(config) {
|
|
135
|
+
if (!config || config.resolvers.length === 0) {
|
|
136
|
+
return new SecretResolverChain([new EnvSecretResolver()]);
|
|
137
|
+
}
|
|
138
|
+
const resolvers = config.resolvers.map(createResolver);
|
|
139
|
+
return new SecretResolverChain(resolvers);
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=resolver-chain.js.map
|