@insureco/cli 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 (174) hide show
  1. package/README.md +168 -0
  2. package/dist/commands/backup.d.ts +11 -0
  3. package/dist/commands/backup.d.ts.map +1 -0
  4. package/dist/commands/backup.js +112 -0
  5. package/dist/commands/backup.js.map +1 -0
  6. package/dist/commands/config.d.ts +10 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +41 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/deploy.d.ts +16 -0
  11. package/dist/commands/deploy.d.ts.map +1 -0
  12. package/dist/commands/deploy.js +219 -0
  13. package/dist/commands/deploy.js.map +1 -0
  14. package/dist/commands/destroy.d.ts +12 -0
  15. package/dist/commands/destroy.d.ts.map +1 -0
  16. package/dist/commands/destroy.js +62 -0
  17. package/dist/commands/destroy.js.map +1 -0
  18. package/dist/commands/env.d.ts +7 -0
  19. package/dist/commands/env.d.ts.map +1 -0
  20. package/dist/commands/env.js +42 -0
  21. package/dist/commands/env.js.map +1 -0
  22. package/dist/commands/init-ai.d.ts +7 -0
  23. package/dist/commands/init-ai.d.ts.map +1 -0
  24. package/dist/commands/init-ai.js +257 -0
  25. package/dist/commands/init-ai.js.map +1 -0
  26. package/dist/commands/init.d.ts +8 -0
  27. package/dist/commands/init.d.ts.map +1 -0
  28. package/dist/commands/init.js +228 -0
  29. package/dist/commands/init.js.map +1 -0
  30. package/dist/commands/link.d.ts +10 -0
  31. package/dist/commands/link.d.ts.map +1 -0
  32. package/dist/commands/link.js +193 -0
  33. package/dist/commands/link.js.map +1 -0
  34. package/dist/commands/login.d.ts +8 -0
  35. package/dist/commands/login.d.ts.map +1 -0
  36. package/dist/commands/login.js +164 -0
  37. package/dist/commands/login.js.map +1 -0
  38. package/dist/commands/logs.d.ts +16 -0
  39. package/dist/commands/logs.d.ts.map +1 -0
  40. package/dist/commands/logs.js +362 -0
  41. package/dist/commands/logs.js.map +1 -0
  42. package/dist/commands/preflight.d.ts +8 -0
  43. package/dist/commands/preflight.d.ts.map +1 -0
  44. package/dist/commands/preflight.js +188 -0
  45. package/dist/commands/preflight.js.map +1 -0
  46. package/dist/commands/program.d.ts +7 -0
  47. package/dist/commands/program.d.ts.map +1 -0
  48. package/dist/commands/program.js +59 -0
  49. package/dist/commands/program.js.map +1 -0
  50. package/dist/commands/push.d.ts +12 -0
  51. package/dist/commands/push.d.ts.map +1 -0
  52. package/dist/commands/push.js +171 -0
  53. package/dist/commands/push.js.map +1 -0
  54. package/dist/commands/register.d.ts +7 -0
  55. package/dist/commands/register.d.ts.map +1 -0
  56. package/dist/commands/register.js +124 -0
  57. package/dist/commands/register.js.map +1 -0
  58. package/dist/commands/rollback.d.ts +11 -0
  59. package/dist/commands/rollback.d.ts.map +1 -0
  60. package/dist/commands/rollback.js +172 -0
  61. package/dist/commands/rollback.js.map +1 -0
  62. package/dist/commands/sample.d.ts +11 -0
  63. package/dist/commands/sample.d.ts.map +1 -0
  64. package/dist/commands/sample.js +114 -0
  65. package/dist/commands/sample.js.map +1 -0
  66. package/dist/commands/services.d.ts +13 -0
  67. package/dist/commands/services.d.ts.map +1 -0
  68. package/dist/commands/services.js +95 -0
  69. package/dist/commands/services.js.map +1 -0
  70. package/dist/commands/status.d.ts +9 -0
  71. package/dist/commands/status.d.ts.map +1 -0
  72. package/dist/commands/status.js +170 -0
  73. package/dist/commands/status.js.map +1 -0
  74. package/dist/commands/troubleshoot.d.ts +19 -0
  75. package/dist/commands/troubleshoot.d.ts.map +1 -0
  76. package/dist/commands/troubleshoot.js +465 -0
  77. package/dist/commands/troubleshoot.js.map +1 -0
  78. package/dist/commands/versions.d.ts +16 -0
  79. package/dist/commands/versions.d.ts.map +1 -0
  80. package/dist/commands/versions.js +162 -0
  81. package/dist/commands/versions.js.map +1 -0
  82. package/dist/index.d.ts +3 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +294 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/lib/ai/client.d.ts +36 -0
  87. package/dist/lib/ai/client.d.ts.map +1 -0
  88. package/dist/lib/ai/client.js +140 -0
  89. package/dist/lib/ai/client.js.map +1 -0
  90. package/dist/lib/ai/generator.d.ts +17 -0
  91. package/dist/lib/ai/generator.d.ts.map +1 -0
  92. package/dist/lib/ai/generator.js +338 -0
  93. package/dist/lib/ai/generator.js.map +1 -0
  94. package/dist/lib/ai/prompts.d.ts +47 -0
  95. package/dist/lib/ai/prompts.d.ts.map +1 -0
  96. package/dist/lib/ai/prompts.js +247 -0
  97. package/dist/lib/ai/prompts.js.map +1 -0
  98. package/dist/lib/ai/scanner.d.ts +50 -0
  99. package/dist/lib/ai/scanner.d.ts.map +1 -0
  100. package/dist/lib/ai/scanner.js +237 -0
  101. package/dist/lib/ai/scanner.js.map +1 -0
  102. package/dist/lib/api.d.ts +18 -0
  103. package/dist/lib/api.d.ts.map +1 -0
  104. package/dist/lib/api.js +67 -0
  105. package/dist/lib/api.js.map +1 -0
  106. package/dist/lib/builder.d.ts +34 -0
  107. package/dist/lib/builder.d.ts.map +1 -0
  108. package/dist/lib/builder.js +132 -0
  109. package/dist/lib/builder.js.map +1 -0
  110. package/dist/lib/config.d.ts +20 -0
  111. package/dist/lib/config.d.ts.map +1 -0
  112. package/dist/lib/config.js +124 -0
  113. package/dist/lib/config.js.map +1 -0
  114. package/dist/lib/output.d.ts +12 -0
  115. package/dist/lib/output.d.ts.map +1 -0
  116. package/dist/lib/output.js +39 -0
  117. package/dist/lib/output.js.map +1 -0
  118. package/dist/lib/scaffold.d.ts +29 -0
  119. package/dist/lib/scaffold.d.ts.map +1 -0
  120. package/dist/lib/scaffold.js +166 -0
  121. package/dist/lib/scaffold.js.map +1 -0
  122. package/dist/lib/troubleshoot/analyzer.d.ts +14 -0
  123. package/dist/lib/troubleshoot/analyzer.d.ts.map +1 -0
  124. package/dist/lib/troubleshoot/analyzer.js +541 -0
  125. package/dist/lib/troubleshoot/analyzer.js.map +1 -0
  126. package/dist/lib/troubleshoot/auto-fix.d.ts +29 -0
  127. package/dist/lib/troubleshoot/auto-fix.d.ts.map +1 -0
  128. package/dist/lib/troubleshoot/auto-fix.js +373 -0
  129. package/dist/lib/troubleshoot/auto-fix.js.map +1 -0
  130. package/dist/lib/troubleshoot/index.d.ts +5 -0
  131. package/dist/lib/troubleshoot/index.d.ts.map +1 -0
  132. package/dist/lib/troubleshoot/index.js +6 -0
  133. package/dist/lib/troubleshoot/index.js.map +1 -0
  134. package/dist/lib/troubleshoot/log-fetcher.d.ts +43 -0
  135. package/dist/lib/troubleshoot/log-fetcher.d.ts.map +1 -0
  136. package/dist/lib/troubleshoot/log-fetcher.js +431 -0
  137. package/dist/lib/troubleshoot/log-fetcher.js.map +1 -0
  138. package/dist/lib/troubleshoot/redactor.d.ts +35 -0
  139. package/dist/lib/troubleshoot/redactor.d.ts.map +1 -0
  140. package/dist/lib/troubleshoot/redactor.js +208 -0
  141. package/dist/lib/troubleshoot/redactor.js.map +1 -0
  142. package/dist/lib/validators/catalog-validator.d.ts +3 -0
  143. package/dist/lib/validators/catalog-validator.d.ts.map +1 -0
  144. package/dist/lib/validators/catalog-validator.js +205 -0
  145. package/dist/lib/validators/catalog-validator.js.map +1 -0
  146. package/dist/lib/validators/dockerfile-validator.d.ts +4 -0
  147. package/dist/lib/validators/dockerfile-validator.d.ts.map +1 -0
  148. package/dist/lib/validators/dockerfile-validator.js +262 -0
  149. package/dist/lib/validators/dockerfile-validator.js.map +1 -0
  150. package/dist/lib/validators/env-validator.d.ts +3 -0
  151. package/dist/lib/validators/env-validator.d.ts.map +1 -0
  152. package/dist/lib/validators/env-validator.js +268 -0
  153. package/dist/lib/validators/env-validator.js.map +1 -0
  154. package/dist/lib/validators/git-validator.d.ts +3 -0
  155. package/dist/lib/validators/git-validator.d.ts.map +1 -0
  156. package/dist/lib/validators/git-validator.js +236 -0
  157. package/dist/lib/validators/git-validator.js.map +1 -0
  158. package/dist/lib/validators/health-detector.d.ts +4 -0
  159. package/dist/lib/validators/health-detector.d.ts.map +1 -0
  160. package/dist/lib/validators/health-detector.js +159 -0
  161. package/dist/lib/validators/health-detector.js.map +1 -0
  162. package/dist/lib/validators/index.d.ts +7 -0
  163. package/dist/lib/validators/index.d.ts.map +1 -0
  164. package/dist/lib/validators/index.js +7 -0
  165. package/dist/lib/validators/index.js.map +1 -0
  166. package/dist/lib/validators/route-validator.d.ts +3 -0
  167. package/dist/lib/validators/route-validator.d.ts.map +1 -0
  168. package/dist/lib/validators/route-validator.js +238 -0
  169. package/dist/lib/validators/route-validator.js.map +1 -0
  170. package/dist/types/index.d.ts +455 -0
  171. package/dist/types/index.d.ts.map +1 -0
  172. package/dist/types/index.js +37 -0
  173. package/dist/types/index.js.map +1 -0
  174. package/package.json +58 -0
@@ -0,0 +1,59 @@
1
+ import { KokoClient } from '../lib/api.js';
2
+ import { log, formatTable } from '../lib/output.js';
3
+ export async function programCommand(programId, options) {
4
+ const client = await KokoClient.create();
5
+ if (!programId) {
6
+ // List all programs
7
+ const result = await client.listPrograms();
8
+ if (!result.success) {
9
+ log.error(`Failed to list programs: ${result.error?.message}`);
10
+ process.exit(1);
11
+ }
12
+ if (!result.data || result.data.length === 0) {
13
+ log.warning('No programs found');
14
+ return;
15
+ }
16
+ let programs = result.data;
17
+ // Apply filters
18
+ if (options.status) {
19
+ programs = programs.filter((p) => p.status === options.status);
20
+ }
21
+ if (options.tier) {
22
+ programs = programs.filter((p) => p.tier === options.tier);
23
+ }
24
+ if (programs.length === 0) {
25
+ log.warning('No programs match the filter criteria');
26
+ return;
27
+ }
28
+ const rows = programs.map((p) => [
29
+ p.code,
30
+ p.name,
31
+ p.status,
32
+ p.tier,
33
+ new Date(p.createdAt).toLocaleDateString(),
34
+ ]);
35
+ console.log(formatTable(['CODE', 'NAME', 'STATUS', 'TIER', 'CREATED'], rows));
36
+ return;
37
+ }
38
+ // Get specific program details
39
+ const result = await client.getProgram(programId);
40
+ if (!result.success) {
41
+ log.error(`Failed to get program: ${result.error?.message}`);
42
+ process.exit(1);
43
+ }
44
+ const program = result.data;
45
+ if (!program) {
46
+ log.error(`Program "${programId}" not found`);
47
+ process.exit(1);
48
+ }
49
+ log.info(`Program: ${program.name}`);
50
+ log.info('');
51
+ log.dim(` ID: ${program.id}`);
52
+ log.dim(` Code: ${program.code}`);
53
+ log.dim(` Status: ${program.status}`);
54
+ log.dim(` Tier: ${program.tier}`);
55
+ log.dim(` Company: ${program.companyId}`);
56
+ log.dim(` Created: ${new Date(program.createdAt).toLocaleString()}`);
57
+ log.dim(` Updated: ${new Date(program.updatedAt).toLocaleString()}`);
58
+ }
59
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/commands/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface PushOptions {
2
+ message?: string;
3
+ deploy?: boolean;
4
+ env?: string;
5
+ prod?: boolean;
6
+ sandbox?: boolean;
7
+ uat?: boolean;
8
+ watch?: boolean;
9
+ }
10
+ export declare function pushCommand(options: PushOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFrE"}
@@ -0,0 +1,171 @@
1
+ import { readFile, stat } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { execSync } from 'node:child_process';
4
+ import { createHash } from 'node:crypto';
5
+ import { tmpdir } from 'node:os';
6
+ import { loadLinkedService, loadAuth } from '../lib/config.js';
7
+ import { BuilderClient } from '../lib/builder.js';
8
+ import { log, spinner } from '../lib/output.js';
9
+ export async function pushCommand(options) {
10
+ // Check authentication
11
+ const auth = await loadAuth();
12
+ if (!auth) {
13
+ log.error('Not logged in. Run "iec login" first.');
14
+ process.exit(1);
15
+ }
16
+ // Check if linked
17
+ const linkedService = await loadLinkedService();
18
+ if (!linkedService) {
19
+ log.error('Not linked to a service. Run "iec link" first.');
20
+ process.exit(1);
21
+ }
22
+ const { serviceId, serviceName } = linkedService;
23
+ const projectDir = process.cwd();
24
+ log.info(`Pushing ${serviceName}`);
25
+ log.dim(` Service ID: ${serviceId}`);
26
+ // Create tarball
27
+ const sp = spinner('Creating archive');
28
+ let archivePath;
29
+ let archiveSize;
30
+ let checksum;
31
+ try {
32
+ archivePath = await createTarball(projectDir);
33
+ const stats = await stat(archivePath);
34
+ archiveSize = stats.size;
35
+ checksum = await calculateChecksum(archivePath);
36
+ sp.stop(true);
37
+ log.dim(` Archive size: ${formatBytes(archiveSize)}`);
38
+ log.dim(` Checksum: ${checksum.substring(0, 12)}...`);
39
+ }
40
+ catch (error) {
41
+ sp.stop(false);
42
+ if (error instanceof Error) {
43
+ log.error(`Failed to create archive: ${error.message}`);
44
+ }
45
+ process.exit(1);
46
+ }
47
+ // Upload to builder
48
+ const spUpload = spinner('Uploading archive');
49
+ try {
50
+ const builder = await BuilderClient.create();
51
+ const archiveBuffer = await readFile(archivePath);
52
+ const result = await builder.push({
53
+ serviceId,
54
+ serviceName,
55
+ archive: archiveBuffer,
56
+ checksum,
57
+ message: options.message || getLastCommitMessage(),
58
+ });
59
+ if (!result.success || !result.data) {
60
+ spUpload.stop(false);
61
+ log.error(`Upload failed: ${result.error?.message || 'Unknown error'}`);
62
+ process.exit(1);
63
+ }
64
+ spUpload.stop(true);
65
+ const { versionId, message } = result.data;
66
+ log.success(`Version created: ${versionId.substring(0, 8)}`);
67
+ log.dim(` ${message}`);
68
+ // Clean up temp file
69
+ execSync(`rm -f "${archivePath}"`, { stdio: 'ignore' });
70
+ // Deploy if requested
71
+ if (options.deploy) {
72
+ await triggerDeploy(builder, serviceId, versionId, options);
73
+ }
74
+ else {
75
+ log.info('');
76
+ log.info('To deploy this version:');
77
+ log.dim(` iec versions deploy ${versionId.substring(0, 8)}`);
78
+ }
79
+ }
80
+ catch (error) {
81
+ spUpload.stop(false);
82
+ if (error instanceof Error) {
83
+ log.error(`Push failed: ${error.message}`);
84
+ }
85
+ process.exit(1);
86
+ }
87
+ }
88
+ async function createTarball(projectDir) {
89
+ const archiveName = `iec-push-${Date.now()}.tar.gz`;
90
+ const archivePath = join(tmpdir(), archiveName);
91
+ // Get list of files respecting .gitignore
92
+ // Use git archive if available, otherwise fall back to tar with exclusions
93
+ try {
94
+ execSync(`git archive --format=tar.gz -o "${archivePath}" HEAD`, {
95
+ cwd: projectDir,
96
+ stdio: 'pipe',
97
+ });
98
+ }
99
+ catch {
100
+ // Fallback: use tar with common exclusions
101
+ const exclusions = [
102
+ '--exclude=node_modules',
103
+ '--exclude=.git',
104
+ '--exclude=dist',
105
+ '--exclude=build',
106
+ '--exclude=.env',
107
+ '--exclude=.env.*',
108
+ '--exclude=*.log',
109
+ ];
110
+ execSync(`tar ${exclusions.join(' ')} -czf "${archivePath}" -C "${projectDir}" .`, { stdio: 'pipe' });
111
+ }
112
+ return archivePath;
113
+ }
114
+ async function calculateChecksum(filePath) {
115
+ const content = await readFile(filePath);
116
+ return createHash('sha256').update(content).digest('hex');
117
+ }
118
+ function getLastCommitMessage() {
119
+ try {
120
+ return execSync('git log -1 --pretty=%B', { encoding: 'utf-8' }).trim();
121
+ }
122
+ catch {
123
+ return 'Code push via iec-cli';
124
+ }
125
+ }
126
+ function formatBytes(bytes) {
127
+ if (bytes < 1024)
128
+ return `${bytes} B`;
129
+ if (bytes < 1024 * 1024)
130
+ return `${(bytes / 1024).toFixed(1)} KB`;
131
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
132
+ }
133
+ async function triggerDeploy(builder, serviceId, versionId, options) {
134
+ // Resolve environment
135
+ let environment = 'sandbox';
136
+ if (options.prod) {
137
+ environment = 'prod';
138
+ }
139
+ else if (options.uat) {
140
+ environment = 'uat';
141
+ }
142
+ else if (options.sandbox) {
143
+ environment = 'sandbox';
144
+ }
145
+ else if (options.env) {
146
+ environment = options.env;
147
+ }
148
+ log.info('');
149
+ log.info(`Deploying to ${environment}...`);
150
+ const sp = spinner('Triggering deployment');
151
+ const result = await builder.deployVersion(versionId, environment);
152
+ if (!result.success || !result.data) {
153
+ sp.stop(false);
154
+ log.error(`Deploy failed: ${result.error?.message || 'Unknown error'}`);
155
+ process.exit(1);
156
+ }
157
+ sp.stop(true);
158
+ log.success(`Deployment triggered: ${result.data.buildId.substring(0, 8)}`);
159
+ if (options.watch) {
160
+ log.info('');
161
+ log.info('Watching build progress...');
162
+ log.dim('Press Ctrl+C to stop watching');
163
+ // TODO: Implement build watching (reuse from deploy.ts)
164
+ }
165
+ else {
166
+ log.info('');
167
+ log.info('To watch progress:');
168
+ log.dim(` iec status --build ${result.data.buildId}`);
169
+ }
170
+ }
171
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface RegisterOptions {
2
+ upstream?: string;
3
+ force?: boolean;
4
+ }
5
+ export declare function registerCommand(options: RegisterOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuI7E"}
@@ -0,0 +1,124 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { parse } from 'yaml';
4
+ import { KokoClient } from '../lib/api.js';
5
+ import { loadConfig } from '../lib/config.js';
6
+ import { log, spinner } from '../lib/output.js';
7
+ export async function registerCommand(options) {
8
+ const catalogPath = join(process.cwd(), 'catalog-info.yaml');
9
+ // Read catalog-info.yaml
10
+ let catalogInfo;
11
+ try {
12
+ const content = await readFile(catalogPath, 'utf-8');
13
+ catalogInfo = parse(content);
14
+ }
15
+ catch (error) {
16
+ if (error.code === 'ENOENT') {
17
+ log.error('catalog-info.yaml not found in current directory');
18
+ log.dim('Run "iec init <service-name>" to create a new service');
19
+ process.exit(1);
20
+ }
21
+ throw error;
22
+ }
23
+ const serviceName = catalogInfo.metadata.name;
24
+ const sp = spinner(`Registering ${serviceName} with Koko`);
25
+ try {
26
+ const config = await loadConfig();
27
+ const client = await KokoClient.create();
28
+ // Check if service already exists
29
+ const existingResult = await client.getService(serviceName);
30
+ if (existingResult.success && existingResult.data) {
31
+ if (!options.force) {
32
+ sp.stop(false);
33
+ log.warning(`Service "${serviceName}" already registered`);
34
+ log.dim('Use --force to update the existing registration');
35
+ process.exit(1);
36
+ }
37
+ // Update existing service
38
+ const updates = {
39
+ description: catalogInfo.metadata.description,
40
+ owner: catalogInfo.spec.owner,
41
+ tags: catalogInfo.metadata.tags,
42
+ };
43
+ if (options.upstream) {
44
+ updates.upstream = options.upstream;
45
+ }
46
+ // Include routes from catalog-info.yaml
47
+ if (catalogInfo.spec.routes && catalogInfo.spec.routes.length > 0) {
48
+ updates.routes = catalogInfo.spec.routes;
49
+ }
50
+ // Include OAuth config from catalog-info.yaml
51
+ if (catalogInfo.spec.oauth) {
52
+ updates.oauth = catalogInfo.spec.oauth;
53
+ }
54
+ const updateResult = await client.updateService(serviceName, updates);
55
+ if (!updateResult.success) {
56
+ sp.stop(false);
57
+ log.error(`Failed to update service: ${updateResult.error?.message}`);
58
+ process.exit(1);
59
+ }
60
+ sp.stop(true);
61
+ log.success(`Updated service "${serviceName}"`);
62
+ return;
63
+ }
64
+ // Derive port from annotation if present
65
+ const portAnnotation = catalogInfo.metadata.annotations?.['insureco.io/port'];
66
+ const port = portAnnotation || '3000';
67
+ // Register new service
68
+ const serviceRequest = {
69
+ id: serviceName,
70
+ name: catalogInfo.metadata.name,
71
+ description: catalogInfo.metadata.description || '',
72
+ owner: catalogInfo.spec.owner,
73
+ repo: `insurecosys/iec-${serviceName}`,
74
+ upstream: options.upstream || `http://${serviceName}:${port}`,
75
+ healthEndpoint: '/health',
76
+ tags: catalogInfo.metadata.tags || [],
77
+ metadata: {},
78
+ };
79
+ // Check for database annotation
80
+ const dbAnnotation = catalogInfo.metadata.annotations?.['insureco.io/database'];
81
+ if (dbAnnotation) {
82
+ serviceRequest.database = dbAnnotation;
83
+ }
84
+ // Include routes from catalog-info.yaml
85
+ if (catalogInfo.spec.routes && catalogInfo.spec.routes.length > 0) {
86
+ serviceRequest.routes = catalogInfo.spec.routes;
87
+ log.dim(` Routes: ${catalogInfo.spec.routes.length} routes defined`);
88
+ }
89
+ // Include OAuth config from catalog-info.yaml
90
+ if (catalogInfo.spec.oauth) {
91
+ serviceRequest.oauth = catalogInfo.spec.oauth;
92
+ log.dim(` OAuth client: ${catalogInfo.spec.oauth.clientId}`);
93
+ }
94
+ const result = await client.registerService(serviceRequest);
95
+ if (!result.success) {
96
+ sp.stop(false);
97
+ log.error(`Registration failed: ${result.error?.message}`);
98
+ process.exit(1);
99
+ }
100
+ sp.stop(true);
101
+ log.success(`Registered "${serviceName}" with Koko`);
102
+ log.dim(` ID: ${result.data?.id}`);
103
+ log.dim(` Upstream: ${result.data?.upstream}`);
104
+ log.dim(` API URL: ${config.koko_url}/api/services/${serviceName}`);
105
+ if (serviceRequest.routes && serviceRequest.routes.length > 0) {
106
+ log.dim(` Routes: ${serviceRequest.routes.length} routes`);
107
+ }
108
+ if (serviceRequest.oauth) {
109
+ log.dim(` OAuth: ${serviceRequest.oauth.clientId} (${serviceRequest.oauth.grantTypes.join(', ')})`);
110
+ }
111
+ if (serviceRequest.database) {
112
+ log.info('');
113
+ log.info(`Database "${serviceRequest.database}" will be provisioned on first deploy`);
114
+ }
115
+ }
116
+ catch (error) {
117
+ sp.stop(false);
118
+ if (error instanceof Error) {
119
+ log.error(`Registration failed: ${error.message}`);
120
+ }
121
+ process.exit(1);
122
+ }
123
+ }
124
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface RollbackOptions {
2
+ env?: string;
3
+ prod?: boolean;
4
+ sandbox?: boolean;
5
+ uat?: boolean;
6
+ watch?: boolean;
7
+ yes?: boolean;
8
+ }
9
+ export declare function rollbackCommand(versionIdOrSteps: string | undefined, options: RollbackOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,wBAAsB,eAAe,CACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAoFf"}
@@ -0,0 +1,172 @@
1
+ import { loadLinkedService } from '../lib/config.js';
2
+ import { BuilderClient } from '../lib/builder.js';
3
+ import { log, spinner, formatTable } from '../lib/output.js';
4
+ export async function rollbackCommand(versionIdOrSteps, options) {
5
+ const builder = await BuilderClient.create();
6
+ // Check if linked
7
+ const linkedService = await loadLinkedService();
8
+ if (!linkedService) {
9
+ log.error('Not linked to a service. Run "iec link" first.');
10
+ process.exit(1);
11
+ }
12
+ const { serviceId, serviceName } = linkedService;
13
+ // Resolve environment
14
+ let environment = 'sandbox';
15
+ if (options.prod) {
16
+ environment = 'prod';
17
+ }
18
+ else if (options.uat) {
19
+ environment = 'uat';
20
+ }
21
+ else if (options.sandbox) {
22
+ environment = 'sandbox';
23
+ }
24
+ else if (options.env) {
25
+ environment = options.env;
26
+ }
27
+ // If no version specified, show recent versions and prompt
28
+ if (!versionIdOrSteps) {
29
+ await showRollbackOptions(builder, serviceId, environment);
30
+ return;
31
+ }
32
+ // Check if argument is a number (steps back) or version ID
33
+ const isSteps = /^\d+$/.test(versionIdOrSteps);
34
+ let targetVersionId;
35
+ if (isSteps) {
36
+ const steps = parseInt(versionIdOrSteps, 10);
37
+ const version = await findVersionBySteps(builder, serviceId, environment, steps);
38
+ if (!version) {
39
+ log.error(`No version found ${steps} deployments ago`);
40
+ process.exit(1);
41
+ }
42
+ targetVersionId = version.id;
43
+ log.info(`Rolling back ${steps} version(s) to: ${version.id.substring(0, 8)}`);
44
+ log.dim(` Message: ${version.message.substring(0, 60)}`);
45
+ }
46
+ else {
47
+ targetVersionId = versionIdOrSteps;
48
+ }
49
+ // Confirm rollback for production
50
+ if (environment === 'prod' && !options.yes) {
51
+ log.warning('You are about to rollback PRODUCTION');
52
+ log.dim(` Version: ${targetVersionId.substring(0, 8)}`);
53
+ log.dim(` Service: ${serviceName}`);
54
+ log.info('');
55
+ log.info('To confirm, run with --yes flag:');
56
+ log.dim(` iec rollback ${versionIdOrSteps} --prod --yes`);
57
+ process.exit(1);
58
+ }
59
+ log.info(`Rolling back ${serviceName} to ${targetVersionId.substring(0, 8)}`);
60
+ log.dim(` Environment: ${environment}`);
61
+ const sp = spinner('Triggering rollback deployment');
62
+ const result = await builder.deployVersion(targetVersionId, environment);
63
+ if (!result.success || !result.data) {
64
+ sp.stop(false);
65
+ log.error(`Rollback failed: ${result.error?.message || 'Unknown error'}`);
66
+ process.exit(1);
67
+ }
68
+ sp.stop(true);
69
+ log.success(`Rollback deployment triggered: ${result.data.buildId.substring(0, 8)}`);
70
+ if (options.watch) {
71
+ log.info('');
72
+ log.info('Watching deployment progress...');
73
+ log.dim('Press Ctrl+C to stop watching');
74
+ await watchBuild(builder, result.data.buildId);
75
+ }
76
+ else {
77
+ log.info('');
78
+ log.info('To watch progress:');
79
+ log.dim(` iec status --build ${result.data.buildId}`);
80
+ }
81
+ }
82
+ async function showRollbackOptions(builder, serviceId, environment) {
83
+ log.info('Recent versions available for rollback:');
84
+ log.info('');
85
+ const sp = spinner('Fetching versions');
86
+ const result = await builder.listVersions(serviceId);
87
+ sp.stop(true);
88
+ if (!result.success || !result.data) {
89
+ log.error(`Failed to list versions: ${result.error?.message || 'Unknown error'}`);
90
+ process.exit(1);
91
+ }
92
+ const versions = result.data.slice(0, 10);
93
+ if (versions.length === 0) {
94
+ log.warning('No versions available for rollback');
95
+ return;
96
+ }
97
+ const rows = versions.map((v, index) => [
98
+ v.id.substring(0, 8),
99
+ index === 0 ? '(current)' : `-${index}`,
100
+ v.message.substring(0, 35) + (v.message.length > 35 ? '...' : ''),
101
+ formatTime(v.createdAt),
102
+ ]);
103
+ console.log(formatTable(['VERSION', 'STEPS', 'MESSAGE', 'CREATED'], rows));
104
+ log.info('');
105
+ log.info('To rollback, use one of:');
106
+ log.dim(` iec rollback 1 # Rollback 1 version`);
107
+ log.dim(` iec rollback ${versions[1]?.id.substring(0, 8) || 'abc12345'} # Rollback to specific version`);
108
+ log.dim(` iec rollback 2 --prod --yes # Rollback production 2 versions`);
109
+ }
110
+ async function findVersionBySteps(builder, serviceId, environment, steps) {
111
+ const result = await builder.listVersions(serviceId);
112
+ if (!result.success || !result.data) {
113
+ return null;
114
+ }
115
+ // Find versions deployed to this environment
116
+ const deployedVersions = result.data.filter((v) => v.deployedTo?.includes(environment));
117
+ if (deployedVersions.length <= steps) {
118
+ // Fall back to all versions if not enough deployed ones
119
+ return result.data[steps] || null;
120
+ }
121
+ return deployedVersions[steps] || null;
122
+ }
123
+ async function watchBuild(builder, buildId) {
124
+ const terminalStates = ['completed', 'failed', 'cancelled'];
125
+ let lastStatus = '';
126
+ while (true) {
127
+ const result = await builder.getBuild(buildId);
128
+ if (!result.success || !result.data) {
129
+ log.error('Failed to get build status');
130
+ process.exit(1);
131
+ }
132
+ const build = result.data;
133
+ if (build.status !== lastStatus) {
134
+ lastStatus = build.status;
135
+ log.info(`[${build.status.toUpperCase()}] ${build.status}`);
136
+ }
137
+ if (terminalStates.includes(build.status)) {
138
+ log.info('');
139
+ if (build.status === 'completed') {
140
+ log.success('Rollback completed successfully!');
141
+ }
142
+ else if (build.status === 'cancelled') {
143
+ log.warning('Rollback was cancelled');
144
+ }
145
+ else {
146
+ log.error('Rollback failed');
147
+ if (build.error) {
148
+ log.dim(` Error: ${build.error}`);
149
+ }
150
+ process.exit(1);
151
+ }
152
+ break;
153
+ }
154
+ await new Promise((resolve) => setTimeout(resolve, 2000));
155
+ }
156
+ }
157
+ function formatTime(isoString) {
158
+ const date = new Date(isoString);
159
+ const now = new Date();
160
+ const diffMs = now.getTime() - date.getTime();
161
+ const diffMins = Math.floor(diffMs / 60000);
162
+ if (diffMins < 1)
163
+ return 'just now';
164
+ if (diffMins < 60)
165
+ return `${diffMins}m ago`;
166
+ const diffHours = Math.floor(diffMins / 60);
167
+ if (diffHours < 24)
168
+ return `${diffHours}h ago`;
169
+ const diffDays = Math.floor(diffHours / 24);
170
+ return `${diffDays}d ago`;
171
+ }
172
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface SampleOptions {
2
+ api?: boolean;
3
+ nextjs?: boolean;
4
+ crosspod?: boolean;
5
+ worker?: boolean;
6
+ skipInstall?: boolean;
7
+ skipGit?: boolean;
8
+ }
9
+ export declare function sampleCommand(projectName: string | undefined, options: SampleOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../src/commands/sample.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAgED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA0Df"}