@edgible-team/cli 1.2.8 → 1.2.11
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/dist/commands/ai/helpers.d.ts.map +1 -1
- package/dist/commands/ai/helpers.js +2 -1
- package/dist/commands/ai/teardown.js +24 -23
- package/dist/commands/application/api-keys/create.d.ts.map +1 -1
- package/dist/commands/application/api-keys/create.js +5 -20
- package/dist/commands/application/api-keys/delete.d.ts.map +1 -1
- package/dist/commands/application/api-keys/delete.js +5 -20
- package/dist/commands/application/api-keys/list.d.ts.map +1 -1
- package/dist/commands/application/api-keys/list.js +5 -21
- package/dist/commands/application/delete.d.ts.map +1 -1
- package/dist/commands/application/delete.js +7 -23
- package/dist/commands/application/get.d.ts.map +1 -1
- package/dist/commands/application/get.js +9 -4
- package/dist/commands/application/short-codes/create.d.ts.map +1 -1
- package/dist/commands/application/short-codes/create.js +5 -20
- package/dist/commands/application/short-codes/delete.d.ts.map +1 -1
- package/dist/commands/application/short-codes/delete.js +5 -20
- package/dist/commands/application/short-codes/list.d.ts.map +1 -1
- package/dist/commands/application/short-codes/list.js +5 -21
- package/dist/commands/application/short-codes/toggle.d.ts.map +1 -1
- package/dist/commands/application/short-codes/toggle.js +5 -20
- package/dist/commands/base/command-wrapper.d.ts +0 -4
- package/dist/commands/base/command-wrapper.d.ts.map +1 -1
- package/dist/commands/base/command-wrapper.js +0 -16
- package/dist/commands/debug.d.ts.map +1 -1
- package/dist/commands/debug.js +178 -47
- package/dist/commands/utils/application-prompt.d.ts +23 -0
- package/dist/commands/utils/application-prompt.d.ts.map +1 -0
- package/dist/commands/utils/application-prompt.js +79 -0
- package/dist/commands/utils/output-formatter.d.ts +1 -0
- package/dist/commands/utils/output-formatter.d.ts.map +1 -1
- package/dist/commands/utils/output-formatter.js +1 -1
- package/dist/generated/compose-constants.d.ts +1 -1
- package/dist/generated/compose-constants.d.ts.map +1 -1
- package/dist/generated/compose-constants.js +1 -1
- package/dist/types/AgentConfig.d.ts +0 -13
- package/dist/types/AgentConfig.d.ts.map +1 -1
- package/dist/types/validation/schemas.d.ts +5 -0
- package/dist/types/validation/schemas.d.ts.map +1 -1
- package/dist/types/validation/schemas.js +4 -0
- package/dist/validation/validator.d.ts +0 -4
- package/dist/validation/validator.d.ts.map +1 -1
- package/dist/validation/validator.js +0 -9
- package/package.json +1 -1
- package/recipes/compose/open-webui/docker-compose.yml +1 -9
- package/dist/commands/base/BaseCommand.d.ts +0 -53
- package/dist/commands/base/BaseCommand.d.ts.map +0 -1
- package/dist/commands/base/BaseCommand.js +0 -93
- package/dist/commands/base/CommandHandler.d.ts +0 -28
- package/dist/commands/base/CommandHandler.d.ts.map +0 -1
- package/dist/commands/base/CommandHandler.js +0 -7
- package/dist/commands/base/middleware.d.ts +0 -34
- package/dist/commands/base/middleware.d.ts.map +0 -1
- package/dist/commands/base/middleware.js +0 -77
- package/dist/utils/PathMigration.d.ts +0 -45
- package/dist/utils/PathMigration.d.ts.map +0 -1
- package/dist/utils/PathMigration.js +0 -219
- package/dist/utils/progress.d.ts +0 -74
- package/dist/utils/progress.d.ts.map +0 -1
- package/dist/utils/progress.js +0 -167
package/dist/commands/debug.js
CHANGED
|
@@ -67,76 +67,130 @@ function setupDebugCommands(program) {
|
|
|
67
67
|
console.log(chalk_1.default.blue.bold(' Full Debug Cycle'));
|
|
68
68
|
console.log(chalk_1.default.blue.bold('═══════════════════════════════════════════\n'));
|
|
69
69
|
console.log(chalk_1.default.gray('This will perform a complete agent lifecycle test:\n'));
|
|
70
|
-
console.log(chalk_1.default.gray(' 1.
|
|
71
|
-
console.log(chalk_1.default.gray(' 2.
|
|
70
|
+
console.log(chalk_1.default.gray(' 1. Teardown AI services'));
|
|
71
|
+
console.log(chalk_1.default.gray(' 2. Uninstall agent and delete all data'));
|
|
72
72
|
console.log(chalk_1.default.gray(' 3. Install agent'));
|
|
73
|
-
console.log(chalk_1.default.gray(' 4. Wait 2 minutes
|
|
73
|
+
console.log(chalk_1.default.gray(' 4. Wait 2 minutes for startup'));
|
|
74
74
|
console.log(chalk_1.default.gray(' 5. Setup AI with qwen:0.5b model'));
|
|
75
|
-
console.log(chalk_1.default.gray(' 6. Wait 1 minute
|
|
75
|
+
console.log(chalk_1.default.gray(' 6. Wait 1 minute for AI runtime'));
|
|
76
76
|
console.log(chalk_1.default.gray(' 7. Teardown AI services'));
|
|
77
|
-
console.log(chalk_1.default.gray(' 8. Uninstall agent
|
|
77
|
+
console.log(chalk_1.default.gray(' 8. Uninstall agent'));
|
|
78
|
+
console.log(chalk_1.default.gray(' 9. Collect all logs and diagnostics\n'));
|
|
78
79
|
const documentsFolder = getDocumentsFolder();
|
|
79
|
-
|
|
80
|
+
const finalLogPath = path.join(documentsFolder, 'debug_full_cycle.log');
|
|
81
|
+
console.log(chalk_1.default.cyan(`Final debug log will be saved to: ${finalLogPath}\n`));
|
|
82
|
+
// Array to collect all debug information
|
|
83
|
+
const debugSections = [];
|
|
80
84
|
try {
|
|
81
|
-
// Step 1:
|
|
82
|
-
console.log(chalk_1.default.blue.bold('\n[Step 1/
|
|
85
|
+
// Step 1: Teardown AI services
|
|
86
|
+
console.log(chalk_1.default.blue.bold('\n[Step 1/9] Tearing Down AI Services\n'));
|
|
83
87
|
try {
|
|
84
|
-
await (0,
|
|
88
|
+
await (0, teardown_1.handleAiTeardown)({ stopOllama: true, removeVolumes: true });
|
|
89
|
+
debugSections.push({
|
|
90
|
+
title: 'Initial AI Teardown',
|
|
91
|
+
content: 'AI services successfully torn down before starting debug cycle'
|
|
92
|
+
});
|
|
85
93
|
}
|
|
86
94
|
catch (error) {
|
|
87
|
-
|
|
95
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
96
|
+
debugSections.push({
|
|
97
|
+
title: 'Initial AI Teardown',
|
|
98
|
+
content: `AI services may not have been running: ${errorMsg}`
|
|
99
|
+
});
|
|
100
|
+
console.log(chalk_1.default.yellow('⚠ AI services may not have been running, continuing...\n'));
|
|
88
101
|
}
|
|
89
|
-
// Step 2:
|
|
90
|
-
console.log(chalk_1.default.blue.bold('\n[Step 2/
|
|
102
|
+
// Step 2: Uninstall agent and delete all data
|
|
103
|
+
console.log(chalk_1.default.blue.bold('\n[Step 2/9] Uninstalling Agent\n'));
|
|
91
104
|
try {
|
|
92
|
-
await (0,
|
|
105
|
+
await (0, uninstall_1.handleAgentUninstall)({ removeFiles: true, force: true }, instances_1.logger, instances_1.configManager);
|
|
106
|
+
debugSections.push({
|
|
107
|
+
title: 'Initial Agent Uninstall',
|
|
108
|
+
content: 'Agent successfully uninstalled before starting debug cycle'
|
|
109
|
+
});
|
|
93
110
|
}
|
|
94
111
|
catch (error) {
|
|
95
|
-
|
|
112
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
113
|
+
debugSections.push({
|
|
114
|
+
title: 'Initial Agent Uninstall',
|
|
115
|
+
content: `Agent may not have been installed: ${errorMsg}`
|
|
116
|
+
});
|
|
117
|
+
console.log(chalk_1.default.yellow('⚠ Agent may not have been installed, continuing...\n'));
|
|
96
118
|
}
|
|
97
119
|
// Step 3: Install agent
|
|
98
|
-
console.log(chalk_1.default.blue.bold('\n[Step 3/
|
|
120
|
+
console.log(chalk_1.default.blue.bold('\n[Step 3/9] Installing Agent\n'));
|
|
99
121
|
const platform = PlatformDetector_1.PlatformDetector.getPlatform();
|
|
100
122
|
const installationType = platform === 'darwin' ? 'launchd' : 'systemd';
|
|
101
123
|
await (0, install_1.handleAgentInstall)({ type: installationType, dev: false, local: false }, instances_1.logger, instances_1.configManager, instances_1.edgibleService, instances_1.authService, instances_1.localAgentManager);
|
|
102
|
-
|
|
103
|
-
|
|
124
|
+
debugSections.push({
|
|
125
|
+
title: 'Agent Installation',
|
|
126
|
+
content: `Agent installed successfully (${installationType} on ${platform})`
|
|
127
|
+
});
|
|
128
|
+
// Step 4: Wait 2 minutes for startup
|
|
129
|
+
console.log(chalk_1.default.blue.bold('\n[Step 4/9] Waiting 2 Minutes for Agent Startup\n'));
|
|
104
130
|
await waitWithProgress(120, 'Capturing startup behavior');
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
console.log(chalk_1.default.green(`✓ Startup logs saved to: ${startupLogPath}\n`));
|
|
131
|
+
const startupLogs = await captureAgentLogs('Startup Phase');
|
|
132
|
+
debugSections.push(startupLogs);
|
|
108
133
|
// Step 5: Setup AI with qwen:0.5b
|
|
109
|
-
console.log(chalk_1.default.blue.bold('\n[Step 5/
|
|
134
|
+
console.log(chalk_1.default.blue.bold('\n[Step 5/9] Setting Up AI with qwen:0.5b\n'));
|
|
110
135
|
await (0, setup_1.handleAiSetup)({
|
|
111
136
|
model: 'qwen:0.5b',
|
|
112
137
|
autoInstall: true,
|
|
113
138
|
noInteractive: true
|
|
114
139
|
});
|
|
115
|
-
|
|
116
|
-
|
|
140
|
+
debugSections.push({
|
|
141
|
+
title: 'AI Setup',
|
|
142
|
+
content: 'AI services set up with qwen:0.5b model'
|
|
143
|
+
});
|
|
144
|
+
// Step 6: Wait 1 minute for AI runtime
|
|
145
|
+
console.log(chalk_1.default.blue.bold('\n[Step 6/9] Waiting 1 Minute for AI Runtime\n'));
|
|
117
146
|
await waitWithProgress(60, 'Capturing runtime behavior');
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
147
|
+
const runtimeLogs = await captureAgentLogs('Runtime Phase');
|
|
148
|
+
debugSections.push(runtimeLogs);
|
|
149
|
+
// Step 6.5: Capture Docker exec curl output
|
|
150
|
+
console.log(chalk_1.default.blue.bold('\n[Step 6.5/9] Testing Ollama Connectivity\n'));
|
|
151
|
+
const ollamaTestResult = await testOllamaConnectivity();
|
|
152
|
+
debugSections.push(ollamaTestResult);
|
|
121
153
|
// Step 7: Teardown AI services
|
|
122
|
-
console.log(chalk_1.default.blue.bold('\n[Step 7/
|
|
154
|
+
console.log(chalk_1.default.blue.bold('\n[Step 7/9] Tearing Down AI Services\n'));
|
|
123
155
|
await (0, teardown_1.handleAiTeardown)({ stopOllama: true, removeVolumes: true });
|
|
156
|
+
debugSections.push({
|
|
157
|
+
title: 'Final AI Teardown',
|
|
158
|
+
content: 'AI services torn down successfully'
|
|
159
|
+
});
|
|
124
160
|
// Step 8: Uninstall agent
|
|
125
|
-
console.log(chalk_1.default.blue.bold('\n[Step 8/
|
|
161
|
+
console.log(chalk_1.default.blue.bold('\n[Step 8/9] Uninstalling Agent\n'));
|
|
126
162
|
await (0, uninstall_1.handleAgentUninstall)({ removeFiles: true, force: true }, instances_1.logger, instances_1.configManager);
|
|
163
|
+
debugSections.push({
|
|
164
|
+
title: 'Final Agent Uninstall',
|
|
165
|
+
content: 'Agent uninstalled successfully'
|
|
166
|
+
});
|
|
167
|
+
// Step 9: Write final log file
|
|
168
|
+
console.log(chalk_1.default.blue.bold('\n[Step 9/9] Generating Final Debug Log\n'));
|
|
169
|
+
await writeFinalDebugLog(finalLogPath, debugSections);
|
|
170
|
+
console.log(chalk_1.default.green(`✓ Debug log saved to: ${finalLogPath}\n`));
|
|
127
171
|
// Final summary
|
|
128
172
|
console.log(chalk_1.default.blue.bold('\n═══════════════════════════════════════════'));
|
|
129
173
|
console.log(chalk_1.default.green.bold(' ✓ Full Debug Cycle Complete!'));
|
|
130
174
|
console.log(chalk_1.default.blue.bold('═══════════════════════════════════════════\n'));
|
|
131
|
-
console.log(chalk_1.default.cyan('Debug
|
|
132
|
-
console.log(chalk_1.default.gray(` • ${
|
|
133
|
-
console.log(chalk_1.default.
|
|
134
|
-
console.log(chalk_1.default.yellow('Please send these log files to support for analysis.\n'));
|
|
175
|
+
console.log(chalk_1.default.cyan('Debug log saved:'));
|
|
176
|
+
console.log(chalk_1.default.gray(` • ${finalLogPath}\n`));
|
|
177
|
+
console.log(chalk_1.default.yellow('Please send this log file to support for analysis.\n'));
|
|
135
178
|
}
|
|
136
179
|
catch (error) {
|
|
137
180
|
instances_1.logger.error('Full debug cycle failed', error);
|
|
138
181
|
console.error(chalk_1.default.red('\n✗ Debug cycle failed:'), error instanceof Error ? error.message : String(error));
|
|
139
|
-
|
|
182
|
+
// Still try to write partial logs
|
|
183
|
+
try {
|
|
184
|
+
debugSections.push({
|
|
185
|
+
title: 'ERROR',
|
|
186
|
+
content: `Debug cycle failed: ${error instanceof Error ? error.message : String(error)}\n\nStack trace:\n${error instanceof Error ? error.stack : 'No stack trace available'}`
|
|
187
|
+
});
|
|
188
|
+
await writeFinalDebugLog(finalLogPath, debugSections);
|
|
189
|
+
console.log(chalk_1.default.yellow(`\nPartial debug log saved to: ${finalLogPath}\n`));
|
|
190
|
+
}
|
|
191
|
+
catch (writeError) {
|
|
192
|
+
console.error(chalk_1.default.red('Failed to write partial log:'), writeError instanceof Error ? writeError.message : String(writeError));
|
|
193
|
+
}
|
|
140
194
|
throw error;
|
|
141
195
|
}
|
|
142
196
|
}, {
|
|
@@ -526,33 +580,110 @@ function getDocumentsFolder() {
|
|
|
526
580
|
}
|
|
527
581
|
}
|
|
528
582
|
/**
|
|
529
|
-
*
|
|
583
|
+
* Capture agent logs and return as a debug section
|
|
530
584
|
*/
|
|
531
|
-
async function
|
|
585
|
+
async function captureAgentLogs(phase) {
|
|
532
586
|
const logFilePath = instances_1.localAgentManager.getLogFilePath();
|
|
533
587
|
if (!fs.existsSync(logFilePath)) {
|
|
534
588
|
console.log(chalk_1.default.yellow(`⚠ Log file not found at: ${logFilePath}`));
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
return;
|
|
589
|
+
return {
|
|
590
|
+
title: `Agent Logs - ${phase}`,
|
|
591
|
+
content: `Log file was not found at the time of capture\nLog path: ${logFilePath}\nTimestamp: ${new Date().toISOString()}`
|
|
592
|
+
};
|
|
540
593
|
}
|
|
594
|
+
try {
|
|
595
|
+
const logContent = fs.readFileSync(logFilePath, 'utf8');
|
|
596
|
+
return {
|
|
597
|
+
title: `Agent Logs - ${phase}`,
|
|
598
|
+
content: `Source: ${logFilePath}\nTimestamp: ${new Date().toISOString()}\n\n${logContent}`
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
603
|
+
console.error(chalk_1.default.red(`✗ Failed to read logs: ${errorMsg}`));
|
|
604
|
+
return {
|
|
605
|
+
title: `Agent Logs - ${phase}`,
|
|
606
|
+
content: `Failed to read logs: ${errorMsg}`
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Test Ollama connectivity from open-webui container
|
|
612
|
+
*/
|
|
613
|
+
async function testOllamaConnectivity() {
|
|
614
|
+
console.log(chalk_1.default.cyan('Testing Ollama connectivity from open-webui container...'));
|
|
615
|
+
try {
|
|
616
|
+
const output = (0, child_process_1.execSync)('docker exec open-webui curl http://host.docker.internal:11435', {
|
|
617
|
+
encoding: 'utf8',
|
|
618
|
+
timeout: 10000,
|
|
619
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
620
|
+
});
|
|
621
|
+
console.log(chalk_1.default.green('✓ Ollama connectivity test completed\n'));
|
|
622
|
+
return {
|
|
623
|
+
title: 'Ollama Connectivity Test',
|
|
624
|
+
content: `Command: docker exec open-webui curl http://host.docker.internal:11435\nTimestamp: ${new Date().toISOString()}\n\nOutput:\n${output}`
|
|
625
|
+
};
|
|
626
|
+
}
|
|
627
|
+
catch (error) {
|
|
628
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
629
|
+
let errorOutput = errorMsg;
|
|
630
|
+
// Try to capture stderr if available
|
|
631
|
+
if (error && typeof error === 'object' && 'stderr' in error) {
|
|
632
|
+
const stderr = error.stderr;
|
|
633
|
+
errorOutput = `${errorMsg}\n\nStderr:\n${stderr.toString()}`;
|
|
634
|
+
}
|
|
635
|
+
console.log(chalk_1.default.yellow(`⚠ Ollama connectivity test failed: ${errorMsg}\n`));
|
|
636
|
+
return {
|
|
637
|
+
title: 'Ollama Connectivity Test',
|
|
638
|
+
content: `Command: docker exec open-webui curl http://host.docker.internal:11435\nTimestamp: ${new Date().toISOString()}\n\nError:\n${errorOutput}`
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Write final debug log file with all collected sections
|
|
644
|
+
*/
|
|
645
|
+
async function writeFinalDebugLog(destinationPath, sections) {
|
|
541
646
|
try {
|
|
542
647
|
// Ensure destination directory exists
|
|
543
648
|
const destDir = path.dirname(destinationPath);
|
|
544
649
|
if (!fs.existsSync(destDir)) {
|
|
545
650
|
fs.mkdirSync(destDir, { recursive: true });
|
|
546
651
|
}
|
|
547
|
-
//
|
|
548
|
-
|
|
549
|
-
//
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
652
|
+
// Build the complete log file
|
|
653
|
+
const lines = [];
|
|
654
|
+
// Header
|
|
655
|
+
lines.push('═══════════════════════════════════════════════════════════════');
|
|
656
|
+
lines.push(' EDGIBLE DEBUG FULL CYCLE');
|
|
657
|
+
lines.push('═══════════════════════════════════════════════════════════════');
|
|
658
|
+
lines.push('');
|
|
659
|
+
lines.push(`Generated: ${new Date().toISOString()}`);
|
|
660
|
+
lines.push(`Platform: ${os.platform()} ${os.release()}`);
|
|
661
|
+
lines.push(`Architecture: ${os.arch()}`);
|
|
662
|
+
lines.push(`Node Version: ${process.version}`);
|
|
663
|
+
lines.push(`Hostname: ${os.hostname()}`);
|
|
664
|
+
lines.push('');
|
|
665
|
+
lines.push('═══════════════════════════════════════════════════════════════');
|
|
666
|
+
lines.push('');
|
|
667
|
+
// Add each section
|
|
668
|
+
for (const section of sections) {
|
|
669
|
+
lines.push('');
|
|
670
|
+
lines.push('───────────────────────────────────────────────────────────────');
|
|
671
|
+
lines.push(` ${section.title.toUpperCase()}`);
|
|
672
|
+
lines.push('───────────────────────────────────────────────────────────────');
|
|
673
|
+
lines.push('');
|
|
674
|
+
lines.push(section.content);
|
|
675
|
+
lines.push('');
|
|
676
|
+
}
|
|
677
|
+
// Footer
|
|
678
|
+
lines.push('═══════════════════════════════════════════════════════════════');
|
|
679
|
+
lines.push(' END OF LOG');
|
|
680
|
+
lines.push('═══════════════════════════════════════════════════════════════');
|
|
681
|
+
// Write to file
|
|
682
|
+
fs.writeFileSync(destinationPath, lines.join('\n'), 'utf8');
|
|
553
683
|
}
|
|
554
684
|
catch (error) {
|
|
555
|
-
|
|
685
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
686
|
+
console.error(chalk_1.default.red(`✗ Failed to write final log: ${errorMsg}`));
|
|
556
687
|
throw error;
|
|
557
688
|
}
|
|
558
689
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared application selection utilities
|
|
3
|
+
* Eliminates duplication across commands
|
|
4
|
+
*/
|
|
5
|
+
import { ApplicationService } from '../../services/application/ApplicationService';
|
|
6
|
+
export interface ApplicationSelectionOptions {
|
|
7
|
+
allowNone?: boolean;
|
|
8
|
+
message?: string;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Prompt user to select an application from available applications
|
|
13
|
+
*/
|
|
14
|
+
export declare function promptApplicationSelection(applicationService: ApplicationService, options?: ApplicationSelectionOptions): Promise<string | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Get application ID, or prompt if not provided
|
|
17
|
+
*/
|
|
18
|
+
export declare function getApplicationId(applicationService: ApplicationService, providedId: string | undefined, options?: ApplicationSelectionOptions): Promise<string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Validate application exists
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateApplicationExists(applicationService: ApplicationService, applicationId: string): Promise<boolean>;
|
|
23
|
+
//# sourceMappingURL=application-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-prompt.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/application-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAGnF,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAOlB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared application selection utilities
|
|
4
|
+
* Eliminates duplication across commands
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.promptApplicationSelection = promptApplicationSelection;
|
|
11
|
+
exports.getApplicationId = getApplicationId;
|
|
12
|
+
exports.validateApplicationExists = validateApplicationExists;
|
|
13
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
14
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
/**
|
|
16
|
+
* Prompt user to select an application from available applications
|
|
17
|
+
*/
|
|
18
|
+
async function promptApplicationSelection(applicationService, options = {}) {
|
|
19
|
+
const { allowNone = false, message = 'Select application:', required = true } = options;
|
|
20
|
+
try {
|
|
21
|
+
const applications = await applicationService.getApplications();
|
|
22
|
+
if (applications.length === 0) {
|
|
23
|
+
if (allowNone) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
console.log(chalk_1.default.yellow('⚠ No applications configured'));
|
|
27
|
+
console.log(chalk_1.default.gray('Use "edgible application create" to create an application'));
|
|
28
|
+
if (required) {
|
|
29
|
+
throw new Error('No applications available');
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const applicationChoices = applications.map((app) => ({
|
|
34
|
+
name: `${app.name} (${app.id})${app.description ? ` - ${app.description}` : ''}`,
|
|
35
|
+
value: app.id,
|
|
36
|
+
}));
|
|
37
|
+
if (allowNone) {
|
|
38
|
+
applicationChoices.push({
|
|
39
|
+
name: 'None',
|
|
40
|
+
value: '',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const answer = await inquirer_1.default.prompt([
|
|
44
|
+
{
|
|
45
|
+
type: 'list',
|
|
46
|
+
name: 'applicationId',
|
|
47
|
+
message,
|
|
48
|
+
choices: applicationChoices,
|
|
49
|
+
},
|
|
50
|
+
]);
|
|
51
|
+
return answer.applicationId === '' ? null : answer.applicationId;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(chalk_1.default.red('Error listing applications:'), error instanceof Error ? error.message : 'Unknown error');
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get application ID, or prompt if not provided
|
|
60
|
+
*/
|
|
61
|
+
async function getApplicationId(applicationService, providedId, options = {}) {
|
|
62
|
+
if (providedId) {
|
|
63
|
+
return providedId;
|
|
64
|
+
}
|
|
65
|
+
return await promptApplicationSelection(applicationService, options);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Validate application exists
|
|
69
|
+
*/
|
|
70
|
+
async function validateApplicationExists(applicationService, applicationId) {
|
|
71
|
+
try {
|
|
72
|
+
await applicationService.getApplication(applicationId);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=application-prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/output-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/output-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAqBT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAuBT;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,EAC9C,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -35,7 +35,7 @@ function formatApplication(app) {
|
|
|
35
35
|
if (app.description) {
|
|
36
36
|
output += chalk_1.default.gray(` Description: ${app.description}\n`);
|
|
37
37
|
}
|
|
38
|
-
output += chalk_1.default.cyan(` URL: ${app.
|
|
38
|
+
output += chalk_1.default.cyan(` URL: ${app.url}\n`);
|
|
39
39
|
return output;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* When used in application configuration with 'base64:' prefix,
|
|
6
6
|
* the agent will decode and write to working directory.
|
|
7
7
|
*/
|
|
8
|
-
export declare const OPEN_WEBUI_COMPOSE_BASE64 = "
|
|
8
|
+
export declare const OPEN_WEBUI_COMPOSE_BASE64 = "c2VydmljZXM6CiAgb3Blbi13ZWJ1aToKICAgIGltYWdlOiBnaGNyLmlvL29wZW4td2VidWkvb3Blbi13ZWJ1aToke1dFQlVJX0RPQ0tFUl9UQUctbWFpbn0KICAgIGNvbnRhaW5lcl9uYW1lOiBvcGVuLXdlYnVpCiAgICB2b2x1bWVzOgogICAgICAtIG9wZW4td2VidWk6L2FwcC9iYWNrZW5kL2RhdGEKICAgIHBvcnRzOgogICAgICAtICR7T1BFTl9XRUJVSV9QT1JULTMyMDB9OjgwODAKICAgIGVudmlyb25tZW50OgogICAgICAtICdFTkFCTEVfT0FVVEhfU0lHTlVQPXRydWUnCiAgICAgIC0gJ0VOQUJMRV9TSUdOVVA9dHJ1ZScKICAgICAgIyAtICdXRUJVSV9VUkw9b3Blbi13ZWJ1aS45ZmI4MzllOS1jZTJjLTRhYmQtOTRkNS0wNTFlNjk2Y2YxYjcuZWRnaWJsZS5jb20nCiAgICAgIC0gJ09MTEFNQV9CQVNFX1VSTD0ke09MTEFNQV9CQVNFX1VSTDotaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjExNDM0fScKICAgICAgLSAnT0xMQU1BX0FQSV9LRVk9JHtPTExBTUFfQVBJX0tFWTotfScKICAgICAgIyAtICdXRUJVSV9TRUNSRVRfS0VZPTEyMycKICAgICAgLSAnV0VCVUlfQVVUSF9UUlVTVEVEX0VNQUlMX0hFQURFUj1YLUF1dGgtRW1haWwnCiAgICAgIC0gJ1dFQlVJX0FVVEhfVFJVU1RFRF9OQU1FX0hFQURFUj1YLUF1dGgtVXNlcicKICAgICAgIyAtICdXRUJVSV9BVVRIPWZhbHNlJwogICAgICAjIC0gJ1dFQlVJX1NFU1NJT05fQ09PS0lFX1NBTUVfU0lURT1sYXgnCiAgICAgICMgLSAnV0VCVUlfQVVUSF9DT09LSUVfU0FNRV9TSVRFPWxheCcKICAgICAgIyAtICdXRUJVSV9TRVNTSU9OX0NPT0tJRV9TRUNVUkU9ZmFsc2UnICAjIFNldCB0byBmYWxzZSBpZiB1c2luZyBIVFRQCiAgICAgICMgLSAnV0VCVUlfQVVUSF9DT09LSUVfU0VDVVJFPWZhbHNlJyAgICAgIyBTZXQgdG8gZmFsc2UgaWYgdXNpbmcgSFRUUAogICAgZXh0cmFfaG9zdHM6CiAgICAgIC0gaG9zdC5kb2NrZXIuaW50ZXJuYWw6aG9zdC1nYXRld2F5CgogICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQKCnZvbHVtZXM6CiAgb3Blbi13ZWJ1aToge30KCiMgRGVmaW5lIHRoZSBETlMgbmV0d29yayBhcyBleHRlcm5hbCAoY3JlYXRlZCBieSBhZ2VudCkKbmV0d29ya3M6CiAgZWRnaWJsZS1kbnMtbmV0d29yazoKICAgIGV4dGVybmFsOiB0cnVlCg==";
|
|
9
9
|
/**
|
|
10
10
|
* Get the dockerComposePath value for Open WebUI application
|
|
11
11
|
* @returns Base64-prefixed compose content ready for API submission
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-constants.d.ts","sourceRoot":"","sources":["../../src/generated/compose-constants.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"compose-constants.d.ts","sourceRoot":"","sources":["../../src/generated/compose-constants.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,6/CAA6/C,CAAC;AAEpiD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
|
|
@@ -11,7 +11,7 @@ exports.getOpenWebUIComposeValue = getOpenWebUIComposeValue;
|
|
|
11
11
|
* When used in application configuration with 'base64:' prefix,
|
|
12
12
|
* the agent will decode and write to working directory.
|
|
13
13
|
*/
|
|
14
|
-
exports.OPEN_WEBUI_COMPOSE_BASE64 = '
|
|
14
|
+
exports.OPEN_WEBUI_COMPOSE_BASE64 = 'c2VydmljZXM6CiAgb3Blbi13ZWJ1aToKICAgIGltYWdlOiBnaGNyLmlvL29wZW4td2VidWkvb3Blbi13ZWJ1aToke1dFQlVJX0RPQ0tFUl9UQUctbWFpbn0KICAgIGNvbnRhaW5lcl9uYW1lOiBvcGVuLXdlYnVpCiAgICB2b2x1bWVzOgogICAgICAtIG9wZW4td2VidWk6L2FwcC9iYWNrZW5kL2RhdGEKICAgIHBvcnRzOgogICAgICAtICR7T1BFTl9XRUJVSV9QT1JULTMyMDB9OjgwODAKICAgIGVudmlyb25tZW50OgogICAgICAtICdFTkFCTEVfT0FVVEhfU0lHTlVQPXRydWUnCiAgICAgIC0gJ0VOQUJMRV9TSUdOVVA9dHJ1ZScKICAgICAgIyAtICdXRUJVSV9VUkw9b3Blbi13ZWJ1aS45ZmI4MzllOS1jZTJjLTRhYmQtOTRkNS0wNTFlNjk2Y2YxYjcuZWRnaWJsZS5jb20nCiAgICAgIC0gJ09MTEFNQV9CQVNFX1VSTD0ke09MTEFNQV9CQVNFX1VSTDotaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjExNDM0fScKICAgICAgLSAnT0xMQU1BX0FQSV9LRVk9JHtPTExBTUFfQVBJX0tFWTotfScKICAgICAgIyAtICdXRUJVSV9TRUNSRVRfS0VZPTEyMycKICAgICAgLSAnV0VCVUlfQVVUSF9UUlVTVEVEX0VNQUlMX0hFQURFUj1YLUF1dGgtRW1haWwnCiAgICAgIC0gJ1dFQlVJX0FVVEhfVFJVU1RFRF9OQU1FX0hFQURFUj1YLUF1dGgtVXNlcicKICAgICAgIyAtICdXRUJVSV9BVVRIPWZhbHNlJwogICAgICAjIC0gJ1dFQlVJX1NFU1NJT05fQ09PS0lFX1NBTUVfU0lURT1sYXgnCiAgICAgICMgLSAnV0VCVUlfQVVUSF9DT09LSUVfU0FNRV9TSVRFPWxheCcKICAgICAgIyAtICdXRUJVSV9TRVNTSU9OX0NPT0tJRV9TRUNVUkU9ZmFsc2UnICAjIFNldCB0byBmYWxzZSBpZiB1c2luZyBIVFRQCiAgICAgICMgLSAnV0VCVUlfQVVUSF9DT09LSUVfU0VDVVJFPWZhbHNlJyAgICAgIyBTZXQgdG8gZmFsc2UgaWYgdXNpbmcgSFRUUAogICAgZXh0cmFfaG9zdHM6CiAgICAgIC0gaG9zdC5kb2NrZXIuaW50ZXJuYWw6aG9zdC1nYXRld2F5CgogICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQKCnZvbHVtZXM6CiAgb3Blbi13ZWJ1aToge30KCiMgRGVmaW5lIHRoZSBETlMgbmV0d29yayBhcyBleHRlcm5hbCAoY3JlYXRlZCBieSBhZ2VudCkKbmV0d29ya3M6CiAgZWRnaWJsZS1kbnMtbmV0d29yazoKICAgIGV4dGVybmFsOiB0cnVlCg==';
|
|
15
15
|
/**
|
|
16
16
|
* Get the dockerComposePath value for Open WebUI application
|
|
17
17
|
* @returns Base64-prefixed compose content ready for API submission
|
|
@@ -53,19 +53,6 @@ export interface AgentConfig {
|
|
|
53
53
|
* Defaults to 600000 (10 minutes)
|
|
54
54
|
*/
|
|
55
55
|
fullSyncInterval?: number;
|
|
56
|
-
/**
|
|
57
|
-
* DNS server configuration for container hostname resolution
|
|
58
|
-
*/
|
|
59
|
-
dns?: {
|
|
60
|
-
enabled?: boolean;
|
|
61
|
-
containerName?: string;
|
|
62
|
-
networkName?: string;
|
|
63
|
-
networkSubnet?: string;
|
|
64
|
-
dnsServerIp?: string;
|
|
65
|
-
hostGatewayIp?: string;
|
|
66
|
-
configPath?: string;
|
|
67
|
-
upstreamDns?: string[];
|
|
68
|
-
};
|
|
69
56
|
}
|
|
70
57
|
export interface HealthStatus {
|
|
71
58
|
status: 'healthy' | 'unhealthy' | 'timeout' | 'error' | 'pending';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentConfig.d.ts","sourceRoot":"","sources":["../../src/types/AgentConfig.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACvC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentConfig.d.ts","sourceRoot":"","sources":["../../src/types/AgentConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,9 +86,11 @@ export declare const CreateApplicationSchema: z.ZodObject<{
|
|
|
86
86
|
healthCheckPath: z.ZodOptional<z.ZodString>;
|
|
87
87
|
dockerComposePath: z.ZodOptional<z.ZodString>;
|
|
88
88
|
systemdService: z.ZodOptional<z.ZodString>;
|
|
89
|
+
deleteVolumesOnDeletion: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
89
90
|
}, "strip", z.ZodTypeAny, {
|
|
90
91
|
port: number;
|
|
91
92
|
protocol: "http" | "https" | "tcp" | "udp";
|
|
93
|
+
deleteVolumesOnDeletion: boolean;
|
|
92
94
|
command?: string | undefined;
|
|
93
95
|
logFile?: string | undefined;
|
|
94
96
|
workingDirectory?: string | undefined;
|
|
@@ -104,6 +106,7 @@ export declare const CreateApplicationSchema: z.ZodObject<{
|
|
|
104
106
|
workingDirectory?: string | undefined;
|
|
105
107
|
env?: Record<string, string> | undefined;
|
|
106
108
|
dockerComposePath?: string | undefined;
|
|
109
|
+
deleteVolumesOnDeletion?: boolean | undefined;
|
|
107
110
|
healthCheckPath?: string | undefined;
|
|
108
111
|
systemdService?: string | undefined;
|
|
109
112
|
}>;
|
|
@@ -122,6 +125,7 @@ export declare const CreateApplicationSchema: z.ZodObject<{
|
|
|
122
125
|
configuration: {
|
|
123
126
|
port: number;
|
|
124
127
|
protocol: "http" | "https" | "tcp" | "udp";
|
|
128
|
+
deleteVolumesOnDeletion: boolean;
|
|
125
129
|
command?: string | undefined;
|
|
126
130
|
logFile?: string | undefined;
|
|
127
131
|
workingDirectory?: string | undefined;
|
|
@@ -152,6 +156,7 @@ export declare const CreateApplicationSchema: z.ZodObject<{
|
|
|
152
156
|
workingDirectory?: string | undefined;
|
|
153
157
|
env?: Record<string, string> | undefined;
|
|
154
158
|
dockerComposePath?: string | undefined;
|
|
159
|
+
deleteVolumesOnDeletion?: boolean | undefined;
|
|
155
160
|
healthCheckPath?: string | undefined;
|
|
156
161
|
systemdService?: string | undefined;
|
|
157
162
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/types/validation/schemas.ts"],"names":[],"mappings":"AAGE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG1B,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;EAEhC,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAK3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAK3B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAOH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/types/validation/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,10 @@ exports.CreateApplicationSchema = zod_1.z.object({
|
|
|
56
56
|
.optional()
|
|
57
57
|
.describe('Path to docker-compose file OR base64-encoded content prefixed with "base64:"'),
|
|
58
58
|
systemdService: zod_1.z.string().optional(),
|
|
59
|
+
deleteVolumesOnDeletion: zod_1.z.boolean()
|
|
60
|
+
.optional()
|
|
61
|
+
.default(false)
|
|
62
|
+
.describe('Delete docker volumes when application is permanently deleted'),
|
|
59
63
|
}),
|
|
60
64
|
hostnames: zod_1.z
|
|
61
65
|
.array(zod_1.z
|
|
@@ -15,8 +15,4 @@ export declare function validateValue<T>(schema: z.ZodSchema<T>, value: unknown,
|
|
|
15
15
|
* Validate and transform command input
|
|
16
16
|
*/
|
|
17
17
|
export declare function validateAndTransform<TInput, TOutput>(input: TInput, schema: z.ZodSchema<TOutput>): TOutput;
|
|
18
|
-
/**
|
|
19
|
-
* Create a validation middleware for commands
|
|
20
|
-
*/
|
|
21
|
-
export declare function createValidationMiddleware<T>(schema: z.ZodSchema<T>): (options: unknown) => T;
|
|
22
18
|
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAY,MAAM,KAAK,CAAC;AAIlC;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAU9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAU7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAClD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAC3B,OAAO,CAUT
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validation/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAY,MAAM,KAAK,CAAC;AAIlC;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAU9E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,CAU7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAClD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAC3B,OAAO,CAUT"}
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.validateOptions = validateOptions;
|
|
8
8
|
exports.validateValue = validateValue;
|
|
9
9
|
exports.validateAndTransform = validateAndTransform;
|
|
10
|
-
exports.createValidationMiddleware = createValidationMiddleware;
|
|
11
10
|
const zod_1 = require("zod");
|
|
12
11
|
const errors_1 = require("../utils/errors");
|
|
13
12
|
const schemas_1 = require("./schemas");
|
|
@@ -56,12 +55,4 @@ function validateAndTransform(input, schema) {
|
|
|
56
55
|
throw error;
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Create a validation middleware for commands
|
|
61
|
-
*/
|
|
62
|
-
function createValidationMiddleware(schema) {
|
|
63
|
-
return (options) => {
|
|
64
|
-
return validateOptions(schema, options);
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
58
|
//# sourceMappingURL=validator.js.map
|