@openqa/cli 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +9 -65
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1670,7 +1670,7 @@ program.command("start").description("Start the OpenQA agent and web UI").option
|
|
|
1670
1670
|
spinner.succeed(chalk.green("OpenQA started"));
|
|
1671
1671
|
const agent = new OpenQAAgent();
|
|
1672
1672
|
const config = new ConfigManager();
|
|
1673
|
-
const cfg = config.
|
|
1673
|
+
const cfg = config.getConfigSync();
|
|
1674
1674
|
console.log(chalk.cyan("\n\u{1F4CA} OpenQA Status:"));
|
|
1675
1675
|
console.log(chalk.white(` Agent: Running`));
|
|
1676
1676
|
console.log(chalk.white(` Target: ${cfg.saas.url || "Not configured"}`));
|
|
@@ -1716,9 +1716,6 @@ program.command("stop").description("Stop the OpenQA agent").action(() => {
|
|
|
1716
1716
|
}
|
|
1717
1717
|
});
|
|
1718
1718
|
program.command("status").description("Show OpenQA status").action(() => {
|
|
1719
|
-
const config = new ConfigManager();
|
|
1720
|
-
const cfg = config.getConfig();
|
|
1721
|
-
const db = new OpenQADatabase(cfg.database.path);
|
|
1722
1719
|
console.log(chalk.cyan.bold("\n\u{1F4CA} OpenQA Status\n"));
|
|
1723
1720
|
if (existsSync(PID_FILE)) {
|
|
1724
1721
|
const pid = readFileSync2(PID_FILE, "utf-8").trim();
|
|
@@ -1726,50 +1723,19 @@ program.command("status").description("Show OpenQA status").action(() => {
|
|
|
1726
1723
|
process.kill(parseInt(pid), 0);
|
|
1727
1724
|
console.log(chalk.green("\u2713 Agent: Running"));
|
|
1728
1725
|
console.log(chalk.white(` PID: ${pid}`));
|
|
1726
|
+
console.log(chalk.yellow("\n\u{1F4CB} Detailed status temporarily disabled"));
|
|
1729
1727
|
} catch {
|
|
1730
|
-
console.log(chalk.red("\u2717 Agent:
|
|
1728
|
+
console.log(chalk.red("\u2717 Agent: Not running (stale PID file)"));
|
|
1731
1729
|
unlinkSync(PID_FILE);
|
|
1732
1730
|
}
|
|
1733
1731
|
} else {
|
|
1734
|
-
console.log(chalk.
|
|
1735
|
-
}
|
|
1736
|
-
console.log(chalk.cyan("\n\u{1F310} Web Interfaces:"));
|
|
1737
|
-
console.log(chalk.white(` DevTools: http://localhost:${cfg.web.port}`));
|
|
1738
|
-
console.log(chalk.white(` Kanban: http://localhost:${cfg.web.port}/kanban`));
|
|
1739
|
-
console.log(chalk.white(` Config: http://localhost:${cfg.web.port}/config`));
|
|
1740
|
-
console.log(chalk.cyan("\n\u2699\uFE0F Configuration:"));
|
|
1741
|
-
console.log(chalk.white(` LLM Provider: ${cfg.llm.provider}`));
|
|
1742
|
-
console.log(chalk.white(` Target SaaS: ${cfg.saas.url || "Not configured"}`));
|
|
1743
|
-
console.log(chalk.white(` GitHub: ${cfg.github?.token ? "Configured" : "Not configured"}`));
|
|
1744
|
-
console.log(chalk.white(` Test Interval: ${cfg.agent.intervalMs / 1e3 / 60} minutes`));
|
|
1745
|
-
const sessions = db.getRecentSessions(5);
|
|
1746
|
-
console.log(chalk.cyan(`
|
|
1747
|
-
\u{1F4CB} Recent Sessions (${sessions.length}):`));
|
|
1748
|
-
sessions.forEach((s) => {
|
|
1749
|
-
const status = s.status === "completed" ? chalk.green("\u2713") : s.status === "failed" ? chalk.red("\u2717") : chalk.yellow("\u27F3");
|
|
1750
|
-
console.log(chalk.white(` ${status} ${s.id} - ${s.bugs_found} bugs found`));
|
|
1751
|
-
});
|
|
1752
|
-
const bugs = db.getBugsByStatus("open");
|
|
1753
|
-
console.log(chalk.cyan(`
|
|
1754
|
-
\u{1F41B} Open Bugs: ${bugs.length}`));
|
|
1755
|
-
const tickets = db.getKanbanTickets();
|
|
1756
|
-
const byColumn = {
|
|
1757
|
-
backlog: tickets.filter((t) => t.column === "backlog").length,
|
|
1758
|
-
"to-do": tickets.filter((t) => t.column === "to-do").length,
|
|
1759
|
-
"in-progress": tickets.filter((t) => t.column === "in-progress").length,
|
|
1760
|
-
done: tickets.filter((t) => t.column === "done").length
|
|
1761
|
-
};
|
|
1762
|
-
console.log(chalk.cyan("\n\u{1F4CA} Kanban Board:"));
|
|
1763
|
-
console.log(chalk.white(` Backlog: ${byColumn.backlog}`));
|
|
1764
|
-
console.log(chalk.white(` To Do: ${byColumn["to-do"]}`));
|
|
1765
|
-
console.log(chalk.white(` In Progress: ${byColumn["in-progress"]}`));
|
|
1766
|
-
console.log(chalk.white(` Done: ${byColumn.done}`));
|
|
1767
|
-
console.log("");
|
|
1732
|
+
console.log(chalk.yellow("\u2717 Agent: Not running"));
|
|
1733
|
+
}
|
|
1768
1734
|
});
|
|
1769
1735
|
program.command("config").description("Manage configuration").argument("[action]", "Action: get, set, list").argument("[key]", "Configuration key (e.g., llm.provider)").argument("[value]", "Configuration value").action((action, key, value) => {
|
|
1770
1736
|
const config = new ConfigManager();
|
|
1771
1737
|
if (!action || action === "list") {
|
|
1772
|
-
const cfg = config.
|
|
1738
|
+
const cfg = config.getConfigSync();
|
|
1773
1739
|
console.log(chalk.cyan.bold("\n\u2699\uFE0F OpenQA Configuration\n"));
|
|
1774
1740
|
console.log(JSON.stringify(cfg, null, 2));
|
|
1775
1741
|
console.log("");
|
|
@@ -1799,31 +1765,9 @@ program.command("config").description("Manage configuration").argument("[action]
|
|
|
1799
1765
|
});
|
|
1800
1766
|
program.command("logs").description("Show agent logs").option("-f, --follow", "Follow log output").option("-n, --lines <number>", "Number of lines to show", "50").action((options) => {
|
|
1801
1767
|
const config = new ConfigManager();
|
|
1802
|
-
const cfg = config.
|
|
1768
|
+
const cfg = config.getConfigSync();
|
|
1803
1769
|
const db = new OpenQADatabase(cfg.database.path);
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
console.log(chalk.yellow("No sessions found"));
|
|
1807
|
-
return;
|
|
1808
|
-
}
|
|
1809
|
-
const session = sessions[0];
|
|
1810
|
-
const actions = db.getSessionActions(session.id);
|
|
1811
|
-
console.log(chalk.cyan.bold(`
|
|
1812
|
-
\u{1F4CB} Session Logs: ${session.id}
|
|
1813
|
-
`));
|
|
1814
|
-
console.log(chalk.white(`Status: ${session.status}`));
|
|
1815
|
-
console.log(chalk.white(`Started: ${session.started_at}`));
|
|
1816
|
-
console.log(chalk.white(`Actions: ${actions.length}
|
|
1817
|
-
`));
|
|
1818
|
-
const limit = parseInt(options.lines);
|
|
1819
|
-
const displayActions = actions.slice(0, limit);
|
|
1820
|
-
displayActions.forEach((action) => {
|
|
1821
|
-
const icon = action.type === "navigate" ? "\u{1F310}" : action.type === "click" ? "\u{1F446}" : action.type === "fill" ? "\u2328\uFE0F" : action.type === "screenshot" ? "\u{1F4F8}" : action.type === "github_issue" ? "\u{1F41B}" : action.type === "kanban_ticket" ? "\u{1F4CB}" : "\u2022";
|
|
1822
|
-
console.log(chalk.gray(`[${action.timestamp}]`), icon, chalk.white(action.description));
|
|
1823
|
-
if (action.output) {
|
|
1824
|
-
console.log(chalk.gray(` \u2192 ${action.output}`));
|
|
1825
|
-
}
|
|
1826
|
-
});
|
|
1827
|
-
console.log("");
|
|
1770
|
+
console.log(chalk.yellow("Logs feature temporarily disabled"));
|
|
1771
|
+
return;
|
|
1828
1772
|
});
|
|
1829
1773
|
program.parse();
|