shyp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +64 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/add.d.ts +9 -0
  8. package/dist/commands/add.d.ts.map +1 -0
  9. package/dist/commands/add.js +69 -0
  10. package/dist/commands/add.js.map +1 -0
  11. package/dist/commands/deploy.d.ts +4 -0
  12. package/dist/commands/deploy.d.ts.map +1 -0
  13. package/dist/commands/deploy.js +104 -0
  14. package/dist/commands/deploy.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +2 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +97 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/index.d.ts +10 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/index.js +10 -0
  22. package/dist/commands/index.js.map +1 -0
  23. package/dist/commands/init.d.ts +4 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +150 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/logs.d.ts +5 -0
  28. package/dist/commands/logs.d.ts.map +1 -0
  29. package/dist/commands/logs.js +56 -0
  30. package/dist/commands/logs.js.map +1 -0
  31. package/dist/commands/ports.d.ts +2 -0
  32. package/dist/commands/ports.d.ts.map +1 -0
  33. package/dist/commands/ports.js +73 -0
  34. package/dist/commands/ports.js.map +1 -0
  35. package/dist/commands/start.d.ts +2 -0
  36. package/dist/commands/start.d.ts.map +1 -0
  37. package/dist/commands/start.js +11 -0
  38. package/dist/commands/start.js.map +1 -0
  39. package/dist/commands/status.d.ts +2 -0
  40. package/dist/commands/status.d.ts.map +1 -0
  41. package/dist/commands/status.js +73 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/sync.d.ts +4 -0
  44. package/dist/commands/sync.d.ts.map +1 -0
  45. package/dist/commands/sync.js +95 -0
  46. package/dist/commands/sync.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +6 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/lib/config.d.ts +10 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/config.js +116 -0
  54. package/dist/lib/config.js.map +1 -0
  55. package/dist/lib/deploy.d.ts +12 -0
  56. package/dist/lib/deploy.d.ts.map +1 -0
  57. package/dist/lib/deploy.js +288 -0
  58. package/dist/lib/deploy.js.map +1 -0
  59. package/dist/lib/git.d.ts +24 -0
  60. package/dist/lib/git.d.ts.map +1 -0
  61. package/dist/lib/git.js +82 -0
  62. package/dist/lib/git.js.map +1 -0
  63. package/dist/lib/index.d.ts +7 -0
  64. package/dist/lib/index.d.ts.map +1 -0
  65. package/dist/lib/index.js +7 -0
  66. package/dist/lib/index.js.map +1 -0
  67. package/dist/lib/nginx.d.ts +16 -0
  68. package/dist/lib/nginx.d.ts.map +1 -0
  69. package/dist/lib/nginx.js +312 -0
  70. package/dist/lib/nginx.js.map +1 -0
  71. package/dist/lib/pm2.d.ts +25 -0
  72. package/dist/lib/pm2.d.ts.map +1 -0
  73. package/dist/lib/pm2.js +106 -0
  74. package/dist/lib/pm2.js.map +1 -0
  75. package/dist/lib/state.d.ts +12 -0
  76. package/dist/lib/state.d.ts.map +1 -0
  77. package/dist/lib/state.js +112 -0
  78. package/dist/lib/state.js.map +1 -0
  79. package/dist/schemas/app.d.ts +272 -0
  80. package/dist/schemas/app.d.ts.map +1 -0
  81. package/dist/schemas/app.js +79 -0
  82. package/dist/schemas/app.js.map +1 -0
  83. package/dist/schemas/config.d.ts +508 -0
  84. package/dist/schemas/config.d.ts.map +1 -0
  85. package/dist/schemas/config.js +62 -0
  86. package/dist/schemas/config.js.map +1 -0
  87. package/dist/schemas/engine.d.ts +772 -0
  88. package/dist/schemas/engine.d.ts.map +1 -0
  89. package/dist/schemas/engine.js +93 -0
  90. package/dist/schemas/engine.js.map +1 -0
  91. package/dist/schemas/index.d.ts +5 -0
  92. package/dist/schemas/index.d.ts.map +1 -0
  93. package/dist/schemas/index.js +5 -0
  94. package/dist/schemas/index.js.map +1 -0
  95. package/dist/schemas/state.d.ts +416 -0
  96. package/dist/schemas/state.d.ts.map +1 -0
  97. package/dist/schemas/state.js +56 -0
  98. package/dist/schemas/state.js.map +1 -0
  99. package/dist/server/index.d.ts +2 -0
  100. package/dist/server/index.d.ts.map +1 -0
  101. package/dist/server/index.js +51 -0
  102. package/dist/server/index.js.map +1 -0
  103. package/dist/server/webhook.d.ts +6 -0
  104. package/dist/server/webhook.d.ts.map +1 -0
  105. package/dist/server/webhook.js +163 -0
  106. package/dist/server/webhook.js.map +1 -0
  107. package/dist/utils/index.d.ts +4 -0
  108. package/dist/utils/index.d.ts.map +1 -0
  109. package/dist/utils/index.js +4 -0
  110. package/dist/utils/index.js.map +1 -0
  111. package/dist/utils/logger.d.ts +17 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +25 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/paths.d.ts +37 -0
  116. package/dist/utils/paths.d.ts.map +1 -0
  117. package/dist/utils/paths.js +35 -0
  118. package/dist/utils/paths.js.map +1 -0
  119. package/dist/utils/spinner.d.ts +4 -0
  120. package/dist/utils/spinner.d.ts.map +1 -0
  121. package/dist/utils/spinner.js +20 -0
  122. package/dist/utils/spinner.js.map +1 -0
  123. package/package.json +58 -0
@@ -0,0 +1,116 @@
1
+ import { readFile, readdir } from 'fs/promises';
2
+ import { existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { parse as parseYaml } from 'yaml';
5
+ import { parseGlobalConfig, parseAppConfig, parseEngineConfig, } from '../schemas/index.js';
6
+ import { CONFIG_FILE, APPS_DIR, ENGINES_DIR, } from '../utils/paths.js';
7
+ // Resolve environment variable references like ${VAR_NAME}
8
+ function resolveEnvVars(value) {
9
+ return value.replace(/\$\{([^}]+)\}/g, (_, varName) => {
10
+ return process.env[varName] || '';
11
+ });
12
+ }
13
+ // Recursively resolve env vars in object
14
+ function resolveEnvVarsDeep(obj) {
15
+ if (typeof obj === 'string') {
16
+ return resolveEnvVars(obj);
17
+ }
18
+ if (Array.isArray(obj)) {
19
+ return obj.map(resolveEnvVarsDeep);
20
+ }
21
+ if (obj && typeof obj === 'object') {
22
+ const result = {};
23
+ for (const [key, value] of Object.entries(obj)) {
24
+ result[key] = resolveEnvVarsDeep(value);
25
+ }
26
+ return result;
27
+ }
28
+ return obj;
29
+ }
30
+ // Load and parse a YAML file
31
+ async function loadYamlFile(path, parser) {
32
+ const content = await readFile(path, 'utf-8');
33
+ const data = parseYaml(content);
34
+ const resolved = resolveEnvVarsDeep(data);
35
+ return parser(resolved);
36
+ }
37
+ // Load global configuration
38
+ export async function loadGlobalConfig() {
39
+ if (!existsSync(CONFIG_FILE)) {
40
+ throw new Error(`Config file not found: ${CONFIG_FILE}`);
41
+ }
42
+ return loadYamlFile(CONFIG_FILE, parseGlobalConfig);
43
+ }
44
+ // Load all app configurations
45
+ export async function loadAppConfigs() {
46
+ const apps = new Map();
47
+ if (!existsSync(APPS_DIR)) {
48
+ return apps;
49
+ }
50
+ const files = await readdir(APPS_DIR);
51
+ for (const file of files) {
52
+ if (!file.endsWith('.yaml') && !file.endsWith('.yml'))
53
+ continue;
54
+ const path = join(APPS_DIR, file);
55
+ try {
56
+ const config = await loadYamlFile(path, parseAppConfig);
57
+ apps.set(config.name, config);
58
+ }
59
+ catch (error) {
60
+ console.error(`Failed to load ${file}:`, error);
61
+ }
62
+ }
63
+ return apps;
64
+ }
65
+ // Load a single app configuration
66
+ export async function loadAppConfig(name) {
67
+ const yamlPath = join(APPS_DIR, `${name}.yaml`);
68
+ const ymlPath = join(APPS_DIR, `${name}.yml`);
69
+ const path = existsSync(yamlPath) ? yamlPath : existsSync(ymlPath) ? ymlPath : null;
70
+ if (!path)
71
+ return null;
72
+ return loadYamlFile(path, parseAppConfig);
73
+ }
74
+ // Load all engine configurations
75
+ export async function loadEngineConfigs() {
76
+ const engines = new Map();
77
+ if (!existsSync(ENGINES_DIR)) {
78
+ return engines;
79
+ }
80
+ const files = await readdir(ENGINES_DIR);
81
+ for (const file of files) {
82
+ if (!file.endsWith('.yaml') && !file.endsWith('.yml'))
83
+ continue;
84
+ const path = join(ENGINES_DIR, file);
85
+ try {
86
+ const config = await loadYamlFile(path, parseEngineConfig);
87
+ engines.set(config.name, config);
88
+ }
89
+ catch (error) {
90
+ console.error(`Failed to load engine ${file}:`, error);
91
+ }
92
+ }
93
+ return engines;
94
+ }
95
+ // Load a single engine configuration
96
+ export async function loadEngineConfig(name) {
97
+ const yamlPath = join(ENGINES_DIR, `${name}.yaml`);
98
+ const ymlPath = join(ENGINES_DIR, `${name}.yml`);
99
+ const path = existsSync(yamlPath) ? yamlPath : existsSync(ymlPath) ? ymlPath : null;
100
+ if (!path)
101
+ return null;
102
+ return loadYamlFile(path, parseEngineConfig);
103
+ }
104
+ // Check if shyp is initialized
105
+ export function isInitialized() {
106
+ return existsSync(CONFIG_FILE);
107
+ }
108
+ // Get app config file path
109
+ export function getAppConfigPath(name) {
110
+ return join(APPS_DIR, `${name}.yaml`);
111
+ }
112
+ // Get engine config file path
113
+ export function getEngineConfigPath(name) {
114
+ return join(ENGINES_DIR, `${name}.yaml`);
115
+ }
116
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AppConfig, EngineConfig, ModuleConfig } from '../schemas/index.js';
2
+ export interface DeployResult {
3
+ success: boolean;
4
+ deploymentId: string;
5
+ duration: number;
6
+ commit?: string;
7
+ error?: string;
8
+ }
9
+ export declare function deployApp(config: AppConfig): Promise<DeployResult>;
10
+ export declare function deployModule(engine: EngineConfig, moduleName: string, moduleConfig: ModuleConfig): Promise<DeployResult>;
11
+ export declare function deployEngine(engine: EngineConfig): Promise<DeployResult>;
12
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/lib/deploy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAQhF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAyCD,wBAAsB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CA2GxE;AAGD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,YAAY,CAAC,CAyFvB;AAGD,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAqF9E"}
@@ -0,0 +1,288 @@
1
+ import { execa } from 'execa';
2
+ import { mkdir, appendFile } from 'fs/promises';
3
+ import { existsSync } from 'fs';
4
+ import { join } from 'path';
5
+ import * as git from './git.js';
6
+ import * as pm2 from './pm2.js';
7
+ import { recordDeployment, generateDeploymentId } from './state.js';
8
+ import { APPS_LOG_DIR } from '../utils/paths.js';
9
+ import { log } from '../utils/logger.js';
10
+ // Ensure log directories exist
11
+ async function ensureLogDir(appName) {
12
+ const logDir = join(APPS_LOG_DIR, appName);
13
+ if (!existsSync(logDir)) {
14
+ await mkdir(logDir, { recursive: true });
15
+ }
16
+ return logDir;
17
+ }
18
+ // Log to deployment file
19
+ async function logToFile(path, message) {
20
+ const timestamp = new Date().toISOString();
21
+ await appendFile(path, `[${timestamp}] ${message}\n`);
22
+ }
23
+ // Run a shell command with logging
24
+ async function runCommand(cmd, options) {
25
+ log.command(cmd);
26
+ const { stdout, stderr } = await execa('bash', ['-c', cmd], {
27
+ cwd: options.cwd,
28
+ env: { ...process.env, ...options.env },
29
+ reject: false,
30
+ });
31
+ if (options.logFile) {
32
+ if (stdout)
33
+ await logToFile(options.logFile, `STDOUT: ${stdout}`);
34
+ if (stderr)
35
+ await logToFile(options.logFile, `STDERR: ${stderr}`);
36
+ }
37
+ }
38
+ // Deploy a standard app
39
+ export async function deployApp(config) {
40
+ const deploymentId = generateDeploymentId();
41
+ const startTime = Date.now();
42
+ // Set up logging
43
+ const logDir = await ensureLogDir(config.name);
44
+ const logFile = join(logDir, `${deploymentId}.log`);
45
+ try {
46
+ await logToFile(logFile, `=== Starting deployment for ${config.name} ===`);
47
+ // Ensure repo is cloned
48
+ log.step('Checking repository...');
49
+ await git.ensureCloned(config.repo, config.path, {
50
+ branch: config.branch,
51
+ sshKey: config.sshKey,
52
+ });
53
+ // Pull latest changes
54
+ log.step('Pulling latest changes...');
55
+ await git.pull(config.path, config.branch, { sshKey: config.sshKey });
56
+ const commit = await git.getShortCommit(config.path);
57
+ await logToFile(logFile, `Pulled commit: ${commit}`);
58
+ // Stop existing process (for PM2 deployments)
59
+ if (config.deploy?.mode !== 'script') {
60
+ const pm2Name = config.pm2?.name || config.name;
61
+ log.step(`Stopping ${pm2Name}...`);
62
+ await pm2.stopProcess(pm2Name);
63
+ }
64
+ // Run build command
65
+ const buildCmd = config.build?.command || 'npm ci && npm run build';
66
+ log.step('Building...');
67
+ await runCommand(buildCmd, {
68
+ cwd: config.path,
69
+ env: config.env,
70
+ logFile,
71
+ });
72
+ // Start or run deploy script
73
+ if (config.deploy?.mode === 'script' && config.deploy.script) {
74
+ // Script-based deployment
75
+ log.step(`Running deploy script: ${config.deploy.script}`);
76
+ await runCommand(`chmod +x ${config.deploy.script} && ${config.deploy.script}`, {
77
+ cwd: config.path,
78
+ env: config.env,
79
+ logFile,
80
+ });
81
+ }
82
+ else {
83
+ // PM2-based deployment
84
+ const pm2Name = config.pm2?.name || config.name;
85
+ const startCmd = config.start?.command || 'npm start';
86
+ log.step(`Starting ${pm2Name}...`);
87
+ // Delete old process and start fresh
88
+ await pm2.deleteProcess(pm2Name);
89
+ await pm2.startProcess(pm2Name, startCmd, {
90
+ cwd: config.path,
91
+ env: config.env,
92
+ instances: config.resources?.instances || 1,
93
+ maxMemory: config.resources?.memory || '512M',
94
+ });
95
+ await pm2.saveProcessList();
96
+ }
97
+ const duration = Date.now() - startTime;
98
+ await logToFile(logFile, `=== Deployment complete (${duration}ms) ===`);
99
+ // Record deployment
100
+ await recordDeployment(config.name, {
101
+ id: deploymentId,
102
+ commit,
103
+ timestamp: new Date().toISOString(),
104
+ status: 'success',
105
+ duration_ms: duration,
106
+ });
107
+ return {
108
+ success: true,
109
+ deploymentId,
110
+ duration,
111
+ commit,
112
+ };
113
+ }
114
+ catch (error) {
115
+ const duration = Date.now() - startTime;
116
+ const errorMessage = error instanceof Error ? error.message : String(error);
117
+ await logToFile(logFile, `=== Deployment FAILED: ${errorMessage} ===`);
118
+ await recordDeployment(config.name, {
119
+ id: deploymentId,
120
+ timestamp: new Date().toISOString(),
121
+ status: 'failed',
122
+ duration_ms: duration,
123
+ error: errorMessage,
124
+ });
125
+ return {
126
+ success: false,
127
+ deploymentId,
128
+ duration,
129
+ error: errorMessage,
130
+ };
131
+ }
132
+ }
133
+ // Deploy an engine module
134
+ export async function deployModule(engine, moduleName, moduleConfig) {
135
+ const fullName = `${engine.name}/${moduleName}`;
136
+ const deploymentId = generateDeploymentId();
137
+ const startTime = Date.now();
138
+ const logDir = await ensureLogDir(fullName.replace('/', '-'));
139
+ const logFile = join(logDir, `${deploymentId}.log`);
140
+ try {
141
+ await logToFile(logFile, `=== Starting module deployment for ${fullName} ===`);
142
+ // Determine module path
143
+ const modulePath = moduleConfig.subpath
144
+ ? join(engine.server.path, moduleConfig.subpath)
145
+ : engine.server.path; // Module within engine directory
146
+ // If module has its own repo, clone/pull it
147
+ if (moduleConfig.repo) {
148
+ log.step('Updating module repository...');
149
+ await git.ensureCloned(moduleConfig.repo, modulePath, {
150
+ branch: moduleConfig.branch,
151
+ });
152
+ await git.pull(modulePath, moduleConfig.branch);
153
+ }
154
+ const commit = await git.getShortCommit(modulePath);
155
+ // Run deploy script or build
156
+ if (moduleConfig.deploy?.mode === 'script' && moduleConfig.deploy.script) {
157
+ log.step(`Running deploy script: ${moduleConfig.deploy.script}`);
158
+ const scriptPath = join(modulePath, moduleConfig.deploy.script);
159
+ await runCommand(`chmod +x ${scriptPath} && ${scriptPath}`, {
160
+ cwd: modulePath,
161
+ env: moduleConfig.env,
162
+ logFile,
163
+ });
164
+ }
165
+ else if (moduleConfig.build?.command) {
166
+ log.step('Building module...');
167
+ await runCommand(moduleConfig.build.command, {
168
+ cwd: modulePath,
169
+ env: moduleConfig.env,
170
+ logFile,
171
+ });
172
+ }
173
+ // If PM2-based, restart the process
174
+ if (moduleConfig.deploy?.mode === 'pm2' && moduleConfig.deploy.pm2_name) {
175
+ log.step(`Restarting ${moduleConfig.deploy.pm2_name}...`);
176
+ await pm2.restartProcess(moduleConfig.deploy.pm2_name);
177
+ }
178
+ const duration = Date.now() - startTime;
179
+ await logToFile(logFile, `=== Module deployment complete (${duration}ms) ===`);
180
+ await recordDeployment(fullName, {
181
+ id: deploymentId,
182
+ commit,
183
+ timestamp: new Date().toISOString(),
184
+ status: 'success',
185
+ duration_ms: duration,
186
+ });
187
+ return {
188
+ success: true,
189
+ deploymentId,
190
+ duration,
191
+ commit,
192
+ };
193
+ }
194
+ catch (error) {
195
+ const duration = Date.now() - startTime;
196
+ const errorMessage = error instanceof Error ? error.message : String(error);
197
+ await logToFile(logFile, `=== Module deployment FAILED: ${errorMessage} ===`);
198
+ await recordDeployment(fullName, {
199
+ id: deploymentId,
200
+ timestamp: new Date().toISOString(),
201
+ status: 'failed',
202
+ duration_ms: duration,
203
+ error: errorMessage,
204
+ });
205
+ return {
206
+ success: false,
207
+ deploymentId,
208
+ duration,
209
+ error: errorMessage,
210
+ };
211
+ }
212
+ }
213
+ // Deploy the engine server itself
214
+ export async function deployEngine(engine) {
215
+ const deploymentId = generateDeploymentId();
216
+ const startTime = Date.now();
217
+ const logDir = await ensureLogDir(engine.name);
218
+ const logFile = join(logDir, `${deploymentId}.log`);
219
+ try {
220
+ await logToFile(logFile, `=== Starting engine deployment for ${engine.name} ===`);
221
+ const serverConfig = engine.server;
222
+ // Clone/pull engine repo
223
+ log.step('Updating engine repository...');
224
+ await git.ensureCloned(serverConfig.repo, serverConfig.path, {
225
+ branch: serverConfig.branch,
226
+ sshKey: serverConfig.sshKey,
227
+ });
228
+ await git.pull(serverConfig.path, serverConfig.branch, {
229
+ sshKey: serverConfig.sshKey,
230
+ });
231
+ const commit = await git.getShortCommit(serverConfig.path);
232
+ // Stop engine process
233
+ const pm2Name = serverConfig.pm2?.name || engine.name;
234
+ log.step(`Stopping ${pm2Name}...`);
235
+ await pm2.stopProcess(pm2Name);
236
+ // Build
237
+ const buildCmd = serverConfig.build?.command || 'npm ci';
238
+ log.step('Building engine...');
239
+ await runCommand(buildCmd, {
240
+ cwd: serverConfig.path,
241
+ logFile,
242
+ });
243
+ // Start engine
244
+ const startCmd = serverConfig.start?.command || 'npm start';
245
+ log.step(`Starting ${pm2Name}...`);
246
+ await pm2.deleteProcess(pm2Name);
247
+ await pm2.startProcess(pm2Name, startCmd, {
248
+ cwd: serverConfig.path,
249
+ instances: serverConfig.pm2?.instances || 1,
250
+ maxMemory: serverConfig.pm2?.memory || '2G',
251
+ });
252
+ await pm2.saveProcessList();
253
+ const duration = Date.now() - startTime;
254
+ await logToFile(logFile, `=== Engine deployment complete (${duration}ms) ===`);
255
+ await recordDeployment(engine.name, {
256
+ id: deploymentId,
257
+ commit,
258
+ timestamp: new Date().toISOString(),
259
+ status: 'success',
260
+ duration_ms: duration,
261
+ });
262
+ return {
263
+ success: true,
264
+ deploymentId,
265
+ duration,
266
+ commit,
267
+ };
268
+ }
269
+ catch (error) {
270
+ const duration = Date.now() - startTime;
271
+ const errorMessage = error instanceof Error ? error.message : String(error);
272
+ await logToFile(logFile, `=== Engine deployment FAILED: ${errorMessage} ===`);
273
+ await recordDeployment(engine.name, {
274
+ id: deploymentId,
275
+ timestamp: new Date().toISOString(),
276
+ status: 'failed',
277
+ duration_ms: duration,
278
+ error: errorMessage,
279
+ });
280
+ return {
281
+ success: false,
282
+ deploymentId,
283
+ duration,
284
+ error: errorMessage,
285
+ };
286
+ }
287
+ }
288
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/lib/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAW,MAAM,MAAM,CAAA;AAEpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,YAAY,EAAW,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAWxC,+BAA+B;AAC/B,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,yBAAyB;AACzB,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAe;IACpD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC1C,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,CAAA;AACvD,CAAC;AAED,mCAAmC;AACnC,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,OAIC;IAED,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEhB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QAC1D,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QACvC,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,MAAM;YAAE,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,MAAM,EAAE,CAAC,CAAA;QACjE,IAAI,MAAM;YAAE,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,MAAM,EAAE,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAiB;IAC/C,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,iBAAiB;IACjB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,MAAM,CAAC,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE,+BAA+B,MAAM,CAAC,IAAI,MAAM,CAAC,CAAA;QAE1E,wBAAwB;QACxB,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAA;QAEF,sBAAsB;QACtB,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QACrE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,SAAS,CAAC,OAAO,EAAE,kBAAkB,MAAM,EAAE,CAAC,CAAA;QAEpD,8CAA8C;QAC9C,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAA;YAC/C,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,CAAC,CAAA;YAClC,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,yBAAyB,CAAA;QACnE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACvB,MAAM,UAAU,CAAC,QAAQ,EAAE;YACzB,GAAG,EAAE,MAAM,CAAC,IAAI;YAChB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;SACR,CAAC,CAAA;QAEF,6BAA6B;QAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC7D,0BAA0B;YAC1B,GAAG,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAC1D,MAAM,UAAU,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;gBAC9E,GAAG,EAAE,MAAM,CAAC,IAAI;gBAChB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAA;YAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,WAAW,CAAA;YAErD,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,CAAC,CAAA;YAElC,qCAAqC;YACrC,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAChC,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE;gBACxC,GAAG,EAAE,MAAM,CAAC,IAAI;gBAChB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;gBAC3C,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,MAAM;aAC9C,CAAC,CAAA;YAEF,MAAM,GAAG,CAAC,eAAe,EAAE,CAAA;QAC7B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,MAAM,SAAS,CAAC,OAAO,EAAE,4BAA4B,QAAQ,SAAS,CAAC,CAAA;QAEvE,oBAAoB;QACpB,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,YAAY;YAChB,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,QAAQ;YACR,MAAM;SACP,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3E,MAAM,SAAS,CAAC,OAAO,EAAE,0BAA0B,YAAY,MAAM,CAAC,CAAA;QAEtE,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,YAAY;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,QAAQ;YACrB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY;YACZ,QAAQ;YACR,KAAK,EAAE,YAAY;SACpB,CAAA;IACH,CAAC;AACH,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,UAAkB,EAClB,YAA0B;IAE1B,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,EAAE,CAAA;IAC/C,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,MAAM,CAAC,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE,sCAAsC,QAAQ,MAAM,CAAC,CAAA;QAE9E,wBAAwB;QACxB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO;YACrC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;YAChD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA,CAAC,iCAAiC;QAExD,4CAA4C;QAC5C,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;YACzC,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE;gBACpD,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC,CAAA;YACF,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAEnD,6BAA6B;QAC7B,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,0BAA0B,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/D,MAAM,UAAU,CAAC,YAAY,UAAU,OAAO,UAAU,EAAE,EAAE;gBAC1D,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,YAAY,CAAC,GAAG;gBACrB,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YAC9B,MAAM,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC3C,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,YAAY,CAAC,GAAG;gBACrB,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,KAAK,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAA;YACzD,MAAM,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,MAAM,SAAS,CAAC,OAAO,EAAE,mCAAmC,QAAQ,SAAS,CAAC,CAAA;QAE9E,MAAM,gBAAgB,CAAC,QAAQ,EAAE;YAC/B,EAAE,EAAE,YAAY;YAChB,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,QAAQ;YACR,MAAM;SACP,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3E,MAAM,SAAS,CAAC,OAAO,EAAE,iCAAiC,YAAY,MAAM,CAAC,CAAA;QAE7E,MAAM,gBAAgB,CAAC,QAAQ,EAAE;YAC/B,EAAE,EAAE,YAAY;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,QAAQ;YACrB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY;YACZ,QAAQ;YACR,KAAK,EAAE,YAAY;SACpB,CAAA;IACH,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAoB;IACrD,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,MAAM,CAAC,CAAA;IAEnD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE,sCAAsC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAA;QAEjF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;QAElC,yBAAyB;QACzB,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QACzC,MAAM,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;YAC3D,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC,CAAA;QACF,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;YACrD,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAE1D,sBAAsB;QACtB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAA;QACrD,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAE9B,QAAQ;QACR,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAA;QACxD,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC9B,MAAM,UAAU,CAAC,QAAQ,EAAE;YACzB,GAAG,EAAE,YAAY,CAAC,IAAI;YACtB,OAAO;SACR,CAAC,CAAA;QAEF,eAAe;QACf,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,IAAI,WAAW,CAAA;QAC3D,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE;YACxC,GAAG,EAAE,YAAY,CAAC,IAAI;YACtB,SAAS,EAAE,YAAY,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC;YAC3C,SAAS,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI;SAC5C,CAAC,CAAA;QACF,MAAM,GAAG,CAAC,eAAe,EAAE,CAAA;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,MAAM,SAAS,CAAC,OAAO,EAAE,mCAAmC,QAAQ,SAAS,CAAC,CAAA;QAE9E,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,YAAY;YAChB,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,QAAQ;YACR,MAAM;SACP,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE3E,MAAM,SAAS,CAAC,OAAO,EAAE,iCAAiC,YAAY,MAAM,CAAC,CAAA;QAE7E,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE;YAClC,EAAE,EAAE,YAAY;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,QAAQ;YACrB,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;QAEF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY;YACZ,QAAQ;YACR,KAAK,EAAE,YAAY;SACpB,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare function isGitRepo(path: string): boolean;
2
+ export declare function clone(repo: string, path: string, options?: {
3
+ branch?: string;
4
+ sshKey?: string;
5
+ }): Promise<void>;
6
+ export declare function fetch(path: string, options?: {
7
+ sshKey?: string;
8
+ }): Promise<void>;
9
+ export declare function reset(path: string, target: string, options?: {
10
+ sshKey?: string;
11
+ }): Promise<void>;
12
+ export declare function pull(path: string, branch?: string, options?: {
13
+ sshKey?: string;
14
+ }): Promise<void>;
15
+ export declare function getCurrentCommit(path: string): Promise<string>;
16
+ export declare function getShortCommit(path: string): Promise<string>;
17
+ export declare function getCurrentBranch(path: string): Promise<string>;
18
+ export declare function isGitAvailable(): Promise<boolean>;
19
+ export declare function getCommitMessage(path: string): Promise<string>;
20
+ export declare function ensureCloned(repo: string, path: string, options?: {
21
+ branch?: string;
22
+ sshKey?: string;
23
+ }): Promise<void>;
24
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"AAeA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAGD,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAUf;AAGD,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAKf;AAGD,wBAAsB,KAAK,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAKf;AAGD,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAe,EACvB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAGf;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAGD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAGD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,82 @@
1
+ import { execa } from 'execa';
2
+ import { existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { DEFAULT_SSH_KEY } from '../utils/paths.js';
5
+ // Git operations with SSH key support
6
+ function gitEnv(sshKey) {
7
+ const key = sshKey || DEFAULT_SSH_KEY;
8
+ return {
9
+ ...process.env,
10
+ GIT_SSH_COMMAND: `ssh -i ${key} -o StrictHostKeyChecking=no`,
11
+ };
12
+ }
13
+ // Check if a directory is a git repository
14
+ export function isGitRepo(path) {
15
+ return existsSync(join(path, '.git'));
16
+ }
17
+ // Clone a repository
18
+ export async function clone(repo, path, options = {}) {
19
+ const args = ['clone', repo, path];
20
+ if (options.branch) {
21
+ args.push('--branch', options.branch);
22
+ }
23
+ await execa('git', args, {
24
+ env: gitEnv(options.sshKey),
25
+ });
26
+ }
27
+ // Fetch from remote
28
+ export async function fetch(path, options = {}) {
29
+ await execa('git', ['fetch', 'origin'], {
30
+ cwd: path,
31
+ env: gitEnv(options.sshKey),
32
+ });
33
+ }
34
+ // Reset to a branch/commit (hard reset)
35
+ export async function reset(path, target, options = {}) {
36
+ await execa('git', ['reset', '--hard', target], {
37
+ cwd: path,
38
+ env: gitEnv(options.sshKey),
39
+ });
40
+ }
41
+ // Pull latest changes (fetch + reset)
42
+ export async function pull(path, branch = 'main', options = {}) {
43
+ await fetch(path, options);
44
+ await reset(path, `origin/${branch}`, options);
45
+ }
46
+ // Get current commit hash
47
+ export async function getCurrentCommit(path) {
48
+ const { stdout } = await execa('git', ['rev-parse', 'HEAD'], { cwd: path });
49
+ return stdout.trim();
50
+ }
51
+ // Get current commit hash (short)
52
+ export async function getShortCommit(path) {
53
+ const { stdout } = await execa('git', ['rev-parse', '--short', 'HEAD'], { cwd: path });
54
+ return stdout.trim();
55
+ }
56
+ // Get current branch
57
+ export async function getCurrentBranch(path) {
58
+ const { stdout } = await execa('git', ['branch', '--show-current'], { cwd: path });
59
+ return stdout.trim();
60
+ }
61
+ // Check if git is available
62
+ export async function isGitAvailable() {
63
+ try {
64
+ await execa('git', ['--version']);
65
+ return true;
66
+ }
67
+ catch {
68
+ return false;
69
+ }
70
+ }
71
+ // Get commit message
72
+ export async function getCommitMessage(path) {
73
+ const { stdout } = await execa('git', ['log', '-1', '--pretty=%B'], { cwd: path });
74
+ return stdout.trim();
75
+ }
76
+ // Ensure repository is cloned
77
+ export async function ensureCloned(repo, path, options = {}) {
78
+ if (!isGitRepo(path)) {
79
+ await clone(repo, path, options);
80
+ }
81
+ }
82
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './config.js';
2
+ export * from './state.js';
3
+ export * from './pm2.js';
4
+ export * from './git.js';
5
+ export * from './deploy.js';
6
+ export * from './nginx.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from './config.js';
2
+ export * from './state.js';
3
+ export * from './pm2.js';
4
+ export * from './git.js';
5
+ export * from './deploy.js';
6
+ export * from './nginx.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { AppConfig, EngineConfig, ModuleConfig } from '../schemas/index.js';
2
+ export declare function generateProxyConfig(config: AppConfig): string;
3
+ export declare function generateStaticConfig(config: AppConfig): string;
4
+ export declare function generateModuleConfig(engine: EngineConfig, moduleName: string, moduleConfig: ModuleConfig): string;
5
+ export declare function generateNginxConfig(config: AppConfig): string;
6
+ export declare function getNginxConfigName(name: string): string;
7
+ export declare function writeNginxConfig(name: string, content: string): Promise<void>;
8
+ export declare function enableNginxConfig(name: string): Promise<void>;
9
+ export declare function disableNginxConfig(name: string): Promise<void>;
10
+ export declare function testNginxConfig(): Promise<{
11
+ valid: boolean;
12
+ error?: string;
13
+ }>;
14
+ export declare function reloadNginx(): Promise<void>;
15
+ export declare function isNginxAvailable(): Promise<boolean>;
16
+ //# sourceMappingURL=nginx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nginx.d.ts","sourceRoot":"","sources":["../../src/lib/nginx.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIhF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAyF7D;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA2E9D;AAGD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,GACzB,MAAM,CAuFR;AAGD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAK7D;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInF;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWnE;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpE;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOnF;AAGD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzD"}