@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.
Files changed (138) hide show
  1. package/LICENSE +214 -0
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +11 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/bootstrap.d.ts +144 -0
  7. package/dist/bootstrap.d.ts.map +1 -0
  8. package/dist/bootstrap.js +315 -0
  9. package/dist/bootstrap.js.map +1 -0
  10. package/dist/cli.d.ts +14 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +84 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/ability.d.ts +17 -0
  15. package/dist/commands/ability.d.ts.map +1 -0
  16. package/dist/commands/ability.js +286 -0
  17. package/dist/commands/ability.js.map +1 -0
  18. package/dist/commands/agent.d.ts +18 -0
  19. package/dist/commands/agent.d.ts.map +1 -0
  20. package/dist/commands/agent.js +361 -0
  21. package/dist/commands/agent.js.map +1 -0
  22. package/dist/commands/call.d.ts +15 -0
  23. package/dist/commands/call.d.ts.map +1 -0
  24. package/dist/commands/call.js +503 -0
  25. package/dist/commands/call.js.map +1 -0
  26. package/dist/commands/cleanup.d.ts +18 -0
  27. package/dist/commands/cleanup.d.ts.map +1 -0
  28. package/dist/commands/cleanup.js +300 -0
  29. package/dist/commands/cleanup.js.map +1 -0
  30. package/dist/commands/config.d.ts +16 -0
  31. package/dist/commands/config.d.ts.map +1 -0
  32. package/dist/commands/config.js +513 -0
  33. package/dist/commands/config.js.map +1 -0
  34. package/dist/commands/discuss.d.ts +16 -0
  35. package/dist/commands/discuss.d.ts.map +1 -0
  36. package/dist/commands/discuss.js +700 -0
  37. package/dist/commands/discuss.js.map +1 -0
  38. package/dist/commands/doctor.d.ts +48 -0
  39. package/dist/commands/doctor.d.ts.map +1 -0
  40. package/dist/commands/doctor.js +356 -0
  41. package/dist/commands/doctor.js.map +1 -0
  42. package/dist/commands/guard.d.ts +12 -0
  43. package/dist/commands/guard.d.ts.map +1 -0
  44. package/dist/commands/guard.js +225 -0
  45. package/dist/commands/guard.js.map +1 -0
  46. package/dist/commands/help.d.ts +11 -0
  47. package/dist/commands/help.d.ts.map +1 -0
  48. package/dist/commands/help.js +180 -0
  49. package/dist/commands/help.js.map +1 -0
  50. package/dist/commands/history.d.ts +19 -0
  51. package/dist/commands/history.d.ts.map +1 -0
  52. package/dist/commands/history.js +200 -0
  53. package/dist/commands/history.js.map +1 -0
  54. package/dist/commands/index.d.ts +23 -0
  55. package/dist/commands/index.d.ts.map +1 -0
  56. package/dist/commands/index.js +26 -0
  57. package/dist/commands/index.js.map +1 -0
  58. package/dist/commands/iterate.d.ts +16 -0
  59. package/dist/commands/iterate.d.ts.map +1 -0
  60. package/dist/commands/iterate.js +72 -0
  61. package/dist/commands/iterate.js.map +1 -0
  62. package/dist/commands/list.d.ts +6 -0
  63. package/dist/commands/list.d.ts.map +1 -0
  64. package/dist/commands/list.js +62 -0
  65. package/dist/commands/list.js.map +1 -0
  66. package/dist/commands/mcp.d.ts +16 -0
  67. package/dist/commands/mcp.d.ts.map +1 -0
  68. package/dist/commands/mcp.js +57 -0
  69. package/dist/commands/mcp.js.map +1 -0
  70. package/dist/commands/resume.d.ts +18 -0
  71. package/dist/commands/resume.d.ts.map +1 -0
  72. package/dist/commands/resume.js +208 -0
  73. package/dist/commands/resume.js.map +1 -0
  74. package/dist/commands/review.d.ts +13 -0
  75. package/dist/commands/review.d.ts.map +1 -0
  76. package/dist/commands/review.js +450 -0
  77. package/dist/commands/review.js.map +1 -0
  78. package/dist/commands/run.d.ts +6 -0
  79. package/dist/commands/run.d.ts.map +1 -0
  80. package/dist/commands/run.js +158 -0
  81. package/dist/commands/run.js.map +1 -0
  82. package/dist/commands/scaffold.d.ts +20 -0
  83. package/dist/commands/scaffold.d.ts.map +1 -0
  84. package/dist/commands/scaffold.js +924 -0
  85. package/dist/commands/scaffold.js.map +1 -0
  86. package/dist/commands/session.d.ts +20 -0
  87. package/dist/commands/session.d.ts.map +1 -0
  88. package/dist/commands/session.js +504 -0
  89. package/dist/commands/session.js.map +1 -0
  90. package/dist/commands/setup.d.ts +14 -0
  91. package/dist/commands/setup.d.ts.map +1 -0
  92. package/dist/commands/setup.js +762 -0
  93. package/dist/commands/setup.js.map +1 -0
  94. package/dist/commands/status.d.ts +17 -0
  95. package/dist/commands/status.d.ts.map +1 -0
  96. package/dist/commands/status.js +227 -0
  97. package/dist/commands/status.js.map +1 -0
  98. package/dist/commands/trace.d.ts +6 -0
  99. package/dist/commands/trace.d.ts.map +1 -0
  100. package/dist/commands/trace.js +204 -0
  101. package/dist/commands/trace.js.map +1 -0
  102. package/dist/commands/update.d.ts +24 -0
  103. package/dist/commands/update.d.ts.map +1 -0
  104. package/dist/commands/update.js +296 -0
  105. package/dist/commands/update.js.map +1 -0
  106. package/dist/index.d.ts +8 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +13 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/parser.d.ts +14 -0
  111. package/dist/parser.d.ts.map +1 -0
  112. package/dist/parser.js +288 -0
  113. package/dist/parser.js.map +1 -0
  114. package/dist/types.d.ts +91 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +29 -0
  117. package/dist/types.js.map +1 -0
  118. package/dist/utils/dangerous-op-guard.d.ts +33 -0
  119. package/dist/utils/dangerous-op-guard.d.ts.map +1 -0
  120. package/dist/utils/dangerous-op-guard.js +112 -0
  121. package/dist/utils/dangerous-op-guard.js.map +1 -0
  122. package/dist/utils/database.d.ts +85 -0
  123. package/dist/utils/database.d.ts.map +1 -0
  124. package/dist/utils/database.js +184 -0
  125. package/dist/utils/database.js.map +1 -0
  126. package/dist/utils/index.d.ts +7 -0
  127. package/dist/utils/index.d.ts.map +1 -0
  128. package/dist/utils/index.js +7 -0
  129. package/dist/utils/index.js.map +1 -0
  130. package/dist/utils/provider-factory.d.ts +31 -0
  131. package/dist/utils/provider-factory.d.ts.map +1 -0
  132. package/dist/utils/provider-factory.js +109 -0
  133. package/dist/utils/provider-factory.js.map +1 -0
  134. package/dist/utils/storage-instances.d.ts +19 -0
  135. package/dist/utils/storage-instances.d.ts.map +1 -0
  136. package/dist/utils/storage-instances.js +20 -0
  137. package/dist/utils/storage-instances.js.map +1 -0
  138. package/package.json +77 -0
@@ -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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EAGrB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAWlC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,OAA2B;IAE3B,MAAM,EAAE,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAE9C,oCAAoC;IACpC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,mEAAmE;YAC3E,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,EAAsB;IAEtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,kDAAkD;IAClD,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,kBAAkB,gBAAgB,CAAC,CAAC;QAC5E,IAAI,MAAM,KAAK,EAAE,CAAC,kBAAkB,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,mCAAmC;gBAC3C,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,MAAM,EAAE,EAAE,CAAC,MAAM;aAClB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,MAAM,EAAE,EAAE,CAAC,MAAM;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAC,QAAgB;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,WAAW,IAAI,oBAAoB,CAAC;AAC7C,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC"}
@@ -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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAgBlC;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1D,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACjC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,mBAAmB,CAAC,CAAC,oBAAoB;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,IAAI,SAAS,GAAY,IAAI,CAAC;AAC9B,IAAI,eAAe,GAA0B,IAAI,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,aAAa,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,SAAS,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,gDAAgD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI;YAC5G,oCAAoC,CACrC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAE/B,qDAAqD;IACrD,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACxC,eAAe,GAAG;YAChB,IAAI;YACJ,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,mBAAmB;SACjC,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,2BAA2B;IAC3B,MAAM,eAAe,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAErD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG;YAChB,IAAI;YACJ,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,mBAAmB;YAChC,SAAS,EAAE,sCAAsC;SAClD,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC;QACH,mBAAmB,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAe,GAAG;YAChB,IAAI;YACJ,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,mBAAmB;YAChC,SAAS,EAAE,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;SAC1G,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,eAAe,GAAG;QAChB,IAAI;QACJ,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,mBAAmB;KACjC,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,EAAE,GAAG,SAAmC,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnC,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QACD,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,aAAa,EAAE,CAAC;IAChB,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,WAAW,KAAK,mBAAmB,CAAC;AAC9E,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,SAAS,EAAE,iBAAiB;QAC5B,WAAW;QACX,YAAY,EAAE,4BAA4B;QAC1C,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,kBAAkB;KAC1B,CAAC;AACJ,CAAC"}
@@ -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"}