@quiltdata/benchling-webhook 0.8.0-20251118T071233Z → 0.8.3

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.
@@ -13,9 +13,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.logsCommand = logsCommand;
16
- const child_process_1 = require("child_process");
17
16
  const chalk_1 = __importDefault(require("chalk"));
17
+ const ora_1 = __importDefault(require("ora"));
18
+ const client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs");
19
+ const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
20
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
18
21
  const xdg_config_1 = require("../../lib/xdg-config");
22
+ const ecs_service_discovery_1 = require("../../lib/utils/ecs-service-discovery");
23
+ const time_format_1 = require("../../lib/utils/time-format");
24
+ const cli_helpers_1 = require("../../lib/utils/cli-helpers");
19
25
  const STACK_NAME = "BenchlingWebhookStack";
20
26
  /**
21
27
  * Get AWS region and deployment info from profile configuration
@@ -32,9 +38,9 @@ function getDeploymentInfo(profile, configStorage) {
32
38
  if (match) {
33
39
  return {
34
40
  region,
35
- stackName: STACK_NAME, // Still check BenchlingWebhookStack for metadata
41
+ stackName: STACK_NAME,
36
42
  integratedMode: true,
37
- quiltStackName: match[1], // But use Quilt stack name for logs
43
+ quiltStackName: match[1],
38
44
  };
39
45
  }
40
46
  }
@@ -53,56 +59,219 @@ function getDeploymentInfo(profile, configStorage) {
53
59
  return null;
54
60
  }
55
61
  /**
56
- * Tail logs from a single log group
62
+ * Double the time range, capping at 7 days
57
63
  */
58
- function tailLogs(logGroup, region, options) {
59
- const profileFlag = options.awsProfile ? `--profile ${options.awsProfile}` : "";
60
- let command = `aws logs tail "${logGroup}"`;
61
- command += ` --region ${region}`;
62
- if (profileFlag)
63
- command += ` ${profileFlag}`;
64
- command += ` --since ${options.since}`;
65
- command += " --format short";
66
- if (options.filter) {
67
- command += ` --filter-pattern "${options.filter}"`;
64
+ function expandTimeRange(currentSince) {
65
+ const currentMs = (0, time_format_1.parseTimeRange)(currentSince);
66
+ const doubledMs = currentMs * 2;
67
+ const maxMs = 7 * 24 * 60 * 60 * 1000; // 7 days
68
+ if (doubledMs >= maxMs) {
69
+ return "7d";
68
70
  }
69
- if (options.follow) {
70
- command += " --follow";
71
- console.log("Following logs (Press Ctrl+C to stop)...\n");
71
+ return (0, time_format_1.formatTimeRange)(doubledMs);
72
+ }
73
+ /**
74
+ * Get log group names from CloudFormation stack outputs or ECS services
75
+ */
76
+ async function getLogGroupsFromStack(stackName, region, integratedMode, awsProfile) {
77
+ try {
78
+ // For integrated mode, use shared ECS service discovery
79
+ if (integratedMode) {
80
+ return await (0, ecs_service_discovery_1.discoverECSServiceLogGroups)(stackName, region, awsProfile);
81
+ }
82
+ // For standalone mode, use stack outputs
83
+ const clientConfig = { region };
84
+ if (awsProfile) {
85
+ clientConfig.credentials = (0, credential_providers_1.fromIni)({ profile: awsProfile });
86
+ }
87
+ const cfClient = new client_cloudformation_1.CloudFormationClient(clientConfig);
88
+ const command = new client_cloudformation_1.DescribeStacksCommand({ StackName: stackName });
89
+ const response = await cfClient.send(command);
90
+ const stack = response.Stacks?.[0];
91
+ if (!stack) {
92
+ return {};
93
+ }
94
+ const outputs = stack.Outputs || [];
95
+ const logGroups = {};
96
+ const ecsLogGroup = outputs.find((o) => o.OutputKey === "EcsLogGroup")?.OutputValue;
97
+ const apiLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayLogGroup")?.OutputValue;
98
+ const apiExecLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayExecutionLogGroup")?.OutputValue;
99
+ if (ecsLogGroup)
100
+ logGroups["ecs"] = ecsLogGroup;
101
+ if (apiLogGroup)
102
+ logGroups["api"] = apiLogGroup;
103
+ if (apiExecLogGroup)
104
+ logGroups["api-exec"] = apiExecLogGroup;
105
+ return logGroups;
72
106
  }
73
- else {
74
- command += ` | tail -${options.tail}`;
75
- console.log(`Showing last ${options.tail} log entries from the past ${options.since}...\n`);
107
+ catch (error) {
108
+ console.warn(chalk_1.default.dim(`Could not retrieve log groups from stack: ${error.message}`));
109
+ return {};
76
110
  }
111
+ }
112
+ /**
113
+ * Fetch logs from a single log group
114
+ */
115
+ async function fetchLogsFromGroup(logGroupName, region, since, limit, filterPattern, awsProfile) {
77
116
  try {
78
- (0, child_process_1.execSync)(command, { stdio: "inherit" });
117
+ const clientConfig = { region };
118
+ if (awsProfile) {
119
+ clientConfig.credentials = (0, credential_providers_1.fromIni)({ profile: awsProfile });
120
+ }
121
+ const logsClient = new client_cloudwatch_logs_1.CloudWatchLogsClient(clientConfig);
122
+ const startTime = Date.now() - (0, time_format_1.parseTimeRange)(since);
123
+ const command = new client_cloudwatch_logs_1.FilterLogEventsCommand({
124
+ logGroupName,
125
+ startTime,
126
+ filterPattern,
127
+ limit,
128
+ });
129
+ const response = await logsClient.send(command);
130
+ return response.events || [];
79
131
  }
80
132
  catch (error) {
81
- const err = error;
82
- if (err.status !== 130) {
83
- // Ignore Ctrl+C exit (status 130)
84
- throw new Error("Error fetching logs. Make sure:\n" +
85
- "1. The stack is deployed\n" +
86
- "2. AWS CLI is configured with proper credentials\n" +
87
- "3. You have CloudWatch Logs read permissions");
133
+ console.warn(chalk_1.default.dim(`Could not fetch logs from ${logGroupName}: ${error.message}`));
134
+ return [];
135
+ }
136
+ }
137
+ /**
138
+ * Display logs in organized sections
139
+ */
140
+ function displayLogs(logGroups, profile, region, since, limit, expanded) {
141
+ const timeStr = (0, time_format_1.formatLocalDateTime)(new Date());
142
+ const timezone = (0, time_format_1.getLocalTimezone)();
143
+ console.log(chalk_1.default.bold(`\nLogs for Profile: ${profile} @ ${timeStr} (${timezone})\n`));
144
+ console.log(chalk_1.default.dim("─".repeat(80)));
145
+ console.log(`${chalk_1.default.bold("Region:")} ${chalk_1.default.cyan(region)} ${chalk_1.default.bold("Time Range:")} ${chalk_1.default.cyan(`Last ${since}`)}${expanded ? chalk_1.default.yellow(" (auto-expanded)") : ""}`);
146
+ console.log(`${chalk_1.default.bold("Showing:")} ${chalk_1.default.cyan(`Last ~${limit} entries per log group`)}`);
147
+ console.log(chalk_1.default.dim("─".repeat(80)));
148
+ console.log("");
149
+ // Display each log group in its own section
150
+ for (const logGroup of logGroups) {
151
+ console.log(chalk_1.default.bold(`${logGroup.displayName}:`));
152
+ console.log(chalk_1.default.dim(` Log Group: ${logGroup.name}`));
153
+ if (logGroup.entries.length === 0) {
154
+ console.log(chalk_1.default.dim(" No log entries found\n"));
155
+ continue;
156
+ }
157
+ console.log(chalk_1.default.dim(` Showing ${logGroup.entries.length} entries:\n`));
158
+ // Display log entries
159
+ for (const entry of logGroup.entries) {
160
+ if (!entry.timestamp || !entry.message)
161
+ continue;
162
+ const timeDisplay = (0, time_format_1.formatLocalTime)(entry.timestamp);
163
+ // Color code by log level if detectable
164
+ let message = entry.message.trim();
165
+ let messageColor = chalk_1.default.white;
166
+ if (message.includes("ERROR") || message.includes("CRITICAL")) {
167
+ messageColor = chalk_1.default.red;
168
+ }
169
+ else if (message.includes("WARNING") || message.includes("WARN")) {
170
+ messageColor = chalk_1.default.yellow;
171
+ }
172
+ else if (message.includes("INFO")) {
173
+ messageColor = chalk_1.default.cyan;
174
+ }
175
+ else if (message.includes("DEBUG")) {
176
+ messageColor = chalk_1.default.dim;
177
+ }
178
+ console.log(` ${chalk_1.default.dim(timeDisplay)} ${messageColor(message)}`);
179
+ }
180
+ console.log("");
181
+ }
182
+ console.log(chalk_1.default.dim("─".repeat(80)));
183
+ }
184
+ /**
185
+ * Fetch logs from all relevant log groups
186
+ */
187
+ async function fetchAllLogs(stackName, region, since, limit, type, integratedMode, filterPattern, awsProfile) {
188
+ // Get log groups from stack
189
+ const discoveredLogGroups = await getLogGroupsFromStack(stackName, region, integratedMode, awsProfile);
190
+ const result = [];
191
+ // For integrated mode, query all discovered log groups
192
+ if (integratedMode) {
193
+ // If type is specified and not "all", filter to only matching services
194
+ const logGroupEntries = Object.entries(discoveredLogGroups);
195
+ for (const [serviceName, logGroupName] of logGroupEntries) {
196
+ // If type filter is specified, only show matching services
197
+ if (type !== "all") {
198
+ // For integrated mode, "ecs" type shows all ECS services
199
+ // Other types (api, api-exec) are not available in integrated mode
200
+ if (type !== "ecs") {
201
+ continue;
202
+ }
203
+ }
204
+ // Fetch logs from this group
205
+ const entries = await fetchLogsFromGroup(logGroupName, region, since, limit, filterPattern, awsProfile);
206
+ // Sort by timestamp descending (most recent first) and limit
207
+ const sortedEntries = entries
208
+ .sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0))
209
+ .slice(0, limit);
210
+ // Create friendly display name from service name
211
+ const displayName = serviceName
212
+ .split("-")
213
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
214
+ .join(" ");
215
+ result.push({
216
+ name: logGroupName,
217
+ displayName: `${displayName} (ECS)`,
218
+ entries: sortedEntries,
219
+ });
88
220
  }
221
+ return result;
89
222
  }
223
+ // For standalone mode, use the traditional type-based approach
224
+ const typesToQuery = type === "all" ? ["ecs", "api", "api-exec"] : [type];
225
+ for (const logType of typesToQuery) {
226
+ const logGroupName = discoveredLogGroups[logType];
227
+ if (!logGroupName) {
228
+ // Don't warn on first attempt, we'll handle it at the result level
229
+ continue;
230
+ }
231
+ let displayName;
232
+ switch (logType) {
233
+ case "ecs":
234
+ displayName = "ECS Container Logs";
235
+ break;
236
+ case "api":
237
+ displayName = "API Gateway Access Logs";
238
+ break;
239
+ case "api-exec":
240
+ displayName = "API Gateway Execution Logs";
241
+ break;
242
+ default:
243
+ displayName = logType;
244
+ }
245
+ // Fetch logs from this group
246
+ const entries = await fetchLogsFromGroup(logGroupName, region, since, limit, filterPattern, awsProfile);
247
+ // Sort by timestamp descending (most recent first) and limit
248
+ const sortedEntries = entries
249
+ .sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0))
250
+ .slice(0, limit);
251
+ result.push({
252
+ name: logGroupName,
253
+ displayName,
254
+ entries: sortedEntries,
255
+ });
256
+ }
257
+ return result;
90
258
  }
91
259
  /**
92
260
  * Logs command implementation
93
261
  */
94
262
  async function logsCommand(options = {}) {
95
- const { profile = "default", stage = "prod", awsProfile, type = "all", since = "5m", filter, follow = false, tail = 100, configStorage, } = options;
263
+ const { profile = "default", awsProfile, type = "all", since = "5m", filter, follow = false, timer, limit = 5, configStorage, } = options;
96
264
  // Validate log type
97
265
  if (!["ecs", "api", "api-exec", "all"].includes(type)) {
98
266
  const errorMsg = "Invalid log type. Must be 'ecs', 'api', 'api-exec', or 'all'";
99
267
  console.error(chalk_1.default.red(`\n❌ ${errorMsg}\n`));
100
268
  return { success: false, error: errorMsg };
101
269
  }
102
- // Validate follow with type=all
103
- if (follow && type === "all") {
104
- const errorMsg = "Cannot use --follow with --type=all. Please specify a specific log type.";
270
+ // Validate follow mode (not supported with new implementation)
271
+ if (follow) {
272
+ const errorMsg = "Follow mode (--follow) is not supported. Use --timer to auto-refresh logs.";
105
273
  console.error(chalk_1.default.red(`\n❌ ${errorMsg}\n`));
274
+ console.log(chalk_1.default.dim("Example: benchling-webhook logs --timer 5\n"));
106
275
  return { success: false, error: errorMsg };
107
276
  }
108
277
  const xdg = configStorage || new xdg_config_1.XDGConfig();
@@ -122,26 +291,113 @@ async function logsCommand(options = {}) {
122
291
  }
123
292
  const { region, integratedMode, quiltStackName } = deploymentInfo;
124
293
  // For integrated mode, use Quilt stack name; for standalone use BenchlingWebhookStack
125
- const logGroupName = integratedMode && quiltStackName ? quiltStackName : "BenchlingWebhookStack";
126
- console.log("================================================================================");
127
- console.log("Benchling Webhook Logs");
128
- console.log("================================================================================");
129
- console.log(`Profile: ${profile}`);
130
- console.log(`Stage: ${stage}`);
131
- console.log(`Region: ${region}`);
132
- console.log(`Mode: ${integratedMode ? "Integrated" : "Standalone"}`);
133
- console.log(`Log Group: ${logGroupName}`);
134
- console.log("================================================================================");
135
- console.log("");
136
- // Tail the log group
137
- tailLogs(logGroupName, region, {
138
- awsProfile,
139
- since,
140
- filter,
141
- follow,
142
- tail,
143
- });
144
- return { success: true };
294
+ const stackName = integratedMode && quiltStackName ? quiltStackName : STACK_NAME;
295
+ // Parse timer value
296
+ const refreshInterval = (0, cli_helpers_1.parseTimerValue)(timer);
297
+ // Setup Ctrl+C handler for graceful exit
298
+ let shouldExit = false;
299
+ const exitHandler = () => {
300
+ shouldExit = true;
301
+ console.log(chalk_1.default.dim("\n\n⚠️ Interrupted by user. Exiting...\n"));
302
+ process.exit(0);
303
+ };
304
+ process.on("SIGINT", exitHandler);
305
+ let result = { success: true };
306
+ let isFirstRun = true;
307
+ let currentSince = since;
308
+ let wasExpanded = false;
309
+ // Watch loop
310
+ while (true) {
311
+ // Clear screen on subsequent runs
312
+ if (!isFirstRun && refreshInterval) {
313
+ (0, cli_helpers_1.clearScreen)();
314
+ }
315
+ // Fetch logs from all relevant log groups
316
+ const logGroups = await fetchAllLogs(stackName, region, currentSince, limit, type, integratedMode, filter, awsProfile);
317
+ // Check if any log group has entries
318
+ const totalEntries = logGroups.reduce((sum, lg) => sum + lg.entries.length, 0);
319
+ const hasLogs = totalEntries > 0;
320
+ const hasLogGroups = logGroups.length > 0;
321
+ // If no log groups found at all, show error and exit
322
+ if (!hasLogGroups) {
323
+ console.error(chalk_1.default.red("\n❌ No log groups found in stack outputs."));
324
+ console.log(chalk_1.default.dim(" This could mean:"));
325
+ console.log(chalk_1.default.dim(" - The stack hasn't been deployed yet"));
326
+ console.log(chalk_1.default.dim(" - Log groups haven't been created"));
327
+ console.log(chalk_1.default.dim(` - Stack name might be incorrect: ${stackName}\n`));
328
+ // Don't loop if there are no log groups
329
+ if (!refreshInterval) {
330
+ break;
331
+ }
332
+ // Wait before retrying
333
+ const totalSeconds = Math.floor(refreshInterval / 1000);
334
+ const spinner = (0, ora_1.default)({
335
+ text: chalk_1.default.dim(`⟳ Retrying in ${totalSeconds} second${totalSeconds !== 1 ? "s" : ""}... (Ctrl+C to exit)`),
336
+ color: "gray",
337
+ }).start();
338
+ for (let i = totalSeconds; i > 0; i--) {
339
+ spinner.text = chalk_1.default.dim(`⟳ Retrying in ${i} second${i !== 1 ? "s" : ""}... (Ctrl+C to exit)`);
340
+ await (0, cli_helpers_1.sleep)(1000);
341
+ if (shouldExit)
342
+ break;
343
+ }
344
+ spinner.stop();
345
+ if (shouldExit) {
346
+ break;
347
+ }
348
+ isFirstRun = false;
349
+ continue;
350
+ }
351
+ // Smart expansion: if no logs found and not at max, expand time window
352
+ if (!hasLogs && currentSince !== "7d") {
353
+ const nextSince = expandTimeRange(currentSince);
354
+ console.log(chalk_1.default.yellow(`⚠️ No logs found in last ${currentSince}. Expanding to ${nextSince}...\n`));
355
+ currentSince = nextSince;
356
+ wasExpanded = true;
357
+ // Small delay before retry
358
+ await (0, cli_helpers_1.sleep)(500);
359
+ continue;
360
+ }
361
+ // Display logs
362
+ displayLogs(logGroups, profile, region, currentSince, limit, wasExpanded);
363
+ result.logGroups = logGroups;
364
+ // If no logs found at max range, show helpful message
365
+ if (!hasLogs && currentSince === "7d") {
366
+ console.log(chalk_1.default.yellow("\n💡 No logs found in the last 7 days."));
367
+ console.log(chalk_1.default.dim(" This could mean:"));
368
+ console.log(chalk_1.default.dim(" - The service hasn't received any requests"));
369
+ console.log(chalk_1.default.dim(" - Logging is not configured correctly"));
370
+ console.log(chalk_1.default.dim(" - No activity has occurred in this time period\n"));
371
+ }
372
+ // Reset expansion flag if we found logs
373
+ if (hasLogs) {
374
+ wasExpanded = false;
375
+ }
376
+ // Check if we should exit (no timer)
377
+ if (!refreshInterval) {
378
+ break;
379
+ }
380
+ // Show countdown with live updates
381
+ const totalSeconds = Math.floor(refreshInterval / 1000);
382
+ const spinner = (0, ora_1.default)({
383
+ text: chalk_1.default.dim(`⟳ Refreshing in ${totalSeconds} second${totalSeconds !== 1 ? "s" : ""}... (Ctrl+C to exit)`),
384
+ color: "gray",
385
+ }).start();
386
+ for (let i = totalSeconds; i > 0; i--) {
387
+ spinner.text = chalk_1.default.dim(`⟳ Refreshing in ${i} second${i !== 1 ? "s" : ""}... (Ctrl+C to exit)`);
388
+ await (0, cli_helpers_1.sleep)(1000);
389
+ if (shouldExit)
390
+ break;
391
+ }
392
+ spinner.stop();
393
+ if (shouldExit) {
394
+ break;
395
+ }
396
+ isFirstRun = false;
397
+ }
398
+ // Clean up handler
399
+ process.off("SIGINT", exitHandler);
400
+ return result;
145
401
  }
146
402
  catch (error) {
147
403
  const errorMsg = error.message;
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../bin/commands/logs.ts"],"names":[],"mappings":";;AACA;;;;;;;GAOG;;;;;AAwHH,kCA4EC;AAlMD,iDAAyC;AACzC,kDAA0B;AAC1B,qDAAiD;AAGjD,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAmB3C;;GAEG;AACH,SAAS,iBAAiB,CACtB,OAAe,EACf,aAAsB;IAEtB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACxC,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;YAEvD,yDAAyD;YACzD,IAAI,cAAc,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,IAAI,KAAK,EAAE,CAAC;oBACR,OAAO;wBACH,MAAM;wBACN,SAAS,EAAE,UAAU,EAAE,iDAAiD;wBACxE,cAAc,EAAE,IAAI;wBACpB,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,oCAAoC;qBACjE,CAAC;gBACN,CAAC;YACL,CAAC;YAED,iDAAiD;YACjD,OAAO;gBACH,MAAM;gBACN,SAAS,EAAE,UAAU;gBACrB,cAAc,EAAE,KAAK;aACxB,CAAC;QACN,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,+BAA+B;QAC/B,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,+BAA+B,OAAO,MAAO,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD;;GAEG;AACH,SAAS,QAAQ,CACb,QAAgB,EAChB,MAAc,EACd,OAMC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,IAAI,OAAO,GAAG,kBAAkB,QAAQ,GAAG,CAAC;IAC5C,OAAO,IAAI,aAAa,MAAM,EAAE,CAAC;IACjC,IAAI,WAAW;QAAE,OAAO,IAAI,IAAI,WAAW,EAAE,CAAC;IAC9C,OAAO,IAAI,YAAY,OAAO,CAAC,KAAK,EAAE,CAAC;IACvC,OAAO,IAAI,iBAAiB,CAAC;IAE7B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,IAAI,sBAAsB,OAAO,CAAC,MAAM,GAAG,CAAC;IACvD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,IAAI,WAAW,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,IAAI,8BAA8B,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,CAAC;QACD,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,KAA4B,CAAC;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrB,kCAAkC;YAClC,MAAM,IAAI,KAAK,CACX,mCAAmC;gBACnC,4BAA4B;gBAC5B,oDAAoD;gBACpD,8CAA8C,CACjD,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC;AAGD;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC9D,MAAM,EACF,OAAO,GAAG,SAAS,EACnB,KAAK,GAAG,MAAM,EACd,UAAU,EACV,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,IAAI,EACZ,MAAM,EACN,MAAM,GAAG,KAAK,EACd,IAAI,GAAG,GAAG,EACV,aAAa,GAChB,GAAG,OAAO,CAAC;IAEZ,oBAAoB;IACpB,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,8DAA8D,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,0EAA0E,CAAC;QAC5F,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,GAAG,GAAG,aAAa,IAAI,IAAI,sBAAS,EAAE,CAAC;IAE7C,uBAAuB;IACvB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,YAAY,OAAO,+BAA+B,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACD,kDAAkD;QAClD,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,+CAA+C,OAAO,mDAAmD,CAAC;YAC3H,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC;QAElE,sFAAsF;QACtF,MAAM,YAAY,GAAG,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC;QAEjG,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,cAAc,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,qBAAqB;QACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;YAC3B,UAAU;YACV,KAAK;YACL,MAAM;YACN,MAAM;YACN,IAAI;SACP,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,QAAQ,GAAI,KAAe,CAAC,OAAO,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../bin/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * CLI Helper Utilities
3
+ *
4
+ * Shared utilities for CLI commands (sleep, clear screen, etc.)
5
+ *
6
+ * @module utils/cli-helpers
7
+ */
8
+ /**
9
+ * Sleep for a specified duration
10
+ *
11
+ * @param ms - Milliseconds to sleep
12
+ * @returns Promise that resolves after the specified time
13
+ */
14
+ export declare function sleep(ms: number): Promise<void>;
15
+ /**
16
+ * Clear the terminal screen and move cursor to top
17
+ */
18
+ export declare function clearScreen(): void;
19
+ /**
20
+ * Parse a timer value (string or number) and returns interval in milliseconds
21
+ * Returns null if timer is disabled (0 or non-numeric string)
22
+ *
23
+ * @param timer - Timer value in seconds (number or string) or undefined
24
+ * @returns Milliseconds or null if disabled
25
+ */
26
+ export declare function parseTimerValue(timer?: string | number): number | null;
27
+ //# sourceMappingURL=cli-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../../../lib/utils/cli-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAYtE"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * CLI Helper Utilities
4
+ *
5
+ * Shared utilities for CLI commands (sleep, clear screen, etc.)
6
+ *
7
+ * @module utils/cli-helpers
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.sleep = sleep;
11
+ exports.clearScreen = clearScreen;
12
+ exports.parseTimerValue = parseTimerValue;
13
+ /**
14
+ * Sleep for a specified duration
15
+ *
16
+ * @param ms - Milliseconds to sleep
17
+ * @returns Promise that resolves after the specified time
18
+ */
19
+ function sleep(ms) {
20
+ return new Promise((resolve) => setTimeout(resolve, ms));
21
+ }
22
+ /**
23
+ * Clear the terminal screen and move cursor to top
24
+ */
25
+ function clearScreen() {
26
+ process.stdout.write("\x1b[2J\x1b[H");
27
+ }
28
+ /**
29
+ * Parse a timer value (string or number) and returns interval in milliseconds
30
+ * Returns null if timer is disabled (0 or non-numeric string)
31
+ *
32
+ * @param timer - Timer value in seconds (number or string) or undefined
33
+ * @returns Milliseconds or null if disabled
34
+ */
35
+ function parseTimerValue(timer) {
36
+ if (timer === undefined)
37
+ return 10000; // Default 10 seconds
38
+ const numValue = typeof timer === "string" ? parseFloat(timer) : timer;
39
+ // If NaN or 0, disable timer
40
+ if (isNaN(numValue) || numValue === 0) {
41
+ return null;
42
+ }
43
+ // Return milliseconds
44
+ return numValue * 1000;
45
+ }
46
+ //# sourceMappingURL=cli-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-helpers.js","sourceRoot":"","sources":["../../../lib/utils/cli-helpers.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,sBAEC;AAKD,kCAEC;AASD,0CAYC;AApCD;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,KAAuB;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,qBAAqB;IAE5D,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEvE,6BAA6B;IAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,OAAO,QAAQ,GAAG,IAAI,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * ECS Service Discovery Utilities
3
+ *
4
+ * Shared utilities for discovering ECS services and their log groups
5
+ * from CloudFormation stacks. Used by both status and logs commands.
6
+ *
7
+ * @module utils/ecs-service-discovery
8
+ */
9
+ export interface ECSServiceInfo {
10
+ serviceName: string;
11
+ logGroup?: string;
12
+ logStreamPrefix?: string;
13
+ }
14
+ /**
15
+ * Discover all ECS services in a CloudFormation stack and their log groups
16
+ *
17
+ * @param stackName - CloudFormation stack name
18
+ * @param region - AWS region
19
+ * @param awsProfile - Optional AWS profile name
20
+ * @returns Map of service names to log group names
21
+ */
22
+ export declare function discoverECSServiceLogGroups(stackName: string, region: string, awsProfile?: string): Promise<Record<string, string>>;
23
+ /**
24
+ * Discover ECS services with full information (for status command)
25
+ *
26
+ * @param stackName - CloudFormation stack name
27
+ * @param region - AWS region
28
+ * @param awsProfile - Optional AWS profile name
29
+ * @returns Array of ECS service information
30
+ */
31
+ export declare function discoverECSServices(stackName: string, region: string, awsProfile?: string): Promise<ECSServiceInfo[]>;
32
+ //# sourceMappingURL=ecs-service-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecs-service-discovery.d.ts","sourceRoot":"","sources":["../../../lib/utils/ecs-service-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmFjC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CAwF3B"}