@defai.digital/cli 13.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/LICENSE +214 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +11 -0
- package/dist/bin.js.map +1 -0
- package/dist/bootstrap.d.ts +144 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +315 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ability.d.ts +17 -0
- package/dist/commands/ability.d.ts.map +1 -0
- package/dist/commands/ability.js +286 -0
- package/dist/commands/ability.js.map +1 -0
- package/dist/commands/agent.d.ts +18 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +361 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/call.d.ts +15 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +503 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/cleanup.d.ts +18 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +300 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/config.d.ts +16 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +513 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/discuss.d.ts +16 -0
- package/dist/commands/discuss.d.ts.map +1 -0
- package/dist/commands/discuss.js +700 -0
- package/dist/commands/discuss.js.map +1 -0
- package/dist/commands/doctor.d.ts +48 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +356 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/guard.d.ts +12 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +225 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/help.d.ts +11 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +180 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/history.d.ts +19 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +200 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/index.d.ts +23 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +26 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/iterate.d.ts +16 -0
- package/dist/commands/iterate.d.ts.map +1 -0
- package/dist/commands/iterate.js +72 -0
- package/dist/commands/iterate.js.map +1 -0
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +62 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +57 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/resume.d.ts +18 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +208 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/review.d.ts +13 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +450 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/run.d.ts +6 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +158 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/scaffold.d.ts +20 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +924 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/session.d.ts +20 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +504 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +14 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +762 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +17 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +227 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/trace.d.ts +6 -0
- package/dist/commands/trace.d.ts.map +1 -0
- package/dist/commands/trace.js +204 -0
- package/dist/commands/trace.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +296 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +14 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +288 -0
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +91 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/dangerous-op-guard.d.ts +33 -0
- package/dist/utils/dangerous-op-guard.d.ts.map +1 -0
- package/dist/utils/dangerous-op-guard.js +112 -0
- package/dist/utils/dangerous-op-guard.js.map +1 -0
- package/dist/utils/database.d.ts +85 -0
- package/dist/utils/database.d.ts.map +1 -0
- package/dist/utils/database.js +184 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/provider-factory.d.ts +31 -0
- package/dist/utils/provider-factory.d.ts.map +1 -0
- package/dist/utils/provider-factory.js +109 -0
- package/dist/utils/provider-factory.js.map +1 -0
- package/dist/utils/storage-instances.d.ts +19 -0
- package/dist/utils/storage-instances.d.ts.map +1 -0
- package/dist/utils/storage-instances.js +20 -0
- package/dist/utils/storage-instances.js.map +1 -0
- package/package.json +77 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI configuration options
|
|
3
|
+
*/
|
|
4
|
+
export interface CLIConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Path to workflow files directory
|
|
7
|
+
*/
|
|
8
|
+
workflowDir: string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Enable verbose output
|
|
11
|
+
*/
|
|
12
|
+
verbose: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Output format
|
|
15
|
+
*/
|
|
16
|
+
format: 'text' | 'json';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parsed command from CLI arguments
|
|
20
|
+
*/
|
|
21
|
+
export interface ParsedCommand {
|
|
22
|
+
command: string;
|
|
23
|
+
args: string[];
|
|
24
|
+
options: CLIOptions;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* CLI options parsed from arguments
|
|
28
|
+
*/
|
|
29
|
+
export interface CLIOptions {
|
|
30
|
+
help: boolean;
|
|
31
|
+
version: boolean;
|
|
32
|
+
verbose: boolean;
|
|
33
|
+
format: 'text' | 'json';
|
|
34
|
+
workflowDir: string | undefined;
|
|
35
|
+
workflowId: string | undefined;
|
|
36
|
+
traceId: string | undefined;
|
|
37
|
+
limit: number | undefined;
|
|
38
|
+
input: string | undefined;
|
|
39
|
+
iterate: boolean;
|
|
40
|
+
maxIterations: number | undefined;
|
|
41
|
+
maxTime: string | undefined;
|
|
42
|
+
noContext: boolean;
|
|
43
|
+
category: string | undefined;
|
|
44
|
+
tags: string[] | undefined;
|
|
45
|
+
agent: string | undefined;
|
|
46
|
+
task: string | undefined;
|
|
47
|
+
core: string | undefined;
|
|
48
|
+
maxTokens: number | undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Command handler result
|
|
52
|
+
*/
|
|
53
|
+
export interface CommandResult {
|
|
54
|
+
success: boolean;
|
|
55
|
+
message: string | undefined;
|
|
56
|
+
data: unknown;
|
|
57
|
+
exitCode: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Command handler function
|
|
61
|
+
*/
|
|
62
|
+
export type CommandHandler = (args: string[], options: CLIOptions) => Promise<CommandResult>;
|
|
63
|
+
/**
|
|
64
|
+
* Available CLI commands
|
|
65
|
+
*/
|
|
66
|
+
export declare const CLI_COMMANDS: {
|
|
67
|
+
readonly RUN: "run";
|
|
68
|
+
readonly LIST: "list";
|
|
69
|
+
readonly TRACE: "trace";
|
|
70
|
+
readonly DOCTOR: "doctor";
|
|
71
|
+
readonly GUARD: "guard";
|
|
72
|
+
readonly CALL: "call";
|
|
73
|
+
readonly AGENT: "agent";
|
|
74
|
+
readonly ABILITY: "ability";
|
|
75
|
+
readonly SESSION: "session";
|
|
76
|
+
readonly SETUP: "setup";
|
|
77
|
+
readonly CONFIG: "config";
|
|
78
|
+
readonly REVIEW: "review";
|
|
79
|
+
readonly SCAFFOLD: "scaffold";
|
|
80
|
+
readonly DISCUSS: "discuss";
|
|
81
|
+
readonly HELP: "help";
|
|
82
|
+
readonly VERSION: "version";
|
|
83
|
+
readonly RESUME: "resume";
|
|
84
|
+
readonly HISTORY: "history";
|
|
85
|
+
readonly STATUS: "status";
|
|
86
|
+
readonly CLEANUP: "cleanup";
|
|
87
|
+
readonly ITERATE: "iterate";
|
|
88
|
+
readonly UPDATE: "update";
|
|
89
|
+
};
|
|
90
|
+
export type CLICommand = (typeof CLI_COMMANDS)[keyof typeof CLI_COMMANDS];
|
|
91
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IAEnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,UAAU,KAChB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;CAwBf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Available CLI commands
|
|
3
|
+
*/
|
|
4
|
+
export const CLI_COMMANDS = {
|
|
5
|
+
RUN: 'run',
|
|
6
|
+
LIST: 'list',
|
|
7
|
+
TRACE: 'trace',
|
|
8
|
+
DOCTOR: 'doctor',
|
|
9
|
+
GUARD: 'guard',
|
|
10
|
+
CALL: 'call',
|
|
11
|
+
AGENT: 'agent',
|
|
12
|
+
ABILITY: 'ability',
|
|
13
|
+
SESSION: 'session',
|
|
14
|
+
SETUP: 'setup',
|
|
15
|
+
CONFIG: 'config',
|
|
16
|
+
REVIEW: 'review',
|
|
17
|
+
SCAFFOLD: 'scaffold',
|
|
18
|
+
DISCUSS: 'discuss',
|
|
19
|
+
HELP: 'help',
|
|
20
|
+
VERSION: 'version',
|
|
21
|
+
// High-value additions
|
|
22
|
+
RESUME: 'resume',
|
|
23
|
+
HISTORY: 'history',
|
|
24
|
+
STATUS: 'status',
|
|
25
|
+
CLEANUP: 'cleanup',
|
|
26
|
+
ITERATE: 'iterate',
|
|
27
|
+
UPDATE: 'update',
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA0EA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,uBAAuB;IACvB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACR,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dangerous Operation Guard
|
|
3
|
+
*
|
|
4
|
+
* Provides confirmation gates for potentially destructive operations.
|
|
5
|
+
* Prevents accidental data loss by requiring explicit confirmation.
|
|
6
|
+
*/
|
|
7
|
+
import { DANGEROUS_OPERATIONS, type DangerousOpCheckResult, type DangerousOperation, CLIErrorCodes } from '@defai.digital/contracts';
|
|
8
|
+
export interface DangerousOpOptions {
|
|
9
|
+
/** Skip confirmation (--force flag) */
|
|
10
|
+
force?: boolean;
|
|
11
|
+
/** Accept all prompts (--yes flag) */
|
|
12
|
+
yes?: boolean;
|
|
13
|
+
/** Non-interactive mode */
|
|
14
|
+
noPrompt?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if a dangerous operation should proceed
|
|
18
|
+
*
|
|
19
|
+
* @param operationId - The operation identifier (e.g., 'cleanup.force')
|
|
20
|
+
* @param options - Options that may bypass confirmation
|
|
21
|
+
* @returns Result indicating if the operation is allowed
|
|
22
|
+
*/
|
|
23
|
+
export declare function checkDangerousOp(operationId: string, options: DangerousOpOptions): Promise<DangerousOpCheckResult>;
|
|
24
|
+
/**
|
|
25
|
+
* List all dangerous operations
|
|
26
|
+
*/
|
|
27
|
+
export declare function listDangerousOperations(): DangerousOperation[];
|
|
28
|
+
/**
|
|
29
|
+
* Check if an operation ID corresponds to a dangerous operation
|
|
30
|
+
*/
|
|
31
|
+
export declare function isDangerousOp(operationId: string): boolean;
|
|
32
|
+
export { DANGEROUS_OPERATIONS, CLIErrorCodes };
|
|
33
|
+
//# sourceMappingURL=dangerous-op-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dangerous-op-guard.d.ts","sourceRoot":"","sources":["../../src/utils/dangerous-op-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,oBAAoB,EAEpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CA8BjC;AAkED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,EAAE,CAE9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dangerous Operation Guard
|
|
3
|
+
*
|
|
4
|
+
* Provides confirmation gates for potentially destructive operations.
|
|
5
|
+
* Prevents accidental data loss by requiring explicit confirmation.
|
|
6
|
+
*/
|
|
7
|
+
import * as readline from 'readline';
|
|
8
|
+
import { DANGEROUS_OPERATIONS, getDangerousOperation, CLIErrorCodes, } from '@defai.digital/contracts';
|
|
9
|
+
/**
|
|
10
|
+
* Check if a dangerous operation should proceed
|
|
11
|
+
*
|
|
12
|
+
* @param operationId - The operation identifier (e.g., 'cleanup.force')
|
|
13
|
+
* @param options - Options that may bypass confirmation
|
|
14
|
+
* @returns Result indicating if the operation is allowed
|
|
15
|
+
*/
|
|
16
|
+
export async function checkDangerousOp(operationId, options) {
|
|
17
|
+
const op = getDangerousOperation(operationId);
|
|
18
|
+
// Not a dangerous operation - allow
|
|
19
|
+
if (!op) {
|
|
20
|
+
return { allowed: true };
|
|
21
|
+
}
|
|
22
|
+
// Skip if --force or --yes
|
|
23
|
+
if (options.force || options.yes) {
|
|
24
|
+
console.warn(`Warning: Bypassing confirmation for ${op.operation}`);
|
|
25
|
+
return {
|
|
26
|
+
allowed: true,
|
|
27
|
+
operation: op.operation,
|
|
28
|
+
impact: op.impact,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// Check if we're in non-interactive mode
|
|
32
|
+
if (options.noPrompt || !process.stdin.isTTY) {
|
|
33
|
+
return {
|
|
34
|
+
allowed: false,
|
|
35
|
+
reason: 'Dangerous operation requires --force flag in non-interactive mode',
|
|
36
|
+
operation: op.operation,
|
|
37
|
+
impact: op.impact,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Show warning and prompt for confirmation
|
|
41
|
+
return promptForConfirmation(op);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Prompt user for confirmation of dangerous operation
|
|
45
|
+
*/
|
|
46
|
+
async function promptForConfirmation(op) {
|
|
47
|
+
console.log('');
|
|
48
|
+
console.log(`[WARNING] ${op.description}`);
|
|
49
|
+
console.log(`Impact: ${op.impact.toUpperCase()}`);
|
|
50
|
+
console.log('');
|
|
51
|
+
// Require specific phrase for critical operations
|
|
52
|
+
if (op.confirmationPhrase) {
|
|
53
|
+
const answer = await prompt(`Type "${op.confirmationPhrase}" to confirm: `);
|
|
54
|
+
if (answer !== op.confirmationPhrase) {
|
|
55
|
+
return {
|
|
56
|
+
allowed: false,
|
|
57
|
+
reason: 'Confirmation phrase did not match',
|
|
58
|
+
operation: op.operation,
|
|
59
|
+
impact: op.impact,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
allowed: true,
|
|
64
|
+
operation: op.operation,
|
|
65
|
+
impact: op.impact,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Simple y/N confirmation for other operations
|
|
69
|
+
const answer = await prompt('Continue? [y/N]: ');
|
|
70
|
+
if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
|
|
71
|
+
return {
|
|
72
|
+
allowed: false,
|
|
73
|
+
reason: 'User cancelled',
|
|
74
|
+
operation: op.operation,
|
|
75
|
+
impact: op.impact,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
allowed: true,
|
|
80
|
+
operation: op.operation,
|
|
81
|
+
impact: op.impact,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Prompt for user input
|
|
86
|
+
*/
|
|
87
|
+
function prompt(question) {
|
|
88
|
+
const rl = readline.createInterface({
|
|
89
|
+
input: process.stdin,
|
|
90
|
+
output: process.stdout,
|
|
91
|
+
});
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
rl.question(question, (answer) => {
|
|
94
|
+
rl.close();
|
|
95
|
+
resolve(answer);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* List all dangerous operations
|
|
101
|
+
*/
|
|
102
|
+
export function listDangerousOperations() {
|
|
103
|
+
return Object.values(DANGEROUS_OPERATIONS);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Check if an operation ID corresponds to a dangerous operation
|
|
107
|
+
*/
|
|
108
|
+
export function isDangerousOp(operationId) {
|
|
109
|
+
return operationId in DANGEROUS_OPERATIONS;
|
|
110
|
+
}
|
|
111
|
+
export { DANGEROUS_OPERATIONS, CLIErrorCodes };
|
|
112
|
+
//# sourceMappingURL=dangerous-op-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dangerous-op-guard.js","sourceRoot":"","sources":["../../src/utils/dangerous-op-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Manager for CLI
|
|
3
|
+
*
|
|
4
|
+
* Manages SQLite database initialization and provides fallback to in-memory
|
|
5
|
+
* storage when SQLite is unavailable.
|
|
6
|
+
*
|
|
7
|
+
* Database location: ~/.automatosx/data.db (or $AX_DATA_DIR/data.db)
|
|
8
|
+
* Storage mode: AX_STORAGE=sqlite|memory (default: sqlite)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Database configuration
|
|
12
|
+
*/
|
|
13
|
+
export interface DatabaseConfig {
|
|
14
|
+
/** Database file path */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Whether SQLite is available */
|
|
17
|
+
sqliteAvailable: boolean;
|
|
18
|
+
/** Storage mode (sqlite or memory) */
|
|
19
|
+
storageMode: 'sqlite' | 'memory';
|
|
20
|
+
/** Error if SQLite initialization failed */
|
|
21
|
+
initError?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Gets the data directory path
|
|
25
|
+
*/
|
|
26
|
+
export declare function getDataDirectory(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Gets the database file path
|
|
29
|
+
*/
|
|
30
|
+
export declare function getDatabasePath(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Ensures the data directory exists
|
|
33
|
+
*/
|
|
34
|
+
export declare function ensureDataDirectory(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Gets the configured storage mode
|
|
37
|
+
*/
|
|
38
|
+
export declare function getStorageMode(): 'sqlite' | 'memory';
|
|
39
|
+
/**
|
|
40
|
+
* Checks if SQLite is available by trying to import it
|
|
41
|
+
*/
|
|
42
|
+
export declare function checkSqliteAvailable(): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets or creates the database instance
|
|
45
|
+
*
|
|
46
|
+
* Returns null if storage mode is 'memory' or SQLite is unavailable.
|
|
47
|
+
* Callers should fall back to in-memory storage in this case.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getDatabase(): Promise<unknown | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Gets the database configuration
|
|
52
|
+
*/
|
|
53
|
+
export declare function getDatabaseConfig(): Promise<DatabaseConfig>;
|
|
54
|
+
/**
|
|
55
|
+
* Closes the database connection
|
|
56
|
+
*/
|
|
57
|
+
export declare function closeDatabase(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Resets database state (for testing)
|
|
60
|
+
*/
|
|
61
|
+
export declare function resetDatabaseState(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Gets whether persistent storage is available
|
|
64
|
+
*/
|
|
65
|
+
export declare function isPersistentStorageAvailable(): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Database manager provides a unified interface for storage operations
|
|
68
|
+
*/
|
|
69
|
+
export interface DatabaseManager {
|
|
70
|
+
/** Get database configuration */
|
|
71
|
+
getConfig(): Promise<DatabaseConfig>;
|
|
72
|
+
/** Get the database instance (null if unavailable) */
|
|
73
|
+
getDatabase(): Promise<unknown | null>;
|
|
74
|
+
/** Check if persistent storage is available */
|
|
75
|
+
isPersistent(): Promise<boolean>;
|
|
76
|
+
/** Close the database */
|
|
77
|
+
close(): void;
|
|
78
|
+
/** Reset state (for testing) */
|
|
79
|
+
reset(): void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates a database manager instance
|
|
83
|
+
*/
|
|
84
|
+
export declare function createDatabaseManager(): DatabaseManager;
|
|
85
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,eAAe,EAAE,OAAO,CAAC;IACzB,sCAAsC;IACtC,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,GAAG,QAAQ,CAMpD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ7D;AAMD;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAsB3D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CAmDjE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAapC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED;;GAEG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC,CAGrE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAErC,sDAAsD;IACtD,WAAW,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEvC,+CAA+C;IAC/C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC,yBAAyB;IACzB,KAAK,IAAI,IAAI,CAAC;IAEd,gCAAgC;IAChC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAQvD"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Manager for CLI
|
|
3
|
+
*
|
|
4
|
+
* Manages SQLite database initialization and provides fallback to in-memory
|
|
5
|
+
* storage when SQLite is unavailable.
|
|
6
|
+
*
|
|
7
|
+
* Database location: ~/.automatosx/data.db (or $AX_DATA_DIR/data.db)
|
|
8
|
+
* Storage mode: AX_STORAGE=sqlite|memory (default: sqlite)
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
11
|
+
import { homedir } from 'os';
|
|
12
|
+
import { join } from 'path';
|
|
13
|
+
import { DATA_DIR_NAME, DATABASE_FILENAME, ENV_DATA_DIR, ENV_STORAGE_MODE, STORAGE_MODE_SQLITE, STORAGE_MODE_MEMORY, } from '@defai.digital/contracts';
|
|
14
|
+
/**
|
|
15
|
+
* Gets the data directory path
|
|
16
|
+
*/
|
|
17
|
+
export function getDataDirectory() {
|
|
18
|
+
const customDir = process.env[ENV_DATA_DIR];
|
|
19
|
+
if (customDir) {
|
|
20
|
+
return customDir;
|
|
21
|
+
}
|
|
22
|
+
return join(homedir(), DATA_DIR_NAME);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Gets the database file path
|
|
26
|
+
*/
|
|
27
|
+
export function getDatabasePath() {
|
|
28
|
+
return join(getDataDirectory(), DATABASE_FILENAME);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Ensures the data directory exists
|
|
32
|
+
*/
|
|
33
|
+
export function ensureDataDirectory() {
|
|
34
|
+
const dir = getDataDirectory();
|
|
35
|
+
if (!existsSync(dir)) {
|
|
36
|
+
mkdirSync(dir, { recursive: true });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the configured storage mode
|
|
41
|
+
*/
|
|
42
|
+
export function getStorageMode() {
|
|
43
|
+
const mode = process.env[ENV_STORAGE_MODE]?.toLowerCase();
|
|
44
|
+
if (mode === STORAGE_MODE_MEMORY) {
|
|
45
|
+
return STORAGE_MODE_MEMORY;
|
|
46
|
+
}
|
|
47
|
+
return STORAGE_MODE_SQLITE; // Default to sqlite
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Checks if SQLite is available by trying to import it
|
|
51
|
+
*/
|
|
52
|
+
export async function checkSqliteAvailable() {
|
|
53
|
+
try {
|
|
54
|
+
// Dynamic import to avoid hard dependency
|
|
55
|
+
await import('better-sqlite3');
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Cached database instance
|
|
63
|
+
let _database = null;
|
|
64
|
+
let _databaseConfig = null;
|
|
65
|
+
/**
|
|
66
|
+
* Gets or creates the database instance
|
|
67
|
+
*
|
|
68
|
+
* Returns null if storage mode is 'memory' or SQLite is unavailable.
|
|
69
|
+
* Callers should fall back to in-memory storage in this case.
|
|
70
|
+
*/
|
|
71
|
+
export async function getDatabase() {
|
|
72
|
+
if (_database !== null) {
|
|
73
|
+
return _database;
|
|
74
|
+
}
|
|
75
|
+
const config = await getDatabaseConfig();
|
|
76
|
+
if (!config.sqliteAvailable || config.storageMode === 'memory') {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
// Dynamic import
|
|
81
|
+
const BetterSqlite3 = (await import('better-sqlite3')).default;
|
|
82
|
+
_database = new BetterSqlite3(config.path);
|
|
83
|
+
return _database;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.warn(`[WARN] Failed to initialize SQLite database: ${error instanceof Error ? error.message : 'Unknown error'}. ` +
|
|
87
|
+
'Falling back to in-memory storage.');
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Gets the database configuration
|
|
93
|
+
*/
|
|
94
|
+
export async function getDatabaseConfig() {
|
|
95
|
+
if (_databaseConfig !== null) {
|
|
96
|
+
return _databaseConfig;
|
|
97
|
+
}
|
|
98
|
+
const storageMode = getStorageMode();
|
|
99
|
+
const path = getDatabasePath();
|
|
100
|
+
// If memory mode is explicitly set, don't try SQLite
|
|
101
|
+
if (storageMode === STORAGE_MODE_MEMORY) {
|
|
102
|
+
_databaseConfig = {
|
|
103
|
+
path,
|
|
104
|
+
sqliteAvailable: false,
|
|
105
|
+
storageMode: STORAGE_MODE_MEMORY,
|
|
106
|
+
};
|
|
107
|
+
return _databaseConfig;
|
|
108
|
+
}
|
|
109
|
+
// Try to initialize SQLite
|
|
110
|
+
const sqliteAvailable = await checkSqliteAvailable();
|
|
111
|
+
if (!sqliteAvailable) {
|
|
112
|
+
_databaseConfig = {
|
|
113
|
+
path,
|
|
114
|
+
sqliteAvailable: false,
|
|
115
|
+
storageMode: STORAGE_MODE_MEMORY,
|
|
116
|
+
initError: 'better-sqlite3 package not available',
|
|
117
|
+
};
|
|
118
|
+
return _databaseConfig;
|
|
119
|
+
}
|
|
120
|
+
// Ensure data directory exists
|
|
121
|
+
try {
|
|
122
|
+
ensureDataDirectory();
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
_databaseConfig = {
|
|
126
|
+
path,
|
|
127
|
+
sqliteAvailable: false,
|
|
128
|
+
storageMode: STORAGE_MODE_MEMORY,
|
|
129
|
+
initError: `Failed to create data directory: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
130
|
+
};
|
|
131
|
+
return _databaseConfig;
|
|
132
|
+
}
|
|
133
|
+
_databaseConfig = {
|
|
134
|
+
path,
|
|
135
|
+
sqliteAvailable: true,
|
|
136
|
+
storageMode: STORAGE_MODE_SQLITE,
|
|
137
|
+
};
|
|
138
|
+
return _databaseConfig;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Closes the database connection
|
|
142
|
+
*/
|
|
143
|
+
export function closeDatabase() {
|
|
144
|
+
if (_database !== null) {
|
|
145
|
+
try {
|
|
146
|
+
// Cast to any to call close method
|
|
147
|
+
const db = _database;
|
|
148
|
+
if (typeof db.close === 'function') {
|
|
149
|
+
db.close();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Ignore close errors
|
|
154
|
+
}
|
|
155
|
+
_database = null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Resets database state (for testing)
|
|
160
|
+
*/
|
|
161
|
+
export function resetDatabaseState() {
|
|
162
|
+
closeDatabase();
|
|
163
|
+
_databaseConfig = null;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Gets whether persistent storage is available
|
|
167
|
+
*/
|
|
168
|
+
export async function isPersistentStorageAvailable() {
|
|
169
|
+
const config = await getDatabaseConfig();
|
|
170
|
+
return config.sqliteAvailable && config.storageMode === STORAGE_MODE_SQLITE;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Creates a database manager instance
|
|
174
|
+
*/
|
|
175
|
+
export function createDatabaseManager() {
|
|
176
|
+
return {
|
|
177
|
+
getConfig: getDatabaseConfig,
|
|
178
|
+
getDatabase,
|
|
179
|
+
isPersistent: isPersistentStorageAvailable,
|
|
180
|
+
close: closeDatabase,
|
|
181
|
+
reset: resetDatabaseState,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Utilities
|
|
3
|
+
*/
|
|
4
|
+
export { checkDangerousOp, listDangerousOperations, isDangerousOp, type DangerousOpOptions, } from './dangerous-op-guard.js';
|
|
5
|
+
export { getCheckpointStorage, getTraceStore, getDLQ, initializeStorageAsync, isUsingSqlite, getStorageInfo, resetStorageInstances, } from './storage-instances.js';
|
|
6
|
+
export { getDataDirectory, getDatabasePath, getStorageMode, getDatabase, getDatabaseConfig, closeDatabase, resetDatabaseState, isPersistentStorageAvailable, createDatabaseManager, type DatabaseConfig, type DatabaseManager, } from './database.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,MAAM,EACN,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Utilities
|
|
3
|
+
*/
|
|
4
|
+
export { checkDangerousOp, listDangerousOperations, isDangerousOp, } from './dangerous-op-guard.js';
|
|
5
|
+
export { getCheckpointStorage, getTraceStore, getDLQ, initializeStorageAsync, isUsingSqlite, getStorageInfo, resetStorageInstances, } from './storage-instances.js';
|
|
6
|
+
export { getDataDirectory, getDatabasePath, getStorageMode, getDatabase, getDatabaseConfig, closeDatabase, resetDatabaseState, isPersistentStorageAvailable, createDatabaseManager, } from './database.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,GAEd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,MAAM,EACN,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,qBAAqB,GAGtB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Factory for CLI Commands
|
|
3
|
+
*
|
|
4
|
+
* Creates shared provider infrastructure for CLI commands that need
|
|
5
|
+
* LLM provider access (bugfix, refactor, etc.)
|
|
6
|
+
*
|
|
7
|
+
* All adapter imports are centralized in bootstrap.ts (composition root).
|
|
8
|
+
* This file delegates to bootstrap for provider registry access.
|
|
9
|
+
*/
|
|
10
|
+
import type { ProviderRegistry } from '../bootstrap.js';
|
|
11
|
+
import type { ProviderRouter } from '@defai.digital/analysis-domain';
|
|
12
|
+
/**
|
|
13
|
+
* Gets the shared provider registry from bootstrap
|
|
14
|
+
*/
|
|
15
|
+
export declare function getProviderRegistry(): ProviderRegistry;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a ProviderRouter for use with analysis services
|
|
18
|
+
*
|
|
19
|
+
* This bridges the CLI provider infrastructure with the analysis-domain's
|
|
20
|
+
* ProviderRouter interface.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createAnalysisProviderRouter(): ProviderRouter;
|
|
23
|
+
/**
|
|
24
|
+
* Gets the IDs of all registered providers
|
|
25
|
+
*/
|
|
26
|
+
export declare function getRegisteredProviderIds(): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Checks if a specific provider is available
|
|
29
|
+
*/
|
|
30
|
+
export declare function isProviderAvailable(providerId: string): Promise<boolean>;
|
|
31
|
+
//# sourceMappingURL=provider-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-factory.d.ts","sourceRoot":"","sources":["../../src/utils/provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAqCD;;;;;GAKG;AACH,wBAAgB,4BAA4B,IAAI,cAAc,CAkD7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM9E"}
|