@marktoflow/core 2.0.0-alpha.12
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 +307 -0
- package/dist/bundle.d.ts +43 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +202 -0
- package/dist/bundle.js.map +1 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +27 -0
- package/dist/config.js.map +1 -0
- package/dist/core-tools.d.ts +39 -0
- package/dist/core-tools.d.ts.map +1 -0
- package/dist/core-tools.js +58 -0
- package/dist/core-tools.js.map +1 -0
- package/dist/costs.d.ts +182 -0
- package/dist/costs.d.ts.map +1 -0
- package/dist/costs.js +464 -0
- package/dist/costs.js.map +1 -0
- package/dist/credentials.d.ts +162 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +646 -0
- package/dist/credentials.js.map +1 -0
- package/dist/engine.d.ts +243 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1453 -0
- package/dist/engine.js.map +1 -0
- package/dist/env.d.ts +59 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +256 -0
- package/dist/env.js.map +1 -0
- package/dist/failover.d.ts +43 -0
- package/dist/failover.d.ts.map +1 -0
- package/dist/failover.js +53 -0
- package/dist/failover.js.map +1 -0
- package/dist/filewatcher.d.ts +32 -0
- package/dist/filewatcher.d.ts.map +1 -0
- package/dist/filewatcher.js +92 -0
- package/dist/filewatcher.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/logging.d.ts +62 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +211 -0
- package/dist/logging.js.map +1 -0
- package/dist/mcp-loader.d.ts +29 -0
- package/dist/mcp-loader.d.ts.map +1 -0
- package/dist/mcp-loader.js +60 -0
- package/dist/mcp-loader.js.map +1 -0
- package/dist/metrics.d.ts +19 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +65 -0
- package/dist/metrics.js.map +1 -0
- package/dist/models.d.ts +1686 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +333 -0
- package/dist/models.js.map +1 -0
- package/dist/parser.d.ts +40 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +532 -0
- package/dist/parser.js.map +1 -0
- package/dist/permissions.d.ts +49 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +286 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugins.d.ts +105 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +182 -0
- package/dist/plugins.js.map +1 -0
- package/dist/prompt-loader.d.ts +47 -0
- package/dist/prompt-loader.d.ts.map +1 -0
- package/dist/prompt-loader.js +268 -0
- package/dist/prompt-loader.js.map +1 -0
- package/dist/queue.d.ts +114 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +385 -0
- package/dist/queue.js.map +1 -0
- package/dist/rollback.d.ts +117 -0
- package/dist/rollback.d.ts.map +1 -0
- package/dist/rollback.js +374 -0
- package/dist/rollback.js.map +1 -0
- package/dist/routing.d.ts +144 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +457 -0
- package/dist/routing.js.map +1 -0
- package/dist/scheduler.d.ts +91 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +259 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/script-tool.d.ts +22 -0
- package/dist/script-tool.d.ts.map +1 -0
- package/dist/script-tool.js +90 -0
- package/dist/script-tool.js.map +1 -0
- package/dist/sdk-registry.d.ts +94 -0
- package/dist/sdk-registry.d.ts.map +1 -0
- package/dist/sdk-registry.js +328 -0
- package/dist/sdk-registry.js.map +1 -0
- package/dist/security.d.ts +155 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +362 -0
- package/dist/security.js.map +1 -0
- package/dist/state.d.ts +67 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +276 -0
- package/dist/state.js.map +1 -0
- package/dist/templates.d.ts +70 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +244 -0
- package/dist/templates.js.map +1 -0
- package/dist/tool-base.d.ts +54 -0
- package/dist/tool-base.d.ts.map +1 -0
- package/dist/tool-base.js +43 -0
- package/dist/tool-base.js.map +1 -0
- package/dist/tool-registry.d.ts +24 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +164 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/tools/custom-tool.d.ts +16 -0
- package/dist/tools/custom-tool.d.ts.map +1 -0
- package/dist/tools/custom-tool.js +85 -0
- package/dist/tools/custom-tool.js.map +1 -0
- package/dist/tools/mcp-tool.d.ts +16 -0
- package/dist/tools/mcp-tool.d.ts.map +1 -0
- package/dist/tools/mcp-tool.js +98 -0
- package/dist/tools/mcp-tool.js.map +1 -0
- package/dist/tools/openapi-tool.d.ts +17 -0
- package/dist/tools/openapi-tool.d.ts.map +1 -0
- package/dist/tools/openapi-tool.js +165 -0
- package/dist/tools/openapi-tool.js.map +1 -0
- package/dist/trigger-manager.d.ts +26 -0
- package/dist/trigger-manager.d.ts.map +1 -0
- package/dist/trigger-manager.js +107 -0
- package/dist/trigger-manager.js.map +1 -0
- package/dist/webhook.d.ts +95 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +261 -0
- package/dist/webhook.js.map +1 -0
- package/dist/workflow-tools.d.ts +102 -0
- package/dist/workflow-tools.d.ts.map +1 -0
- package/dist/workflow-tools.js +130 -0
- package/dist/workflow-tools.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Registry for marktoflow v2.0
|
|
3
|
+
*
|
|
4
|
+
* Dynamically loads and manages SDK instances for workflow execution.
|
|
5
|
+
* Supports lazy loading and caching of SDK instances.
|
|
6
|
+
*/
|
|
7
|
+
import { McpLoader } from './mcp-loader.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Default SDK Loader (dynamic import)
|
|
10
|
+
// ============================================================================
|
|
11
|
+
export const defaultSDKLoader = {
|
|
12
|
+
async load(packageName) {
|
|
13
|
+
try {
|
|
14
|
+
// Dynamic import of npm package
|
|
15
|
+
return await import(packageName);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
throw new Error(`Failed to load SDK '${packageName}'. ` +
|
|
19
|
+
`Make sure it's installed: npm install ${packageName}\n` +
|
|
20
|
+
`Original error: ${error}`);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// SDK Package Name Mappings
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Maps SDK names to actual npm package names.
|
|
29
|
+
* Used when the SDK name in workflows differs from the npm package name.
|
|
30
|
+
*/
|
|
31
|
+
export const packageNameMappings = {
|
|
32
|
+
'google-gmail': 'googleapis',
|
|
33
|
+
'google-sheets': 'googleapis',
|
|
34
|
+
'google-calendar': 'googleapis',
|
|
35
|
+
'google-drive': 'googleapis',
|
|
36
|
+
'google-docs': 'googleapis',
|
|
37
|
+
};
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// SDK Initializers for common services
|
|
40
|
+
// ============================================================================
|
|
41
|
+
export const defaultInitializers = {
|
|
42
|
+
'@slack/web-api': {
|
|
43
|
+
async initialize(module, config) {
|
|
44
|
+
const { WebClient } = module;
|
|
45
|
+
const token = config.auth?.['token'];
|
|
46
|
+
if (!token) {
|
|
47
|
+
throw new Error('Slack SDK requires auth.token');
|
|
48
|
+
}
|
|
49
|
+
return new WebClient(token);
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
'@octokit/rest': {
|
|
53
|
+
async initialize(module, config) {
|
|
54
|
+
const { Octokit } = module;
|
|
55
|
+
const token = config.auth?.['token'];
|
|
56
|
+
return new Octokit({ auth: token });
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
'@anthropic-ai/sdk': {
|
|
60
|
+
async initialize(module, config) {
|
|
61
|
+
const Anthropic = module
|
|
62
|
+
.default;
|
|
63
|
+
const apiKey = config.auth?.['api_key'];
|
|
64
|
+
if (!apiKey) {
|
|
65
|
+
throw new Error('Anthropic SDK requires auth.api_key');
|
|
66
|
+
}
|
|
67
|
+
return new Anthropic({ apiKey });
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
openai: {
|
|
71
|
+
async initialize(module, config) {
|
|
72
|
+
const OpenAI = module.default;
|
|
73
|
+
const apiKey = config.auth?.['api_key'];
|
|
74
|
+
if (!apiKey) {
|
|
75
|
+
throw new Error('OpenAI SDK requires auth.api_key');
|
|
76
|
+
}
|
|
77
|
+
return new OpenAI({ apiKey });
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
'jira.js': {
|
|
81
|
+
async initialize(module, config) {
|
|
82
|
+
const { Version2Client, Version3Client } = module;
|
|
83
|
+
const host = config.auth?.['host'];
|
|
84
|
+
const email = config.auth?.['email'];
|
|
85
|
+
const apiToken = config.auth?.['api_token'];
|
|
86
|
+
const apiVersion = config.auth?.['api_version'] || 'auto';
|
|
87
|
+
if (!host || !email || !apiToken) {
|
|
88
|
+
throw new Error('Jira SDK requires auth.host, auth.email, and auth.api_token');
|
|
89
|
+
}
|
|
90
|
+
// Auto-detect API version based on host
|
|
91
|
+
// Cloud (*.atlassian.net) uses v3, self-hosted uses v2
|
|
92
|
+
let useVersion3 = true;
|
|
93
|
+
if (apiVersion === 'auto') {
|
|
94
|
+
useVersion3 = host.includes('.atlassian.net');
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
useVersion3 = apiVersion === '3' || apiVersion === 'v3';
|
|
98
|
+
}
|
|
99
|
+
const authConfig = {
|
|
100
|
+
host,
|
|
101
|
+
authentication: {
|
|
102
|
+
basic: { email, apiToken },
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
return useVersion3 ? new Version3Client(authConfig) : new Version2Client(authConfig);
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// SDK Registry Implementation
|
|
111
|
+
// ============================================================================
|
|
112
|
+
export class SDKRegistry {
|
|
113
|
+
sdks = new Map();
|
|
114
|
+
loader;
|
|
115
|
+
initializers;
|
|
116
|
+
mcpLoader;
|
|
117
|
+
constructor(loader = defaultSDKLoader, initializers = defaultInitializers, mcpLoader) {
|
|
118
|
+
this.loader = loader;
|
|
119
|
+
this.initializers = new Map(Object.entries(initializers));
|
|
120
|
+
this.mcpLoader = mcpLoader || new McpLoader();
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Register tool configurations from a workflow.
|
|
124
|
+
*/
|
|
125
|
+
registerTools(tools) {
|
|
126
|
+
// Always register built-in tools (core and workflow) if not already present
|
|
127
|
+
const builtInTools = ['core', 'workflow'];
|
|
128
|
+
for (const toolName of builtInTools) {
|
|
129
|
+
if (!this.sdks.has(toolName)) {
|
|
130
|
+
this.sdks.set(toolName, {
|
|
131
|
+
name: toolName,
|
|
132
|
+
sdk: null,
|
|
133
|
+
config: { sdk: toolName }, // Minimal config for built-in tools
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Register workflow-specific tools
|
|
138
|
+
for (const [name, config] of Object.entries(tools)) {
|
|
139
|
+
if (!this.sdks.has(name)) {
|
|
140
|
+
// Store config for lazy loading
|
|
141
|
+
this.sdks.set(name, {
|
|
142
|
+
name,
|
|
143
|
+
sdk: null,
|
|
144
|
+
config,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if an SDK is registered.
|
|
151
|
+
*/
|
|
152
|
+
has(name) {
|
|
153
|
+
return this.sdks.has(name);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Load and initialize an SDK.
|
|
157
|
+
*/
|
|
158
|
+
async load(name) {
|
|
159
|
+
const instance = this.sdks.get(name);
|
|
160
|
+
if (!instance) {
|
|
161
|
+
throw new Error(`SDK '${name}' is not registered. Add it to workflow tools.`);
|
|
162
|
+
}
|
|
163
|
+
// Return cached SDK if already loaded
|
|
164
|
+
if (instance.sdk) {
|
|
165
|
+
return instance.sdk;
|
|
166
|
+
}
|
|
167
|
+
// Load the SDK module
|
|
168
|
+
// Check if there's a package name mapping (e.g., 'google-gmail' -> 'googleapis')
|
|
169
|
+
const packageName = packageNameMappings[instance.config.sdk] || instance.config.sdk;
|
|
170
|
+
let module;
|
|
171
|
+
try {
|
|
172
|
+
module = await this.loader.load(packageName);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
// If we have an initializer, ignore load error and pass null (e.g. for 'script' tool)
|
|
176
|
+
if (this.initializers.has(instance.config.sdk)) {
|
|
177
|
+
module = null;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Initialize with config
|
|
184
|
+
const initializer = this.initializers.get(instance.config.sdk);
|
|
185
|
+
if (initializer) {
|
|
186
|
+
instance.sdk = await initializer.initialize(module, instance.config);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// Check for MCP
|
|
190
|
+
if (this.isMcpModule(module)) {
|
|
191
|
+
try {
|
|
192
|
+
const client = await this.mcpLoader.connectModule(module, instance.config);
|
|
193
|
+
instance.sdk = this.createMcpProxy(client);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
throw new Error(`Failed to connect to MCP module '${instance.config.sdk}': ${error}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// No custom initializer - use generic initialization
|
|
201
|
+
instance.sdk = await this.genericInitialize(module, instance.config);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return instance.sdk;
|
|
205
|
+
}
|
|
206
|
+
isMcpModule(module) {
|
|
207
|
+
return typeof module.createMcpServer === 'function';
|
|
208
|
+
}
|
|
209
|
+
createMcpProxy(client) {
|
|
210
|
+
return new Proxy(client, {
|
|
211
|
+
get: (target, prop) => {
|
|
212
|
+
if (typeof prop === 'string') {
|
|
213
|
+
// Avoid treating the proxy as a Thenable
|
|
214
|
+
if (prop === 'then') {
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
// If property is 'close', return the close method
|
|
218
|
+
if (prop === 'close') {
|
|
219
|
+
return target.close.bind(target);
|
|
220
|
+
}
|
|
221
|
+
// Otherwise, treat as tool name
|
|
222
|
+
return async (args) => {
|
|
223
|
+
const result = await client.callTool({
|
|
224
|
+
name: prop,
|
|
225
|
+
arguments: args,
|
|
226
|
+
});
|
|
227
|
+
// If tool call fails, it throws? No, Client.callTool throws on error.
|
|
228
|
+
// Result content handling?
|
|
229
|
+
// For now return result.
|
|
230
|
+
return result;
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return Reflect.get(target, prop);
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Generic SDK initialization for unknown packages.
|
|
239
|
+
*/
|
|
240
|
+
async genericInitialize(module, config) {
|
|
241
|
+
// Try common patterns
|
|
242
|
+
const mod = module;
|
|
243
|
+
// Pattern 1: Default export is a class
|
|
244
|
+
if (typeof mod.default === 'function') {
|
|
245
|
+
const Constructor = mod.default;
|
|
246
|
+
return new Constructor(config.options || config.auth);
|
|
247
|
+
}
|
|
248
|
+
// Pattern 2: Named export 'Client'
|
|
249
|
+
if (typeof mod.Client === 'function') {
|
|
250
|
+
const Client = mod.Client;
|
|
251
|
+
return new Client(config.options || config.auth);
|
|
252
|
+
}
|
|
253
|
+
// Pattern 3: Return module as-is (for utility modules)
|
|
254
|
+
return module;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Register a custom initializer for an SDK.
|
|
258
|
+
*/
|
|
259
|
+
registerInitializer(sdkName, initializer) {
|
|
260
|
+
this.initializers.set(sdkName, initializer);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get all registered SDK names.
|
|
264
|
+
*/
|
|
265
|
+
getRegisteredNames() {
|
|
266
|
+
return Array.from(this.sdks.keys());
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Clear all cached SDK instances.
|
|
270
|
+
*/
|
|
271
|
+
clear() {
|
|
272
|
+
this.sdks.clear();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Create a step executor that invokes SDK methods.
|
|
277
|
+
*/
|
|
278
|
+
export function createSDKStepExecutor() {
|
|
279
|
+
return async (step, executionContext, sdkRegistry) => {
|
|
280
|
+
// Sub-workflows are handled by the engine, not by this executor
|
|
281
|
+
if (step.workflow) {
|
|
282
|
+
throw new Error('Sub-workflow steps should be handled by the engine, not the step executor');
|
|
283
|
+
}
|
|
284
|
+
if (!step.action) {
|
|
285
|
+
throw new Error('Step must have either "action" or "workflow" field');
|
|
286
|
+
}
|
|
287
|
+
const parts = step.action.split('.');
|
|
288
|
+
if (parts.length < 2) {
|
|
289
|
+
throw new Error(`Invalid action format: ${step.action}. Expected: sdk.method or sdk.namespace.method`);
|
|
290
|
+
}
|
|
291
|
+
const sdkName = parts[0];
|
|
292
|
+
const methodPath = parts.slice(1);
|
|
293
|
+
// Load SDK
|
|
294
|
+
const sdk = await sdkRegistry.load(sdkName);
|
|
295
|
+
// Navigate to method
|
|
296
|
+
let current = sdk;
|
|
297
|
+
let parent = sdk;
|
|
298
|
+
for (const part of methodPath) {
|
|
299
|
+
if (current === null || current === undefined) {
|
|
300
|
+
throw new Error(`Cannot find ${part} in ${step.action}`);
|
|
301
|
+
}
|
|
302
|
+
parent = current;
|
|
303
|
+
current = current[part];
|
|
304
|
+
}
|
|
305
|
+
if (typeof current !== 'function') {
|
|
306
|
+
throw new Error(`${step.action} is not a function`);
|
|
307
|
+
}
|
|
308
|
+
// For script.execute, automatically inject workflow context variables
|
|
309
|
+
let inputs = step.inputs;
|
|
310
|
+
if (sdkName === 'script' && methodPath[0] === 'execute') {
|
|
311
|
+
const ctx = executionContext;
|
|
312
|
+
if (ctx && !inputs.context) {
|
|
313
|
+
// Inject workflow variables and inputs as context for the script
|
|
314
|
+
inputs = {
|
|
315
|
+
...inputs,
|
|
316
|
+
context: {
|
|
317
|
+
...ctx.variables,
|
|
318
|
+
inputs: ctx.inputs,
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Call the method with correct 'this' context (parent object, not root SDK)
|
|
324
|
+
const method = current;
|
|
325
|
+
return method.call(parent, inputs);
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=sdk-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-registry.js","sourceRoot":"","sources":["../src/sdk-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security module for marktoflow.
|
|
3
|
+
*
|
|
4
|
+
* Provides RBAC (Role-Based Access Control), approval workflows, and audit logging.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum Permission {
|
|
7
|
+
WORKFLOW_READ = "workflow:read",
|
|
8
|
+
WORKFLOW_EXECUTE = "workflow:execute",
|
|
9
|
+
WORKFLOW_CREATE = "workflow:create",
|
|
10
|
+
WORKFLOW_EDIT = "workflow:edit",
|
|
11
|
+
WORKFLOW_DELETE = "workflow:delete",
|
|
12
|
+
TOOL_USE = "tool:use",
|
|
13
|
+
TOOL_CONFIGURE = "tool:configure",
|
|
14
|
+
USER_MANAGE = "user:manage",
|
|
15
|
+
ROLE_MANAGE = "role:manage",
|
|
16
|
+
CONFIG_MANAGE = "config:manage",
|
|
17
|
+
AUDIT_READ = "audit:read",
|
|
18
|
+
APPROVAL_REQUEST = "approval:request",
|
|
19
|
+
APPROVAL_APPROVE = "approval:approve",
|
|
20
|
+
APPROVAL_REJECT = "approval:reject"
|
|
21
|
+
}
|
|
22
|
+
export interface Role {
|
|
23
|
+
name: string;
|
|
24
|
+
permissions: Set<Permission>;
|
|
25
|
+
description?: string;
|
|
26
|
+
inheritsFrom?: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface User {
|
|
29
|
+
id: string;
|
|
30
|
+
username: string;
|
|
31
|
+
email?: string;
|
|
32
|
+
roles: string[];
|
|
33
|
+
isActive: boolean;
|
|
34
|
+
metadata?: Record<string, unknown>;
|
|
35
|
+
createdAt: Date;
|
|
36
|
+
updatedAt: Date;
|
|
37
|
+
}
|
|
38
|
+
export declare const PREDEFINED_ROLES: Record<string, Role>;
|
|
39
|
+
export declare class RBACManager {
|
|
40
|
+
private roles;
|
|
41
|
+
private users;
|
|
42
|
+
constructor(customRoles?: Role[]);
|
|
43
|
+
addRole(role: Role): void;
|
|
44
|
+
getRole(name: string): Role | undefined;
|
|
45
|
+
addUser(user: User): void;
|
|
46
|
+
getUser(userId: string): User | undefined;
|
|
47
|
+
getUserPermissions(userId: string): Set<Permission>;
|
|
48
|
+
checkPermission(userId: string, permission: Permission): boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare enum ApprovalStatus {
|
|
51
|
+
PENDING = "pending",
|
|
52
|
+
APPROVED = "approved",
|
|
53
|
+
REJECTED = "rejected",
|
|
54
|
+
EXPIRED = "expired",
|
|
55
|
+
CANCELLED = "cancelled"
|
|
56
|
+
}
|
|
57
|
+
export interface ApprovalRequest {
|
|
58
|
+
id: string;
|
|
59
|
+
workflowId: string;
|
|
60
|
+
requesterId: string;
|
|
61
|
+
title: string;
|
|
62
|
+
description?: string | undefined;
|
|
63
|
+
status: ApprovalStatus;
|
|
64
|
+
requiredApprovers: string[];
|
|
65
|
+
minApprovals: number;
|
|
66
|
+
approvals: Array<{
|
|
67
|
+
approverId: string;
|
|
68
|
+
comment?: string | undefined;
|
|
69
|
+
timestamp: Date;
|
|
70
|
+
}>;
|
|
71
|
+
rejections: Array<{
|
|
72
|
+
rejectorId: string;
|
|
73
|
+
reason?: string | undefined;
|
|
74
|
+
timestamp: Date;
|
|
75
|
+
}>;
|
|
76
|
+
metadata: Record<string, unknown>;
|
|
77
|
+
createdAt: Date;
|
|
78
|
+
expiresAt?: Date | undefined;
|
|
79
|
+
resolvedAt?: Date | undefined;
|
|
80
|
+
}
|
|
81
|
+
export interface ApprovalHandler {
|
|
82
|
+
onApprovalRequested(request: ApprovalRequest): Promise<void>;
|
|
83
|
+
onApprovalApproved(request: ApprovalRequest, approverId: string): Promise<void>;
|
|
84
|
+
onApprovalRejected(request: ApprovalRequest, rejectorId: string): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
export declare class ApprovalManager {
|
|
87
|
+
private requests;
|
|
88
|
+
private handlers;
|
|
89
|
+
private rbac?;
|
|
90
|
+
constructor(rbac?: RBACManager | undefined);
|
|
91
|
+
addHandler(handler: ApprovalHandler): void;
|
|
92
|
+
createRequest(params: {
|
|
93
|
+
requesterId: string;
|
|
94
|
+
workflowId: string;
|
|
95
|
+
title: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
requiredApprovers?: string[];
|
|
98
|
+
minApprovals?: number;
|
|
99
|
+
expiresInHours?: number;
|
|
100
|
+
metadata?: Record<string, unknown>;
|
|
101
|
+
}): Promise<ApprovalRequest>;
|
|
102
|
+
getRequest(requestId: string): ApprovalRequest | undefined;
|
|
103
|
+
approve(requestId: string, approverId: string, comment?: string): Promise<ApprovalRequest>;
|
|
104
|
+
reject(requestId: string, rejectorId: string, reason?: string): Promise<ApprovalRequest>;
|
|
105
|
+
}
|
|
106
|
+
export declare enum AuditEventType {
|
|
107
|
+
LOGIN = "auth.login",
|
|
108
|
+
WORKFLOW_EXECUTED = "workflow.executed",
|
|
109
|
+
WORKFLOW_COMPLETED = "workflow.completed",
|
|
110
|
+
WORKFLOW_FAILED = "workflow.failed",
|
|
111
|
+
PERMISSION_DENIED = "security.permission_denied"
|
|
112
|
+
}
|
|
113
|
+
export interface AuditEvent {
|
|
114
|
+
id: string;
|
|
115
|
+
eventType: AuditEventType | string;
|
|
116
|
+
userId?: string;
|
|
117
|
+
resourceType?: string;
|
|
118
|
+
resourceId?: string;
|
|
119
|
+
action?: string;
|
|
120
|
+
details: Record<string, unknown>;
|
|
121
|
+
ipAddress?: string;
|
|
122
|
+
userAgent?: string;
|
|
123
|
+
timestamp: Date;
|
|
124
|
+
success: boolean;
|
|
125
|
+
errorMessage?: string;
|
|
126
|
+
}
|
|
127
|
+
export interface AuditStore {
|
|
128
|
+
save(event: AuditEvent): Promise<void>;
|
|
129
|
+
query(filters: {
|
|
130
|
+
eventType?: string;
|
|
131
|
+
userId?: string;
|
|
132
|
+
startTime?: Date;
|
|
133
|
+
endTime?: Date;
|
|
134
|
+
limit?: number;
|
|
135
|
+
offset?: number;
|
|
136
|
+
}): Promise<AuditEvent[]>;
|
|
137
|
+
}
|
|
138
|
+
export declare class InMemoryAuditStore implements AuditStore {
|
|
139
|
+
private events;
|
|
140
|
+
save(event: AuditEvent): Promise<void>;
|
|
141
|
+
query(filters: any): Promise<AuditEvent[]>;
|
|
142
|
+
}
|
|
143
|
+
export declare class SQLiteAuditStore implements AuditStore {
|
|
144
|
+
private db;
|
|
145
|
+
constructor(dbPath?: string);
|
|
146
|
+
private init;
|
|
147
|
+
save(event: AuditEvent): Promise<void>;
|
|
148
|
+
query(filters: any): Promise<AuditEvent[]>;
|
|
149
|
+
}
|
|
150
|
+
export declare class AuditLogger {
|
|
151
|
+
private store;
|
|
152
|
+
constructor(store?: AuditStore);
|
|
153
|
+
log(event: Omit<AuditEvent, 'id' | 'timestamp'>): Promise<string>;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|