v1.1.0: Skills integration, cross-platform support, bug fixes
This commit is contained in:
@@ -157,30 +157,20 @@ function nextAllowedHeartbeatAt(
|
||||
}
|
||||
|
||||
async function setupStatusline() {
|
||||
console.log("[QwenClaw SetupStatusline] Starting...");
|
||||
await mkdir(QWEN_DIR, { recursive: true });
|
||||
console.log("[QwenClaw SetupStatusline] Directory created:", QWEN_DIR);
|
||||
|
||||
await writeFile(STATUSLINE_FILE, STATUSLINE_SCRIPT);
|
||||
console.log("[QwenClaw SetupStatusline] Statusline script written:", STATUSLINE_FILE);
|
||||
|
||||
let settings: Record<string, unknown> = {};
|
||||
try {
|
||||
const settingsText = await Bun.file(QWEN_SETTINGS_FILE).text();
|
||||
console.log("[QwenClaw SetupStatusline] Settings text read, length:", settingsText.length);
|
||||
settings = JSON.parse(settingsText);
|
||||
console.log("[QwenClaw SetupStatusline] Settings parsed");
|
||||
} catch (err) {
|
||||
console.log("[QwenClaw SetupStatusline] No existing settings or error:", err);
|
||||
settings = await Bun.file(QWEN_SETTINGS_FILE).json();
|
||||
} catch {
|
||||
// file doesn't exist or isn't valid JSON
|
||||
}
|
||||
settings.statusLine = {
|
||||
type: "command",
|
||||
command: "node .qwen/statusline.cjs",
|
||||
};
|
||||
const settingsJson = JSON.stringify(settings, null, 2) + "\n";
|
||||
console.log("[QwenClaw SetupStatusline] Writing settings:", settingsJson.substring(0, 100));
|
||||
await writeFile(QWEN_SETTINGS_FILE, settingsJson);
|
||||
console.log("[QwenClaw SetupStatusline] Settings written");
|
||||
await writeFile(QWEN_SETTINGS_FILE, JSON.stringify(settings, null, 2) + "\n");
|
||||
}
|
||||
|
||||
async function teardownStatusline() {
|
||||
@@ -202,10 +192,6 @@ async function teardownStatusline() {
|
||||
// --- Main ---
|
||||
|
||||
export async function start(args: string[] = []) {
|
||||
console.log("[QwenClaw Start] Function called with args:", args);
|
||||
|
||||
try {
|
||||
|
||||
let hasPromptFlag = false;
|
||||
let hasTriggerFlag = false;
|
||||
let telegramFlag = false;
|
||||
@@ -215,7 +201,6 @@ export async function start(args: string[] = []) {
|
||||
let webPortFlag: number | null = null;
|
||||
const payloadParts: string[] = [];
|
||||
|
||||
console.log("[QwenClaw Start] Parsing arguments...");
|
||||
for (let i = 0; i < args.length; i++) {
|
||||
const arg = args[i];
|
||||
if (arg === "--prompt") {
|
||||
@@ -248,8 +233,6 @@ export async function start(args: string[] = []) {
|
||||
}
|
||||
}
|
||||
const payload = payloadParts.join(" ").trim();
|
||||
console.log("[QwenClaw Start] Payload:", payload, "hasPromptFlag:", hasPromptFlag, "webFlag:", webFlag);
|
||||
|
||||
if (hasPromptFlag && !payload) {
|
||||
console.error("Usage: qwenclaw start --prompt <prompt> [--trigger] [--telegram] [--debug] [--web] [--web-port <port>] [--replace-existing]");
|
||||
process.exit(1);
|
||||
@@ -267,7 +250,6 @@ export async function start(args: string[] = []) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log("[QwenClaw Start] Checking existing daemon...");
|
||||
// One-shot mode: explicit prompt without trigger.
|
||||
if (hasPromptFlag && !hasTriggerFlag) {
|
||||
const existingPid = await checkExistingDaemon();
|
||||
@@ -315,31 +297,14 @@ export async function start(args: string[] = []) {
|
||||
}
|
||||
|
||||
await initConfig();
|
||||
console.log("[QwenClaw Start] Config initialized");
|
||||
|
||||
const settings = await loadSettings();
|
||||
console.log("[QwenClaw Start] Settings loaded, web:", settings.web);
|
||||
|
||||
await ensureProjectQwenMd();
|
||||
console.log("[QwenClaw Start] Project QWEN.md ensured");
|
||||
|
||||
const jobs = await loadJobs();
|
||||
console.log("[QwenClaw Start] Jobs loaded:", jobs.length);
|
||||
|
||||
const webEnabled = webFlag || webPortFlag !== null || settings.web.enabled;
|
||||
const webPort = webPortFlag ?? settings.web.port;
|
||||
console.log("[QwenClaw Start] Web enabled:", webEnabled, "Port:", webPort);
|
||||
|
||||
try {
|
||||
await setupStatusline();
|
||||
console.log("[QwenClaw Start] Statusline setup complete");
|
||||
} catch (err) {
|
||||
console.error("[QwenClaw Start] Statusline setup error:", err);
|
||||
}
|
||||
|
||||
await setupStatusline();
|
||||
await writePidFile();
|
||||
console.log("[QwenClaw Start] PID file written");
|
||||
|
||||
let web: WebServerHandle | null = null;
|
||||
|
||||
async function shutdown() {
|
||||
@@ -688,9 +653,5 @@ export async function start(args: string[] = []) {
|
||||
}
|
||||
updateState();
|
||||
}, 60_000);
|
||||
|
||||
} catch (err) {
|
||||
console.error("[QwenClaw Start] Fatal error:", err);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user