diff --git a/backend/src/api.ts b/backend/src/api.ts index 0933b52..bc78a44 100644 --- a/backend/src/api.ts +++ b/backend/src/api.ts @@ -3,18 +3,34 @@ import fs from "node:fs"; import os from "node:os"; import { CronExpressionParser } from "cron-parser"; -import { MessageBus } from "./bus.ts"; +import { InboundMessageType, MessageBus, makeInboundMessage } from "./bus.ts"; +import { + parse_im_digest_recipients, + type IMDigestRecipient, +} from "./digests.ts"; +import { + collect_im_skill_suggestions, + render_im_skill_suggestion_text, +} from "./skill_suggestions.ts"; import type { TaskDB } from "./db.ts"; import type { TaskScheduler } from "./scheduler.ts"; +import { runbook_from_row, type RunbookDefinition } from "./runbooks.ts"; import { DEFAULT_AGENT, DEFAULT_TIMEOUT_SECONDS, HeartbeatScheduleType, + RunbookConfirmationPolicy, + RunbookSourceType, ScheduleType, + TaskBriefStatus, makeHeartbeat, + makeIMRunbook, makeTask, + makeTaskBrief, type Heartbeat, + type IMRunbook, type Task, + type TaskBrief, } from "./types.ts"; import { dateToLocalIso } from "./util.ts"; import { FeishuChannel } from "./channels/feishu.ts"; @@ -50,7 +66,7 @@ function isAllowedOrigin(origin: string): boolean { function corsHeaders(origin: string): Headers { const headers = new Headers({ - "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", + "Access-Control-Allow-Methods": "GET, POST, PUT, PATCH, DELETE, OPTIONS", "Access-Control-Allow-Headers": "Content-Type, X-CSRF-Token", }); if (isAllowedOrigin(origin)) { @@ -118,6 +134,16 @@ function asString(value: unknown, fallback = ""): string { return String(value); } +function slugifyCommandName(value: string): string { + const compact = value.trim().replace(/\s+/g, "-").replace(/^\/+/, ""); + const ascii = compact + .toLowerCase() + .replace(/[^a-z0-9_-]+/g, "-") + .replace(/-+/g, "-") + .replace(/^-|-$/g, ""); + return ascii || compact || "custom-command"; +} + function parseJsonList(value: unknown): any[] { if (Array.isArray(value)) return value; if (typeof value === "string") { @@ -131,6 +157,29 @@ function parseJsonList(value: unknown): any[] { return []; } +function asStringList(value: unknown): string[] { + return parseJsonList(value) + .map((item) => String(item).trim()) + .filter(Boolean); +} + +function parseJsonObject(value: unknown): Row { + if (value && typeof value === "object" && !Array.isArray(value)) { + return value as Row; + } + if (typeof value === "string") { + try { + const parsed = JSON.parse(value); + if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) { + return parsed as Row; + } + } catch { + return {}; + } + } + return {}; +} + function cronValid(expr: string): boolean { try { CronExpressionParser.parse(expr); @@ -188,6 +237,429 @@ function attachDependencyMetadata(db: TaskDB, task: Row): Row { }; } +function validateTaskBriefPayload( + body: Row, + existing: Row | null = null, +): { brief?: TaskBrief; response?: ResponseData } { + const title = asString(body["title"] ?? existing?.["title"]).trim(); + if (!title) { + return { + response: [{ error: "title cannot be empty", field: "title" }, 400], + }; + } + const goal = asString(body["goal"] ?? existing?.["goal"]).trim(); + if (!goal) { + return { + response: [{ error: "goal cannot be empty", field: "goal" }, 400], + }; + } + const sourceChannel = asString( + body["source_channel"] ?? existing?.["source_channel"], + ).trim(); + if (!sourceChannel) { + return { + response: [ + { error: "source_channel cannot be empty", field: "source_channel" }, + 400, + ], + }; + } + const sourceRef = asString(body["source_ref"] ?? existing?.["source_ref"]) + .trim() + .slice(0, 1000); + if (!sourceRef) { + return { + response: [ + { error: "source_ref cannot be empty", field: "source_ref" }, + 400, + ], + }; + } + + const acceptanceCriteria = + "acceptance_criteria" in body + ? asStringList(body["acceptance_criteria"]) + : Array.isArray(existing?.["acceptance_criteria"]) + ? existing["acceptance_criteria"].map(String) + : []; + const sourceMetadata = + "source_metadata" in body + ? parseJsonObject(body["source_metadata"]) + : parseJsonObject(existing?.["source_metadata"] ?? {}); + + const workingDirRaw = + body["working_dir"] ?? existing?.["working_dir"] ?? null; + const workingDir = + workingDirRaw === null || workingDirRaw === undefined + ? null + : asString(workingDirRaw).trim() || null; + + return { + brief: makeTaskBrief({ + id: existing?.["id"] ?? null, + status: asString( + body["status"] ?? existing?.["status"] ?? TaskBriefStatus.DRAFT, + ) as TaskBrief["status"], + title, + goal, + context_summary: asString( + body["context_summary"] ?? existing?.["context_summary"] ?? "", + ), + acceptance_criteria: acceptanceCriteria, + working_dir: workingDir, + working_dir_confidence: asString( + body["working_dir_confidence"] ?? + existing?.["working_dir_confidence"] ?? + "unknown", + ), + agent: + body["agent"] === null + ? null + : asString(body["agent"] ?? existing?.["agent"] ?? "") || null, + risk_level: asString( + body["risk_level"] ?? existing?.["risk_level"] ?? "normal", + ), + needs_confirmation: asBool( + body["needs_confirmation"] ?? existing?.["needs_confirmation"] ?? true, + ), + source_channel: sourceChannel, + source_ref: sourceRef, + source_metadata: sourceMetadata, + created_task_id: existing?.["created_task_id"] ?? null, + created_at: existing?.["created_at"] ?? null, + updated_at: existing?.["updated_at"] ?? null, + expires_at: + body["expires_at"] === null + ? null + : asString(body["expires_at"] ?? existing?.["expires_at"] ?? "") || + null, + }), + }; +} + +function validateIMRunbookPayload( + body: Row, + existing: Row | null = null, +): { runbook?: IMRunbook; response?: ResponseData } { + const name = asString(body["name"] ?? existing?.["name"]) + .trim() + .toLowerCase(); + if (!name) { + return { + response: [{ error: "name cannot be empty", field: "name" }, 400], + }; + } + if (!/^[^\s/@]+$/u.test(name)) { + return { + response: [ + { + error: + "name must be a single slash-command word without spaces, slashes, or bot mentions", + field: "name", + }, + 400, + ], + }; + } + + const promptTemplate = asString( + body["prompt_template"] ?? existing?.["prompt_template"], + ); + if (!promptTemplate.trim()) { + return { + response: [ + { error: "prompt_template cannot be empty", field: "prompt_template" }, + 400, + ], + }; + } + + const sourceType = asString( + body["source_type"] ?? + existing?.["source_type"] ?? + RunbookSourceType.TEMPLATE, + ); + if (!Object.values(RunbookSourceType).includes(sourceType as any)) { + return { + response: [{ error: "invalid source_type", field: "source_type" }, 400], + }; + } + + const confirmationPolicy = asString( + body["confirmation_policy"] ?? + existing?.["confirmation_policy"] ?? + RunbookConfirmationPolicy.REQUIRED, + ); + if ( + !Object.values(RunbookConfirmationPolicy).includes( + confirmationPolicy as any, + ) + ) { + return { + response: [ + { + error: "invalid confirmation_policy", + field: "confirmation_policy", + }, + 400, + ], + }; + } + + return { + runbook: makeIMRunbook({ + id: existing?.["id"] ?? null, + name, + aliases: + "aliases" in body + ? asStringList(body["aliases"]).map((alias) => alias.toLowerCase()) + : Array.isArray(existing?.["aliases"]) + ? existing["aliases"].map((alias: unknown) => + String(alias).toLowerCase(), + ) + : [], + description: asString( + body["description"] ?? existing?.["description"] ?? "", + ), + source_type: sourceType as IMRunbook["source_type"], + source_id: + body["source_id"] === null + ? null + : asString(body["source_id"] ?? existing?.["source_id"] ?? "") || + null, + command_schema: + "command_schema" in body + ? parseJsonObject(body["command_schema"]) + : parseJsonObject(existing?.["command_schema"] ?? {}), + prompt_template: promptTemplate, + default_agent: + body["default_agent"] === null + ? null + : asString( + body["default_agent"] ?? existing?.["default_agent"] ?? "", + ) || null, + confirmation_policy: + confirmationPolicy as IMRunbook["confirmation_policy"], + enabled: asBool(body["enabled"] ?? existing?.["enabled"] ?? true), + created_at: existing?.["created_at"] ?? null, + updated_at: existing?.["updated_at"] ?? null, + }), + }; +} + +function commandFromTaskPayload( + ctx: ApiContext, + body: Row, +): { runbook?: IMRunbook; response?: ResponseData } { + const taskId = Number(body["task_id"]); + if (!Number.isInteger(taskId) || taskId <= 0) { + return { + response: [{ error: "task_id is required", field: "task_id" }, 400], + }; + } + const task = ctx.db.get_task(taskId); + if (!task) { + return { response: [{ error: "task not found" }, 404] }; + } + + const title = asString(task["title"] ?? "Custom command").trim(); + const prompt = asString(task["prompt"] ?? "").trim(); + const description = + asString(body["description"]).trim() || + title.replace(/^\[[^\]]+\]\s*/, "") || + "Custom AgentForge command"; + const name = asString(body["name"]).trim() || slugifyCommandName(description); + const promptTemplate = [ + "Repeat this AgentForge workflow with the user's latest input.", + "", + "Original task title:", + title, + "", + "Original task prompt:", + prompt || "(no prompt recorded)", + "", + "Latest input:", + "{{raw_args}}", + ].join("\n"); + + return validateIMRunbookPayload({ + name, + aliases: body["aliases"] ?? [], + description, + source_type: RunbookSourceType.TASK, + source_id: String(taskId), + command_schema: body["command_schema"] ?? { args: [] }, + prompt_template: promptTemplate, + default_agent: + body["default_agent"] === undefined + ? task["agent"] + : body["default_agent"], + confirmation_policy: + body["confirmation_policy"] ?? RunbookConfirmationPolicy.REQUIRED, + enabled: body["enabled"] ?? true, + }); +} + +function runbookResponse(runbook: RunbookDefinition, extras: Row = {}): Row { + return { + id: null, + name: runbook.name, + aliases: runbook.aliases, + description: runbook.description, + source_type: runbook.source_type, + source_id: runbook.source_id, + command_schema: runbook.command_schema, + prompt_template: runbook.prompt_template, + default_agent: runbook.default_agent, + confirmation_policy: runbook.confirmation_policy, + enabled: runbook.enabled, + created_at: null, + updated_at: null, + ...extras, + }; +} + +function allIMRunbooks(ctx: ApiContext): Row[] { + return ctx.db + .get_im_runbooks() + .map((row) => runbookResponse(runbook_from_row(row), row)); +} + +function digestPayload(body: Row): Row { + return { + include_empty: asBool(body["include_empty"] ?? false), + limit: + body["limit"] === undefined || body["limit"] === null + ? undefined + : Number(body["limit"]), + since: + body["since"] === undefined || body["since"] === null + ? null + : asString(body["since"]), + }; +} + +function triggerDigest(ctx: ApiContext, body: Row): Row { + return ctx.scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.TRIGGER_DIGEST, + source: "api", + payload: digestPayload(body), + }), + ); +} + +function digestRecipients(ctx: ApiContext, body: Row): IMDigestRecipient[] { + if ("recipients" in body) { + return parse_im_digest_recipients(body["recipients"]); + } + return parse_im_digest_recipients( + ctx.db.get_setting("im_digest_channels", "[]"), + ); +} + +function skillSuggestionRecipients( + ctx: ApiContext, + body: Row, +): IMDigestRecipient[] { + if ("recipients" in body) { + return parse_im_digest_recipients(body["recipients"]); + } + return parse_im_digest_recipients( + ctx.db.get_setting("im_skill_suggestion_channels", "[]"), + ); +} + +function skillSuggestionPreview(ctx: ApiContext, body: Row): Row { + const channel = asString(body["channel"]).trim() || null; + const limit = + body["limit"] === undefined || body["limit"] === null + ? undefined + : Number(body["limit"]); + const suggestions = collect_im_skill_suggestions(ctx.db, { + channel, + limit, + }); + return { + suggestions, + texts: suggestions.map((suggestion) => + render_im_skill_suggestion_text(suggestion), + ), + }; +} + +async function sendIMDigest( + ctx: ApiContext, + recipient: IMDigestRecipient, + text: string, +): Promise { + if (recipient.channel === "slack") { + const channel = ctx.slack_channel as any; + if (!channel?._reply) throw new Error("slack channel is not running"); + await channel._reply(recipient.target, null, text); + return; + } + if (recipient.channel === "feishu") { + const channel = ctx.feishu_channel as any; + if (!channel?._send_message) + throw new Error("feishu channel is not running"); + await channel._send_message(recipient.target, text); + return; + } + if (recipient.channel === "telegram") { + const channel = ctx.telegram_channel as any; + if (!channel?._api) throw new Error("telegram channel is not running"); + await channel._api("sendMessage", { + chat_id: recipient.target, + text, + }); + return; + } + if (recipient.channel === "weixin") { + const channel = ctx.weixin_channel as any; + if (!channel?._reply_to_event) + throw new Error("weixin channel is not running"); + channel._reply_to_event({ peer_id: recipient.target }, text); + return; + } + throw new Error(`unsupported digest channel: ${recipient.channel}`); +} + +function taskPromptFromBrief(brief: Row): string { + const lines = ["Goal:", String(brief["goal"]).trim()]; + const context = String(brief["context_summary"] ?? "").trim(); + if (context) { + lines.push("", "Context:", context); + } + const criteria = Array.isArray(brief["acceptance_criteria"]) + ? brief["acceptance_criteria"].map(String).filter(Boolean) + : []; + if (criteria.length) { + lines.push("", "Acceptance criteria:"); + criteria.forEach((criterion, index) => { + lines.push(`${index + 1}. ${criterion}`); + }); + } + return lines.join("\n"); +} + +function taskFromBrief(ctx: ApiContext, brief: Row): Task { + const sourceChannel = String(brief["source_channel"] ?? "").trim(); + const tags = ["im-inbox", sourceChannel].filter(Boolean).join(","); + return makeTask({ + title: String(brief["title"] ?? "Untitled"), + prompt: taskPromptFromBrief(brief), + working_dir: String(brief["working_dir"] || "."), + schedule_type: ScheduleType.IMMEDIATE, + tags, + agent: String( + brief["agent"] || + ctx.db.get_setting("default_agent", DEFAULT_AGENT) || + DEFAULT_AGENT, + ), + }); +} + function taskOutputPayload(ctx: ApiContext, taskId: number): Row { const isRunning = ctx.scheduler._live_output.has(taskId); if (isRunning) { @@ -585,6 +1057,26 @@ async function handleGet( : jsonResponse({ error: "not found" }, 404, origin); } + if (path === "/api/task-briefs") { + const status = url.searchParams.get("status"); + return jsonResponse( + { briefs: ctx.db.get_task_briefs(status || null) }, + 200, + origin, + ); + } + if (path.startsWith("/api/task-briefs/")) { + const bid = idAt(path); + const brief = bid === null ? null : ctx.db.get_task_brief(bid); + return brief + ? jsonResponse(brief, 200, origin) + : jsonResponse({ error: "not found" }, 404, origin); + } + + if (path === "/api/im-runbooks") { + return jsonResponse({ runbooks: allIMRunbooks(ctx) }, 200, origin); + } + if (path === "/api/tasks") { return jsonResponse( ctx.db.get_all_tasks().map((t) => attachDependencyMetadata(ctx.db, t)), @@ -695,6 +1187,20 @@ async function handleGet( DEFAULT_AGENT, ), skill_sweep_cron: ctx.db.get_setting("skill_sweep_cron", "0 3 * * *"), + im_digest_enabled: ctx.db.get_setting("im_digest_enabled", "0") === "1", + im_digest_cron: ctx.db.get_setting("im_digest_cron", "0 9 * * 1-5"), + im_digest_channels: parse_im_digest_recipients( + ctx.db.get_setting("im_digest_channels", "[]"), + ), + im_attention_digest_minutes: Number.parseInt( + ctx.db.get_setting("im_attention_digest_minutes", "20") ?? "20", + 10, + ), + im_skill_suggestions_enabled: + ctx.db.get_setting("im_skill_suggestions_enabled", "0") === "1", + im_skill_suggestion_channels: parse_im_digest_recipients( + ctx.db.get_setting("im_skill_suggestion_channels", "[]"), + ), }, 200, origin, @@ -792,6 +1298,278 @@ async function handlePost( return jsonResponse({ status: "resumed" }, 200, origin); } + if (path === "/api/task-briefs") { + const validated = validateTaskBriefPayload(body); + if (validated.response) { + return jsonResponse( + validated.response[0], + validated.response[1] ?? 200, + origin, + ); + } + const id = ctx.db.add_task_brief(validated.brief!); + return jsonResponse(ctx.db.get_task_brief(id), 201, origin); + } + if (path.startsWith("/api/task-briefs/") && path.endsWith("/confirm")) { + const bid = idAt(path); + const brief = bid === null ? null : ctx.db.get_task_brief(bid); + if (!brief || bid === null) + return jsonResponse({ error: "not found" }, 404, origin); + if (brief["status"] !== TaskBriefStatus.DRAFT) { + return jsonResponse( + { + error: `Cannot confirm draft task with status '${brief["status"]}'.`, + }, + 409, + origin, + ); + } + const task = taskFromBrief(ctx, brief); + const dirError = ensureWorkingDir( + task.working_dir, + `working_dir does not exist or is not a directory: ${task.working_dir}`, + ); + if (dirError) return jsonResponse(dirError, 400, origin); + const taskId = ctx.scheduler.submit_task(task); + ctx.db.confirm_task_brief(bid, taskId); + return jsonResponse( + { + status: "created", + task_id: taskId, + brief: ctx.db.get_task_brief(bid), + }, + 201, + origin, + ); + } + if (path.startsWith("/api/task-briefs/") && path.endsWith("/discard")) { + const bid = idAt(path); + const brief = bid === null ? null : ctx.db.get_task_brief(bid); + if (!brief || bid === null) + return jsonResponse({ error: "not found" }, 404, origin); + if (brief["status"] !== TaskBriefStatus.DRAFT) { + return jsonResponse( + { + error: `Cannot discard draft task with status '${brief["status"]}'.`, + }, + 409, + origin, + ); + } + ctx.db.discard_task_brief(bid); + return jsonResponse(ctx.db.get_task_brief(bid), 200, origin); + } + + if (path === "/api/im-runbooks") { + const validated = validateIMRunbookPayload(body); + if (validated.response) { + return jsonResponse( + validated.response[0], + validated.response[1] ?? 200, + origin, + ); + } + const id = ctx.db.add_im_runbook(validated.runbook!); + return jsonResponse(ctx.db.get_im_runbook(id), 201, origin); + } + if (path === "/api/im-runbooks/from-task") { + const validated = commandFromTaskPayload(ctx, body); + if (validated.response) { + return jsonResponse( + validated.response[0], + validated.response[1] ?? 200, + origin, + ); + } + const id = ctx.db.add_im_runbook(validated.runbook!); + return jsonResponse(ctx.db.get_im_runbook(id), 201, origin); + } + { + const parts = path.split("/"); + if ( + parts.length === 5 && + parts[2] === "im-runbooks" && + (parts[4] === "preview" || parts[4] === "run") + ) { + const name = decodeURIComponent(parts[3] ?? ""); + const sourceRef = asString(body["source_ref"] ?? `api:${name}`).trim(); + try { + const result = ctx.scheduler.handle_inbound_message( + makeInboundMessage({ + type: + parts[4] === "preview" + ? InboundMessageType.PREVIEW_RUNBOOK + : InboundMessageType.RUN_RUNBOOK, + source: "api", + payload: { + ...body, + name, + raw_args: asString(body["raw_args"] ?? ""), + source_channel: + asString(body["source_channel"] ?? "api").trim() || "api", + source_ref: sourceRef || `api:${name}`, + }, + metadata: { source_ref: sourceRef || `api:${name}` }, + }), + ); + return jsonResponse(result, 201, origin); + } catch (e) { + return jsonResponse( + { error: e instanceof Error ? e.message : String(e) }, + 400, + origin, + ); + } + } + } + + if (path === "/api/im-digests/preview") { + return jsonResponse(triggerDigest(ctx, body), 200, origin); + } + if (path === "/api/im-digests/send") { + const recipients = digestRecipients(ctx, body); + if (!recipients.length) { + return jsonResponse( + { error: "no digest recipients configured" }, + 409, + origin, + ); + } + const result = triggerDigest(ctx, body); + if (result["status"] === "quiet") { + return jsonResponse(result, 200, origin); + } + const text = asString(result["text"]); + try { + for (const recipient of recipients) { + await sendIMDigest(ctx, recipient, text); + } + } catch (e) { + return jsonResponse( + { error: e instanceof Error ? e.message : String(e) }, + 409, + origin, + ); + } + return jsonResponse( + { + status: "sent", + sent: recipients.length, + digest: result["digest"], + }, + 200, + origin, + ); + } + + if (path === "/api/im-skill-suggestions/preview") { + return jsonResponse(skillSuggestionPreview(ctx, body), 200, origin); + } + if (path === "/api/im-skill-suggestions/send") { + const recipients = skillSuggestionRecipients(ctx, body); + if (!recipients.length) { + return jsonResponse( + { error: "no skill suggestion recipients configured" }, + 409, + origin, + ); + } + const includeSent = Boolean(body["include_sent"] ?? false); + const sentSuggestions: Row[] = []; + try { + for (const recipient of recipients) { + const suggestions = collect_im_skill_suggestions(ctx.db, { + channel: recipient.channel, + limit: + body["limit"] === undefined || body["limit"] === null + ? undefined + : Number(body["limit"]), + }); + for (const suggestion of suggestions) { + if ( + !includeSent && + !ctx.db.should_send_im_skill_suggestion( + suggestion.pattern_id, + recipient.channel, + recipient.target, + ) + ) { + continue; + } + await sendIMDigest( + ctx, + recipient, + render_im_skill_suggestion_text(suggestion), + ); + ctx.db.upsert_im_skill_suggestion({ + pattern_id: suggestion.pattern_id, + channel: recipient.channel, + target: recipient.target, + status: "suggested", + }); + sentSuggestions.push({ + pattern_id: suggestion.pattern_id, + channel: recipient.channel, + target: recipient.target, + }); + } + } + } catch (e) { + return jsonResponse( + { error: e instanceof Error ? e.message : String(e) }, + 409, + origin, + ); + } + return jsonResponse( + { + status: "sent", + sent: sentSuggestions.length, + suggestions: sentSuggestions, + }, + 200, + origin, + ); + } + if ( + path.startsWith("/api/im-skill-suggestions/") && + path.endsWith("/action") + ) { + const patternId = idAt(path); + if (patternId === null) { + return jsonResponse({ error: "pattern not found" }, 404, origin); + } + try { + const result = ctx.scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.SKILL_SUGGESTION_ACTION, + source: "api", + reply_to: + body["target"] === undefined || body["target"] === null + ? null + : String(body["target"]), + payload: { + ...body, + pattern_id: patternId, + source_channel: + asString( + body["source_channel"] ?? body["channel"] ?? "api", + ).trim() || "api", + target: asString(body["target"] ?? ""), + }, + }), + ); + return jsonResponse(result, 200, origin); + } catch (e) { + const msg = e instanceof Error ? e.message : String(e); + return jsonResponse( + { error: msg }, + msg.includes("not found") ? 404 : 400, + origin, + ); + } + } + if (path === "/api/skills/sweep") { const started = ctx.scheduler.trigger_skill_sweep( body["agent"] ?? null, @@ -1118,6 +1896,75 @@ async function handlePut( ctx.db.set_setting(key, String(value)); return jsonResponse({ status: "updated" }, 200, origin); } + if (path.startsWith("/api/task-briefs/") && path.split("/").length === 4) { + const bid = idAt(path); + const existing = bid === null ? null : ctx.db.get_task_brief(bid); + if (!existing || bid === null) + return jsonResponse({ error: "not found" }, 404, origin); + if (existing["status"] !== TaskBriefStatus.DRAFT) { + return jsonResponse( + { + error: `Cannot edit draft task with status '${existing["status"]}'.`, + }, + 409, + origin, + ); + } + const validated = validateTaskBriefPayload(body, existing); + if (validated.response) { + return jsonResponse( + validated.response[0], + validated.response[1] ?? 200, + origin, + ); + } + const brief = validated.brief!; + ctx.db.update_task_brief(bid, { + title: brief.title, + goal: brief.goal, + context_summary: brief.context_summary, + acceptance_criteria: brief.acceptance_criteria, + working_dir: brief.working_dir, + working_dir_confidence: brief.working_dir_confidence, + agent: brief.agent, + risk_level: brief.risk_level, + needs_confirmation: brief.needs_confirmation, + source_channel: brief.source_channel, + source_ref: brief.source_ref, + source_metadata: brief.source_metadata, + expires_at: brief.expires_at, + }); + return jsonResponse(ctx.db.get_task_brief(bid), 200, origin); + } + if (path.startsWith("/api/im-runbooks/") && path.split("/").length === 4) { + const rid = idAt(path); + if (rid === null) + return jsonResponse({ error: "invalid runbook id" }, 400, origin); + const existing = ctx.db.get_im_runbook(rid); + if (!existing) return jsonResponse({ error: "not found" }, 404, origin); + const validated = validateIMRunbookPayload(body, existing); + if (validated.response) { + return jsonResponse( + validated.response[0], + validated.response[1] ?? 200, + origin, + ); + } + const runbook = validated.runbook!; + ctx.db.update_im_runbook(rid, { + name: runbook.name, + aliases: runbook.aliases, + description: runbook.description, + source_type: runbook.source_type, + source_id: runbook.source_id, + command_schema: runbook.command_schema, + prompt_template: runbook.prompt_template, + default_agent: runbook.default_agent, + confirmation_policy: runbook.confirmation_policy, + enabled: runbook.enabled, + }); + return jsonResponse(ctx.db.get_im_runbook(rid), 200, origin); + } if (path.startsWith("/api/skills/")) { const sid = idAt(path); if (sid === null) @@ -1325,6 +2172,13 @@ async function handleDelete( if (hid !== null) ctx.db.delete_heartbeat(hid); return jsonResponse({ status: "deleted" }, 200, origin); } + if (path.startsWith("/api/im-runbooks/")) { + const rid = idAt(path); + if (rid === null) + return jsonResponse({ error: "invalid runbook id" }, 400, origin); + ctx.db.delete_im_runbook(rid); + return jsonResponse({ status: "deleted" }, 200, origin); + } if (path.startsWith("/api/skills/")) { const sid = idAt(path); if (sid === null) @@ -1363,7 +2217,18 @@ export async function handleApiRequest( if (!url.pathname.startsWith("/api/")) { return jsonResponse({ error: "not found" }, 404, origin); } - if (["POST", "PUT", "DELETE"].includes(req.method) && !checkCsrf(req)) { + if ( + req.method === "PATCH" && + !url.pathname.startsWith("/api/task-briefs/") && + !url.pathname.startsWith("/api/im-runbooks/") + ) { + void req.body?.cancel(); + return jsonResponse({ error: "method not allowed" }, 405, origin); + } + if ( + ["POST", "PUT", "PATCH", "DELETE"].includes(req.method) && + !checkCsrf(req) + ) { void req.body?.cancel(); return jsonResponse( { error: "CSRF token missing or invalid" }, @@ -1375,7 +2240,8 @@ export async function handleApiRequest( try { if (req.method === "GET") return await handleGet(ctx, req, url, origin); if (req.method === "POST") return await handlePost(ctx, req, url, origin); - if (req.method === "PUT") return await handlePut(ctx, req, url, origin); + if (req.method === "PUT" || req.method === "PATCH") + return await handlePut(ctx, req, url, origin); if (req.method === "DELETE") return await handleDelete(ctx, url, origin); return jsonResponse({ error: "method not allowed" }, 405, origin); } catch (e) { diff --git a/backend/src/bus.ts b/backend/src/bus.ts index 2bc32fa..4fc47a4 100644 --- a/backend/src/bus.ts +++ b/backend/src/bus.ts @@ -31,6 +31,13 @@ export const InboundMessageType = { RESPOND_TASK: "respond_task", // answer a question a task is waiting on CANCEL_TASK: "cancel_task", // cancel a task STATUS_QUERY: "status_query", // query task status + CREATE_BRIEF: "create_brief", // create a draft task brief + CONFIRM_BRIEF: "confirm_brief", // convert a draft brief into a task + DISCARD_BRIEF: "discard_brief", // discard a draft brief + PREVIEW_RUNBOOK: "preview_runbook", // create a draft preview from an IM runbook + RUN_RUNBOOK: "run_runbook", // run an IM runbook or create a confirmation draft + TRIGGER_DIGEST: "trigger_digest", // preview or send an IM digest + SKILL_SUGGESTION_ACTION: "skill_suggestion_action", // draft/show/approve/dismiss a skill suggestion } as const; export type InboundMessageType = (typeof InboundMessageType)[keyof typeof InboundMessageType]; @@ -65,6 +72,13 @@ function utcNowIso(): string { * RESPOND_TASK -> {"task_id", "answer"} * CANCEL_TASK -> {"task_id"} * STATUS_QUERY -> {"task_id"} + * CREATE_BRIEF -> {"title", "goal", "source_channel", "source_ref", ...} + * CONFIRM_BRIEF -> {"brief_id"} + * DISCARD_BRIEF -> {"brief_id"} + * PREVIEW_RUNBOOK -> {"name", "raw_args", "source_channel", "source_ref", ...} + * RUN_RUNBOOK -> {"name", "raw_args", "source_channel", "source_ref", ...} + * TRIGGER_DIGEST -> {"include_empty", "limit", "since"} + * SKILL_SUGGESTION_ACTION -> {"action", "pattern_id", "source_channel", "target"} * reply_to: optional reply target (e.g. Feishu chat_id / open_id). * metadata: channel-specific context (e.g. Feishu message_id). */ diff --git a/backend/src/channels/brief_utils.ts b/backend/src/channels/brief_utils.ts new file mode 100644 index 0000000..4934970 --- /dev/null +++ b/backend/src/channels/brief_utils.ts @@ -0,0 +1,240 @@ +import { + parse_runbook_command, + runbook_from_row, + type ParsedRunbookCommand, + type RunbookDefinition, +} from "../runbooks.ts"; + +export type { ParsedRunbookCommand } from "../runbooks.ts"; + +type Row = Record; +type RunbookDB = { + get_im_runbooks?: (enabled_only?: boolean) => Row[]; +}; + +export type BriefCommand = + | { action: "create"; goal: string } + | { action: "confirm"; brief_id: number } + | { action: "discard"; brief_id: number } + | { action: "help"; reason: "invalid_brief_id" }; +type BriefHelpReason = Extract["reason"]; + +export type SkillSuggestionCommand = + | { action: "draft" | "show" | "approve" | "dismiss"; pattern_id: number } + | { action: "help"; reason: "invalid_pattern_id" }; +type SkillSuggestionHelpReason = Extract< + SkillSuggestionCommand, + { action: "help" } +>["reason"]; + +function parseBriefId(value: string): number | null { + const raw = value.trim().replace(/^#+/, ""); + if (!/^\d+$/.test(raw)) return null; + const id = Number.parseInt(raw, 10); + return Number.isInteger(id) && id > 0 ? id : null; +} + +export function parse_brief_command(text: string): BriefCommand | null { + const trimmed = text.trim(); + const match = /^\/([a-z-]+)(?:\s+([\s\S]*))?$/i.exec(trimmed); + if (!match) return null; + const cmd = match[1]!.toLowerCase(); + const args = (match[2] ?? "").trim(); + + if ( + cmd === "run-draft" || + cmd === "confirm-draft" || + cmd === "confirm-brief" || + cmd === "run-brief" + ) { + const brief_id = parseBriefId(args); + return brief_id === null + ? { action: "help", reason: "invalid_brief_id" } + : { action: "confirm", brief_id }; + } + if ( + cmd === "cancel-draft" || + cmd === "discard-draft" || + cmd === "discard-brief" + ) { + const brief_id = parseBriefId(args); + return brief_id === null + ? { action: "help", reason: "invalid_brief_id" } + : { action: "discard", brief_id }; + } + return null; +} + +export function parse_skill_suggestion_command( + text: string, +): SkillSuggestionCommand | null { + const trimmed = text.trim(); + const match = /^\/([a-z-]+)(?:\s+([\s\S]*))?$/i.exec(trimmed); + if (!match) return null; + const cmd = match[1]!.toLowerCase(); + const args = (match[2] ?? "").trim(); + const commandToAction: Record< + string, + "draft" | "show" | "approve" | "dismiss" + > = { + "draft-skill": "draft", + "show-skill": "show", + "review-skill": "show", + "approve-skill": "approve", + "dismiss-skill": "dismiss", + }; + const action = commandToAction[cmd]; + if (!action) return null; + const pattern_id = parseBriefId(args); + return pattern_id === null + ? { action: "help", reason: "invalid_pattern_id" } + : { action, pattern_id }; +} + +function titleFromGoal(goal: string): string { + const singleLine = goal.replace(/\s+/g, " ").trim(); + return singleLine.length > 60 ? `${singleLine.slice(0, 57)}...` : singleLine; +} + +export function build_brief_payload(args: { + channel: string; + goal: string; + source_ref: string; + source_metadata?: Row; + working_dir?: string | null; + agent?: string | null; +}): Row { + return { + title: titleFromGoal(args.goal), + goal: args.goal.trim(), + context_summary: "", + acceptance_criteria: [], + working_dir: args.working_dir ?? null, + working_dir_confidence: "unknown", + agent: args.agent ?? null, + risk_level: "normal", + needs_confirmation: true, + source_channel: args.channel, + source_ref: args.source_ref, + source_metadata: args.source_metadata ?? {}, + }; +} + +function has_runbook_db(value: unknown): value is RunbookDB { + return ( + typeof value === "object" && + value !== null && + "get_im_runbooks" in value && + typeof (value as RunbookDB).get_im_runbooks === "function" + ); +} + +function runbook_definitions_from_db(db: unknown): RunbookDefinition[] { + if (!has_runbook_db(db)) return []; + try { + const get_im_runbooks = db.get_im_runbooks; + if (!get_im_runbooks) return []; + return get_im_runbooks.call(db, true).map((row) => runbook_from_row(row)); + } catch { + return []; + } +} + +export function parse_runbook_fallback( + text: string, + db: unknown = null, +): ParsedRunbookCommand | null { + return parse_runbook_command(text, runbook_definitions_from_db(db)); +} + +export function build_runbook_payload(args: { + channel: string; + command: ParsedRunbookCommand; + source_ref: string; + source_metadata?: Row; + working_dir?: string | null; + agent?: string | null; +}): Row { + return { + name: args.command.name, + raw_args: args.command.raw_args, + source_channel: args.channel, + source_ref: args.source_ref, + source_metadata: args.source_metadata ?? {}, + working_dir: args.working_dir ?? null, + agent: args.agent ?? null, + }; +} + +export function format_brief_help(_reason: BriefHelpReason): string { + return "Usage: `/run-draft ` or `/cancel-draft `"; +} + +export function format_skill_suggestion_help( + _reason: SkillSuggestionHelpReason, +): string { + return "Usage: `/draft-skill `, `/show-skill `, `/approve-skill `, or `/dismiss-skill `"; +} + +export function format_skill_suggestion_action_reply( + result: Record, +): string { + const pattern_id = Number(result["pattern_id"]); + const id = Number.isInteger(pattern_id) && pattern_id > 0 ? pattern_id : "?"; + const status = String(result["status"] ?? ""); + if (status === "drafting") { + return `Skill draft for pattern #${id} started. Review it with \`/show-skill ${id}\` when ready.`; + } + if (status === "ready") { + return String(result["text"] ?? `Skill draft for pattern #${id} is ready.`); + } + if (status === "approved") { + return `Skill suggestion #${id} approved and installed.`; + } + if (status === "dismissed") { + return `Skill suggestion #${id} dismissed.`; + } + return `Skill suggestion #${id} updated.`; +} + +export function format_brief_created_reply( + brief_id: number, + title: string, +): string { + return [ + `Draft task #${brief_id}: ${title}`, + "", + `Run: \`/run-draft ${brief_id}\``, + `Cancel: \`/cancel-draft ${brief_id}\``, + ].join("\n"); +} + +export function format_brief_started_reply( + brief_id: number, + task_id: number, +): string { + return `Task #${task_id} created from draft #${brief_id}. Thinking โ–Œ`; +} + +export function format_brief_discarded_reply(brief_id: number): string { + return `Draft task #${brief_id} discarded.`; +} + +export function format_runbook_created_reply( + task_id: number, + runbook: string, +): string { + return `Command /${runbook} created Task #${task_id}. Thinking โ–Œ`; +} + +export function format_runbook_brief_reply( + brief_id: number, + runbook: string, +): string { + return [ + `Command /${runbook} created Draft task #${brief_id}.`, + "", + `Run: \`/run-draft ${brief_id}\``, + `Cancel: \`/cancel-draft ${brief_id}\``, + ].join("\n"); +} diff --git a/backend/src/channels/feishu.ts b/backend/src/channels/feishu.ts index 42c203b..737a316 100644 --- a/backend/src/channels/feishu.ts +++ b/backend/src/channels/feishu.ts @@ -13,8 +13,10 @@ import path from "node:path"; import { Channel, + InboundMessageType, MessageBus, OutboundMessageType, + type InboundMessage, type OutboundMessage, type TaskDBLike, } from "../bus.ts"; @@ -29,6 +31,24 @@ import { resolve_agent, type SettingsDB, } from "./agent_utils.ts"; +import { + build_brief_payload, + build_runbook_payload, + format_brief_created_reply, + format_brief_discarded_reply, + format_brief_help, + format_brief_started_reply, + format_runbook_brief_reply, + format_runbook_created_reply, + format_skill_suggestion_action_reply, + format_skill_suggestion_help, + parse_brief_command, + parse_runbook_fallback, + parse_skill_suggestion_command, + type BriefCommand, + type ParsedRunbookCommand, + type SkillSuggestionCommand, +} from "./brief_utils.ts"; import { handle_dir_command, resolve_working_dir } from "./dir_utils.ts"; type Row = Record; @@ -46,6 +66,13 @@ export const HELP_TEXT = `**AgentForge Bot** ๐Ÿ‘‹ โ€ข \`/ccu\` โ€” ๆŸฅ็œ‹ Claude Code ๅฝ“ๅ‰็”จ้‡๏ผˆccu-blocks๏ผ‰ โ€ข \`/help\` โ€” ๆ˜พ็คบๆญคๅธฎๅŠฉ +**่‡ชๅฎšไน‰ๅ‘ฝไปค๏ผš** +โ€ข ๅ…ˆๅœจ AgentForge ้‡Œๅˆ›ๅปบ่‡ชๅฎšไน‰ๅ‘ฝไปค๏ผŒๆˆ–ไปŽๅทฒ็”จ่ฟ‡็š„ไปปๅŠก็”Ÿๆˆๅ‘ฝไปคใ€‚ +โ€ข ็„ถๅŽๅœจ่Šๅคฉ้‡Œ่พ“ๅ…ฅ๏ผš\`/็œ‹ๆŠฅ้”™ TypeError: Cannot read properties of undefined\` +โ€ข ๅ‘ฝไปคๅฏไปฅๆ˜ฏไธญๆ–‡๏ผŒไนŸๅฏไปฅ้…็ฝฎ alias๏ผŒไพ‹ๅฆ‚๏ผš\`/err ...\` +โ€ข ๅฆ‚ๆžœๅ‘ฝไปค้œ€่ฆ็กฎ่ฎค๏ผŒBot ไผš่ฟ”ๅ›ž Draft taskใ€‚ +ใ€€็”จ \`/run-draft \` ๅผ€ๅง‹ๆ‰ง่กŒ๏ผŒ็”จ \`/cancel-draft \` ๅ–ๆถˆใ€‚ + **ๅฐๆŠ€ๅทง๏ผš** โ€ข ๆถˆๆฏไธญ็›ดๆŽฅๆๅˆฐ่ทฏๅพ„๏ผŒBot ไผš่‡ชๅŠจ่ฏ†ๅˆซๅนถไฝฟ็”จใ€‚ ใ€€ไพ‹ๅฆ‚๏ผš_ๅœจ ~/myapp ้‡Œๅธฎๆˆ‘ไฟฎๅค็™ปๅฝ• bug_ @@ -97,6 +124,7 @@ export interface FeishuTaskDB extends TaskDBLike, SettingsDB { export interface FeishuScheduler { submit_task(task: Task): number; + handle_inbound_message?(msg: InboundMessage): Record; add_output_listener(cb: OutputListener): void; remove_output_listener(cb: OutputListener): void; } @@ -1576,6 +1604,31 @@ export class FeishuChannel extends Channel { await this._send_message(reply_to, HELP_TEXT); return; } + const brief_cmd = parse_brief_command(content); + if (brief_cmd !== null) { + await this._handle_brief_command(brief_cmd, reply_to, message, sender_id); + return; + } + const runbook_cmd = parse_runbook_fallback(content, this.db); + if (runbook_cmd !== null) { + await this._handle_runbook_command( + runbook_cmd, + reply_to, + message, + sender_id, + ); + return; + } + const skill_suggestion_cmd = parse_skill_suggestion_command(content); + if (skill_suggestion_cmd !== null) { + await this._handle_skill_suggestion_command( + skill_suggestion_cmd, + reply_to, + message, + sender_id, + ); + return; + } if (content.startsWith("/dir ") || content.startsWith("/cd ")) { const reply = handle_dir_command(content, "feishu", this.db); if (reply) await this._send_message(reply_to, reply); @@ -1776,6 +1829,243 @@ export class FeishuChannel extends Channel { ); } + async _handle_brief_command( + command: BriefCommand, + reply_to: string, + message: Row, + sender_id: string, + ): Promise { + if (command.action === "help") { + await this._send_message(reply_to, format_brief_help(command.reason)); + return; + } + if (!this.scheduler.handle_inbound_message) { + await this._send_message( + reply_to, + "โŒ Draft task flow is not available in this scheduler.", + ); + return; + } + + const message_id = asString(message["message_id"], reply_to); + const metadata = this._brief_source_metadata(message, sender_id); + try { + if (command.action === "create") { + const payload = build_brief_payload({ + channel: "feishu", + goal: command.goal, + source_ref: message_id, + source_metadata: metadata, + working_dir: await resolve_working_dir( + command.goal, + "feishu", + this.db, + ), + agent: resolve_agent("feishu", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CREATE_BRIEF, + payload, + reply_to, + metadata, + ), + ); + const brief_id = Number(result["brief_id"]); + await this._send_message( + reply_to, + format_brief_created_reply(brief_id, String(payload["title"])), + ); + return; + } + + if (command.action === "confirm") { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CONFIRM_BRIEF, + { brief_id: command.brief_id }, + reply_to, + metadata, + ), + ); + const task_id = Number(result["task_id"]); + if (!Number.isInteger(task_id) || task_id <= 0) { + await this._send_message( + reply_to, + "โŒ Draft task confirmation failed.", + ); + return; + } + + this._task_origin.set(task_id, [reply_to, message_id, message_id]); + this._root_msg_map.set(message_id, task_id); + this._remember_task_source(task_id); + const title = + (this.db.get_task(task_id) as Row | null)?.["title"] ?? + `Task #${task_id}`; + const running_msg_id = await this._create_reply( + message_id, + this._build_legacy_markdown_card( + format_brief_started_reply(command.brief_id, task_id), + ), + ); + if (running_msg_id) + this._start_streaming(task_id, running_msg_id, String(title)); + return; + } + + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.DISCARD_BRIEF, + { brief_id: command.brief_id }, + reply_to, + metadata, + ), + ); + await this._send_message( + reply_to, + format_brief_discarded_reply(Number(result["brief_id"])), + ); + } catch (e) { + await this._send_message( + reply_to, + `โŒ ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + async _handle_runbook_command( + command: ParsedRunbookCommand, + reply_to: string, + message: Row, + sender_id: string, + ): Promise { + if (!this.scheduler.handle_inbound_message) { + await this._send_message( + reply_to, + "โŒ Custom command flow is not available in this scheduler.", + ); + return; + } + + const message_id = asString(message["message_id"], reply_to); + const metadata = this._brief_source_metadata(message, sender_id); + try { + const payload = build_runbook_payload({ + channel: "feishu", + command, + source_ref: message_id, + source_metadata: metadata, + working_dir: await resolve_working_dir( + command.raw_args || command.name, + "feishu", + this.db, + ), + agent: resolve_agent("feishu", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.RUN_RUNBOOK, + payload, + reply_to, + metadata, + ), + ); + if (result["status"] === "created") { + const task_id = Number(result["task_id"]); + this._task_origin.set(task_id, [reply_to, message_id, message_id]); + this._root_msg_map.set(message_id, task_id); + this._remember_task_source(task_id); + const title = + (this.db.get_task(task_id) as Row | null)?.["title"] ?? + `Task #${task_id}`; + const running_msg_id = await this._create_reply( + message_id, + this._build_legacy_markdown_card( + format_runbook_created_reply(task_id, command.name), + ), + ); + if (running_msg_id) + this._start_streaming(task_id, running_msg_id, String(title)); + return; + } + if (result["status"] === "draft") { + await this._send_message( + reply_to, + format_runbook_brief_reply(Number(result["brief_id"]), command.name), + ); + return; + } + await this._send_message(reply_to, "โŒ Custom command failed."); + } catch (e) { + await this._send_message( + reply_to, + `โŒ ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + async _handle_skill_suggestion_command( + command: SkillSuggestionCommand, + reply_to: string, + message: Row, + sender_id: string, + ): Promise { + if (command.action === "help") { + await this._send_message( + reply_to, + format_skill_suggestion_help(command.reason), + ); + return; + } + if (!this.scheduler.handle_inbound_message) { + await this._send_message( + reply_to, + "โŒ Skill suggestion flow is not available in this scheduler.", + ); + return; + } + + const metadata = this._brief_source_metadata(message, sender_id); + try { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.SKILL_SUGGESTION_ACTION, + { + action: command.action, + pattern_id: command.pattern_id, + source_channel: "feishu", + target: reply_to, + source_metadata: metadata, + }, + reply_to, + metadata, + ), + ); + await this._send_message( + reply_to, + format_skill_suggestion_action_reply(result), + ); + } catch (e) { + await this._send_message( + reply_to, + `โŒ ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + _brief_source_metadata( + message: Row, + sender_id: string, + ): Record { + return { + chat_id: asString(message["chat_id"]), + chat_type: asString(message["chat_type"]), + message_id: asString(message["message_id"]), + sender_id, + }; + } + async _try_resume_thread_message( content: string, reply_to: string, diff --git a/backend/src/channels/slack.ts b/backend/src/channels/slack.ts index f6e5504..79482e2 100644 --- a/backend/src/channels/slack.ts +++ b/backend/src/channels/slack.ts @@ -25,11 +25,34 @@ * event loop). */ -import { Channel, OutboundMessageType } from "../bus.ts"; -import type { MessageBus, OutboundMessage, TaskDBLike } from "../bus.ts"; +import { Channel, InboundMessageType, OutboundMessageType } from "../bus.ts"; +import type { + InboundMessage, + MessageBus, + OutboundMessage, + TaskDBLike, +} from "../bus.ts"; import { makeTask, ScheduleType } from "../types.ts"; import { handle_agent_command, resolve_agent } from "./agent_utils.ts"; import type { SettingsDB } from "./agent_utils.ts"; +import { + build_brief_payload, + build_runbook_payload, + format_brief_created_reply, + format_brief_discarded_reply, + format_brief_help, + format_brief_started_reply, + format_runbook_brief_reply, + format_runbook_created_reply, + format_skill_suggestion_action_reply, + format_skill_suggestion_help, + parse_brief_command, + parse_runbook_fallback, + parse_skill_suggestion_command, + type ParsedRunbookCommand, + type BriefCommand, + type SkillSuggestionCommand, +} from "./brief_utils.ts"; import { handle_dir_command, resolve_working_dir } from "./dir_utils.ts"; import type { Task } from "../types.ts"; @@ -204,7 +227,7 @@ export async function _require_slack(): Promise { } } -// โ”€โ”€ help text (byte-identical to Python) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +// โ”€โ”€ help text โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ export const HELP_TEXT = `*AgentForge Bot* ๐Ÿ‘‹ Send me any message and I'll create a task from it. @@ -219,6 +242,13 @@ Reply to a completion/failure notification to resume that task. โ€ข \`/agent \` โ€” switch coding agent (\`claude\` / \`codex\`) โ€ข \`/help\` โ€” show this message +*Custom commands:* +โ€ข Create a custom command in AgentForge, or generate one from a past task, then use it here: +ใ€€\`/็œ‹ๆŠฅ้”™ TypeError: Cannot read properties of undefined\` +โ€ข Custom commands can use Chinese names or aliases. +โ€ข If a command needs confirmation, I'll create a Draft task. +ใ€€Run it with \`/run-draft \`, or cancel it with \`/cancel-draft \`. + *Tips:* โ€ข You can also mention a path in your message and it will be used automatically. ใ€€e.g. _ๅœจ ~/myapp ้‡Œๅธฎๆˆ‘ไฟฎๅค็™ปๅฝ• bug_ @@ -238,6 +268,7 @@ export interface SlackTaskDB extends TaskDBLike, SettingsDB { */ export interface SchedulerLike { submit_task(task: Task): number; + handle_inbound_message?(msg: InboundMessage): Record; } // โ”€โ”€ channel โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ @@ -525,8 +556,21 @@ export class SlackChannel extends Channel { const ws = text.search(/\s/); const cmd = (ws === -1 ? text : text.slice(0, ws)).toLowerCase(); const args = ws === -1 ? "" : text.slice(ws + 1).trim(); - - if (cmd === "/status") { + const brief_cmd = parse_brief_command(text); + const runbook_cmd = parse_runbook_fallback(text, this.db); + const skill_suggestion_cmd = parse_skill_suggestion_command(text); + + if (brief_cmd !== null) { + await this._handle_brief_command(brief_cmd, channel_id, msg_ts); + } else if (runbook_cmd !== null) { + await this._handle_runbook_command(runbook_cmd, channel_id, msg_ts); + } else if (skill_suggestion_cmd !== null) { + await this._handle_skill_suggestion_command( + skill_suggestion_cmd, + channel_id, + msg_ts, + ); + } else if (cmd === "/status") { await this._cmd_status(args, channel_id, msg_ts); } else if (cmd === "/cancel") { await this._cmd_cancel(args, channel_id, msg_ts); @@ -628,6 +672,224 @@ export class SlackChannel extends Channel { // โ”€โ”€ commands โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + async _handle_brief_command( + command: BriefCommand, + channel_id: string, + msg_ts: string, + ): Promise { + if (command.action === "help") { + await this._reply(channel_id, msg_ts, format_brief_help(command.reason)); + return; + } + if (!this.scheduler.handle_inbound_message) { + await this._reply( + channel_id, + msg_ts, + ":x: Draft task flow is not available in this scheduler.", + ); + return; + } + + try { + if (command.action === "create") { + const payload = build_brief_payload({ + channel: "slack", + goal: command.goal, + source_ref: `${channel_id}:${msg_ts}`, + source_metadata: { channel_id, message_ts: msg_ts }, + working_dir: await resolve_working_dir( + command.goal, + "slack", + this.db, + ), + agent: resolve_agent("slack", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CREATE_BRIEF, + payload, + channel_id, + { channel_id, message_ts: msg_ts }, + ), + ); + const brief_id = Number(result["brief_id"]); + await this._reply( + channel_id, + msg_ts, + format_brief_created_reply(brief_id, String(payload["title"])), + ); + return; + } + + if (command.action === "confirm") { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CONFIRM_BRIEF, + { brief_id: command.brief_id }, + channel_id, + { channel_id, message_ts: msg_ts }, + ), + ); + const task_id = Number(result["task_id"]); + if (Number.isInteger(task_id) && task_id > 0) { + this._task_origin.set(task_id, [channel_id, msg_ts, msg_ts]); + this._thread_ts_map.set(msg_ts, task_id); + this._remember_task_source(task_id); + this._add_reaction(channel_id, msg_ts, "eyes"); + await this._reply( + channel_id, + msg_ts, + format_brief_started_reply(command.brief_id, task_id), + ); + } else { + await this._reply( + channel_id, + msg_ts, + ":x: Draft task confirmation failed.", + ); + } + return; + } + + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.DISCARD_BRIEF, + { brief_id: command.brief_id }, + channel_id, + { channel_id, message_ts: msg_ts }, + ), + ); + await this._reply( + channel_id, + msg_ts, + format_brief_discarded_reply(Number(result["brief_id"])), + ); + } catch (e) { + await this._reply( + channel_id, + msg_ts, + `:x: ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + async _handle_runbook_command( + command: ParsedRunbookCommand, + channel_id: string, + msg_ts: string, + ): Promise { + if (!this.scheduler.handle_inbound_message) { + await this._reply( + channel_id, + msg_ts, + ":x: Custom command flow is not available in this scheduler.", + ); + return; + } + + try { + const payload = build_runbook_payload({ + channel: "slack", + command, + source_ref: `${channel_id}:${msg_ts}`, + source_metadata: { channel_id, message_ts: msg_ts }, + working_dir: await resolve_working_dir( + command.raw_args || command.name, + "slack", + this.db, + ), + agent: resolve_agent("slack", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.RUN_RUNBOOK, + payload, + channel_id, + { channel_id, message_ts: msg_ts }, + ), + ); + if (result["status"] === "created") { + const task_id = Number(result["task_id"]); + this._task_origin.set(task_id, [channel_id, msg_ts, msg_ts]); + this._thread_ts_map.set(msg_ts, task_id); + this._remember_task_source(task_id); + this._add_reaction(channel_id, msg_ts, "eyes"); + await this._reply( + channel_id, + msg_ts, + format_runbook_created_reply(task_id, command.name), + ); + return; + } + if (result["status"] === "draft") { + await this._reply( + channel_id, + msg_ts, + format_runbook_brief_reply(Number(result["brief_id"]), command.name), + ); + return; + } + await this._reply(channel_id, msg_ts, ":x: Custom command failed."); + } catch (e) { + await this._reply( + channel_id, + msg_ts, + `:x: ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + async _handle_skill_suggestion_command( + command: SkillSuggestionCommand, + channel_id: string, + msg_ts: string, + ): Promise { + if (command.action === "help") { + await this._reply( + channel_id, + msg_ts, + format_skill_suggestion_help(command.reason), + ); + return; + } + if (!this.scheduler.handle_inbound_message) { + await this._reply( + channel_id, + msg_ts, + ":x: Skill suggestion flow is not available in this scheduler.", + ); + return; + } + + try { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.SKILL_SUGGESTION_ACTION, + { + action: command.action, + pattern_id: command.pattern_id, + source_channel: "slack", + target: channel_id, + source_metadata: { channel_id, message_ts: msg_ts }, + }, + channel_id, + { channel_id, message_ts: msg_ts }, + ), + ); + await this._reply( + channel_id, + msg_ts, + format_skill_suggestion_action_reply(result), + ); + } catch (e) { + await this._reply( + channel_id, + msg_ts, + `:x: ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + async _cmd_status( args: string, channel_id: string, diff --git a/backend/src/channels/telegram.ts b/backend/src/channels/telegram.ts index 7eeca63..edd5ec4 100644 --- a/backend/src/channels/telegram.ts +++ b/backend/src/channels/telegram.ts @@ -44,8 +44,10 @@ import path from "node:path"; import { Channel, + InboundMessageType, MessageBus, OutboundMessageType, + type InboundMessage, type OutboundMessage, type TaskDBLike, } from "../bus.ts"; @@ -55,6 +57,24 @@ import { resolve_agent, type SettingsDB, } from "./agent_utils.ts"; +import { + build_brief_payload, + build_runbook_payload, + format_brief_created_reply, + format_brief_discarded_reply, + format_brief_help, + format_brief_started_reply, + format_runbook_brief_reply, + format_runbook_created_reply, + format_skill_suggestion_action_reply, + format_skill_suggestion_help, + parse_brief_command, + parse_runbook_fallback, + parse_skill_suggestion_command, + type BriefCommand, + type ParsedRunbookCommand, + type SkillSuggestionCommand, +} from "./brief_utils.ts"; import { handle_dir_command, resolve_working_dir } from "./dir_utils.ts"; // โ‰™ Python's try/except ImportError guard around the telegram SDK import. @@ -77,6 +97,12 @@ export const HELP_TEXT = "ใ€€ใ€€ใ€€ใ€€e.g. /dir ~/workspace/myproject\n" + "/agent โ€” switch coding agent (claude / codex)\n" + "/help โ€” show this message\n\n" + + "Custom commands:\n" + + "Create a custom command in AgentForge, or generate one from a past task, then use it here:\n" + + "/็œ‹ๆŠฅ้”™ TypeError: Cannot read properties of undefined\n" + + "Custom commands can use Chinese names or aliases.\n" + + "If a command needs confirmation, I'll create a Draft task.\n" + + "Run it with /run-draft , or cancel it with /cancel-draft .\n\n" + "Tips:\n" + "โ€ข You can also mention a path in your message and it will be used automatically.\n" + "ใ€€e.g. ๅœจ ~/myapp ้‡Œๅธฎๆˆ‘ไฟฎๅค็™ปๅฝ• bug"; @@ -129,10 +155,11 @@ export interface TelegramDB extends TaskDBLike, SettingsDB { /** * Minimal structural view of TaskScheduler (do NOT import scheduler.ts โ€” - * the channel only ever calls submit_task). + * keep the channel coupled only to the scheduler methods it uses). */ export interface TelegramScheduler { submit_task(task: Task): number; + handle_inbound_message?(msg: InboundMessage): Record; } // โ”€โ”€ injectable HTTP seam โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ @@ -653,6 +680,25 @@ export class TelegramChannel extends Channel { return; } + const brief_command = parse_brief_command(text); + if (brief_command !== null) { + await this._handle_brief_command(brief_command, update); + return; + } + const runbook_command = parse_runbook_fallback(text, this.db); + if (runbook_command !== null) { + await this._handle_runbook_command(runbook_command, update); + return; + } + const skill_suggestion_command = parse_skill_suggestion_command(text); + if (skill_suggestion_command !== null) { + await this._handle_skill_suggestion_command( + skill_suggestion_command, + update, + ); + return; + } + // โ”€โ”€ ๆฃ€ๆต‹่ฝฌๅ‘ๆถˆๆฏ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ text = this._format_forwarded_text(text, update); @@ -697,6 +743,241 @@ export class TelegramChannel extends Channel { await this._create_task(text, chat_id, update); } + async _handle_brief_command( + command: BriefCommand, + update: TgUpdate, + ): Promise { + if (command.action === "help") { + await this._reply_text(update, format_brief_help(command.reason)); + return; + } + if (!this.scheduler.handle_inbound_message) { + await this._reply_text( + update, + "โŒ Draft task flow is not available in this scheduler.", + ); + return; + } + + const msg = update.message!; + const chat_id = msg.chat.id; + const message_id = msg.message_id; + const metadata = this._brief_source_metadata(update); + try { + if (command.action === "create") { + const payload = build_brief_payload({ + channel: "telegram", + goal: command.goal, + source_ref: `${chat_id}:${message_id}`, + source_metadata: metadata, + working_dir: await resolve_working_dir( + command.goal, + "telegram", + this.db, + ), + agent: resolve_agent("telegram", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CREATE_BRIEF, + payload, + String(chat_id), + metadata, + ), + ); + const brief_id = Number(result["brief_id"]); + await this._reply_text( + update, + format_brief_created_reply(brief_id, String(payload["title"])), + ); + return; + } + + if (command.action === "confirm") { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CONFIRM_BRIEF, + { brief_id: command.brief_id }, + String(chat_id), + metadata, + ), + ); + const task_id = Number(result["task_id"]); + if (!Number.isInteger(task_id) || task_id <= 0) { + await this._reply_text(update, "โŒ Draft task confirmation failed."); + return; + } + + this._task_origin.set(task_id, [chat_id, message_id, message_id]); + this._remember_task_source(task_id); + this._set_chat_current_task(chat_id, task_id); + try { + await this._api!("setMessageReaction", { + chat_id, + message_id, + reaction: [{ type: "emoji", emoji: "๐Ÿ‘€" }], + }); + } catch (e) { + console.log(`[Telegram] Failed to set brief reaction: ${e}`); + } + await this._reply_text( + update, + format_brief_started_reply(command.brief_id, task_id), + ); + return; + } + + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.DISCARD_BRIEF, + { brief_id: command.brief_id }, + String(chat_id), + metadata, + ), + ); + await this._reply_text( + update, + format_brief_discarded_reply(Number(result["brief_id"])), + ); + } catch (e) { + await this._reply_text( + update, + `โŒ ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + async _handle_runbook_command( + command: ParsedRunbookCommand, + update: TgUpdate, + ): Promise { + if (!this.scheduler.handle_inbound_message) { + await this._reply_text( + update, + "โŒ Custom command flow is not available in this scheduler.", + ); + return; + } + + const msg = update.message!; + const chat_id = msg.chat.id; + const message_id = msg.message_id; + const metadata = this._brief_source_metadata(update); + try { + const payload = build_runbook_payload({ + channel: "telegram", + command, + source_ref: `${chat_id}:${message_id}`, + source_metadata: metadata, + working_dir: await resolve_working_dir( + command.raw_args || command.name, + "telegram", + this.db, + ), + agent: resolve_agent("telegram", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.RUN_RUNBOOK, + payload, + String(chat_id), + metadata, + ), + ); + if (result["status"] === "created") { + const task_id = Number(result["task_id"]); + this._task_origin.set(task_id, [chat_id, message_id, message_id]); + this._remember_task_source(task_id); + this._set_chat_current_task(chat_id, task_id); + try { + await this._api!("setMessageReaction", { + chat_id, + message_id, + reaction: [{ type: "emoji", emoji: "๐Ÿ‘€" }], + }); + } catch (e) { + console.log(`[Telegram] Failed to set runbook reaction: ${e}`); + } + await this._reply_text( + update, + format_runbook_created_reply(task_id, command.name), + ); + return; + } + if (result["status"] === "draft") { + await this._reply_text( + update, + format_runbook_brief_reply(Number(result["brief_id"]), command.name), + ); + return; + } + await this._reply_text(update, "โŒ Custom command failed."); + } catch (e) { + await this._reply_text( + update, + `โŒ ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + async _handle_skill_suggestion_command( + command: SkillSuggestionCommand, + update: TgUpdate, + ): Promise { + if (command.action === "help") { + await this._reply_text( + update, + format_skill_suggestion_help(command.reason), + ); + return; + } + if (!this.scheduler.handle_inbound_message) { + await this._reply_text( + update, + "โŒ Skill suggestion flow is not available in this scheduler.", + ); + return; + } + + const msg = update.message!; + const chat_id = msg.chat.id; + const metadata = this._brief_source_metadata(update); + try { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.SKILL_SUGGESTION_ACTION, + { + action: command.action, + pattern_id: command.pattern_id, + source_channel: "telegram", + target: String(chat_id), + source_metadata: metadata, + }, + String(chat_id), + metadata, + ), + ); + await this._reply_text( + update, + format_skill_suggestion_action_reply(result), + ); + } catch (e) { + await this._reply_text( + update, + `โŒ ${e instanceof Error ? e.message : String(e)}`, + ); + } + } + + _brief_source_metadata(update: TgUpdate): Record { + const msg = update.message!; + return { + chat_id: msg.chat.id, + message_id: msg.message_id, + user_id: msg.from?.id ?? null, + }; + } + /** Create a new task from any message text. */ async _create_task( text: string, diff --git a/backend/src/channels/weixin.ts b/backend/src/channels/weixin.ts index 9f71906..745a653 100644 --- a/backend/src/channels/weixin.ts +++ b/backend/src/channels/weixin.ts @@ -31,8 +31,10 @@ import path from "node:path"; import { Channel, + InboundMessageType, MessageBus, OutboundMessageType, + type InboundMessage, type OutboundMessage, type TaskDBLike, } from "../bus.ts"; @@ -47,6 +49,24 @@ import { resolve_agent, type SettingsDB, } from "./agent_utils.ts"; +import { + build_brief_payload, + build_runbook_payload, + format_brief_created_reply, + format_brief_discarded_reply, + format_brief_help, + format_brief_started_reply, + format_runbook_brief_reply, + format_runbook_created_reply, + format_skill_suggestion_action_reply, + format_skill_suggestion_help, + parse_brief_command, + parse_runbook_fallback, + parse_skill_suggestion_command, + type BriefCommand, + type ParsedRunbookCommand, + type SkillSuggestionCommand, +} from "./brief_utils.ts"; import { handle_dir_command, resolve_working_dir } from "./dir_utils.ts"; export const WEIXIN_UPLOADABLE_IMAGE_SUFFIXES = new Set([ @@ -216,6 +236,7 @@ export interface WeixinTaskDB extends TaskDBLike, SettingsDB { */ export interface WeixinScheduler { submit_task(task: Task): number; + handle_inbound_message?(msg: InboundMessage): Record; } /** Status snapshot consumed by _build_weixin_channel_status in taskboard. */ @@ -609,6 +630,44 @@ export class WeixinChannel extends Channel { return; } + const brief_command = parse_brief_command(text); + if (brief_command !== null) { + await this._handle_brief_command(brief_command, event, { + account_id, + peer_id, + context_token, + message_id, + peer_key, + }); + return; + } + const runbook_command = parse_runbook_fallback(text, this.db); + if (runbook_command !== null) { + await this._handle_runbook_command(runbook_command, event, { + account_id, + peer_id, + context_token, + message_id, + peer_key, + }); + return; + } + const skill_suggestion_command = parse_skill_suggestion_command(text); + if (skill_suggestion_command !== null) { + await this._handle_skill_suggestion_command( + skill_suggestion_command, + event, + { + account_id, + peer_id, + context_token, + message_id, + peer_key, + }, + ); + return; + } + const task_id = force_new_session ? null : this._get_peer_current_task(peer_key); @@ -655,6 +714,247 @@ export class WeixinChannel extends Channel { this._reply_to_event(event, "ๆ”ถๅˆฐ๏ผŒๆญฃๅœจๅค„็†ใ€‚"); } + async _handle_brief_command( + command: BriefCommand, + event: Record, + source: { + account_id: string; + peer_id: string; + context_token: string; + message_id: string; + peer_key: string; + }, + ): Promise { + if (command.action === "help") { + this._reply_to_event(event, format_brief_help(command.reason)); + return; + } + if (!this.scheduler.handle_inbound_message) { + this._reply_to_event( + event, + "โŒ Draft task flow is not available in this scheduler.", + ); + return; + } + + const metadata = this._brief_source_metadata(source); + const source_ref = source.message_id || source.peer_key; + try { + if (command.action === "create") { + const payload = build_brief_payload({ + channel: "weixin", + goal: command.goal, + source_ref, + source_metadata: metadata, + working_dir: await resolve_working_dir( + command.goal, + "weixin", + this.db, + ), + agent: resolve_agent("weixin", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CREATE_BRIEF, + payload, + source.peer_id, + metadata, + ), + ); + const brief_id = Number(result["brief_id"]); + this._reply_to_event( + event, + format_brief_created_reply(brief_id, String(payload["title"])), + ); + return; + } + + if (command.action === "confirm") { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.CONFIRM_BRIEF, + { brief_id: command.brief_id }, + source.peer_id, + metadata, + ), + ); + const task_id = Number(result["task_id"]); + if (!Number.isInteger(task_id) || task_id <= 0) { + this._reply_to_event(event, "โŒ Draft task confirmation failed."); + return; + } + + this._task_origin.set(task_id, { + account_id: source.account_id, + peer_id: source.peer_id, + context_token: source.context_token, + message_id: source.message_id, + }); + this._remember_task_source(task_id); + this._set_peer_current_task(source.peer_key, task_id); + this._reply_to_event( + event, + format_brief_started_reply(command.brief_id, task_id), + ); + return; + } + + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.DISCARD_BRIEF, + { brief_id: command.brief_id }, + source.peer_id, + metadata, + ), + ); + this._reply_to_event( + event, + format_brief_discarded_reply(Number(result["brief_id"])), + ); + } catch (exc) { + this._reply_to_event( + event, + `โŒ ${exc instanceof Error ? exc.message : String(exc)}`, + ); + } + } + + async _handle_runbook_command( + command: ParsedRunbookCommand, + event: Record, + source: { + account_id: string; + peer_id: string; + context_token: string; + message_id: string; + peer_key: string; + }, + ): Promise { + if (!this.scheduler.handle_inbound_message) { + this._reply_to_event( + event, + "โŒ Custom command flow is not available in this scheduler.", + ); + return; + } + + const metadata = this._brief_source_metadata(source); + const source_ref = source.message_id || source.peer_key; + try { + const payload = build_runbook_payload({ + channel: "weixin", + command, + source_ref, + source_metadata: metadata, + working_dir: await resolve_working_dir( + command.raw_args || command.name, + "weixin", + this.db, + ), + agent: resolve_agent("weixin", this.db), + }); + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.RUN_RUNBOOK, + payload, + source.peer_id, + metadata, + ), + ); + if (result["status"] === "created") { + const task_id = Number(result["task_id"]); + this._task_origin.set(task_id, { + account_id: source.account_id, + peer_id: source.peer_id, + context_token: source.context_token, + message_id: source.message_id, + }); + this._remember_task_source(task_id); + this._set_peer_current_task(source.peer_key, task_id); + this._reply_to_event( + event, + format_runbook_created_reply(task_id, command.name), + ); + return; + } + if (result["status"] === "draft") { + this._reply_to_event( + event, + format_runbook_brief_reply(Number(result["brief_id"]), command.name), + ); + return; + } + this._reply_to_event(event, "โŒ Custom command failed."); + } catch (exc) { + this._reply_to_event( + event, + `โŒ ${exc instanceof Error ? exc.message : String(exc)}`, + ); + } + } + + async _handle_skill_suggestion_command( + command: SkillSuggestionCommand, + event: Record, + source: { + account_id: string; + peer_id: string; + context_token: string; + message_id: string; + peer_key: string; + }, + ): Promise { + if (command.action === "help") { + this._reply_to_event(event, format_skill_suggestion_help(command.reason)); + return; + } + if (!this.scheduler.handle_inbound_message) { + this._reply_to_event( + event, + "โŒ Skill suggestion flow is not available in this scheduler.", + ); + return; + } + + const metadata = this._brief_source_metadata(source); + try { + const result = this.scheduler.handle_inbound_message( + this._make_inbound( + InboundMessageType.SKILL_SUGGESTION_ACTION, + { + action: command.action, + pattern_id: command.pattern_id, + source_channel: "weixin", + target: source.peer_id, + source_metadata: metadata, + }, + source.peer_id, + metadata, + ), + ); + this._reply_to_event(event, format_skill_suggestion_action_reply(result)); + } catch (exc) { + this._reply_to_event( + event, + `โŒ ${exc instanceof Error ? exc.message : String(exc)}`, + ); + } + } + + _brief_source_metadata(source: { + account_id: string; + peer_id: string; + context_token: string; + message_id: string; + }): Record { + return { + account_id: source.account_id, + peer_id: source.peer_id, + context_token: source.context_token, + message_id: source.message_id, + }; + } + _peer_key(account_id: string, peer_id: string): string { return `${account_id}:${peer_id}`; } diff --git a/backend/src/db.ts b/backend/src/db.ts index 282eab5..06057a2 100644 --- a/backend/src/db.ts +++ b/backend/src/db.ts @@ -14,7 +14,14 @@ import { nowIso, parseComparableDatetime, } from "./util.ts"; -import { HeartbeatScheduleType, type Heartbeat, type Task } from "./types.ts"; +import { + HeartbeatScheduleType, + TaskBriefStatus, + type Heartbeat, + type IMRunbook, + type Task, + type TaskBrief, +} from "./types.ts"; type Row = Record; @@ -91,6 +98,53 @@ export class TaskDB { value TEXT ) `); + this.conn.run(` + CREATE TABLE IF NOT EXISTS task_briefs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + status TEXT NOT NULL DEFAULT 'draft', + title TEXT NOT NULL, + goal TEXT NOT NULL, + context_summary TEXT NOT NULL DEFAULT '', + acceptance_criteria TEXT NOT NULL DEFAULT '[]', + working_dir TEXT, + working_dir_confidence TEXT NOT NULL DEFAULT 'unknown', + agent TEXT, + risk_level TEXT NOT NULL DEFAULT 'normal', + needs_confirmation INTEGER NOT NULL DEFAULT 1, + source_channel TEXT NOT NULL, + source_ref TEXT NOT NULL, + source_metadata TEXT NOT NULL DEFAULT '{}', + created_task_id INTEGER, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + expires_at TEXT + ) + `); + this.conn.run(` + CREATE INDEX IF NOT EXISTS idx_task_briefs_status + ON task_briefs(status, updated_at DESC) + `); + this.conn.run(` + CREATE TABLE IF NOT EXISTS im_runbooks ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL UNIQUE, + aliases TEXT NOT NULL DEFAULT '[]', + description TEXT NOT NULL DEFAULT '', + source_type TEXT NOT NULL DEFAULT 'template', + source_id TEXT, + command_schema TEXT NOT NULL DEFAULT '{}', + prompt_template TEXT NOT NULL DEFAULT '', + default_agent TEXT, + confirmation_policy TEXT NOT NULL DEFAULT 'required', + enabled INTEGER NOT NULL DEFAULT 1, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL + ) + `); + this.conn.run(` + CREATE INDEX IF NOT EXISTS idx_im_runbooks_enabled + ON im_runbooks(enabled, updated_at DESC) + `); this.conn.run(` CREATE TABLE IF NOT EXISTS task_runs ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -327,6 +381,29 @@ export class TaskDB { this._migrate(`ALTER TABLE skill_drafts ADD COLUMN ${col} ${decl}`); } + this.conn.run(` + CREATE TABLE IF NOT EXISTS im_skill_suggestions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + pattern_id INTEGER NOT NULL, + channel TEXT NOT NULL, + target TEXT NOT NULL DEFAULT '', + status TEXT NOT NULL DEFAULT 'suggested', + suggested_at TEXT, + draft_shown_at TEXT, + dismissed_at TEXT, + approved_at TEXT, + metadata TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + UNIQUE(pattern_id, channel, target), + FOREIGN KEY (pattern_id) REFERENCES skill_patterns(id) + ) + `); + this.conn.run(` + CREATE INDEX IF NOT EXISTS idx_im_skill_suggestions_status + ON im_skill_suggestions(status, updated_at DESC) + `); + this._migrate("ALTER TABLE tasks ADD COLUMN dag_id TEXT"); // Migration: add feishu_root_msg_id column for post-restart resume this._migrate("ALTER TABLE tasks ADD COLUMN feishu_root_msg_id TEXT"); @@ -441,6 +518,303 @@ export class TaskDB { .run(key, value); } + private _serialize_task_brief_value(key: string, value: unknown): unknown { + if (key === "acceptance_criteria") { + return JSON.stringify(Array.isArray(value) ? value.map(String) : []); + } + if (key === "source_metadata") { + return JSON.stringify( + typeof value === "object" && value !== null && !Array.isArray(value) + ? value + : {}, + ); + } + if (key === "needs_confirmation") { + return value ? 1 : 0; + } + return value; + } + + private _deserialize_task_brief(row: Row): Row { + const d: Row = { ...row }; + try { + const parsed = JSON.parse(String(d["acceptance_criteria"] ?? "[]")); + d["acceptance_criteria"] = Array.isArray(parsed) ? parsed : []; + } catch { + d["acceptance_criteria"] = []; + } + try { + const parsed = JSON.parse(String(d["source_metadata"] ?? "{}")); + d["source_metadata"] = + typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) + ? parsed + : {}; + } catch { + d["source_metadata"] = {}; + } + d["needs_confirmation"] = Boolean(d["needs_confirmation"]); + return d; + } + + add_task_brief(brief: TaskBrief): number { + const now = nowIso(); + const cur = this.conn + .query( + ` + INSERT INTO task_briefs ( + status, title, goal, context_summary, acceptance_criteria, + working_dir, working_dir_confidence, agent, risk_level, + needs_confirmation, source_channel, source_ref, source_metadata, + created_task_id, created_at, updated_at, expires_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `, + ) + .run( + brief.status, + brief.title, + brief.goal, + brief.context_summary, + JSON.stringify(brief.acceptance_criteria.map(String)), + brief.working_dir, + brief.working_dir_confidence, + brief.agent, + brief.risk_level, + brief.needs_confirmation ? 1 : 0, + brief.source_channel, + brief.source_ref, + JSON.stringify(brief.source_metadata), + brief.created_task_id, + now, + now, + brief.expires_at, + ); + return Number(cur.lastInsertRowid); + } + + get_task_brief(brief_id: number): Row | null { + const row = this.conn + .query("SELECT * FROM task_briefs WHERE id = ?") + .get(brief_id) as Row | null; + return row ? this._deserialize_task_brief(row) : null; + } + + get_task_briefs(status: string | null = null): Row[] { + const rows = + status === null + ? (this.conn + .query( + "SELECT * FROM task_briefs ORDER BY updated_at DESC, id DESC", + ) + .all() as Row[]) + : (this.conn + .query( + "SELECT * FROM task_briefs WHERE status = ? ORDER BY updated_at DESC, id DESC", + ) + .all(status) as Row[]); + return rows.map((r) => this._deserialize_task_brief(r)); + } + + static readonly ALLOWED_TASK_BRIEF_COLUMNS: ReadonlySet = new Set([ + "status", + "title", + "goal", + "context_summary", + "acceptance_criteria", + "working_dir", + "working_dir_confidence", + "agent", + "risk_level", + "needs_confirmation", + "source_channel", + "source_ref", + "source_metadata", + "created_task_id", + "expires_at", + ]); + + update_task_brief(brief_id: number, kwargs: Record): void { + const invalid = Object.keys(kwargs).filter( + (k) => !TaskDB.ALLOWED_TASK_BRIEF_COLUMNS.has(k), + ); + if (invalid.length) { + throw new Error( + `Invalid task brief column(s): ${JSON.stringify(invalid)}`, + ); + } + const updates: Record = { + ...kwargs, + updated_at: nowIso(), + }; + const sets = Object.keys(updates) + .map((k) => `${k} = ?`) + .join(", "); + const vals = [ + ...Object.entries(updates).map(([k, v]) => + this._serialize_task_brief_value(k, v), + ), + brief_id, + ]; + this.conn + .query(`UPDATE task_briefs SET ${sets} WHERE id = ?`) + .run(...(vals as any[])); + } + + discard_task_brief(brief_id: number): void { + this.update_task_brief(brief_id, { status: TaskBriefStatus.DISCARDED }); + } + + confirm_task_brief(brief_id: number, task_id: number): void { + this.update_task_brief(brief_id, { + status: TaskBriefStatus.CONVERTED, + created_task_id: task_id, + }); + } + + private _serialize_im_runbook_value(key: string, value: unknown): unknown { + if (key === "aliases") { + return JSON.stringify(Array.isArray(value) ? value.map(String) : []); + } + if (key === "command_schema") { + return JSON.stringify( + typeof value === "object" && value !== null && !Array.isArray(value) + ? value + : {}, + ); + } + if (key === "enabled") { + return value ? 1 : 0; + } + return value; + } + + private _deserialize_im_runbook(row: Row): Row { + const d: Row = { ...row }; + try { + const parsed = JSON.parse(String(d["aliases"] ?? "[]")); + d["aliases"] = Array.isArray(parsed) ? parsed.map(String) : []; + } catch { + d["aliases"] = []; + } + try { + const parsed = JSON.parse(String(d["command_schema"] ?? "{}")); + d["command_schema"] = + typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) + ? parsed + : {}; + } catch { + d["command_schema"] = {}; + } + d["enabled"] = Boolean(d["enabled"]); + return d; + } + + add_im_runbook(runbook: IMRunbook): number { + const now = nowIso(); + const cur = this.conn + .query( + ` + INSERT INTO im_runbooks ( + name, aliases, description, source_type, source_id, + command_schema, prompt_template, default_agent, + confirmation_policy, enabled, created_at, updated_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `, + ) + .run( + runbook.name, + JSON.stringify(runbook.aliases.map(String)), + runbook.description, + runbook.source_type, + runbook.source_id, + JSON.stringify(runbook.command_schema), + runbook.prompt_template, + runbook.default_agent, + runbook.confirmation_policy, + runbook.enabled ? 1 : 0, + now, + now, + ); + return Number(cur.lastInsertRowid); + } + + get_im_runbook(runbook_id: number): Row | null { + const row = this.conn + .query("SELECT * FROM im_runbooks WHERE id = ?") + .get(runbook_id) as Row | null; + return row ? this._deserialize_im_runbook(row) : null; + } + + get_im_runbook_by_name(nameOrAlias: string): Row | null { + const normalized = nameOrAlias.toLowerCase(); + for (const runbook of this.get_im_runbooks()) { + const name = String(runbook["name"] ?? "").toLowerCase(); + const aliases = Array.isArray(runbook["aliases"]) + ? runbook["aliases"].map((alias) => String(alias).toLowerCase()) + : []; + if (name === normalized || aliases.includes(normalized)) { + return runbook; + } + } + return null; + } + + get_im_runbooks(enabled_only: boolean = false): Row[] { + const rows = enabled_only + ? (this.conn + .query( + "SELECT * FROM im_runbooks WHERE enabled = 1 ORDER BY updated_at DESC, id DESC", + ) + .all() as Row[]) + : (this.conn + .query("SELECT * FROM im_runbooks ORDER BY updated_at DESC, id DESC") + .all() as Row[]); + return rows.map((row) => this._deserialize_im_runbook(row)); + } + + static readonly ALLOWED_IM_RUNBOOK_COLUMNS: ReadonlySet = new Set([ + "name", + "aliases", + "description", + "source_type", + "source_id", + "command_schema", + "prompt_template", + "default_agent", + "confirmation_policy", + "enabled", + ]); + + update_im_runbook(runbook_id: number, kwargs: Record): void { + const invalid = Object.keys(kwargs).filter( + (k) => !TaskDB.ALLOWED_IM_RUNBOOK_COLUMNS.has(k), + ); + if (invalid.length) { + throw new Error( + `Invalid IM runbook column(s): ${JSON.stringify(invalid)}`, + ); + } + const updates: Record = { + ...kwargs, + updated_at: nowIso(), + }; + const sets = Object.keys(updates) + .map((k) => `${k} = ?`) + .join(", "); + const vals = [ + ...Object.entries(updates).map(([k, v]) => + this._serialize_im_runbook_value(k, v), + ), + runbook_id, + ]; + this.conn + .query(`UPDATE im_runbooks SET ${sets} WHERE id = ?`) + .run(...(vals as any[])); + } + + delete_im_runbook(runbook_id: number): void { + this.conn.query("DELETE FROM im_runbooks WHERE id = ?").run(runbook_id); + } + private _deserialize_heartbeat(row: Row): Row { const d: Row = { ...row }; d["enabled"] = Boolean(d["enabled"]); @@ -1303,6 +1677,167 @@ export class TaskDB { .run(pattern_id); } + // โ”€โ”€ IM Skill Suggestions โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + + private _normalize_im_skill_suggestion_target( + target: string | null | undefined, + ): string { + return String(target ?? "").trim(); + } + + private _deserialize_im_skill_suggestion(row: Row): Row { + const d: Row = { ...row }; + try { + const parsed = JSON.parse(String(d["metadata"] ?? "{}")); + d["metadata"] = + typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) + ? parsed + : {}; + } catch { + d["metadata"] = {}; + } + return d; + } + + upsert_im_skill_suggestion(input: { + pattern_id: number; + channel: string; + target?: string | null; + status?: string; + metadata?: Record; + }): void { + const pattern_id = Number(input.pattern_id); + const channel = String(input.channel ?? "").trim(); + if (!Number.isInteger(pattern_id) || pattern_id <= 0) { + throw new Error("pattern_id is required"); + } + if (!channel) { + throw new Error("channel is required"); + } + const target = this._normalize_im_skill_suggestion_target(input.target); + const status = String(input.status ?? "suggested").trim() || "suggested"; + const now = nowIso(); + this.conn + .query( + ` + INSERT INTO im_skill_suggestions ( + pattern_id, channel, target, status, suggested_at, + metadata, created_at, updated_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT(pattern_id, channel, target) DO UPDATE SET + status = excluded.status, + suggested_at = COALESCE(im_skill_suggestions.suggested_at, excluded.suggested_at), + metadata = excluded.metadata, + updated_at = excluded.updated_at + `, + ) + .run( + pattern_id, + channel, + target, + status, + now, + JSON.stringify(input.metadata ?? {}), + now, + now, + ); + } + + get_im_skill_suggestion( + pattern_id: number, + channel: string, + target: string | null = null, + ): Row | null { + const row = this.conn + .query( + ` + SELECT * FROM im_skill_suggestions + WHERE pattern_id = ? AND channel = ? AND target = ? + `, + ) + .get( + pattern_id, + String(channel ?? "").trim(), + this._normalize_im_skill_suggestion_target(target), + ) as Row | null; + return row ? this._deserialize_im_skill_suggestion(row) : null; + } + + should_send_im_skill_suggestion( + pattern_id: number, + channel: string, + target: string | null = null, + ): boolean { + return this.get_im_skill_suggestion(pattern_id, channel, target) === null; + } + + mark_im_skill_suggestion_draft_shown( + pattern_id: number, + channel: string, + target: string | null = null, + ): void { + const existing = this.get_im_skill_suggestion(pattern_id, channel, target); + if (!existing) { + this.upsert_im_skill_suggestion({ + pattern_id, + channel, + target, + status: "suggested", + }); + } + this.conn + .query( + ` + UPDATE im_skill_suggestions + SET draft_shown_at = ?, updated_at = ? + WHERE pattern_id = ? AND channel = ? AND target = ? + `, + ) + .run( + nowIso(), + nowIso(), + pattern_id, + String(channel ?? "").trim(), + this._normalize_im_skill_suggestion_target(target), + ); + } + + mark_im_skill_suggestion_status( + pattern_id: number, + channel: string, + target: string | null, + status: "dismissed" | "approved", + ): void { + const existing = this.get_im_skill_suggestion(pattern_id, channel, target); + if (!existing) { + this.upsert_im_skill_suggestion({ + pattern_id, + channel, + target, + status: "suggested", + }); + } + const now = nowIso(); + const timestampColumn = + status === "dismissed" ? "dismissed_at" : "approved_at"; + this.conn + .query( + ` + UPDATE im_skill_suggestions + SET status = ?, ${timestampColumn} = ?, updated_at = ? + WHERE pattern_id = ? AND channel = ? AND target = ? + `, + ) + .run( + status, + now, + now, + pattern_id, + String(channel ?? "").trim(), + this._normalize_im_skill_suggestion_target(target), + ); + } + // โ”€โ”€ Skill registry โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ // `path` shadows the node:path import inside this method (unused here). add_skill( diff --git a/backend/src/digests.ts b/backend/src/digests.ts new file mode 100644 index 0000000..31b1f7b --- /dev/null +++ b/backend/src/digests.ts @@ -0,0 +1,205 @@ +import type { TaskDB } from "./db.ts"; + +type Row = Record; + +export interface IMDigestSection { + key: string; + title: string; + items: string[]; +} + +export interface IMDigest { + generated_at: string; + since: string | null; + has_content: boolean; + sections: IMDigestSection[]; + suggested_commands: string[]; +} + +export interface IMDigestRecipient { + channel: string; + target: string; +} + +export interface ComposeIMDigestOptions { + since?: string | null; + limit?: number; + include_empty?: boolean; +} + +function nowIso(): string { + return new Date().toISOString(); +} + +function rowText(value: unknown): string { + if (value === null || value === undefined) return ""; + return String(value).trim(); +} + +function taskLine(task: Row, detailKey: string | null = null): string { + const id = Number(task["id"]); + const title = rowText(task["title"]) || "Untitled task"; + const detail = detailKey ? rowText(task[detailKey]) : ""; + const prefix = Number.isInteger(id) && id > 0 ? `#${id} ` : ""; + return detail ? `${prefix}${title}: ${detail}` : `${prefix}${title}`; +} + +function parsePayloadSummary(value: unknown): string { + if (!value) return ""; + if (typeof value === "object" && !Array.isArray(value)) { + return rowText((value as Row)["summary"] ?? (value as Row)["message"]); + } + if (typeof value !== "string") return rowText(value); + try { + const parsed = JSON.parse(value); + if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) { + return rowText((parsed as Row)["summary"] ?? (parsed as Row)["message"]); + } + } catch { + return value.trim(); + } + return ""; +} + +function addSection( + sections: IMDigestSection[], + key: string, + title: string, + items: string[], +): void { + const clean = items.map((item) => item.trim()).filter(Boolean); + if (clean.length) sections.push({ key, title, items: clean }); +} + +function limited(items: T[], limit: number): T[] { + return items.slice(0, Math.max(0, limit)); +} + +export function compose_im_digest( + db: TaskDB, + options: ComposeIMDigestOptions = {}, +): IMDigest { + const limit = Math.max(1, Math.trunc(options.limit ?? 10)); + const sections: IMDigestSection[] = []; + const tasks = db.get_all_tasks(); + + addSection( + sections, + "completed", + "Completed", + limited( + tasks.filter((task) => task["status"] === "completed"), + limit, + ).map((task) => taskLine(task)), + ); + addSection( + sections, + "needs_you", + "Needs you", + limited( + tasks.filter((task) => rowText(task["question"])), + limit, + ).map((task) => taskLine(task, "question")), + ); + addSection( + sections, + "failed", + "Failed", + limited( + tasks.filter((task) => task["status"] === "failed"), + limit, + ).map((task) => taskLine(task, "error")), + ); + + const watcherItems: string[] = []; + for (const heartbeat of db.get_all_heartbeats()) { + const heartbeatId = Number(heartbeat["id"]); + if (!Number.isInteger(heartbeatId)) continue; + for (const tick of db.get_heartbeat_ticks(heartbeatId, limit)) { + const decisionType = rowText(tick["decision_type"]); + if (!decisionType || decisionType === "idle") continue; + const summary = + parsePayloadSummary(tick["decision_payload"]) || + rowText(tick["raw_output"]) || + rowText(tick["error"]) || + decisionType; + watcherItems.push(`${heartbeat["name"]}: ${summary}`); + if (watcherItems.length >= limit) break; + } + if (watcherItems.length >= limit) break; + } + addSection(sections, "watchers", "Watchers", watcherItems); + + addSection( + sections, + "skills", + "Skill candidates", + limited( + db + .get_skill_patterns() + .filter((pattern) => + ["candidate", "drafted"].includes(rowText(pattern["status"])), + ), + limit, + ).map((pattern) => rowText(pattern["summary"] || pattern["pattern_key"])), + ); + + const suggested = new Set(); + if (sections.some((section) => section.key === "failed")) { + suggested.add("/fix-ci "); + } + if (sections.some((section) => section.key === "skills")) { + suggested.add("/scan-skills"); + } + + return { + generated_at: nowIso(), + since: options.since ?? null, + has_content: sections.length > 0 || Boolean(options.include_empty), + sections, + suggested_commands: [...suggested], + }; +} + +export function render_im_digest_text(digest: IMDigest): string { + if (!digest.sections.length) { + return "AgentForge Standup\n\nNo notable AgentForge activity."; + } + const lines = ["AgentForge Standup"]; + for (const section of digest.sections) { + lines.push("", `${section.title}:`); + section.items.forEach((item, index) => { + lines.push(`${index + 1}. ${item}`); + }); + } + if (digest.suggested_commands.length) { + lines.push("", "Suggested next:"); + for (const command of digest.suggested_commands) { + lines.push(command); + } + } + return lines.join("\n"); +} + +export function parse_im_digest_recipients( + value: unknown, +): IMDigestRecipient[] { + let raw: unknown = value; + if (typeof value === "string") { + try { + raw = JSON.parse(value); + } catch { + return []; + } + } + if (!Array.isArray(raw)) return []; + const recipients: IMDigestRecipient[] = []; + for (const item of raw) { + if (!item || typeof item !== "object" || Array.isArray(item)) continue; + const channel = rowText((item as Row)["channel"]).toLowerCase(); + const target = rowText((item as Row)["target"]); + if (!channel || !target) continue; + recipients.push({ channel, target }); + } + return recipients; +} diff --git a/backend/src/runbooks.ts b/backend/src/runbooks.ts new file mode 100644 index 0000000..9cffe1c --- /dev/null +++ b/backend/src/runbooks.ts @@ -0,0 +1,398 @@ +import { + RunbookConfirmationPolicy, + RunbookSourceType, + ScheduleType, + makeTask, + makeTaskBrief, + type RunbookConfirmationPolicy as RunbookConfirmationPolicyValue, + type RunbookSourceType as RunbookSourceTypeValue, + type Task, + type TaskBrief, +} from "./types.ts"; + +export { RunbookConfirmationPolicy, RunbookSourceType } from "./types.ts"; + +export interface RunbookDefinition { + name: string; + aliases: string[]; + description: string; + source_type: RunbookSourceTypeValue; + source_id: string | null; + command_schema: Record; + prompt_template: string; + default_agent: string | null; + confirmation_policy: RunbookConfirmationPolicyValue; + enabled: boolean; +} + +export interface ParsedRunbookCommand { + name: string; + args: string[]; + raw_args: string; +} + +export interface RunbookExpansion { + runbook: RunbookDefinition; + confirmation_policy: RunbookConfirmationPolicyValue; + task: Task; + brief: TaskBrief; +} + +export interface RunbookResult { + ok: boolean; + expansion?: RunbookExpansion; + error?: string; +} + +interface ExpandArgs { + name: string; + raw_args: string; + source_channel: string; + source_ref: string; + source_metadata?: Record; + working_dir?: string | null; + agent?: string | null; + runbooks?: RunbookDefinition[]; +} + +type BuiltinSpec = RunbookDefinition & { + usage: string; + title: (rawArgs: string) => string; + goal: (rawArgs: string) => string; + acceptance: (rawArgs: string) => string[]; + validate: (rawArgs: string) => string | null; +}; + +function firstArg(rawArgs: string): string { + return rawArgs.trim().split(/\s+/)[0] ?? ""; +} + +function requireArg(usage: string): (rawArgs: string) => string | null { + return (rawArgs) => (firstArg(rawArgs) ? null : `Usage: ${usage}`); +} + +function noValidation(_rawArgs: string): string | null { + return null; +} + +function titleizeName(name: string): string { + return name + .split("-") + .filter(Boolean) + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(" "); +} + +function renderTemplate(template: string, rawArgs: string): string { + const args = rawArgs.trim() ? rawArgs.trim().split(/\s+/) : []; + return template.replace(/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/g, (_match, key) => { + if (key === "raw_args" || key === "args") return rawArgs.trim(); + const argMatch = /^arg(\d+)$/.exec(String(key)); + if (argMatch) { + const index = Number.parseInt(argMatch[1]!, 10) - 1; + return args[index] ?? ""; + } + return ""; + }); +} + +function isBuiltinSpec(runbook: RunbookDefinition): runbook is BuiltinSpec { + return ( + "usage" in runbook && + "validate" in runbook && + "title" in runbook && + "goal" in runbook && + "acceptance" in runbook + ); +} + +function validateGeneric( + runbook: RunbookDefinition, + rawArgs: string, +): string | null { + const schemaArgs = runbook.command_schema["args"]; + if ( + Array.isArray(schemaArgs) && + schemaArgs.length > 0 && + !firstArg(rawArgs) + ) { + return `Usage: /${runbook.name} ${schemaArgs.map((arg) => `<${String(arg)}>`).join(" ")}`; + } + return null; +} + +function genericTitle(runbook: RunbookDefinition): string { + return `[Command] ${runbook.description || titleizeName(runbook.name)}`; +} + +function genericGoal(runbook: RunbookDefinition, rawArgs: string): string { + const rendered = renderTemplate(runbook.prompt_template, rawArgs).trim(); + return rendered || `Run /${runbook.name} ${rawArgs}`.trim(); +} + +function genericAcceptance(): string[] { + return [ + "Complete the runbook goal.", + "Report what changed and how it was verified.", + ]; +} + +export const BUILTIN_RUNBOOKS: BuiltinSpec[] = [ + { + name: "review-pr", + aliases: [], + description: + "Review a pull request and summarize risks, bugs, and missing tests.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.AUTO, + enabled: true, + usage: "/review-pr ", + validate: requireArg("/review-pr "), + title: () => "[Runbook] Review PR", + goal: (rawArgs) => `Review this pull request:\n${firstArg(rawArgs)}`, + acceptance: () => [ + "Identify correctness, reliability, security, and test coverage risks.", + "Call out specific files or changes when possible.", + "Summarize whether the PR is safe to merge and what should change first.", + ], + }, + { + name: "fix-ci", + aliases: [], + description: + "Inspect a failing CI run and propose or apply the minimal fix.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/fix-ci ", + validate: requireArg("/fix-ci "), + title: () => "Fix failing CI run", + goal: (rawArgs) => + `Investigate this failing CI run and fix the minimal issue:\n${firstArg(rawArgs)}`, + acceptance: () => [ + "Identify the failing job and likely cause.", + "Patch the minimal relevant code or configuration.", + "Run the focused tests or explain why they cannot run.", + ], + }, + { + name: "summarize-thread", + aliases: [], + description: "Summarize the current IM thread into a task brief or notes.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: [] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/summarize-thread", + validate: noValidation, + title: () => "Summarize IM thread", + goal: () => + "Summarize the current IM thread into a clear task brief or notes.", + acceptance: () => [ + "Extract the concrete asks, decisions, and open questions.", + "Separate facts from assumptions.", + "Produce a concise summary suitable for creating a task.", + ], + }, + { + name: "write-tests", + aliases: [], + description: "Add or improve tests for a file or module.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: ["path"] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.AUTO, + enabled: true, + usage: "/write-tests ", + validate: requireArg("/write-tests "), + title: (rawArgs) => `[Runbook] Write tests for ${firstArg(rawArgs)}`, + goal: (rawArgs) => `Add or improve tests for ${firstArg(rawArgs)}.`, + acceptance: () => [ + "Identify the behavior that needs coverage.", + "Add focused tests using the repo's existing test style.", + "Run the relevant test command or explain why it cannot run.", + ], + }, + { + name: "release-check", + aliases: [], + description: "Run a release readiness checklist for the active repo.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: [] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/release-check", + validate: noValidation, + title: () => "Release readiness check", + goal: () => "Run a release readiness checklist for the active repository.", + acceptance: () => [ + "Inspect the current repository state and recent changes.", + "Run or identify the relevant release checks.", + "Report blockers, risks, and the recommended release decision.", + ], + }, + { + name: "scan-skills", + aliases: [], + description: "Trigger a manual Skill Library scan.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: [] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/scan-skills", + validate: noValidation, + title: () => "Scan for reusable skills", + goal: () => "Run a manual Skill Library scan for recurring task patterns.", + acceptance: () => [ + "Scan recent completed runs for recurring workflows.", + "Summarize any candidate skills or report that none were found.", + "Do not install any skill without explicit approval.", + ], + }, +]; + +export function find_runbook( + nameOrAlias: string, + runbooks: RunbookDefinition[] = [], +): RunbookDefinition | null { + const normalized = nameOrAlias.toLowerCase(); + return ( + runbooks.find( + (runbook) => + runbook.name.toLowerCase() === normalized || + runbook.aliases.some((alias) => alias.toLowerCase() === normalized), + ) ?? null + ); +} + +export function parse_runbook_command( + text: string, + runbooks: RunbookDefinition[] = [], +): ParsedRunbookCommand | null { + const trimmed = text.trim(); + const match = /^\/(\S+)(?:\s+([\s\S]*))?$/u.exec(trimmed); + if (!match) return null; + const commandName = (match[1] ?? "").split("@")[0] ?? ""; + const known = find_runbook(commandName, runbooks); + if (!known) return null; + const raw_args = (match[2] ?? "").trim(); + return { + name: known.name, + raw_args, + args: raw_args ? raw_args.split(/\s+/) : [], + }; +} + +export function expand_runbook(args: ExpandArgs): RunbookResult { + const runbook = find_runbook(args.name, args.runbooks ?? []); + if (!runbook) return { ok: false, error: `Unknown command: ${args.name}` }; + + const validationError = isBuiltinSpec(runbook) + ? runbook.validate(args.raw_args) + : validateGeneric(runbook, args.raw_args); + if (validationError) return { ok: false, error: validationError }; + + const agent = args.agent ?? runbook.default_agent ?? null; + const title = isBuiltinSpec(runbook) + ? runbook.title(args.raw_args) + : genericTitle(runbook); + const goal = isBuiltinSpec(runbook) + ? runbook.goal(args.raw_args) + : genericGoal(runbook, args.raw_args); + const acceptance = isBuiltinSpec(runbook) + ? runbook.acceptance(args.raw_args) + : genericAcceptance(); + const prompt = [ + `Custom command: /${runbook.name}`, + "", + "Goal:", + goal, + "", + "Acceptance criteria:", + ...acceptance.map((criterion, index) => `${index + 1}. ${criterion}`), + ].join("\n"); + const task = makeTask({ + title, + prompt, + working_dir: args.working_dir ?? ".", + schedule_type: ScheduleType.IMMEDIATE, + tags: `command,${runbook.name},${args.source_channel}`, + ...(agent ? { agent } : {}), + }); + const brief = makeTaskBrief({ + title: title.replace(/^\[(?:Runbook|Command)\]\s*/, ""), + goal, + context_summary: `Created from /${runbook.name} ${args.raw_args}`.trim(), + acceptance_criteria: acceptance, + working_dir: args.working_dir ?? null, + working_dir_confidence: args.working_dir ? "high" : "unknown", + agent, + risk_level: + runbook.confirmation_policy === RunbookConfirmationPolicy.REQUIRED + ? "elevated" + : "normal", + needs_confirmation: + runbook.confirmation_policy === RunbookConfirmationPolicy.REQUIRED, + source_channel: args.source_channel, + source_ref: args.source_ref, + source_metadata: args.source_metadata ?? {}, + }); + + return { + ok: true, + expansion: { + runbook, + confirmation_policy: runbook.confirmation_policy, + task, + brief, + }, + }; +} + +export function runbook_from_row(row: Record): RunbookDefinition { + return { + name: String(row["name"] ?? ""), + aliases: Array.isArray(row["aliases"]) ? row["aliases"].map(String) : [], + description: String(row["description"] ?? ""), + source_type: row["source_type"] ?? RunbookSourceType.TEMPLATE, + source_id: + row["source_id"] === null || row["source_id"] === undefined + ? null + : String(row["source_id"]), + command_schema: + row["command_schema"] && + typeof row["command_schema"] === "object" && + !Array.isArray(row["command_schema"]) + ? row["command_schema"] + : {}, + prompt_template: String(row["prompt_template"] ?? ""), + default_agent: + row["default_agent"] === null || row["default_agent"] === undefined + ? null + : String(row["default_agent"]), + confirmation_policy: + row["confirmation_policy"] === RunbookConfirmationPolicy.AUTO + ? RunbookConfirmationPolicy.AUTO + : RunbookConfirmationPolicy.REQUIRED, + enabled: Boolean(row["enabled"] ?? true), + }; +} diff --git a/backend/src/scheduler.ts b/backend/src/scheduler.ts index 7e9e923..365957c 100644 --- a/backend/src/scheduler.ts +++ b/backend/src/scheduler.ts @@ -12,8 +12,10 @@ import path from "node:path"; import { CronExpressionParser } from "cron-parser"; import { BusAwareSchedulerMixin, + InboundMessageType, OutboundMessageType, type MessageBus, + type InboundMessage, } from "./bus.ts"; import type { TaskDB } from "./db.ts"; import { @@ -28,6 +30,17 @@ import { type PopenLike, } from "./executor.ts"; import { logger } from "./log.ts"; +import { compose_im_digest, render_im_digest_text } from "./digests.ts"; +import { + collect_im_skill_suggestions, + render_im_skill_suggestion_text, +} from "./skill_suggestions.ts"; +import { + RunbookConfirmationPolicy, + expand_runbook, + runbook_from_row, + type RunbookExpansion, +} from "./runbooks.ts"; import { _skill_creator_dir, _sanitize_skill_name, @@ -50,7 +63,9 @@ import { LIVE_OUTPUT_EVENT_TYPES, ScheduleType, SECRET_KEY_FRAGMENTS, + TaskBriefStatus, TaskStatus, + makeTaskBrief, makeHeartbeat, type Task, } from "./types.ts"; @@ -128,6 +143,35 @@ const _int = (v: unknown): number | null => { return Number.isNaN(n) ? null : n; }; +function _string_list(value: unknown): string[] { + if (!Array.isArray(value)) return []; + return value.map((item) => String(item).trim()).filter(Boolean); +} + +function _plain_object(value: unknown): Row { + return value && typeof value === "object" && !Array.isArray(value) + ? (value as Row) + : {}; +} + +function _task_brief_prompt(brief: Row): string { + const lines = ["Goal:", String(brief["goal"]).trim()]; + const context = String(brief["context_summary"] ?? "").trim(); + if (context) { + lines.push("", "Context:", context); + } + const criteria = Array.isArray(brief["acceptance_criteria"]) + ? brief["acceptance_criteria"].map(String).filter(Boolean) + : []; + if (criteria.length) { + lines.push("", "Acceptance criteria:"); + criteria.forEach((criterion, index) => { + lines.push(`${index + 1}. ${criterion}`); + }); + } + return lines.join("\n"); +} + // โ”€โ”€ injectable os seam (โ‰™ monkeypatching taskboard.os.getpgid/killpg) โ”€โ”€โ”€โ”€โ”€โ”€โ”€ export interface OsOps { @@ -229,6 +273,335 @@ export class TaskScheduler extends BusAwareSchedulerMixin { this.bus = bus; // MessageBus integration (optional) } + handle_inbound_message(msg: InboundMessage): Row { + if (msg.type === InboundMessageType.CREATE_BRIEF) { + return this._handle_create_brief(msg); + } + if (msg.type === InboundMessageType.CONFIRM_BRIEF) { + return this._handle_confirm_brief(msg); + } + if (msg.type === InboundMessageType.DISCARD_BRIEF) { + return this._handle_discard_brief(msg); + } + if (msg.type === InboundMessageType.PREVIEW_RUNBOOK) { + return this._handle_preview_runbook(msg); + } + if (msg.type === InboundMessageType.RUN_RUNBOOK) { + return this._handle_run_runbook(msg); + } + if (msg.type === InboundMessageType.TRIGGER_DIGEST) { + return this._handle_trigger_digest(msg); + } + if (msg.type === InboundMessageType.SKILL_SUGGESTION_ACTION) { + return this._handle_skill_suggestion_action(msg); + } + return { status: "ignored" }; + } + + _handle_create_brief(msg: InboundMessage): Row { + const payload = msg.payload; + const title = String(payload["title"] ?? "").trim(); + const goal = String(payload["goal"] ?? "").trim(); + const source_channel = String( + payload["source_channel"] ?? msg.source ?? "", + ).trim(); + const source_ref = String( + payload["source_ref"] ?? + msg.metadata["source_ref"] ?? + msg.metadata["message_id"] ?? + msg.reply_to ?? + "", + ).trim(); + if (!title || !goal || !source_channel || !source_ref) { + throw new Error( + "title, goal, source_channel, and source_ref are required", + ); + } + const id = this.db.add_task_brief( + makeTaskBrief({ + title, + goal, + context_summary: String(payload["context_summary"] ?? ""), + acceptance_criteria: _string_list(payload["acceptance_criteria"]), + working_dir: + payload["working_dir"] === null || + payload["working_dir"] === undefined + ? null + : String(payload["working_dir"]), + working_dir_confidence: String( + payload["working_dir_confidence"] ?? "unknown", + ), + agent: + payload["agent"] === null || payload["agent"] === undefined + ? null + : String(payload["agent"]), + risk_level: String(payload["risk_level"] ?? "normal"), + needs_confirmation: + payload["needs_confirmation"] === undefined + ? true + : Boolean(payload["needs_confirmation"]), + source_channel, + source_ref, + source_metadata: _plain_object(payload["source_metadata"]), + expires_at: + payload["expires_at"] === null || payload["expires_at"] === undefined + ? null + : String(payload["expires_at"]), + }), + ); + return { brief_id: id, status: TaskBriefStatus.DRAFT }; + } + + _handle_confirm_brief(msg: InboundMessage): Row { + const brief_id = _int(msg.payload["brief_id"]); + if (brief_id === null) { + throw new Error("brief_id is required"); + } + const brief = this.db.get_task_brief(brief_id); + if (!brief) { + throw new Error("draft task not found"); + } + if (brief["status"] !== TaskBriefStatus.DRAFT) { + throw new Error( + `Cannot confirm draft task with status '${brief["status"]}'.`, + ); + } + const source_channel = String(brief["source_channel"] ?? "").trim(); + const task = { + title: String(brief["title"] ?? "Untitled"), + prompt: _task_brief_prompt(brief), + working_dir: String(brief["working_dir"] || "."), + schedule_type: ScheduleType.IMMEDIATE, + tags: ["im-inbox", source_channel].filter(Boolean).join(","), + agent: String( + brief["agent"] || + this.db.get_setting("default_agent", DEFAULT_AGENT) || + DEFAULT_AGENT, + ), + }; + const task_id = this.submit_task(makeTaskFromPartial(task)); + this.db.confirm_task_brief(brief_id, task_id); + return { task_id, status: "created" }; + } + + _handle_discard_brief(msg: InboundMessage): Row { + const brief_id = _int(msg.payload["brief_id"]); + if (brief_id === null) { + throw new Error("brief_id is required"); + } + const brief = this.db.get_task_brief(brief_id); + if (!brief) { + throw new Error("draft task not found"); + } + if (brief["status"] !== TaskBriefStatus.DRAFT) { + throw new Error( + `Cannot discard draft task with status '${brief["status"]}'.`, + ); + } + this.db.discard_task_brief(brief_id); + return { brief_id, status: TaskBriefStatus.DISCARDED }; + } + + private _expand_runbook_message(msg: InboundMessage): RunbookExpansion { + const payload = msg.payload; + const source_channel = String( + payload["source_channel"] ?? msg.source ?? "", + ).trim(); + const source_ref = String( + payload["source_ref"] ?? + msg.metadata["source_ref"] ?? + msg.metadata["message_id"] ?? + msg.reply_to ?? + "", + ).trim(); + const result = expand_runbook({ + name: String(payload["name"] ?? "").trim(), + raw_args: String(payload["raw_args"] ?? ""), + source_channel, + source_ref, + source_metadata: _plain_object(payload["source_metadata"]), + working_dir: + payload["working_dir"] === null || payload["working_dir"] === undefined + ? null + : String(payload["working_dir"]), + agent: + payload["agent"] === null || payload["agent"] === undefined + ? null + : String(payload["agent"]), + runbooks: this.db + .get_im_runbooks(true) + .map((row) => runbook_from_row(row)), + }); + if (!result.ok || !result.expansion) { + throw new Error(result.error ?? "invalid runbook"); + } + return result.expansion; + } + + _handle_preview_runbook(msg: InboundMessage): Row { + const expansion = this._expand_runbook_message(msg); + const id = this.db.add_task_brief({ + ...expansion.brief, + needs_confirmation: true, + }); + return { + brief_id: id, + runbook: expansion.runbook.name, + status: TaskBriefStatus.DRAFT, + }; + } + + _handle_run_runbook(msg: InboundMessage): Row { + const expansion = this._expand_runbook_message(msg); + if (expansion.confirmation_policy === RunbookConfirmationPolicy.AUTO) { + const task_id = this.submit_task(expansion.task); + return { + runbook: expansion.runbook.name, + status: "created", + task_id, + }; + } + const brief_id = this.db.add_task_brief(expansion.brief); + return { + brief_id, + runbook: expansion.runbook.name, + status: TaskBriefStatus.DRAFT, + }; + } + + _handle_trigger_digest(msg: InboundMessage): Row { + const payload = msg.payload; + const digest = compose_im_digest(this.db, { + include_empty: Boolean(payload["include_empty"] ?? false), + limit: + payload["limit"] === undefined ? undefined : Number(payload["limit"]), + since: + payload["since"] === null || payload["since"] === undefined + ? null + : String(payload["since"]), + }); + if (!digest.has_content) { + return { status: "quiet", digest }; + } + return { + status: "ready", + digest, + text: render_im_digest_text(digest), + }; + } + + private _skill_suggestion_target(msg: InboundMessage): { + channel: string; + target: string; + } { + const channel = String( + msg.payload["source_channel"] ?? msg.source ?? "", + ).trim(); + const target = String(msg.payload["target"] ?? msg.reply_to ?? "").trim(); + if (!channel) { + throw new Error("source_channel is required"); + } + return { channel, target }; + } + + private _ready_skill_draft(pattern_id: number): Row { + const draft = this.db.get_skill_draft(pattern_id); + if ( + !draft || + draft["status"] !== "ready" || + !String(draft["body"] ?? "").trim() + ) { + throw new Error("skill draft is not ready"); + } + return draft; + } + + _handle_skill_suggestion_action(msg: InboundMessage): Row { + const action = String(msg.payload["action"] ?? "") + .trim() + .toLowerCase(); + const pattern_id = _int(msg.payload["pattern_id"]); + if (pattern_id === null) { + throw new Error("pattern_id is required"); + } + const { channel, target } = this._skill_suggestion_target(msg); + + if (action === "draft") { + const started = this.trigger_skill_draft( + pattern_id, + msg.payload["agent"] === undefined || msg.payload["agent"] === null + ? null + : String(msg.payload["agent"]), + ); + if (!started) { + throw new Error("pattern not found"); + } + this.db.upsert_im_skill_suggestion({ + pattern_id, + channel, + target, + status: "suggested", + metadata: _plain_object(msg.payload["source_metadata"]), + }); + return { pattern_id, status: "drafting" }; + } + + if (action === "show") { + this._ready_skill_draft(pattern_id); + const suggestion = collect_im_skill_suggestions(this.db, { + limit: 200, + }).find((item) => item.pattern_id === pattern_id); + if (!suggestion) { + throw new Error("pattern not found"); + } + this.db.mark_im_skill_suggestion_draft_shown(pattern_id, channel, target); + return { + pattern_id, + status: "ready", + suggestion, + text: render_im_skill_suggestion_text(suggestion), + }; + } + + if (action === "approve") { + const state = this.db.get_im_skill_suggestion( + pattern_id, + channel, + target, + ); + if (!state?.["draft_shown_at"]) { + throw new Error("draft must be shown before approval"); + } + const draft = this._ready_skill_draft(pattern_id); + const skill = this.approve_skill( + pattern_id, + String(draft["name"] ?? ""), + String(draft["description"] ?? ""), + String(draft["body"] ?? ""), + ); + this.db.mark_im_skill_suggestion_status( + pattern_id, + channel, + target, + "approved", + ); + return { pattern_id, skill, status: "approved" }; + } + + if (action === "dismiss") { + this.dismiss_skill_pattern(pattern_id); + this.db.mark_im_skill_suggestion_status( + pattern_id, + channel, + target, + "dismissed", + ); + return { pattern_id, status: "dismissed" }; + } + + throw new Error("unsupported skill suggestion action"); + } + start(): void { this._running = true; this._loop_promise = this._loop(); diff --git a/backend/src/skill_suggestions.ts b/backend/src/skill_suggestions.ts new file mode 100644 index 0000000..bfdcf97 --- /dev/null +++ b/backend/src/skill_suggestions.ts @@ -0,0 +1,177 @@ +type Row = Record; + +export interface IMSkillSuggestionSourceTask { + id: number; + title: string; +} + +export interface IMSkillSuggestion { + pattern_id: number; + pattern_key: string; + summary: string; + recurrence_count: number; + status: string; + draft_status: string | null; + draft_name: string | null; + draft_description: string | null; + draft_body: string | null; + source_tasks: IMSkillSuggestionSourceTask[]; +} + +export interface CollectIMSkillSuggestionsOptions { + channel?: string | null; + limit?: number; +} + +function parseJsonList(value: unknown): unknown[] { + if (Array.isArray(value)) return value; + if (typeof value !== "string") return []; + try { + const parsed = JSON.parse(value); + return Array.isArray(parsed) ? parsed : []; + } catch { + return []; + } +} + +function tagsIncludeChannel(tags: unknown, channel: string): boolean { + return String(tags ?? "") + .split(",") + .map((tag) => tag.trim().toLowerCase()) + .includes(channel.toLowerCase()); +} + +function sourceTasksForPattern( + db: { + get_task?: (task_id: number) => Row | null | undefined; + }, + pattern: Row, + channel: string | null, +): IMSkillSuggestionSourceTask[] { + const seen = new Set(); + const tasks: IMSkillSuggestionSourceTask[] = []; + for (const rawTaskId of parseJsonList(pattern["contributing_task_ids"])) { + const taskId = Number(rawTaskId); + if (!Number.isInteger(taskId) || taskId <= 0 || seen.has(taskId)) { + continue; + } + const task = db.get_task?.(taskId); + if (!task) { + continue; + } + if (channel && !tagsIncludeChannel(task["tags"], channel)) { + continue; + } + seen.add(taskId); + tasks.push({ + id: taskId, + title: String(task["title"] || "Untitled"), + }); + } + return tasks; +} + +function isSuggestiblePattern(pattern: Row): boolean { + const status = String(pattern["status"] ?? ""); + const draftStatus = String(pattern["draft_status"] ?? ""); + return ( + status === "candidate" || + draftStatus === "drafting" || + draftStatus === "ready" || + draftStatus === "error" + ); +} + +export function collect_im_skill_suggestions( + db: { + get_skill_patterns: (limit?: number) => Row[]; + get_task?: (task_id: number) => Row | null | undefined; + }, + options: CollectIMSkillSuggestionsOptions = {}, +): IMSkillSuggestion[] { + const channel = options.channel?.trim() || null; + const limit = options.limit ?? 10; + const suggestions: IMSkillSuggestion[] = []; + for (const pattern of db.get_skill_patterns(200)) { + if (!isSuggestiblePattern(pattern)) { + continue; + } + const sourceTasks = sourceTasksForPattern(db, pattern, channel); + if (channel && sourceTasks.length === 0) { + continue; + } + suggestions.push({ + pattern_id: Number(pattern["id"]), + pattern_key: String(pattern["pattern_key"] ?? ""), + summary: String(pattern["summary"] ?? ""), + recurrence_count: Number(pattern["recurrence_count"] ?? 0), + status: String(pattern["status"] ?? ""), + draft_status: + pattern["draft_status"] === null || + pattern["draft_status"] === undefined + ? null + : String(pattern["draft_status"]), + draft_name: + pattern["draft_name"] === null || pattern["draft_name"] === undefined + ? null + : String(pattern["draft_name"]), + draft_description: + pattern["draft_description"] === null || + pattern["draft_description"] === undefined + ? null + : String(pattern["draft_description"]), + draft_body: + pattern["draft_body"] === null || pattern["draft_body"] === undefined + ? null + : String(pattern["draft_body"]), + source_tasks: sourceTasks, + }); + if (suggestions.length >= limit) { + break; + } + } + return suggestions; +} + +export function render_im_skill_suggestion_text( + suggestion: IMSkillSuggestion, +): string { + const displayName = + suggestion.draft_name?.trim() || suggestion.pattern_key || "unnamed-skill"; + const lines = [ + `Skill suggestion: ${displayName}`, + "", + `I found this recurring workflow across ${suggestion.recurrence_count} tasks:`, + suggestion.summary || "A recurring AgentForge workflow may be reusable.", + ]; + + if (suggestion.source_tasks.length) { + lines.push("", "Source tasks:"); + suggestion.source_tasks.slice(0, 5).forEach((task, index) => { + lines.push(`${index + 1}. #${task.id} ${task.title}`); + }); + } + + if (suggestion.draft_status === "ready" && suggestion.draft_body?.trim()) { + lines.push( + "", + "Draft is ready for review.", + "", + "Draft preview:", + suggestion.draft_body.trim().slice(0, 4000), + "", + "Approving installs a SKILL.md under ~/.agentforge/skills and links it into ~/.claude/skills and ~/.agents/skills.", + ); + } + + lines.push( + "", + "Reply:", + `\`/draft-skill ${suggestion.pattern_id}\` to generate a SKILL.md draft`, + `\`/show-skill ${suggestion.pattern_id}\` to review the draft in IM`, + `\`/approve-skill ${suggestion.pattern_id}\` to install after draft review`, + `\`/dismiss-skill ${suggestion.pattern_id}\` to stop suggesting this pattern`, + ); + + return lines.join("\n"); +} diff --git a/backend/src/types.ts b/backend/src/types.ts index bb76809..9b583a9 100644 --- a/backend/src/types.ts +++ b/backend/src/types.ts @@ -62,6 +62,22 @@ export const ScheduleType = { } as const; export type ScheduleType = (typeof ScheduleType)[keyof typeof ScheduleType]; +export const RunbookConfirmationPolicy = { + AUTO: "auto", + REQUIRED: "required", +} as const; +export type RunbookConfirmationPolicy = + (typeof RunbookConfirmationPolicy)[keyof typeof RunbookConfirmationPolicy]; + +export const RunbookSourceType = { + BUILTIN: "builtin", + TEMPLATE: "template", + SKILL: "skill", + TASK: "task", +} as const; +export type RunbookSourceType = + (typeof RunbookSourceType)[keyof typeof RunbookSourceType]; + export const HeartbeatScheduleType = { CRON: "cron", INTERVAL: "interval", @@ -144,6 +160,95 @@ export function makeTask(partial: Partial = {}): Task { }; } +export const TaskBriefStatus = { + DRAFT: "draft", + CONVERTED: "converted", + DISCARDED: "discarded", + EXPIRED: "expired", +} as const; +export type TaskBriefStatus = + (typeof TaskBriefStatus)[keyof typeof TaskBriefStatus]; + +export interface TaskBrief { + id: number | null; + status: TaskBriefStatus; + title: string; + goal: string; + context_summary: string; + acceptance_criteria: string[]; + working_dir: string | null; + working_dir_confidence: string; + agent: string | null; + risk_level: string; + needs_confirmation: boolean; + source_channel: string; + source_ref: string; + source_metadata: Record; + created_task_id: number | null; + created_at: string | null; + updated_at: string | null; + expires_at: string | null; +} + +export function makeTaskBrief(partial: Partial = {}): TaskBrief { + return { + id: null, + status: TaskBriefStatus.DRAFT, + title: "", + goal: "", + context_summary: "", + acceptance_criteria: [], + working_dir: null, + working_dir_confidence: "unknown", + agent: null, + risk_level: "normal", + needs_confirmation: true, + source_channel: "", + source_ref: "", + source_metadata: {}, + created_task_id: null, + created_at: null, + updated_at: null, + expires_at: null, + ...partial, + }; +} + +export interface IMRunbook { + id: number | null; + name: string; + aliases: string[]; + description: string; + source_type: RunbookSourceType; + source_id: string | null; + command_schema: Record; + prompt_template: string; + default_agent: string | null; + confirmation_policy: RunbookConfirmationPolicy; + enabled: boolean; + created_at: string | null; + updated_at: string | null; +} + +export function makeIMRunbook(partial: Partial = {}): IMRunbook { + return { + id: null, + name: "", + aliases: [], + description: "", + source_type: RunbookSourceType.TEMPLATE, + source_id: null, + command_schema: {}, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + created_at: null, + updated_at: null, + ...partial, + }; +} + export interface Heartbeat { id: number | null; name: string; diff --git a/backend/tests/api-handler.test.ts b/backend/tests/api-handler.test.ts index 057a0d3..0f28223 100644 --- a/backend/tests/api-handler.test.ts +++ b/backend/tests/api-handler.test.ts @@ -8,6 +8,7 @@ import { TaskDB } from "../src/db.ts"; import { TaskScheduler } from "../src/scheduler.ts"; import { handleApiRequest, type ApiContext } from "../src/api.ts"; import { FeishuChannel } from "../src/channels/feishu.ts"; +import { makeTask } from "../src/types.ts"; describe("api handler", () => { let tmpDir: string; @@ -41,6 +42,52 @@ describe("api handler", () => { return (await res.json()) as Record; } + function createSkillCandidate(channel: string = "slack"): number { + const taskId = db.add_task( + makeTask({ + title: "Fix frontend CI", + prompt: "Investigate the failed build.", + tags: `runbook,fix-ci,${channel}`, + }), + ); + const patternId = db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 100, + )!; + db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 101, + ); + db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 102, + ); + db.set_skill_pattern_status(patternId, "candidate"); + return patternId; + } + + function createReadySkillDraft(): number { + const patternId = createSkillCandidate(); + db.upsert_skill_draft( + patternId, + "ready", + "fix-ci-investigation", + "Reusable CI investigation workflow.", + "recipe", + "---\nname: fix-ci-investigation\ndescription: Reusable CI investigation workflow.\n---\n# Fix CI\n", + ); + return patternId; + } + test("GET /api/health returns ok and task count", async () => { const res = await handleApiRequest( ctx, @@ -120,6 +167,396 @@ describe("api handler", () => { expect(output).toEqual({ output: "raw output", is_running: false }); }); + test("task brief API creates lists updates reads and discards drafts", async () => { + const createdRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/task-briefs", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + title: "Fix auth", + goal: "Fix login redirect", + context_summary: "Forwarded QA report", + acceptance_criteria: ["Identify cause", "Patch minimal code"], + working_dir: ".", + working_dir_confidence: "high", + agent: "codex", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + source_metadata: { chat_id: "chat-1" }, + }), + }), + ); + expect(createdRes.status).toBe(201); + const created = (await createdRes.json()) as Record; + const id = Number(created["id"]); + expect(created["status"]).toBe("draft"); + + const listed = await json( + new Request("http://127.0.0.1:9712/api/task-briefs"), + ); + expect(listed["briefs"]).toHaveLength(1); + expect(listed["briefs"][0]["source_metadata"]).toEqual({ + chat_id: "chat-1", + }); + + const loaded = await json( + new Request(`http://127.0.0.1:9712/api/task-briefs/${id}`), + ); + expect(loaded["title"]).toBe("Fix auth"); + expect(loaded["acceptance_criteria"]).toEqual([ + "Identify cause", + "Patch minimal code", + ]); + + const patched = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/task-briefs/${id}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + title: "Fix auth v2", + acceptance_criteria: ["Patch", "Test"], + }), + }), + ); + expect(patched.status).toBe(200); + const patchedBody = (await patched.json()) as Record; + expect(patchedBody["title"]).toBe("Fix auth v2"); + expect(patchedBody["acceptance_criteria"]).toEqual(["Patch", "Test"]); + + const discarded = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/task-briefs/${id}/discard`, { + method: "POST", + }), + ); + expect(discarded.status).toBe(200); + const discardedBody = (await discarded.json()) as Record; + expect(discardedBody["status"]).toBe("discarded"); + }); + + test("confirming a task brief creates a normal task", async () => { + const created = await json( + new Request("http://127.0.0.1:9712/api/task-briefs", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + title: "Fix auth", + goal: "Fix login redirect", + context_summary: "Forwarded QA report", + acceptance_criteria: ["Identify cause", "Patch minimal code"], + working_dir: ".", + working_dir_confidence: "high", + agent: "codex", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + source_metadata: { chat_id: "chat-1" }, + }), + }), + ); + + const confirmedRes = await handleApiRequest( + ctx, + new Request( + `http://127.0.0.1:9712/api/task-briefs/${created["id"]}/confirm`, + { method: "POST" }, + ), + ); + expect(confirmedRes.status).toBe(201); + const confirmed = (await confirmedRes.json()) as Record; + expect(confirmed["status"]).toBe("created"); + + const task = db.get_task(Number(confirmed["task_id"]))!; + expect(task["title"]).toContain("Fix auth"); + expect(task["working_dir"]).toBe("."); + expect(task["agent"]).toBe("codex"); + expect(task["tags"]).toContain("im-inbox"); + expect(task["tags"]).toContain("telegram"); + expect(task["prompt"]).toContain("Goal:"); + expect(task["prompt"]).toContain("Fix login redirect"); + expect(task["prompt"]).toContain("Context:"); + expect(task["prompt"]).toContain("Forwarded QA report"); + expect(task["prompt"]).toContain("Acceptance criteria:"); + expect(task["prompt"]).toContain("1. Identify cause"); + + const brief = db.get_task_brief(Number(created["id"]))!; + expect(brief["status"]).toBe("converted"); + expect(brief["created_task_id"]).toBe(Number(confirmed["task_id"])); + }); + + test("IM runbook API starts empty and supports user command CRUD", async () => { + const initial = await json( + new Request("http://127.0.0.1:9712/api/im-runbooks"), + ); + expect(initial["runbooks"]).toEqual([]); + + const createdRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + name: "็œ‹ๆŠฅ้”™", + aliases: ["issue-triage"], + description: "ๅˆ†ๆžๆŠฅ้”™", + command_schema: { args: ["ๅ†…ๅฎน"] }, + prompt_template: "ๅˆ†ๆž่ฟ™ๆฎตๆŠฅ้”™๏ผš{{raw_args}}", + default_agent: "codex", + confirmation_policy: "required", + enabled: true, + }), + }), + ); + expect(createdRes.status).toBe(201); + const created = (await createdRes.json()) as Record; + expect(created["name"]).toBe("็œ‹ๆŠฅ้”™"); + expect(created["aliases"]).toEqual(["issue-triage"]); + + const patchedRes = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/im-runbooks/${created["id"]}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + description: "ๅˆ†ๆž็บฟไธŠๆŠฅ้”™", + enabled: false, + }), + }), + ); + expect(patchedRes.status).toBe(200); + const patched = (await patchedRes.json()) as Record; + expect(patched["description"]).toBe("ๅˆ†ๆž็บฟไธŠๆŠฅ้”™"); + expect(patched["enabled"]).toBe(false); + + const deleted = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/im-runbooks/${created["id"]}`, { + method: "DELETE", + }), + ); + expect(deleted.status).toBe(200); + expect(await deleted.json()).toEqual({ status: "deleted" }); + expect(db.get_im_runbook(Number(created["id"]))).toBeNull(); + }); + + test("IM runbook API creates a custom command from a previous task", async () => { + const taskId = db.add_task( + makeTask({ + title: "ๆ•ด็†ๅฎขๆˆทๅ้ฆˆ", + prompt: "่ฏทๆŠŠไธ‹้ข็š„ๅฎขๆˆทๅ้ฆˆๆ•ด็†ๆˆไบงๅ“้œ€ๆฑ‚ใ€้ฃŽ้™ฉๅ’Œไธ‹ไธ€ๆญฅ่กŒๅŠจใ€‚", + result: "done", + status: "completed", + working_dir: "~/agentforge", + agent: "codex", + }), + ); + + const createdRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks/from-task", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + task_id: taskId, + name: "ๆ•ด็†ๅ้ฆˆ", + description: "ๆŠŠๅฎขๆˆทๅ้ฆˆๆ•ด็†ๆˆ่กŒๅŠจ้กน", + confirmation_policy: "auto", + }), + }), + ); + + expect(createdRes.status).toBe(201); + const created = (await createdRes.json()) as Record; + expect(created["name"]).toBe("ๆ•ด็†ๅ้ฆˆ"); + expect(created["source_type"]).toBe("task"); + expect(created["source_id"]).toBe(String(taskId)); + expect(created["prompt_template"]).toContain( + "่ฏทๆŠŠไธ‹้ข็š„ๅฎขๆˆทๅ้ฆˆๆ•ด็†ๆˆไบงๅ“้œ€ๆฑ‚ใ€้ฃŽ้™ฉๅ’Œไธ‹ไธ€ๆญฅ่กŒๅŠจใ€‚", + ); + expect(created["prompt_template"]).toContain("{{raw_args}}"); + expect(created["default_agent"]).toBe("codex"); + expect(created["confirmation_policy"]).toBe("auto"); + }); + + test("IM runbook API previews a user runbook as a task brief", async () => { + const created = await json( + new Request("http://127.0.0.1:9712/api/im-runbooks", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + name: "triage-issue", + description: "Triage an issue", + prompt_template: "Triage this issue: {{raw_args}}", + confirmation_policy: "required", + }), + }), + ); + expect(created["id"]).toBeTruthy(); + + const previewRes = await handleApiRequest( + ctx, + new Request( + "http://127.0.0.1:9712/api/im-runbooks/triage-issue/preview", + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + raw_args: "https://github.com/acme/app/issues/12", + source_channel: "api", + source_ref: "api:test", + working_dir: ".", + }), + }, + ), + ); + expect(previewRes.status).toBe(201); + const preview = (await previewRes.json()) as Record; + expect(preview).toEqual({ + brief_id: 1, + runbook: "triage-issue", + status: "draft", + }); + expect(db.get_task_brief(1)!["goal"]).toContain( + "https://github.com/acme/app/issues/12", + ); + expect(db.get_all_tasks()).toHaveLength(0); + }); + + test("IM runbook API only runs user-created commands", async () => { + const missing = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks/review-pr/run", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + raw_args: "https://github.com/acme/app/pull/42", + source_channel: "api", + source_ref: "api:test", + working_dir: ".", + agent: "codex", + }), + }), + ); + expect(missing.status).toBe(400); + expect(await missing.json()).toEqual({ + error: "Unknown command: review-pr", + }); + + await json( + new Request("http://127.0.0.1:9712/api/im-runbooks", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + name: "็œ‹-pr", + description: "Review a pull request", + prompt_template: "Review this pull request:\n{{raw_args}}", + confirmation_policy: "auto", + }), + }), + ); + + const runRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks/%E7%9C%8B-pr/run", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + raw_args: "https://github.com/acme/app/pull/42", + source_channel: "api", + source_ref: "api:test", + working_dir: ".", + agent: "codex", + }), + }), + ); + expect(runRes.status).toBe(201); + const run = (await runRes.json()) as Record; + expect(run).toEqual({ + runbook: "็œ‹-pr", + status: "created", + task_id: 1, + }); + expect(db.get_task(1)!["prompt"]).toContain( + "https://github.com/acme/app/pull/42", + ); + }); + + test("IM digest API previews recent activity", async () => { + db.add_task( + makeTask({ + title: "Ship auth fix", + prompt: "fix auth", + status: "completed", + }), + ); + + const previewRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-digests/preview", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ include_empty: false }), + }), + ); + + expect(previewRes.status).toBe(200); + const preview = (await previewRes.json()) as Record; + expect(preview["status"]).toBe("ready"); + expect(preview["text"]).toContain("AgentForge Standup"); + expect(preview["text"]).toContain("Ship auth fix"); + expect(preview["digest"]["sections"][0]["key"]).toBe("completed"); + }); + + test("IM digest API sends to explicit Slack recipients", async () => { + db.add_task( + makeTask({ + title: "Ship auth fix", + prompt: "fix auth", + status: "completed", + }), + ); + const reply = mock(async () => undefined); + ctx.slack_channel = { _reply: reply } as any; + + const sendRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-digests/send", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + recipients: [{ channel: "slack", target: "C1" }], + }), + }), + ); + + expect(sendRes.status).toBe(200); + const sent = (await sendRes.json()) as Record; + expect(sent["status"]).toBe("sent"); + expect(sent["sent"]).toBe(1); + expect(reply).toHaveBeenCalledWith( + "C1", + null, + expect.stringContaining("Ship auth fix"), + ); + }); + + test("IM digest API returns conflict when send has no recipients", async () => { + const sendRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-digests/send", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ include_empty: true }), + }), + ); + + expect(sendRes.status).toBe(409); + expect(await sendRes.json()).toEqual({ + error: "no digest recipients configured", + }); + }); + test("POST /api/feishu/settings restarts the Feishu channel", async () => { const old = { stopped: false, @@ -377,6 +814,18 @@ describe("api handler", () => { db.set_setting("skill_library_enabled", "1"); db.set_setting("skill_sweep_agent", "claude"); db.set_setting("skill_sweep_cron", "5 4 * * *"); + db.set_setting("im_digest_enabled", "1"); + db.set_setting("im_digest_cron", "0 8 * * 1-5"); + db.set_setting( + "im_digest_channels", + JSON.stringify([{ channel: "slack", target: "C1" }]), + ); + db.set_setting("im_attention_digest_minutes", "15"); + db.set_setting("im_skill_suggestions_enabled", "1"); + db.set_setting( + "im_skill_suggestion_channels", + JSON.stringify([{ channel: "slack", target: "C2" }]), + ); db.set_setting("telegram_enabled", "true"); db.set_setting("telegram_bot_token", "tg-secret"); db.set_setting("telegram_allowed_users", "42"); @@ -408,6 +857,12 @@ describe("api handler", () => { skill_library_enabled: true, skill_sweep_agent: "claude", skill_sweep_cron: "5 4 * * *", + im_digest_enabled: true, + im_digest_cron: "0 8 * * 1-5", + im_digest_channels: [{ channel: "slack", target: "C1" }], + im_attention_digest_minutes: 15, + im_skill_suggestions_enabled: true, + im_skill_suggestion_channels: [{ channel: "slack", target: "C2" }], }); const status = await json( @@ -969,6 +1424,98 @@ describe("api handler", () => { expect(db.get_skill(skillId)).toBeNull(); }); + test("IM skill suggestion API previews sends and gates approval", async () => { + const patternId = createReadySkillDraft(); + const preview = await json( + new Request("http://127.0.0.1:9712/api/im-skill-suggestions/preview", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ channel: "slack" }), + }), + ); + expect(preview.suggestions).toHaveLength(1); + expect(preview.suggestions[0].pattern_id).toBe(patternId); + expect(preview.texts[0]).toContain("/draft-skill"); + + const reply = mock( + async (_channel: string, _thread: string | null, _text: string) => {}, + ); + ctx.slack_channel = { _reply: reply } as any; + const sent = await json( + new Request("http://127.0.0.1:9712/api/im-skill-suggestions/send", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + recipients: [{ channel: "slack", target: "C1" }], + }), + }), + ); + expect(sent.status).toBe("sent"); + expect(sent.sent).toBe(1); + expect(reply.mock.calls[0]![0]).toBe("C1"); + expect(db.should_send_im_skill_suggestion(patternId, "slack", "C1")).toBe( + false, + ); + + const blocked = await handleApiRequest( + ctx, + new Request( + `http://127.0.0.1:9712/api/im-skill-suggestions/${patternId}/action`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + action: "approve", + source_channel: "slack", + target: "C1", + }), + }, + ), + ); + expect(blocked.status).toBe(400); + expect(await blocked.json()).toEqual({ + error: "draft must be shown before approval", + }); + + const shown = await json( + new Request( + `http://127.0.0.1:9712/api/im-skill-suggestions/${patternId}/action`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + action: "show", + source_channel: "slack", + target: "C1", + }), + }, + ), + ); + expect(shown.status).toBe("ready"); + expect(shown.text).toContain("# Fix CI"); + + (scheduler as any).approve_skill = mock(() => ({ id: 9, name: "ok" })); + const approved = await json( + new Request( + `http://127.0.0.1:9712/api/im-skill-suggestions/${patternId}/action`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + action: "approve", + source_channel: "slack", + target: "C1", + }), + }, + ), + ); + expect(approved).toEqual({ + pattern_id: patternId, + skill: { id: 9, name: "ok" }, + status: "approved", + }); + }); + test("settings, skill workflow, and delete error routes cover edge cases", async () => { const nonObjectSettings = await handleApiRequest( ctx, diff --git a/backend/tests/brief-utils.test.ts b/backend/tests/brief-utils.test.ts new file mode 100644 index 0000000..f44b78c --- /dev/null +++ b/backend/tests/brief-utils.test.ts @@ -0,0 +1,68 @@ +import { expect, test } from "bun:test"; + +import { + build_brief_payload, + format_brief_created_reply, + format_brief_discarded_reply, + format_brief_started_reply, + parse_brief_command, +} from "../src/channels/brief_utils.ts"; + +test("parse_brief_command recognizes draft confirm and discard commands", () => { + expect(parse_brief_command("/brief fix the login redirect")).toBeNull(); + expect(parse_brief_command("/confirm-brief #42")).toEqual({ + action: "confirm", + brief_id: 42, + }); + expect(parse_brief_command("/run-draft 7")).toEqual({ + action: "confirm", + brief_id: 7, + }); + expect(parse_brief_command("/cancel-draft 9")).toEqual({ + action: "discard", + brief_id: 9, + }); + expect(parse_brief_command("/confirm-brief nope")).toEqual({ + action: "help", + reason: "invalid_brief_id", + }); + expect(parse_brief_command("/status 1")).toBeNull(); +}); + +test("build_brief_payload creates a concise draft from text", () => { + expect( + build_brief_payload({ + channel: "slack", + goal: "Fix the login redirect regression and add focused coverage for the auth callback", + source_ref: "C1:1.0", + source_metadata: { channel_id: "C1" }, + working_dir: "~/repo", + agent: "codex", + }), + ).toEqual({ + title: "Fix the login redirect regression and add focused coverag...", + goal: "Fix the login redirect regression and add focused coverage for the auth callback", + context_summary: "", + acceptance_criteria: [], + working_dir: "~/repo", + working_dir_confidence: "unknown", + agent: "codex", + risk_level: "normal", + needs_confirmation: true, + source_channel: "slack", + source_ref: "C1:1.0", + source_metadata: { channel_id: "C1" }, + }); +}); + +test("draft task replies do not expose brief as the core concept", () => { + expect(format_brief_created_reply(3, "Fix auth")).toContain("Draft task #3"); + expect(format_brief_created_reply(3, "Fix auth")).toContain("/run-draft 3"); + expect(format_brief_created_reply(3, "Fix auth")).toContain( + "/cancel-draft 3", + ); + expect(format_brief_created_reply(3, "Fix auth")).not.toContain("brief"); + expect(format_brief_started_reply(3, 9)).toContain("Task #9"); + expect(format_brief_started_reply(3, 9)).not.toContain("brief"); + expect(format_brief_discarded_reply(3)).toContain("discarded"); +}); diff --git a/backend/tests/bus.test.ts b/backend/tests/bus.test.ts index e06e646..9e5aa41 100644 --- a/backend/tests/bus.test.ts +++ b/backend/tests/bus.test.ts @@ -76,6 +76,88 @@ test("test_message_bus_round_trips_inbound_and_outbound_messages", async () => { expect(await bus.get_outbound()).toBe(outbound); }); +test("test_message_bus_round_trips_task_brief_inbound_messages", async () => { + const bus = new MessageBus(); + const channel = new RecordingChannel(bus, new StubDB()); + + const create = channel._make_inbound(InboundMessageType.CREATE_BRIEF, { + title: "Fix auth", + goal: "Fix login redirect", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + }); + const confirm = channel._make_inbound(InboundMessageType.CONFIRM_BRIEF, { + brief_id: 1, + }); + const discard = channel._make_inbound(InboundMessageType.DISCARD_BRIEF, { + brief_id: 2, + }); + + bus.publish_inbound(create); + bus.publish_inbound(confirm); + bus.publish_inbound(discard); + + expect((await bus.get_inbound())!.type).toBe("create_brief"); + expect((await bus.get_inbound())!.type).toBe("confirm_brief"); + expect((await bus.get_inbound())!.type).toBe("discard_brief"); +}); + +test("test_message_bus_round_trips_runbook_inbound_messages", async () => { + const bus = new MessageBus(); + const channel = new RecordingChannel(bus, new StubDB()); + + const preview = channel._make_inbound(InboundMessageType.PREVIEW_RUNBOOK, { + name: "release-check", + raw_args: "", + source_channel: "slack", + source_ref: "C1:1.0", + }); + const run = channel._make_inbound(InboundMessageType.RUN_RUNBOOK, { + name: "review-pr", + raw_args: "https://github.com/acme/app/pull/42", + source_channel: "slack", + source_ref: "C1:1.0", + }); + + bus.publish_inbound(preview); + bus.publish_inbound(run); + + expect((await bus.get_inbound())!.type).toBe("preview_runbook"); + expect((await bus.get_inbound())!.type).toBe("run_runbook"); +}); + +test("test_message_bus_round_trips_digest_inbound_messages", async () => { + const bus = new MessageBus(); + const channel = new RecordingChannel(bus, new StubDB()); + + const digest = channel._make_inbound(InboundMessageType.TRIGGER_DIGEST, { + include_empty: true, + }); + + bus.publish_inbound(digest); + + expect((await bus.get_inbound())!.type).toBe("trigger_digest"); +}); + +test("test_message_bus_round_trips_skill_suggestion_inbound_messages", async () => { + const bus = new MessageBus(); + const channel = new RecordingChannel(bus, new StubDB()); + + const action = channel._make_inbound( + InboundMessageType.SKILL_SUGGESTION_ACTION, + { + action: "draft", + pattern_id: 1, + source_channel: "slack", + target: "C1", + }, + ); + + bus.publish_inbound(action); + + expect((await bus.get_inbound())!.type).toBe("skill_suggestion_action"); +}); + test("test_message_bus_returns_none_when_queue_is_empty", async () => { const bus = new MessageBus(); diff --git a/backend/tests/digests.test.ts b/backend/tests/digests.test.ts new file mode 100644 index 0000000..b0d65ee --- /dev/null +++ b/backend/tests/digests.test.ts @@ -0,0 +1,145 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { + compose_im_digest, + parse_im_digest_recipients, + render_im_digest_text, +} from "../src/digests.ts"; +import { TaskDB } from "../src/db.ts"; +import { makeHeartbeat, makeTask } from "../src/types.ts"; + +describe("im digests", () => { + let tmpDir: string; + let db: TaskDB; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-digests-")); + db = new TaskDB(path.join(tmpDir, "digests.db")); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("empty digest is quiet by default", () => { + const digest = compose_im_digest(db); + + expect(digest.has_content).toBe(false); + expect(digest.sections).toEqual([]); + expect(render_im_digest_text(digest)).toContain( + "No notable AgentForge activity", + ); + }); + + test("digest separates completed failed and needs-you tasks", () => { + db.add_task( + makeTask({ + title: "Ship auth fix", + prompt: "fix auth", + status: "completed", + result: "done", + }), + ); + const failedId = db.add_task( + makeTask({ + title: "Fix CI", + prompt: "fix ci", + status: "failed", + }), + ); + db.update_task(failedId, { error: "DATABASE_URL missing" }); + const waitingId = db.add_task( + makeTask({ + title: "Clarify release", + prompt: "release?", + status: "running", + }), + ); + db.update_task(waitingId, { + question: "Which branch should I release?", + }); + + const digest = compose_im_digest(db); + const text = render_im_digest_text(digest); + + expect(digest.has_content).toBe(true); + expect(digest.sections.map((section) => section.key)).toEqual([ + "completed", + "needs_you", + "failed", + ]); + expect(text).toContain("Completed:"); + expect(text).toContain("Ship auth fix"); + expect(text).toContain("Needs you:"); + expect(text).toContain("Which branch should I release?"); + expect(text).toContain("Failed:"); + expect(text).toContain("DATABASE_URL missing"); + expect(digest.suggested_commands).toContain("/fix-ci "); + }); + + test("digest includes non-idle watcher ticks and skill candidates", () => { + const heartbeatId = db.add_heartbeat( + makeHeartbeat({ + name: "Prod watcher", + working_dir: ".", + interval_seconds: 60, + check_prompt: "check prod", + }), + ); + const tickId = db.add_heartbeat_tick(heartbeatId); + db.finish_heartbeat_tick( + tickId, + "completed", + "notify_only", + { summary: "CPU spike detected" }, + null, + "CPU spike detected", + null, + ); + const patternId = db.upsert_skill_pattern( + "fix-ci", + "recipe", + "Fix recurring CI failures", + 42, + )!; + db.set_skill_pattern_status(patternId, "candidate"); + + const digest = compose_im_digest(db); + const text = render_im_digest_text(digest); + + expect(digest.sections.map((section) => section.key)).toEqual([ + "watchers", + "skills", + ]); + expect(text).toContain("Watchers:"); + expect(text).toContain("CPU spike detected"); + expect(text).toContain("Skill candidates:"); + expect(text).toContain("Fix recurring CI failures"); + expect(digest.suggested_commands).toContain("/scan-skills"); + }); + + test("recipient parser accepts JSON arrays and filters malformed entries", () => { + expect( + parse_im_digest_recipients( + JSON.stringify([ + { channel: "slack", target: "C1" }, + { channel: "telegram", target: 10 }, + { channel: "", target: "missing" }, + { channel: "feishu" }, + ]), + ), + ).toEqual([ + { channel: "slack", target: "C1" }, + { channel: "telegram", target: "10" }, + ]); + + expect(parse_im_digest_recipients("not json")).toEqual([]); + expect( + parse_im_digest_recipients([{ channel: "weixin", target: "peer" }]), + ).toEqual([{ channel: "weixin", target: "peer" }]); + }); +}); diff --git a/backend/tests/feishu-channel.test.ts b/backend/tests/feishu-channel.test.ts index 77e2bd1..9efdaa1 100644 --- a/backend/tests/feishu-channel.test.ts +++ b/backend/tests/feishu-channel.test.ts @@ -10,9 +10,11 @@ import os from "node:os"; import path from "node:path"; import { + InboundMessageType, MessageBus, makeOutboundMessage, OutboundMessageType, + type InboundMessage, } from "../src/bus.ts"; import { _hooks as dirHooks } from "../src/channels/dir_utils.ts"; import { @@ -39,6 +41,32 @@ class StubDB implements FeishuTaskDB { runs: Row[] = []; events: Row[] = []; byRoot = new Map(); + runbooks: Row[] = [ + { + name: "็œ‹-pr", + aliases: [], + description: "็œ‹ PR", + source_type: "template", + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "Review this pull request:\n{{raw_args}}", + default_agent: null, + confirmation_policy: "auto", + enabled: true, + }, + { + name: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + aliases: [], + description: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + source_type: "template", + source_id: null, + command_schema: { args: [] }, + prompt_template: "ๆฃ€ๆŸฅๅ‘ๅธƒ้ฃŽ้™ฉ", + default_agent: null, + confirmation_policy: "required", + enabled: true, + }, + ]; get_setting(key: string, defaultValue: string | null = null): string | null { return this.settings[key] ?? defaultValue; @@ -68,6 +96,12 @@ class StubDB implements FeishuTaskDB { return this.events; } + get_im_runbooks(enabled_only: boolean = false): Row[] { + return enabled_only + ? this.runbooks.filter((runbook) => runbook["enabled"] !== false) + : this.runbooks; + } + get_task_by_feishu_root_msg(root_msg_id: string): Row | null { return this.byRoot.get(root_msg_id) ?? null; } @@ -75,14 +109,63 @@ class StubDB implements FeishuTaskDB { class StubScheduler implements FeishuScheduler { submitted: Task[] = []; + inbound: InboundMessage[] = []; listeners: OutputListener[] = []; removed: OutputListener[] = []; + nextBriefId = 1; submit_task(task: Task): number { this.submitted.push(task); return this.submitted.length; } + handle_inbound_message(msg: InboundMessage): Row { + this.inbound.push(msg); + if (msg.type === InboundMessageType.CREATE_BRIEF) { + return { brief_id: this.nextBriefId++, status: "draft" }; + } + if (msg.type === InboundMessageType.CONFIRM_BRIEF) { + return { task_id: this.submitted.length + 1, status: "created" }; + } + if (msg.type === InboundMessageType.DISCARD_BRIEF) { + return { brief_id: msg.payload["brief_id"], status: "discarded" }; + } + if (msg.type === InboundMessageType.RUN_RUNBOOK) { + if (msg.payload["name"] === "ๆฃ€ๆŸฅๅ‘ๅธƒ") { + return { + brief_id: this.nextBriefId++, + runbook: msg.payload["name"], + status: "draft", + }; + } + return { + runbook: msg.payload["name"], + status: "created", + task_id: this.submitted.length + 1, + }; + } + if (msg.type === InboundMessageType.SKILL_SUGGESTION_ACTION) { + const action = String(msg.payload["action"]); + if (action === "show") { + return { + pattern_id: msg.payload["pattern_id"], + status: "ready", + text: "Skill suggestion: fix-ci-investigation\n\nDraft preview:\n# Fix CI", + }; + } + return { + pattern_id: msg.payload["pattern_id"], + status: + action === "draft" + ? "drafting" + : action === "approve" + ? "approved" + : "dismissed", + }; + } + return { status: "ignored" }; + } + add_output_listener(cb: OutputListener): void { this.listeners.push(cb); } @@ -1125,6 +1208,10 @@ describe("Feishu forwarded, media, and command handling", () => { expect(sent.some((text: string) => text.includes("AgentForge Bot"))).toBe( true, ); + expect(HELP_TEXT).toContain("/็œ‹ๆŠฅ้”™"); + expect(HELP_TEXT).toContain("่‡ชๅฎšไน‰ๅ‘ฝไปค"); + expect(HELP_TEXT).toContain("/run-draft"); + expect(HELP_TEXT).toContain("/cancel-draft"); expect( sent.some((text: string) => text.includes("Working directory")), ).toBe(true); @@ -1262,6 +1349,174 @@ describe("Feishu inbound handling", () => { expect((channel._start_streaming as any).mock.calls[0][0]).toBe(1); }); + test("brief command is not the draft entrypoint", async () => { + const { channel, db, scheduler } = makeChannel(); + db.settings["default_agent"] = "codex"; + channel._send_message = mock(async () => "om_reply") as any; + channel._add_reaction = mock(() => undefined) as any; + + await withResolvedDir("/tmp/repo", async () => { + await channel._handle_inbound( + makeEvent({ + content: textPayload("/brief fix the login redirect"), + messageId: "om_brief", + chatId: "oc_product", + }), + ); + }); + + expect(scheduler.submitted).toHaveLength(1); + expect(scheduler.submitted[0]!.prompt).toBe( + "/brief fix the login redirect", + ); + expect(scheduler.inbound).toHaveLength(0); + expect((channel._send_message as any).mock.calls).toHaveLength(0); + }); + + test("confirm and discard brief commands use text fallback", async () => { + const { channel, bus, scheduler } = makeChannel(); + channel._send_message = mock(async () => "om_reply") as any; + channel._create_reply = mock(async () => "om_running") as any; + channel._start_streaming = mock(() => undefined) as any; + channel._add_reaction = mock(() => undefined) as any; + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/run-draft 4"), + messageId: "om_confirm", + }), + ); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.CONFIRM_BRIEF); + expect(scheduler.inbound[0]!.payload["brief_id"]).toBe(4); + expect(channel._task_origin.get(1)).toEqual([ + "ou_sender", + "om_confirm", + "om_confirm", + ]); + expect(channel._root_msg_map.get("om_confirm")).toBe(1); + expect(bus.get_task_source(1)).toBe("feishu"); + expect((channel._create_reply as any).mock.calls[0][0]).toBe("om_confirm"); + expect((channel._start_streaming as any).mock.calls[0][0]).toBe(1); + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/cancel-draft #4"), + messageId: "om_discard", + }), + ); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.DISCARD_BRIEF); + expect(scheduler.inbound[1]!.payload["brief_id"]).toBe(4); + const sent = (channel._send_message as any).mock.calls.at(-1); + expect(sent[0]).toBe("ou_sender"); + expect(sent[1]).toContain("discarded"); + }); + + test("runbook commands use text fallback", async () => { + const { channel, bus, scheduler } = makeChannel(); + channel._send_message = mock(async () => "om_reply") as any; + channel._create_reply = mock(async () => "om_running") as any; + channel._start_streaming = mock(() => undefined) as any; + channel._add_reaction = mock(() => undefined) as any; + + await withResolvedDir("/tmp/repo", async () => { + await channel._handle_inbound( + makeEvent({ + content: textPayload("/็œ‹-pr https://github.com/acme/app/pull/42"), + messageId: "om_runbook", + }), + ); + }); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[0]!.payload["name"]).toBe("็œ‹-pr"); + expect(scheduler.inbound[0]!.payload["raw_args"]).toBe( + "https://github.com/acme/app/pull/42", + ); + expect(scheduler.inbound[0]!.payload["working_dir"]).toBe("/tmp/repo"); + expect(channel._task_origin.get(1)).toEqual([ + "ou_sender", + "om_runbook", + "om_runbook", + ]); + expect(channel._root_msg_map.get("om_runbook")).toBe(1); + expect(bus.get_task_source(1)).toBe("feishu"); + expect((channel._create_reply as any).mock.calls[0][0]).toBe("om_runbook"); + expect((channel._start_streaming as any).mock.calls[0][0]).toBe(1); + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/ๆฃ€ๆŸฅๅ‘ๅธƒ"), + messageId: "om_release", + }), + ); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[1]!.payload["name"]).toBe("ๆฃ€ๆŸฅๅ‘ๅธƒ"); + const sent = (channel._send_message as any).mock.calls.at(-1); + expect(sent[1]).toContain("Draft task #1"); + expect(sent[1]).toContain("/run-draft 1"); + }); + + test("skill suggestion commands use text fallback", async () => { + const { channel, scheduler } = makeChannel(); + channel._send_message = mock(async () => "om_reply") as any; + channel._add_reaction = mock(() => undefined) as any; + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/draft-skill 4"), + messageId: "om_draft_skill", + chatId: "oc_product", + }), + ); + + expect(scheduler.inbound[0]!.type).toBe( + InboundMessageType.SKILL_SUGGESTION_ACTION, + ); + expect(scheduler.inbound[0]!.payload["action"]).toBe("draft"); + expect(scheduler.inbound[0]!.payload["pattern_id"]).toBe(4); + expect(scheduler.inbound[0]!.payload["source_channel"]).toBe("feishu"); + expect(scheduler.inbound[0]!.payload["target"]).toBe("ou_sender"); + expect((channel._send_message as any).mock.calls.at(-1)[1]).toContain( + "Skill draft", + ); + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/show-skill #4"), + messageId: "om_show_skill", + }), + ); + expect(scheduler.inbound[1]!.payload["action"]).toBe("show"); + expect((channel._send_message as any).mock.calls.at(-1)[1]).toContain( + "Draft preview", + ); + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/approve-skill 4"), + messageId: "om_approve_skill", + }), + ); + expect(scheduler.inbound[2]!.payload["action"]).toBe("approve"); + expect((channel._send_message as any).mock.calls.at(-1)[1]).toContain( + "approved", + ); + + await channel._handle_inbound( + makeEvent({ + content: textPayload("/dismiss-skill 4"), + messageId: "om_dismiss_skill", + }), + ); + expect(scheduler.inbound[3]!.payload["action"]).toBe("dismiss"); + expect((channel._send_message as any).mock.calls.at(-1)[1]).toContain( + "dismissed", + ); + }); + test("post message with only an image creates default image-analysis prompt", async () => { const { channel, scheduler } = makeChannel(); const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-feishu-")); diff --git a/backend/tests/runbook-db.test.ts b/backend/tests/runbook-db.test.ts new file mode 100644 index 0000000..1482cf9 --- /dev/null +++ b/backend/tests/runbook-db.test.ts @@ -0,0 +1,116 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { TaskDB } from "../src/db.ts"; +import { makeIMRunbook } from "../src/types.ts"; + +describe("im runbooks db", () => { + let tmpDir: string; + let db: TaskDB; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-runbooks-")); + db = new TaskDB(path.join(tmpDir, "runbooks.db")); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("im runbooks round-trip aliases schema and enabled state", () => { + const id = db.add_im_runbook( + makeIMRunbook({ + name: "triage-issue", + aliases: ["issue-triage"], + description: "Triage an issue", + source_type: "template", + source_id: "template-1", + command_schema: { args: ["url"] }, + prompt_template: "Triage {{url}}", + default_agent: "codex", + confirmation_policy: "required", + enabled: true, + }), + ); + + const loaded = db.get_im_runbook(id)!; + expect(loaded["id"]).toBe(id); + expect(loaded["name"]).toBe("triage-issue"); + expect(loaded["aliases"]).toEqual(["issue-triage"]); + expect(loaded["command_schema"]).toEqual({ args: ["url"] }); + expect(loaded["source_type"]).toBe("template"); + expect(loaded["source_id"]).toBe("template-1"); + expect(loaded["default_agent"]).toBe("codex"); + expect(loaded["confirmation_policy"]).toBe("required"); + expect(loaded["enabled"]).toBe(true); + expect(loaded["created_at"]).toBeTruthy(); + expect(loaded["updated_at"]).toBeTruthy(); + }); + + test("im runbooks can be listed and looked up by name or alias", () => { + const first = db.add_im_runbook( + makeIMRunbook({ + name: "triage-issue", + aliases: ["issue-triage"], + description: "Triage an issue", + prompt_template: "Triage {{url}}", + }), + ); + const second = db.add_im_runbook( + makeIMRunbook({ + name: "draft-release", + aliases: [], + description: "Draft release notes", + prompt_template: "Draft release notes", + enabled: false, + }), + ); + + expect(db.get_im_runbook_by_name("triage-issue")!["id"]).toBe(first); + expect(db.get_im_runbook_by_name("issue-triage")!["id"]).toBe(first); + expect(db.get_im_runbook_by_name("missing")).toBeNull(); + expect(db.get_im_runbooks().map((runbook) => runbook["id"])).toEqual([ + second, + first, + ]); + expect(db.get_im_runbooks(true).map((runbook) => runbook["id"])).toEqual([ + first, + ]); + }); + + test("im runbook updates and deletes validate columns", () => { + const id = db.add_im_runbook( + makeIMRunbook({ + name: "triage-issue", + aliases: ["issue-triage"], + description: "Triage an issue", + prompt_template: "Triage {{url}}", + }), + ); + + db.update_im_runbook(id, { + description: "Triage a GitHub issue", + aliases: ["issue"], + command_schema: { args: ["url"], optional: ["labels"] }, + enabled: false, + }); + + const updated = db.get_im_runbook(id)!; + expect(updated["description"]).toBe("Triage a GitHub issue"); + expect(updated["aliases"]).toEqual(["issue"]); + expect(updated["command_schema"]).toEqual({ + args: ["url"], + optional: ["labels"], + }); + expect(updated["enabled"]).toBe(false); + expect(() => db.update_im_runbook(id, { made_up_column: "nope" })).toThrow( + "Invalid IM runbook column", + ); + + db.delete_im_runbook(id); + expect(db.get_im_runbook(id)).toBeNull(); + }); +}); diff --git a/backend/tests/runbooks.test.ts b/backend/tests/runbooks.test.ts new file mode 100644 index 0000000..cc4ae0c --- /dev/null +++ b/backend/tests/runbooks.test.ts @@ -0,0 +1,137 @@ +import { describe, expect, test } from "bun:test"; + +import { + BUILTIN_RUNBOOKS, + RunbookConfirmationPolicy, + RunbookSourceType, + expand_runbook, + parse_runbook_command, + type RunbookDefinition, +} from "../src/runbooks.ts"; + +describe("runbooks", () => { + const analyzeErrorCommand: RunbookDefinition = { + name: "็œ‹ๆŠฅ้”™", + aliases: ["analyze-error"], + description: "ๅˆ†ๆžไธ€ๆฎตๆŠฅ้”™ๅนถ็ป™ๅ‡บไธ‹ไธ€ๆญฅ", + source_type: RunbookSourceType.TEMPLATE, + source_id: null, + command_schema: { args: ["ๅ†…ๅฎน"] }, + prompt_template: "่ฏทๅˆ†ๆž่ฟ™ๆฎตๆŠฅ้”™๏ผŒๅนถ็ป™ๅ‡บๆœ€ๅฐไธ‹ไธ€ๆญฅ๏ผš\n{{raw_args}}", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.AUTO, + enabled: true, + }; + + test("parse_runbook_command only recognizes supplied custom commands", () => { + expect( + parse_runbook_command("/review-pr https://github.com/acme/app/pull/42"), + ).toBeNull(); + expect( + parse_runbook_command("/็œ‹ๆŠฅ้”™ TypeError: boom", [analyzeErrorCommand]), + ).toEqual({ + name: "็œ‹ๆŠฅ้”™", + args: ["TypeError:", "boom"], + raw_args: "TypeError: boom", + }); + expect( + parse_runbook_command("/analyze-error TypeError: boom", [ + analyzeErrorCommand, + ]), + ).toEqual({ + name: "็œ‹ๆŠฅ้”™", + args: ["TypeError:", "boom"], + raw_args: "TypeError: boom", + }); + expect(parse_runbook_command("/status 1")).toBeNull(); + expect( + parse_runbook_command("็œ‹ๆŠฅ้”™ TypeError: boom", [analyzeErrorCommand]), + ).toBeNull(); + }); + + test("builtin registry contains the minimum runbooks", () => { + expect(BUILTIN_RUNBOOKS.map((runbook) => runbook.name)).toEqual([ + "review-pr", + "fix-ci", + "summarize-thread", + "write-tests", + "release-check", + "scan-skills", + ]); + expect( + BUILTIN_RUNBOOKS.find((runbook) => runbook.name === "review-pr")! + .confirmation_policy, + ).toBe(RunbookConfirmationPolicy.AUTO); + expect( + BUILTIN_RUNBOOKS.find((runbook) => runbook.name === "release-check")! + .confirmation_policy, + ).toBe(RunbookConfirmationPolicy.REQUIRED); + }); + + test("expand_runbook validates custom commands and creates deterministic prompts", () => { + const review = expand_runbook({ + name: "็œ‹ๆŠฅ้”™", + raw_args: "TypeError: boom", + source_channel: "telegram", + source_ref: "10:20", + working_dir: "~/repo", + agent: "codex", + source_metadata: { chat_id: 10 }, + runbooks: [analyzeErrorCommand], + }); + + expect(review.ok).toBe(true); + expect(review.expansion!.confirmation_policy).toBe("auto"); + expect(review.expansion!.task.title).toBe( + "[Command] ๅˆ†ๆžไธ€ๆฎตๆŠฅ้”™ๅนถ็ป™ๅ‡บไธ‹ไธ€ๆญฅ", + ); + expect(review.expansion!.task.prompt).toContain( + "่ฏทๅˆ†ๆž่ฟ™ๆฎตๆŠฅ้”™๏ผŒๅนถ็ป™ๅ‡บๆœ€ๅฐไธ‹ไธ€ๆญฅ๏ผš\nTypeError: boom", + ); + expect(review.expansion!.task.working_dir).toBe("~/repo"); + expect(review.expansion!.task.tags).toBe("command,็œ‹ๆŠฅ้”™,telegram"); + + const release = expand_runbook({ + name: "็œ‹ๆŠฅ้”™", + raw_args: "ReferenceError", + source_channel: "telegram", + source_ref: "10:20", + working_dir: "~/repo", + agent: "claude", + source_metadata: { chat_id: 10 }, + runbooks: [ + { + ...analyzeErrorCommand, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + }, + ], + }); + + expect(release.ok).toBe(true); + expect(release.expansion!.confirmation_policy).toBe("required"); + expect(release.expansion!.brief.title).toBe("ๅˆ†ๆžไธ€ๆฎตๆŠฅ้”™ๅนถ็ป™ๅ‡บไธ‹ไธ€ๆญฅ"); + expect(release.expansion!.brief.needs_confirmation).toBe(true); + expect(release.expansion!.brief.goal).toContain("ReferenceError"); + }); + + test("expand_runbook returns usage errors for invalid arguments", () => { + expect( + expand_runbook({ + name: "็œ‹ๆŠฅ้”™", + raw_args: "", + source_channel: "slack", + source_ref: "C1:1.0", + runbooks: [analyzeErrorCommand], + }).error, + ).toContain("Usage: /็œ‹ๆŠฅ้”™ <ๅ†…ๅฎน>"); + + expect( + expand_runbook({ + name: "review-pr", + raw_args: "", + source_channel: "slack", + source_ref: "C1:1.0", + }).error, + ).toContain("Unknown command"); + }); +}); diff --git a/backend/tests/scheduler-briefs.test.ts b/backend/tests/scheduler-briefs.test.ts new file mode 100644 index 0000000..07e9551 --- /dev/null +++ b/backend/tests/scheduler-briefs.test.ts @@ -0,0 +1,114 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { + InboundMessageType, + MessageBus, + makeInboundMessage, +} from "../src/bus.ts"; +import { TaskDB } from "../src/db.ts"; +import { TaskScheduler } from "../src/scheduler.ts"; + +describe("scheduler task brief inbound actions", () => { + let tmpDir: string; + let db: TaskDB; + let scheduler: TaskScheduler; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-briefs-")); + db = new TaskDB(path.join(tmpDir, "briefs.db")); + scheduler = new TaskScheduler(db, null, new MessageBus()); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("CREATE_BRIEF creates a draft without creating a task", () => { + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.CREATE_BRIEF, + source: "telegram", + payload: { + title: "Fix auth", + goal: "Fix login redirect", + context_summary: "Forwarded QA report", + acceptance_criteria: ["Identify cause", "Patch minimal code"], + working_dir: ".", + agent: "codex", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + source_metadata: { chat_id: "chat-1" }, + }, + }), + ); + + expect(result).toEqual({ brief_id: 1, status: "draft" }); + expect(db.get_task_briefs()).toHaveLength(1); + expect(db.get_all_tasks()).toHaveLength(0); + }); + + test("CONFIRM_BRIEF converts a draft into a task", () => { + const created = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.CREATE_BRIEF, + source: "telegram", + payload: { + title: "Fix auth", + goal: "Fix login redirect", + acceptance_criteria: ["Identify cause"], + working_dir: ".", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + }, + }), + ); + + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.CONFIRM_BRIEF, + source: "telegram", + payload: { brief_id: created["brief_id"] }, + }), + ); + + expect(result).toEqual({ task_id: 1, status: "created" }); + const brief = db.get_task_brief(Number(created["brief_id"]))!; + const task = db.get_task(1)!; + expect(brief["status"]).toBe("converted"); + expect(brief["created_task_id"]).toBe(1); + expect(task["title"]).toBe("Fix auth"); + expect(task["prompt"]).toContain("Goal:"); + expect(task["prompt"]).toContain("Acceptance criteria:"); + }); + + test("DISCARD_BRIEF marks a draft discarded", () => { + const created = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.CREATE_BRIEF, + source: "telegram", + payload: { + title: "Fix auth", + goal: "Fix login redirect", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + }, + }), + ); + + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.DISCARD_BRIEF, + source: "telegram", + payload: { brief_id: created["brief_id"] }, + }), + ); + + expect(result).toEqual({ brief_id: 1, status: "discarded" }); + expect(db.get_task_brief(1)!["status"]).toBe("discarded"); + expect(db.get_all_tasks()).toHaveLength(0); + }); +}); diff --git a/backend/tests/scheduler-digests.test.ts b/backend/tests/scheduler-digests.test.ts new file mode 100644 index 0000000..df455ca --- /dev/null +++ b/backend/tests/scheduler-digests.test.ts @@ -0,0 +1,66 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { + InboundMessageType, + MessageBus, + makeInboundMessage, +} from "../src/bus.ts"; +import { TaskDB } from "../src/db.ts"; +import { TaskScheduler } from "../src/scheduler.ts"; +import { makeTask } from "../src/types.ts"; + +describe("scheduler digest inbound actions", () => { + let tmpDir: string; + let db: TaskDB; + let scheduler: TaskScheduler; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-digests-")); + db = new TaskDB(path.join(tmpDir, "digests.db")); + scheduler = new TaskScheduler(db, null, new MessageBus()); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("TRIGGER_DIGEST returns quiet when there is no content", () => { + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.TRIGGER_DIGEST, + source: "api", + payload: {}, + }), + ); + + expect(result["status"]).toBe("quiet"); + expect(result["digest"]).toMatchObject({ has_content: false }); + }); + + test("TRIGGER_DIGEST returns ready digest and text when content exists", () => { + db.add_task( + makeTask({ + title: "Ship auth fix", + prompt: "fix auth", + status: "completed", + }), + ); + + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.TRIGGER_DIGEST, + source: "api", + payload: { include_empty: false }, + }), + ); + + expect(result["status"]).toBe("ready"); + expect((result["digest"] as any)["has_content"]).toBe(true); + expect(result["text"]).toContain("AgentForge Standup"); + expect(result["text"]).toContain("Ship auth fix"); + }); +}); diff --git a/backend/tests/scheduler-runbooks.test.ts b/backend/tests/scheduler-runbooks.test.ts new file mode 100644 index 0000000..a68029b --- /dev/null +++ b/backend/tests/scheduler-runbooks.test.ts @@ -0,0 +1,154 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { + InboundMessageType, + MessageBus, + makeInboundMessage, +} from "../src/bus.ts"; +import { TaskDB } from "../src/db.ts"; +import { TaskScheduler } from "../src/scheduler.ts"; +import { makeIMRunbook } from "../src/types.ts"; + +describe("scheduler runbook inbound actions", () => { + let tmpDir: string; + let db: TaskDB; + let scheduler: TaskScheduler; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-runbooks-")); + db = new TaskDB(path.join(tmpDir, "runbooks.db")); + scheduler = new TaskScheduler(db, null, new MessageBus()); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + function addCommand( + name: string, + policy: "auto" | "required", + prompt: string = "Run {{raw_args}}", + ): number { + return db.add_im_runbook( + makeIMRunbook({ + name, + description: `Command ${name}`, + prompt_template: prompt, + confirmation_policy: policy, + }), + ); + } + + test("PREVIEW_RUNBOOK creates a draft without creating a task", () => { + addCommand("ๆฃ€ๆŸฅๅ‘ๅธƒ", "required", "ๆฃ€ๆŸฅๅ‘ๅธƒ้ฃŽ้™ฉ๏ผš{{raw_args}}"); + + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.PREVIEW_RUNBOOK, + source: "slack", + payload: { + name: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + raw_args: "ไปŠๅคฉ็š„ๅ˜ๆ›ด", + source_channel: "slack", + source_ref: "C1:1.0", + working_dir: ".", + agent: "codex", + source_metadata: { channel_id: "C1" }, + }, + }), + ); + + expect(result).toEqual({ + brief_id: 1, + runbook: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + status: "draft", + }); + expect(db.get_all_tasks()).toHaveLength(0); + const brief = db.get_task_brief(1)!; + expect(brief["title"]).toBe("Command ๆฃ€ๆŸฅๅ‘ๅธƒ"); + expect(brief["needs_confirmation"]).toBe(true); + expect(brief["source_channel"]).toBe("slack"); + expect(brief["source_ref"]).toBe("C1:1.0"); + }); + + test("RUN_RUNBOOK creates a task for auto-confirmed runbooks", () => { + addCommand("็œ‹-pr", "auto", "Review this pull request:\n{{raw_args}}"); + + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.RUN_RUNBOOK, + source: "slack", + payload: { + name: "็œ‹-pr", + raw_args: "https://github.com/acme/app/pull/42", + source_channel: "slack", + source_ref: "C1:1.0", + working_dir: ".", + agent: "codex", + }, + }), + ); + + expect(result).toEqual({ + runbook: "็œ‹-pr", + status: "created", + task_id: 1, + }); + expect(db.get_task_briefs()).toHaveLength(0); + const task = db.get_task(1)!; + expect(task["title"]).toBe("[Command] Command ็œ‹-pr"); + expect(task["prompt"]).toContain("https://github.com/acme/app/pull/42"); + expect(task["tags"]).toBe("command,็œ‹-pr,slack"); + }); + + test("RUN_RUNBOOK creates a draft for runbooks requiring confirmation", () => { + addCommand("ไฟฎ-ci", "required", "ไฟฎๅค CI๏ผš{{raw_args}}"); + + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.RUN_RUNBOOK, + source: "telegram", + payload: { + name: "ไฟฎ-ci", + raw_args: "https://github.com/acme/app/actions/runs/123", + source_channel: "telegram", + source_ref: "10:20", + working_dir: ".", + }, + }), + ); + + expect(result).toEqual({ + brief_id: 1, + runbook: "ไฟฎ-ci", + status: "draft", + }); + expect(db.get_all_tasks()).toHaveLength(0); + const brief = db.get_task_brief(1)!; + expect(brief["title"]).toBe("Command ไฟฎ-ci"); + expect(brief["goal"]).toContain( + "https://github.com/acme/app/actions/runs/123", + ); + }); + + test("RUN_RUNBOOK reports usage errors", () => { + expect(() => + scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.RUN_RUNBOOK, + source: "slack", + payload: { + name: "review-pr", + raw_args: "", + source_channel: "slack", + source_ref: "C1:1.0", + }, + }), + ), + ).toThrow("Unknown command: review-pr"); + }); +}); diff --git a/backend/tests/scheduler-skill-suggestions.test.ts b/backend/tests/scheduler-skill-suggestions.test.ts new file mode 100644 index 0000000..1815b48 --- /dev/null +++ b/backend/tests/scheduler-skill-suggestions.test.ts @@ -0,0 +1,169 @@ +import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { + InboundMessageType, + MessageBus, + makeInboundMessage, +} from "../src/bus.ts"; +import { TaskDB } from "../src/db.ts"; +import { TaskScheduler } from "../src/scheduler.ts"; +import { makeTask } from "../src/types.ts"; + +describe("scheduler IM skill suggestion actions", () => { + let tmpDir: string; + let db: TaskDB; + let scheduler: TaskScheduler; + + beforeEach(() => { + tmpDir = fs.mkdtempSync( + path.join(os.tmpdir(), "agentforge-scheduler-skill-suggestions-"), + ); + db = new TaskDB(path.join(tmpDir, "suggestions.db")); + scheduler = new TaskScheduler(db, null, new MessageBus()); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + function createCandidate(): number { + const taskId = db.add_task( + makeTask({ + title: "Fix frontend CI", + prompt: "Investigate the failed build.", + tags: "runbook,fix-ci,slack", + }), + ); + const patternId = db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 100, + )!; + db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 101, + ); + db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 102, + ); + db.set_skill_pattern_status(patternId, "candidate"); + return patternId; + } + + function createReadyDraft(): number { + const patternId = createCandidate(); + db.upsert_skill_draft( + patternId, + "ready", + "fix-ci-investigation", + "Reusable CI investigation workflow.", + "recipe", + "---\nname: fix-ci-investigation\ndescription: Reusable CI investigation workflow.\n---\n# Fix CI\n", + ); + return patternId; + } + + function actionMessage( + action: string, + patternId: number, + ): ReturnType { + return makeInboundMessage({ + type: InboundMessageType.SKILL_SUGGESTION_ACTION, + source: "slack", + reply_to: "C1", + payload: { + action, + pattern_id: patternId, + source_channel: "slack", + target: "C1", + }, + }); + } + + test("SKILL_SUGGESTION_ACTION starts draft generation", () => { + const patternId = createCandidate(); + scheduler.trigger_skill_draft = mock(() => true) as any; + + const result = scheduler.handle_inbound_message( + actionMessage("draft", patternId), + ); + + expect(result).toEqual({ pattern_id: patternId, status: "drafting" }); + expect((scheduler.trigger_skill_draft as any).mock.calls[0]).toEqual([ + patternId, + null, + ]); + expect( + db.get_im_skill_suggestion(patternId, "slack", "C1")!["status"], + ).toBe("suggested"); + }); + + test("SKILL_SUGGESTION_ACTION shows a ready draft and marks it reviewable", () => { + const patternId = createReadyDraft(); + + const result = scheduler.handle_inbound_message( + actionMessage("show", patternId), + ); + + expect(result["status"]).toBe("ready"); + expect(String(result["text"])).toContain("Draft preview:"); + expect(String(result["text"])).toContain("# Fix CI"); + expect( + db.get_im_skill_suggestion(patternId, "slack", "C1")!["draft_shown_at"], + ).toBeTruthy(); + }); + + test("SKILL_SUGGESTION_ACTION rejects approval before draft was shown", () => { + const patternId = createReadyDraft(); + + expect(() => + scheduler.handle_inbound_message(actionMessage("approve", patternId)), + ).toThrow("draft must be shown before approval"); + }); + + test("SKILL_SUGGESTION_ACTION approves after a ready draft was shown", () => { + const patternId = createReadyDraft(); + db.mark_im_skill_suggestion_draft_shown(patternId, "slack", "C1"); + scheduler.approve_skill = mock(() => ({ id: 9, name: "ok" })) as any; + + const result = scheduler.handle_inbound_message( + actionMessage("approve", patternId), + ); + + expect(result).toEqual({ + pattern_id: patternId, + skill: { id: 9, name: "ok" }, + status: "approved", + }); + expect( + db.get_im_skill_suggestion(patternId, "slack", "C1")!["status"], + ).toBe("approved"); + }); + + test("SKILL_SUGGESTION_ACTION dismisses the pattern", () => { + const patternId = createReadyDraft(); + + const result = scheduler.handle_inbound_message( + actionMessage("dismiss", patternId), + ); + + expect(result).toEqual({ pattern_id: patternId, status: "dismissed" }); + expect(db.get_skill_pattern(patternId)!["status"]).toBe("dismissed"); + expect( + db.get_im_skill_suggestion(patternId, "slack", "C1")!["status"], + ).toBe("dismissed"); + }); +}); diff --git a/backend/tests/skill-suggestions.test.ts b/backend/tests/skill-suggestions.test.ts new file mode 100644 index 0000000..13d66eb --- /dev/null +++ b/backend/tests/skill-suggestions.test.ts @@ -0,0 +1,129 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { TaskDB } from "../src/db.ts"; +import { + collect_im_skill_suggestions, + render_im_skill_suggestion_text, +} from "../src/skill_suggestions.ts"; +import { makeTask } from "../src/types.ts"; + +describe("IM skill suggestions", () => { + let tmpDir: string; + let db: TaskDB; + + beforeEach(() => { + tmpDir = fs.mkdtempSync( + path.join(os.tmpdir(), "agentforge-skill-suggestions-"), + ); + db = new TaskDB(path.join(tmpDir, "suggestions.db")); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + function candidateForChannel(channel: string): number { + const taskId = db.add_task( + makeTask({ + title: "Fix frontend CI", + prompt: "Investigate the failed build.", + tags: `runbook,fix-ci,${channel}`, + }), + ); + const patternId = db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 100, + )!; + db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 101, + ); + db.upsert_skill_pattern( + "fix-ci-investigation", + "recipe", + "Investigate a failed CI run and patch the minimal issue.", + taskId, + 102, + ); + db.set_skill_pattern_status(patternId, "candidate"); + return patternId; + } + + test("collects candidate patterns that originated from an IM channel", () => { + const patternId = candidateForChannel("slack"); + candidateForChannel("telegram"); + + const suggestions = collect_im_skill_suggestions(db, { channel: "slack" }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]!.pattern_id).toBe(patternId); + expect(suggestions[0]!.pattern_key).toBe("fix-ci-investigation"); + expect(suggestions[0]!.source_tasks).toEqual([ + { id: 1, title: "Fix frontend CI" }, + ]); + }); + + test("renders draft and approval commands with the skill install warning", () => { + const patternId = candidateForChannel("slack"); + db.upsert_skill_draft( + patternId, + "ready", + "fix-ci-investigation", + "Reusable CI investigation workflow.", + "recipe", + "---\nname: fix-ci-investigation\n---\n# Fix CI\n", + ); + + const suggestion = collect_im_skill_suggestions(db, { + channel: "slack", + })[0]!; + const text = render_im_skill_suggestion_text(suggestion); + + expect(text).toContain("Skill suggestion: fix-ci-investigation"); + expect(text).toContain("Source tasks:"); + expect(text).toContain("/draft-skill"); + expect(text).toContain("/approve-skill"); + expect(text).toContain("/dismiss-skill"); + expect(text).toContain("~/.agentforge/skills"); + expect(text).toContain("~/.claude/skills"); + expect(text).toContain("~/.agents/skills"); + }); + + test("suggestion state suppresses repeated sends and records shown drafts", () => { + expect(db.should_send_im_skill_suggestion(7, "slack", "C1")).toBe(true); + + db.upsert_im_skill_suggestion({ + pattern_id: 7, + channel: "slack", + target: "C1", + status: "suggested", + metadata: { message_ts: "1.0" }, + }); + + const row = db.get_im_skill_suggestion(7, "slack", "C1")!; + expect(row["status"]).toBe("suggested"); + expect(row["metadata"]).toEqual({ message_ts: "1.0" }); + expect(db.should_send_im_skill_suggestion(7, "slack", "C1")).toBe(false); + + db.mark_im_skill_suggestion_draft_shown(7, "slack", "C1"); + + const shown = db.get_im_skill_suggestion(7, "slack", "C1")!; + expect(shown["draft_shown_at"]).toBeTruthy(); + + db.mark_im_skill_suggestion_status(7, "slack", "C1", "dismissed"); + + const dismissed = db.get_im_skill_suggestion(7, "slack", "C1")!; + expect(dismissed["status"]).toBe("dismissed"); + expect(dismissed["dismissed_at"]).toBeTruthy(); + }); +}); diff --git a/backend/tests/slack-channel.test.ts b/backend/tests/slack-channel.test.ts index 45562ff..45db332 100644 --- a/backend/tests/slack-channel.test.ts +++ b/backend/tests/slack-channel.test.ts @@ -8,9 +8,11 @@ import { expect, mock, test } from "bun:test"; import { bus_notify, + InboundMessageType, MessageBus, makeOutboundMessage, OutboundMessageType, + type InboundMessage, } from "../src/bus.ts"; import { _hooks as dir_hooks } from "../src/channels/dir_utils.ts"; import { SlackChannel } from "../src/channels/slack.ts"; @@ -21,6 +23,32 @@ class StubDB implements SlackTaskDB { settings: Record = {}; tasks: Record> = {}; updated: Array<[number, Record]> = []; + runbooks: Record[] = [ + { + name: "็œ‹-pr", + aliases: [], + description: "็œ‹ PR", + source_type: "template", + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "Review this pull request:\n{{raw_args}}", + default_agent: null, + confirmation_policy: "auto", + enabled: true, + }, + { + name: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + aliases: [], + description: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + source_type: "template", + source_id: null, + command_schema: { args: [] }, + prompt_template: "ๆฃ€ๆŸฅๅ‘ๅธƒ้ฃŽ้™ฉ", + default_agent: null, + confirmation_policy: "required", + enabled: true, + }, + ]; get_setting(key: string, defaultValue: string | null = null): string | null { return this.settings[key] ?? defaultValue; @@ -41,15 +69,70 @@ class StubDB implements SlackTaskDB { ...updates, }; } + + get_im_runbooks(enabled_only: boolean = false): Record[] { + return enabled_only + ? this.runbooks.filter((runbook) => runbook["enabled"] !== false) + : this.runbooks; + } } class StubScheduler { submitted: Task[] = []; + inbound: InboundMessage[] = []; + nextBriefId = 1; submit_task(task: Task): number { this.submitted.push(task); return this.submitted.length; } + + handle_inbound_message(msg: InboundMessage): Record { + this.inbound.push(msg); + if (msg.type === InboundMessageType.CREATE_BRIEF) { + return { brief_id: this.nextBriefId++, status: "draft" }; + } + if (msg.type === InboundMessageType.CONFIRM_BRIEF) { + return { task_id: this.submitted.length + 1, status: "created" }; + } + if (msg.type === InboundMessageType.DISCARD_BRIEF) { + return { brief_id: msg.payload["brief_id"], status: "discarded" }; + } + if (msg.type === InboundMessageType.RUN_RUNBOOK) { + if (msg.payload["name"] === "ๆฃ€ๆŸฅๅ‘ๅธƒ") { + return { + brief_id: this.nextBriefId++, + runbook: msg.payload["name"], + status: "draft", + }; + } + return { + runbook: msg.payload["name"], + status: "created", + task_id: this.submitted.length + 1, + }; + } + if (msg.type === InboundMessageType.SKILL_SUGGESTION_ACTION) { + const action = String(msg.payload["action"]); + if (action === "show") { + return { + pattern_id: msg.payload["pattern_id"], + status: "ready", + text: "Skill suggestion: fix-ci-investigation\n\nDraft preview:\n# Fix CI", + }; + } + return { + pattern_id: msg.payload["pattern_id"], + status: + action === "draft" + ? "drafting" + : action === "approve" + ? "approved" + : "dismissed", + }; + } + return { status: "ignored" }; + } } /** โ‰™ the MagicMock web client injected by the pytest helper. */ @@ -238,6 +321,10 @@ test("test_help_command_and_word", async () => { expect(texts.length).toBe(2); for (const t of texts) { expect(t).toContain("AgentForge Bot"); + expect(t).toContain("/็œ‹ๆŠฅ้”™"); + expect(t).toContain("custom command"); + expect(t).toContain("/run-draft"); + expect(t).toContain("/cancel-draft"); } }); @@ -247,6 +334,106 @@ test("test_unknown_command_replies_help", async () => { expect(last_text(web)).toContain("AgentForge Bot"); }); +test("test_brief_command_is_not_the_draft_entrypoint", async () => { + const scheduler = new StubScheduler(); + const { channel, web } = _make_channel(undefined, scheduler); + + await with_resolved_dir("~/repo", () => + channel._handle_user_message( + "/brief fix the login redirect", + "C1", + null, + "1.0", + ), + ); + + expect(scheduler.submitted).toHaveLength(0); + expect(scheduler.inbound).toHaveLength(0); + expect(last_text(web)).toContain("AgentForge Bot"); +}); + +test("test_confirm_and_discard_brief_commands_use_text_fallback", async () => { + const scheduler = new StubScheduler(); + const { channel, bus, web } = _make_channel(undefined, scheduler); + + await channel._handle_user_message("/run-draft 4", "C1", null, "2.0"); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.CONFIRM_BRIEF); + expect(scheduler.inbound[0]!.payload["brief_id"]).toBe(4); + expect(channel._task_origin.get(1)).toEqual(["C1", "2.0", "2.0"]); + expect(channel._thread_ts_map.get("2.0")).toBe(1); + expect(bus.get_task_source(1)).toBe("slack"); + expect(last_text(web)).toContain("Task #1"); + expect(last_text(web)).toContain("Thinking"); + + await channel._handle_user_message("/cancel-draft #4", "C1", null, "3.0"); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.DISCARD_BRIEF); + expect(scheduler.inbound[1]!.payload["brief_id"]).toBe(4); + expect(last_text(web)).toContain("discarded"); +}); + +test("test_runbook_commands_use_text_fallback", async () => { + const scheduler = new StubScheduler(); + const { channel, bus, web } = _make_channel(undefined, scheduler); + + await with_resolved_dir("~/repo", () => + channel._handle_user_message( + "/็œ‹-pr https://github.com/acme/app/pull/42", + "C1", + null, + "4.0", + ), + ); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[0]!.payload["name"]).toBe("็œ‹-pr"); + expect(scheduler.inbound[0]!.payload["raw_args"]).toBe( + "https://github.com/acme/app/pull/42", + ); + expect(scheduler.inbound[0]!.payload["working_dir"]).toBe("~/repo"); + expect(channel._task_origin.get(1)).toEqual(["C1", "4.0", "4.0"]); + expect(channel._thread_ts_map.get("4.0")).toBe(1); + expect(bus.get_task_source(1)).toBe("slack"); + expect(last_text(web)).toContain("Command /็œ‹-pr"); + expect(last_text(web)).toContain("Task #1"); + + await channel._handle_user_message("/ๆฃ€ๆŸฅๅ‘ๅธƒ", "C1", null, "5.0"); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[1]!.payload["name"]).toBe("ๆฃ€ๆŸฅๅ‘ๅธƒ"); + expect(last_text(web)).toContain("Draft task #1"); + expect(last_text(web)).toContain("/run-draft 1"); +}); + +test("test_skill_suggestion_commands_use_text_fallback", async () => { + const scheduler = new StubScheduler(); + const { channel, web } = _make_channel(undefined, scheduler); + + await channel._handle_user_message("/draft-skill 4", "C1", null, "6.0"); + + expect(scheduler.inbound[0]!.type).toBe( + InboundMessageType.SKILL_SUGGESTION_ACTION, + ); + expect(scheduler.inbound[0]!.payload["action"]).toBe("draft"); + expect(scheduler.inbound[0]!.payload["pattern_id"]).toBe(4); + expect(scheduler.inbound[0]!.payload["source_channel"]).toBe("slack"); + expect(scheduler.inbound[0]!.payload["target"]).toBe("C1"); + expect(last_text(web)).toContain("Skill draft"); + + await channel._handle_user_message("/show-skill #4", "C1", null, "7.0"); + expect(scheduler.inbound[1]!.payload["action"]).toBe("show"); + expect(last_text(web)).toContain("Draft preview"); + + await channel._handle_user_message("/approve-skill 4", "C1", null, "8.0"); + expect(scheduler.inbound[2]!.payload["action"]).toBe("approve"); + expect(last_text(web)).toContain("approved"); + + await channel._handle_user_message("/dismiss-skill 4", "C1", null, "9.0"); + expect(scheduler.inbound[3]!.payload["action"]).toBe("dismiss"); + expect(last_text(web)).toContain("dismissed"); +}); + // โ”€โ”€ commands โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ test("test_cmd_status_usage_and_not_found", async () => { diff --git a/backend/tests/task-briefs.test.ts b/backend/tests/task-briefs.test.ts new file mode 100644 index 0000000..0077740 --- /dev/null +++ b/backend/tests/task-briefs.test.ts @@ -0,0 +1,115 @@ +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { TaskDB } from "../src/db.ts"; +import { makeTaskBrief } from "../src/types.ts"; + +describe("task briefs", () => { + let tmpDir: string; + let db: TaskDB; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-briefs-")); + db = new TaskDB(path.join(tmpDir, "briefs.db")); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("task briefs round-trip structured fields", () => { + const brief = makeTaskBrief({ + title: "Fix auth", + goal: "Fix login redirect", + context_summary: "Forwarded QA report", + acceptance_criteria: ["Identify cause", "Patch minimal code"], + working_dir: "~/workspace/app", + working_dir_confidence: "high", + agent: "codex", + risk_level: "normal", + needs_confirmation: true, + source_channel: "telegram", + source_ref: "chat-1:msg-2", + source_metadata: { chat_id: "chat-1" }, + }); + + const id = db.add_task_brief(brief); + const loaded = db.get_task_brief(id)!; + + expect(loaded["id"]).toBe(id); + expect(loaded["status"]).toBe("draft"); + expect(loaded["title"]).toBe("Fix auth"); + expect(loaded["goal"]).toBe("Fix login redirect"); + expect(loaded["context_summary"]).toBe("Forwarded QA report"); + expect(loaded["acceptance_criteria"]).toEqual([ + "Identify cause", + "Patch minimal code", + ]); + expect(loaded["working_dir"]).toBe("~/workspace/app"); + expect(loaded["working_dir_confidence"]).toBe("high"); + expect(loaded["agent"]).toBe("codex"); + expect(loaded["risk_level"]).toBe("normal"); + expect(loaded["needs_confirmation"]).toBe(true); + expect(loaded["source_channel"]).toBe("telegram"); + expect(loaded["source_ref"]).toBe("chat-1:msg-2"); + expect(loaded["source_metadata"]).toEqual({ chat_id: "chat-1" }); + expect(loaded["created_task_id"]).toBeNull(); + expect(loaded["created_at"]).toBeTruthy(); + expect(loaded["updated_at"]).toBeTruthy(); + }); + + test("task brief status transitions are persisted", () => { + const id = db.add_task_brief( + makeTaskBrief({ + title: "Fix auth", + goal: "Fix login redirect", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + }), + ); + + db.discard_task_brief(id); + expect(db.get_task_brief(id)!["status"]).toBe("discarded"); + + const confirmedId = db.add_task_brief( + makeTaskBrief({ + title: "Fix auth again", + goal: "Fix login redirect again", + source_channel: "telegram", + source_ref: "chat-1:msg-3", + }), + ); + db.confirm_task_brief(confirmedId, 42); + const confirmed = db.get_task_brief(confirmedId)!; + expect(confirmed["status"]).toBe("converted"); + expect(confirmed["created_task_id"]).toBe(42); + }); + + test("task brief updates only accept known columns", () => { + const id = db.add_task_brief( + makeTaskBrief({ + title: "Fix auth", + goal: "Fix login redirect", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + }), + ); + + db.update_task_brief(id, { + title: "Fix auth v2", + acceptance_criteria: ["Patch", "Test"], + source_metadata: { edited: true }, + }); + + const updated = db.get_task_brief(id)!; + expect(updated["title"]).toBe("Fix auth v2"); + expect(updated["acceptance_criteria"]).toEqual(["Patch", "Test"]); + expect(updated["source_metadata"]).toEqual({ edited: true }); + expect(() => db.update_task_brief(id, { made_up_column: "nope" })).toThrow( + "Invalid task brief column", + ); + }); +}); diff --git a/backend/tests/telegram-channel.test.ts b/backend/tests/telegram-channel.test.ts index aca2ecb..038eda9 100644 --- a/backend/tests/telegram-channel.test.ts +++ b/backend/tests/telegram-channel.test.ts @@ -14,9 +14,11 @@ import os from "node:os"; import path from "node:path"; import { + InboundMessageType, MessageBus, makeOutboundMessage, OutboundMessageType, + type InboundMessage, } from "../src/bus.ts"; import { _hooks } from "../src/channels/dir_utils.ts"; import { @@ -39,6 +41,32 @@ class StubDB { updated: Array<[number, Record]> = []; runs: unknown = []; events: unknown = []; + runbooks: Record[] = [ + { + name: "็œ‹-pr", + aliases: [], + description: "็œ‹ PR", + source_type: "template", + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "Review this pull request:\n{{raw_args}}", + default_agent: null, + confirmation_policy: "auto", + enabled: true, + }, + { + name: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + aliases: [], + description: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + source_type: "template", + source_id: null, + command_schema: { args: [] }, + prompt_template: "ๆฃ€ๆŸฅๅ‘ๅธƒ้ฃŽ้™ฉ", + default_agent: null, + confirmation_policy: "required", + enabled: true, + }, + ]; get_setting(key: string, defaultValue: string | null = null): string | null { return this.settings.get(key) ?? defaultValue; @@ -66,15 +94,70 @@ class StubDB { get_run_output_events(_run_id: number, _limit?: number): unknown { return this.events; } + + get_im_runbooks(enabled_only: boolean = false): Record[] { + return enabled_only + ? this.runbooks.filter((runbook) => runbook["enabled"] !== false) + : this.runbooks; + } } class StubScheduler { submitted: Task[] = []; + inbound: InboundMessage[] = []; + nextBriefId = 1; submit_task(task: Task): number { this.submitted.push(task); return this.submitted.length; } + + handle_inbound_message(msg: InboundMessage): Record { + this.inbound.push(msg); + if (msg.type === InboundMessageType.CREATE_BRIEF) { + return { brief_id: this.nextBriefId++, status: "draft" }; + } + if (msg.type === InboundMessageType.CONFIRM_BRIEF) { + return { task_id: this.submitted.length + 1, status: "created" }; + } + if (msg.type === InboundMessageType.DISCARD_BRIEF) { + return { brief_id: msg.payload["brief_id"], status: "discarded" }; + } + if (msg.type === InboundMessageType.RUN_RUNBOOK) { + if (msg.payload["name"] === "ๆฃ€ๆŸฅๅ‘ๅธƒ") { + return { + brief_id: this.nextBriefId++, + runbook: msg.payload["name"], + status: "draft", + }; + } + return { + runbook: msg.payload["name"], + status: "created", + task_id: this.submitted.length + 1, + }; + } + if (msg.type === InboundMessageType.SKILL_SUGGESTION_ACTION) { + const action = String(msg.payload["action"]); + if (action === "show") { + return { + pattern_id: msg.payload["pattern_id"], + status: "ready", + text: "Skill suggestion: fix-ci-investigation\n\nDraft preview:\n# Fix CI", + }; + } + return { + pattern_id: msg.payload["pattern_id"], + status: + action === "draft" + ? "drafting" + : action === "approve" + ? "approved" + : "dismissed", + }; + } + return { status: "ignored" }; + } } // โ”€โ”€ FakeApi: recording stand-in for the fetch seam (โ‰™ AsyncMock bot) โ”€โ”€ @@ -95,6 +178,9 @@ class FakeApi { if (err) throw err; if (this.results.has(method)) return this.results.get(method); if (method === "getUpdates") return []; + if (method === "sendMessage") { + return { message_id: 1000 + this.calls.length }; + } return null; }; @@ -418,6 +504,150 @@ test("test_handle_text_message_creates_task", async () => { expect(api.callsFor("sendMessage").length).toBe(0); }); +test("test_brief_command_is_not_the_draft_entrypoint", async () => { + const { channel, api, db, scheduler } = _make_channel(); + _hooks.extract_working_dir_with_claude = async () => "~/repo"; + db.settings.set("default_agent", "codex"); + + await channel._handle_text_message( + _fake_update({ + text: "/brief fix the login redirect", + chat_id: 10, + message_id: 222, + user_id: 7, + }), + _ctx(), + ); + + expect(scheduler.submitted).toHaveLength(1); + expect(scheduler.submitted[0]!.prompt).toBe("/brief fix the login redirect"); + expect(db.updated).toEqual([]); + expect(scheduler.inbound).toHaveLength(0); + expect(api.callsFor("sendMessage")).toHaveLength(0); +}); + +test("test_confirm_and_discard_brief_commands_use_text_fallback", async () => { + const { channel, api, scheduler } = _make_channel(); + + await channel._handle_text_message( + _fake_update({ + text: "/run-draft 4", + chat_id: 10, + message_id: 333, + user_id: 7, + }), + _ctx(), + ); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.CONFIRM_BRIEF); + expect(scheduler.inbound[0]!.payload["brief_id"]).toBe(4); + expect(channel._task_origin.get(1)).toEqual([10, 333, 333]); + expect(channel._get_chat_current_task(10)).toBe(1); + expect(channel.bus.get_task_source(1)).toBe("telegram"); + expect(api.lastText()).toContain("Task #1"); + expect(api.lastText()).toContain("Thinking"); + + await channel._handle_text_message( + _fake_update({ + text: "/cancel-draft #4", + chat_id: 10, + message_id: 334, + user_id: 7, + }), + _ctx(), + ); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.DISCARD_BRIEF); + expect(scheduler.inbound[1]!.payload["brief_id"]).toBe(4); + expect(api.lastText()).toContain("discarded"); +}); + +test("test_runbook_commands_use_text_fallback", async () => { + const { channel, api, scheduler } = _make_channel(); + _hooks.extract_working_dir_with_claude = async () => "~/repo"; + + await channel._handle_text_message( + _fake_update({ + text: "/็œ‹-pr https://github.com/acme/app/pull/42", + chat_id: 10, + message_id: 335, + user_id: 7, + }), + _ctx(), + ); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[0]!.payload["name"]).toBe("็œ‹-pr"); + expect(scheduler.inbound[0]!.payload["raw_args"]).toBe( + "https://github.com/acme/app/pull/42", + ); + expect(scheduler.inbound[0]!.payload["working_dir"]).toBe("~/repo"); + expect(channel._task_origin.get(1)).toEqual([10, 335, 335]); + expect(channel._get_chat_current_task(10)).toBe(1); + expect(channel.bus.get_task_source(1)).toBe("telegram"); + expect(api.lastText()).toContain("Command /็œ‹-pr"); + expect(api.lastText()).toContain("Task #1"); + + await channel._handle_text_message( + _fake_update({ + text: "/ๆฃ€ๆŸฅๅ‘ๅธƒ", + chat_id: 10, + message_id: 336, + user_id: 7, + }), + _ctx(), + ); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[1]!.payload["name"]).toBe("ๆฃ€ๆŸฅๅ‘ๅธƒ"); + expect(api.lastText()).toContain("Draft task #1"); + expect(api.lastText()).toContain("/run-draft 1"); +}); + +test("test_skill_suggestion_commands_use_text_fallback", async () => { + const { channel, api, scheduler } = _make_channel(); + + await channel._handle_text_message( + _fake_update({ + text: "/draft-skill 4", + chat_id: 10, + message_id: 337, + user_id: 7, + }), + _ctx(), + ); + + expect(scheduler.inbound[0]!.type).toBe( + InboundMessageType.SKILL_SUGGESTION_ACTION, + ); + expect(scheduler.inbound[0]!.payload["action"]).toBe("draft"); + expect(scheduler.inbound[0]!.payload["pattern_id"]).toBe(4); + expect(scheduler.inbound[0]!.payload["source_channel"]).toBe("telegram"); + expect(scheduler.inbound[0]!.payload["target"]).toBe("10"); + expect(api.lastText()).toContain("Skill draft"); + + await channel._handle_text_message( + _fake_update({ text: "/show-skill #4", chat_id: 10, message_id: 338 }), + _ctx(), + ); + expect(scheduler.inbound[1]!.payload["action"]).toBe("show"); + expect(api.lastText()).toContain("Draft preview"); + + await channel._handle_text_message( + _fake_update({ text: "/approve-skill 4", chat_id: 10, message_id: 339 }), + _ctx(), + ); + expect(scheduler.inbound[2]!.payload["action"]).toBe("approve"); + expect(api.lastText()).toContain("approved"); + + await channel._handle_text_message( + _fake_update({ text: "/dismiss-skill 4", chat_id: 10, message_id: 340 }), + _ctx(), + ); + expect(scheduler.inbound[3]!.payload["action"]).toBe("dismiss"); + expect(api.lastText()).toContain("dismissed"); +}); + test("test_handle_text_message_resumes_current_chat_session", async () => { const { channel, api, db, scheduler } = _make_channel(); @@ -555,10 +785,13 @@ test("test_cmd_help_authorised_and_not", async () => { const { channel, api } = _make_channel({ allowed_users: [1] }); const ok = _fake_update({ user_id: 1 }); await channel._cmd_help(ok, _ctx()); - expect(api.lastText()).not.toContain("task"); expect(api.lastText()).toContain("/new"); expect(api.lastText()).not.toContain("\\."); expect(api.lastText()).toContain("current session"); + expect(api.lastText()).toContain("/็œ‹ๆŠฅ้”™"); + expect(api.lastText()).toContain("custom command"); + expect(api.lastText()).toContain("/run-draft"); + expect(api.lastText()).toContain("/cancel-draft"); expect(api.callsFor("sendMessage").length).toBe(1); expect(api.callsFor("sendMessage")[0]!.params).not.toHaveProperty( "parse_mode", @@ -877,7 +1110,6 @@ test("test_send_truncates_long_result", async () => { const { channel, api } = _make_channel(); _patch_loop(channel); channel._task_origin.set(10, [10, 100, 100]); - api.results.set("sendMessage", { message_id: 3 }); const long = "x".repeat(20000); await channel.send( @@ -888,7 +1120,9 @@ test("test_send_truncates_long_result", async () => { }), ); - expect(api.lastText()).toContain("(truncated)"); + const sends = api.callsFor("sendMessage"); + expect(sends.length).toBe(1); + expect(String(sends[0]!.params["text"])).toContain("truncated"); }); // โ”€โ”€ lifecycle โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ diff --git a/backend/tests/weixin-channel.test.ts b/backend/tests/weixin-channel.test.ts index 82f7269..8ac9d16 100644 --- a/backend/tests/weixin-channel.test.ts +++ b/backend/tests/weixin-channel.test.ts @@ -9,9 +9,11 @@ import os from "node:os"; import path from "node:path"; import { + InboundMessageType, makeOutboundMessage, MessageBus, OutboundMessageType, + type InboundMessage, } from "../src/bus.ts"; import { _hooks as dirHooks } from "../src/channels/dir_utils.ts"; import { @@ -32,6 +34,32 @@ class StubDB implements WeixinTaskDB { updated: Array<[number, Row]> = []; runs: unknown = []; events: unknown = []; + runbooks: Row[] = [ + { + name: "็œ‹-pr", + aliases: [], + description: "็œ‹ PR", + source_type: "template", + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "Review this pull request:\n{{raw_args}}", + default_agent: null, + confirmation_policy: "auto", + enabled: true, + }, + { + name: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + aliases: [], + description: "ๆฃ€ๆŸฅๅ‘ๅธƒ", + source_type: "template", + source_id: null, + command_schema: { args: [] }, + prompt_template: "ๆฃ€ๆŸฅๅ‘ๅธƒ้ฃŽ้™ฉ", + default_agent: null, + confirmation_policy: "required", + enabled: true, + }, + ]; get_task(task_id: number): Row | null { return this.tasks.get(task_id) ?? null; @@ -60,15 +88,70 @@ class StubDB implements WeixinTaskDB { get_run_output_events(_run_id: number, _limit?: number): unknown { return this.events; } + + get_im_runbooks(enabled_only: boolean = false): Row[] { + return enabled_only + ? this.runbooks.filter((runbook) => runbook["enabled"] !== false) + : this.runbooks; + } } class StubScheduler implements WeixinScheduler { submitted: Task[] = []; + inbound: InboundMessage[] = []; + nextBriefId = 1; submit_task(task: Task): number { this.submitted.push(task); return this.submitted.length; } + + handle_inbound_message(msg: InboundMessage): Row { + this.inbound.push(msg); + if (msg.type === InboundMessageType.CREATE_BRIEF) { + return { brief_id: this.nextBriefId++, status: "draft" }; + } + if (msg.type === InboundMessageType.CONFIRM_BRIEF) { + return { task_id: this.submitted.length + 1, status: "created" }; + } + if (msg.type === InboundMessageType.DISCARD_BRIEF) { + return { brief_id: msg.payload["brief_id"], status: "discarded" }; + } + if (msg.type === InboundMessageType.RUN_RUNBOOK) { + if (msg.payload["name"] === "ๆฃ€ๆŸฅๅ‘ๅธƒ") { + return { + brief_id: this.nextBriefId++, + runbook: msg.payload["name"], + status: "draft", + }; + } + return { + runbook: msg.payload["name"], + status: "created", + task_id: this.submitted.length + 1, + }; + } + if (msg.type === InboundMessageType.SKILL_SUGGESTION_ACTION) { + const action = String(msg.payload["action"]); + if (action === "show") { + return { + pattern_id: msg.payload["pattern_id"], + status: "ready", + text: "Skill suggestion: fix-ci-investigation\n\nDraft preview:\n# Fix CI", + }; + } + return { + pattern_id: msg.payload["pattern_id"], + status: + action === "draft" + ? "drafting" + : action === "approve" + ? "approved" + : "dismissed", + }; + } + return { status: "ignored" }; + } } const originalHooks = { ..._hooks }; @@ -591,6 +674,171 @@ describe("Weixin inbound messages", () => { expect(replies[1]).not.toContain("โ–ถ๏ธ"); }); + test("brief command is not the draft entrypoint", async () => { + const proc = fakeBridgeProcess(); + const { channel, db, scheduler } = makeChannel(); + channel._running = true; + channel._bridge_proc = proc; + db.settings["default_agent"] = "codex"; + + await withResolvedDir("/tmp/repo", async () => { + await channel._handle_message_event({ + text: "/brief fix the login redirect", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-brief", + }); + }); + + expect(scheduler.submitted).toHaveLength(1); + expect(scheduler.submitted[0]!.prompt).toBe( + "/brief fix the login redirect", + ); + expect(scheduler.inbound).toHaveLength(0); + expect(channel._get_peer_current_task("acct:peer")).toBe(1); + }); + + test("confirm and discard brief commands use text fallback", async () => { + const proc = fakeBridgeProcess(); + const { channel, bus, scheduler } = makeChannel(); + channel._running = true; + channel._bridge_proc = proc; + + await channel._handle_message_event({ + text: "/run-draft 4", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-confirm", + }); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.CONFIRM_BRIEF); + expect(scheduler.inbound[0]!.payload["brief_id"]).toBe(4); + expect(channel._task_origin.get(1)).toEqual({ + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-confirm", + }); + expect(channel._get_peer_current_task("acct:peer")).toBe(1); + expect(bus.get_task_source(1)).toBe("weixin"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("Task #1"); + + await channel._handle_message_event({ + text: "/cancel-draft #4", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-discard", + }); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.DISCARD_BRIEF); + expect(scheduler.inbound[1]!.payload["brief_id"]).toBe(4); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("discarded"); + }); + + test("runbook commands use text fallback", async () => { + const proc = fakeBridgeProcess(); + const { channel, bus, scheduler } = makeChannel(); + channel._running = true; + channel._bridge_proc = proc; + + await withResolvedDir("/tmp/repo", async () => { + await channel._handle_message_event({ + text: "/็œ‹-pr https://github.com/acme/app/pull/42", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-runbook", + }); + }); + + expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[0]!.payload["name"]).toBe("็œ‹-pr"); + expect(scheduler.inbound[0]!.payload["raw_args"]).toBe( + "https://github.com/acme/app/pull/42", + ); + expect(scheduler.inbound[0]!.payload["working_dir"]).toBe("/tmp/repo"); + expect(channel._task_origin.get(1)).toEqual({ + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-runbook", + }); + expect(channel._get_peer_current_task("acct:peer")).toBe(1); + expect(bus.get_task_source(1)).toBe("weixin"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("Command /็œ‹-pr"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("Task #1"); + + await channel._handle_message_event({ + text: "/ๆฃ€ๆŸฅๅ‘ๅธƒ", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-release", + }); + + expect(scheduler.inbound[1]!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound[1]!.payload["name"]).toBe("ๆฃ€ๆŸฅๅ‘ๅธƒ"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("Draft task #1"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("/run-draft 1"); + }); + + test("skill suggestion commands use text fallback", async () => { + const proc = fakeBridgeProcess(); + const { channel, scheduler } = makeChannel(); + channel._running = true; + channel._bridge_proc = proc; + + await channel._handle_message_event({ + text: "/draft-skill 4", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-draft-skill", + }); + + expect(scheduler.inbound[0]!.type).toBe( + InboundMessageType.SKILL_SUGGESTION_ACTION, + ); + expect(scheduler.inbound[0]!.payload["action"]).toBe("draft"); + expect(scheduler.inbound[0]!.payload["pattern_id"]).toBe(4); + expect(scheduler.inbound[0]!.payload["source_channel"]).toBe("weixin"); + expect(scheduler.inbound[0]!.payload["target"]).toBe("peer"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("Skill draft"); + + await channel._handle_message_event({ + text: "/show-skill #4", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-show-skill", + }); + expect(scheduler.inbound[1]!.payload["action"]).toBe("show"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("Draft preview"); + + await channel._handle_message_event({ + text: "/approve-skill 4", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-approve-skill", + }); + expect(scheduler.inbound[2]!.payload["action"]).toBe("approve"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("approved"); + + await channel._handle_message_event({ + text: "/dismiss-skill 4", + account_id: "acct", + peer_id: "peer", + context_token: "ctx", + message_id: "msg-dismiss-skill", + }); + expect(scheduler.inbound[3]!.payload["action"]).toBe("dismiss"); + expect(writtenCommands(proc).at(-1)!["text"]).toContain("dismissed"); + }); + test("room-session resume survives channel restart", async () => { const proc = fakeBridgeProcess(); const bus = new MessageBus(); diff --git a/docs/superpowers/plans/2026-06-14-im-inbox-phase-1-task-briefs.md b/docs/superpowers/plans/2026-06-14-im-inbox-phase-1-task-briefs.md new file mode 100644 index 0000000..cb35c50 --- /dev/null +++ b/docs/superpowers/plans/2026-06-14-im-inbox-phase-1-task-briefs.md @@ -0,0 +1,398 @@ +# IM Inbox Phase 1 Task Briefs Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Build the first working slice of AgentForge IM Inbox: durable TaskBrief drafts that can be created, edited, confirmed into real tasks, and discarded through the backend API and shared message flow. + +**Architecture:** Add TaskBrief as a shared backend model, persisted in SQLite and exposed through REST endpoints. Confirmation converts a brief into the existing TaskScheduler path, so execution, board updates, output streaming, and notifications remain unchanged. Channel adapters will stay thin and can opt into brief creation after the backend contract is stable. + +**Tech Stack:** Bun, TypeScript, bun:sqlite, bun:test, existing AgentForge REST API and scheduler. + +--- + +## Scope + +This plan implements Phase 1 from `docs/superpowers/specs/2026-06-14-agentforge-im-inbox-design.md`. + +In scope: + +- `TaskBrief` type and `makeTaskBrief` helper. +- `task_briefs` SQLite table and CRUD methods. +- REST API: + - `GET /api/task-briefs` + - `GET /api/task-briefs/:id` + - `POST /api/task-briefs` + - `PATCH /api/task-briefs/:id` + - `POST /api/task-briefs/:id/confirm` + - `POST /api/task-briefs/:id/discard` +- Confirmation creates a real AgentForge task through `TaskScheduler.submit_task`. +- Tests for DB behavior, API behavior, and confirmation invariants. + +Out of scope for this first slice: + +- Agent-based classification/extraction. +- IM runbooks. +- Scheduled digests. +- Skill suggestion delivery. +- Rich Feishu/Slack cards. +- Migrating all existing channel message handlers to create briefs automatically. + +The existing Telegram streaming changes in the worktree are unrelated and must be preserved. + +## File Structure + +- Modify `backend/src/types.ts` + - Add `TaskBriefStatus`, `TaskBrief`, and `makeTaskBrief`. +- Modify `backend/src/db.ts` + - Add `task_briefs` table. + - Add `add_task_brief`, `get_task_brief`, `get_task_briefs`, `update_task_brief`, `confirm_task_brief`, and `discard_task_brief`. +- Modify `backend/src/api.ts` + - Add request parsing/validation helpers for briefs. + - Add task brief REST routes. + - Confirm endpoint creates a normal `Task`. +- Add `backend/tests/task-briefs.test.ts` + - Unit tests for SQLite model behavior. +- Modify `backend/tests/api-handler.test.ts` + - API tests for create/list/get/update/confirm/discard. + +## Task 1: TaskBrief Model and DB Migration + +**Files:** + +- Modify: `backend/src/types.ts` +- Modify: `backend/src/db.ts` +- Test: `backend/tests/task-briefs.test.ts` + +- [ ] **Step 1: Write failing DB tests** + +Create `backend/tests/task-briefs.test.ts` with tests for: + +```ts +test("task briefs round-trip structured fields", () => { + const brief = makeTaskBrief({ + title: "Fix auth", + goal: "Fix login redirect", + context_summary: "Forwarded QA report", + acceptance_criteria: ["Identify cause", "Patch minimal code"], + working_dir: "~/workspace/app", + working_dir_confidence: "high", + agent: "codex", + risk_level: "normal", + needs_confirmation: true, + source_channel: "telegram", + source_ref: "chat-1:msg-2", + source_metadata: { chat_id: "chat-1" }, + }); + + const id = db.add_task_brief(brief); + const loaded = db.get_task_brief(id)!; + + expect(loaded["status"]).toBe("draft"); + expect(loaded["title"]).toBe("Fix auth"); + expect(loaded["acceptance_criteria"]).toEqual([ + "Identify cause", + "Patch minimal code", + ]); + expect(loaded["source_metadata"]).toEqual({ chat_id: "chat-1" }); +}); +``` + +Also test that `discard_task_brief` changes status to `discarded`, and `confirm_task_brief` records `created_task_id` and changes status to `converted`. + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/task-briefs.test.ts +``` + +Expected: fail because `makeTaskBrief` and DB methods do not exist. + +- [ ] **Step 3: Implement model and DB methods** + +Add the TaskBrief type in `backend/src/types.ts`, mirroring existing snake_case style: + +```ts +export const TaskBriefStatus = { + DRAFT: "draft", + CONVERTED: "converted", + DISCARDED: "discarded", + EXPIRED: "expired", +} as const; +export type TaskBriefStatus = + (typeof TaskBriefStatus)[keyof typeof TaskBriefStatus]; + +export interface TaskBrief { + id: number | null; + status: TaskBriefStatus; + title: string; + goal: string; + context_summary: string; + acceptance_criteria: string[]; + working_dir: string | null; + working_dir_confidence: string; + agent: string | null; + risk_level: string; + needs_confirmation: boolean; + source_channel: string; + source_ref: string; + source_metadata: Record; + created_task_id: number | null; + created_at: string | null; + updated_at: string | null; + expires_at: string | null; +} +``` + +In `backend/src/db.ts`, create `task_briefs` during `_init_db`, then add serializer/deserializer methods that JSON-encode `acceptance_criteria` and `source_metadata` and convert `needs_confirmation` to/from integer. + +- [ ] **Step 4: Verify tests pass** + +Run: + +```bash +cd backend && bun test tests/task-briefs.test.ts +``` + +Expected: all tests pass. + +## Task 2: TaskBrief API + +**Files:** + +- Modify: `backend/src/api.ts` +- Modify: `backend/tests/api-handler.test.ts` + +- [ ] **Step 1: Write failing API tests** + +Add tests to `backend/tests/api-handler.test.ts`: + +```ts +test("task brief API creates lists updates and discards drafts", async () => { + const createdRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/task-briefs", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + title: "Fix auth", + goal: "Fix login redirect", + context_summary: "Forwarded QA report", + acceptance_criteria: ["Identify cause", "Patch minimal code"], + working_dir: ".", + working_dir_confidence: "high", + agent: "codex", + source_channel: "telegram", + source_ref: "chat-1:msg-2", + source_metadata: { chat_id: "chat-1" }, + }), + }), + ); + expect(createdRes.status).toBe(201); + const created = await createdRes.json(); + const id = Number(created["id"]); + + const listed = await json( + new Request("http://127.0.0.1:9712/api/task-briefs"), + ); + expect(listed["briefs"]).toHaveLength(1); + + const patched = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/task-briefs/${id}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ title: "Fix auth v2" }), + }), + ); + expect(patched.status).toBe(200); + + const discarded = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/task-briefs/${id}/discard`, { + method: "POST", + }), + ); + expect(discarded.status).toBe(200); +}); +``` + +Add a second test for confirmation: + +```ts +test("confirming a task brief creates a normal task", async () => { + const created = await json(/* POST /api/task-briefs with goal and source */); + const confirmedRes = await handleApiRequest( + ctx, + new Request( + `http://127.0.0.1:9712/api/task-briefs/${created["id"]}/confirm`, + { method: "POST" }, + ), + ); + expect(confirmedRes.status).toBe(201); + const confirmed = await confirmedRes.json(); + expect(confirmed["status"]).toBe("created"); + + const task = db.get_task(Number(confirmed["task_id"]))!; + expect(task["title"]).toContain("Fix auth"); + expect(task["prompt"]).toContain("Goal:"); + expect(task["prompt"]).toContain("Acceptance criteria:"); +}); +``` + +- [ ] **Step 2: Verify API tests fail** + +Run: + +```bash +cd backend && bun test tests/api-handler.test.ts --test-name-pattern "task brief" +``` + +Expected: fail with 404s for `/api/task-briefs`. + +- [ ] **Step 3: Implement routes** + +Add task brief routes before the generic `/api/tasks/:id` routes: + +- `GET /api/task-briefs` returns `{ briefs: [...] }`. +- `GET /api/task-briefs/:id` returns one brief or 404. +- `POST /api/task-briefs` validates `title`, `goal`, `source_channel`, and `source_ref`. +- `PATCH /api/task-briefs/:id` only edits draft briefs. +- `POST /api/task-briefs/:id/discard` marks the brief discarded. +- `POST /api/task-briefs/:id/confirm` converts the brief into a normal task through `ctx.scheduler.submit_task`. + +The confirm prompt format should be deterministic: + +```text +Goal: + + +Context: + + +Acceptance criteria: +1. +2. +``` + +- [ ] **Step 4: Verify API tests pass** + +Run: + +```bash +cd backend && bun test tests/api-handler.test.ts --test-name-pattern "task brief" +``` + +Expected: tests pass. + +## Task 3: MessageBus Type Surface for Brief Actions + +**Files:** + +- Modify: `backend/src/bus.ts` +- Modify: `backend/tests/bus.test.ts` + +- [ ] **Step 1: Write failing bus tests** + +Extend `backend/tests/bus.test.ts` to assert that these inbound types round-trip: + +```ts +InboundMessageType.CREATE_BRIEF +InboundMessageType.CONFIRM_BRIEF +InboundMessageType.DISCARD_BRIEF +``` + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/bus.test.ts --test-name-pattern brief +``` + +Expected: fail because the enum values are missing. + +- [ ] **Step 3: Add inbound types** + +Add enum values in `backend/src/bus.ts`: + +```ts +CREATE_BRIEF: "create_brief", +CONFIRM_BRIEF: "confirm_brief", +DISCARD_BRIEF: "discard_brief", +``` + +Document payload shape in the `InboundMessage` comment. + +- [ ] **Step 4: Verify bus tests pass** + +Run: + +```bash +cd backend && bun test tests/bus.test.ts --test-name-pattern brief +``` + +Expected: tests pass. + +## Task 4: Scheduler Handling for Brief Inbound Actions + +**Files:** + +- Modify: `backend/src/scheduler.ts` +- Test: add or extend an existing scheduler/bus test file. + +- [ ] **Step 1: Write failing scheduler tests** + +Add tests proving: + +- `CREATE_BRIEF` adds a draft and does not create a task. +- `CONFIRM_BRIEF` converts an existing draft into a task. +- `DISCARD_BRIEF` marks a draft discarded. + +- [ ] **Step 2: Verify tests fail** + +Run the focused scheduler test. + +- [ ] **Step 3: Implement inbound handling** + +Extend the scheduler's MessageBus handling path to call the new DB methods. Keep existing `CREATE_TASK`, `RESUME_TASK`, `RESPOND_TASK`, `CANCEL_TASK`, and `STATUS_QUERY` behavior unchanged. + +- [ ] **Step 4: Verify tests pass** + +Run the focused scheduler test. + +## Task 5: Quality Gate + +**Files:** + +- All files changed above. + +- [ ] **Step 1: Run focused backend tests** + +```bash +cd backend && bun test tests/task-briefs.test.ts tests/api-handler.test.ts tests/bus.test.ts +``` + +- [ ] **Step 2: Run backend CI gate** + +```bash +make check +``` + +If formatting fails: + +```bash +make format +make check +``` + +Expected: backend typecheck, prettier check, and tests pass. + +## Self-Review + +- Phase 1 creates a working, testable backend slice without requiring channel rewrites. +- Confirmation reuses the existing scheduler path, so task execution remains centralized. +- Rich IM UI and agent classification are explicitly deferred. +- The plan preserves the current Telegram worktree changes and does not require reverting them. +- Every production behavior listed here has a corresponding failing-test-first step. diff --git a/docs/superpowers/plans/2026-06-14-im-inbox-phase-2-runbooks.md b/docs/superpowers/plans/2026-06-14-im-inbox-phase-2-runbooks.md new file mode 100644 index 0000000..6cbcbc0 --- /dev/null +++ b/docs/superpowers/plans/2026-06-14-im-inbox-phase-2-runbooks.md @@ -0,0 +1,1218 @@ +# IM Inbox Phase 2 Runbooks Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add a shared IM Runbook system so common AgentForge workflows can be previewed or started from REST APIs and existing IM channels. + +**Architecture:** Introduce a shared `RunbookRegistry` that owns command parsing, builtin definitions, argument validation, and expansion into either a `TaskBrief` draft or an immediate `Task`. Persist user-defined runbooks in `im_runbooks`, but keep builtin runbooks code-defined so Phase 2 works before any template library UI. Channels stay thin: they detect a runbook command, send `PREVIEW_RUNBOOK` or `RUN_RUNBOOK` to the scheduler, and render text fallback replies. + +**Tech Stack:** Bun, TypeScript, bun:sqlite, bun:test, existing `MessageBus`, `TaskScheduler`, `TaskDB`, and channel adapters. + +--- + +## Scope + +This plan implements Phase 2 from `docs/superpowers/specs/2026-06-14-agentforge-im-inbox-design.md`. + +In scope: + +- `RUN_RUNBOOK` and `PREVIEW_RUNBOOK` inbound message types. +- Shared `RunbookRegistry` with builtin commands: + - `/review-pr ` + - `/fix-ci ` + - `/summarize-thread` + - `/write-tests ` + - `/release-check` + - `/scan-skills` +- `im_runbooks` SQLite table and CRUD methods for user-defined runbooks. +- REST API: + - `GET /api/im-runbooks` + - `POST /api/im-runbooks` + - `PATCH /api/im-runbooks/:id` + - `DELETE /api/im-runbooks/:id` + - `POST /api/im-runbooks/:name/preview` + - `POST /api/im-runbooks/:name/run` +- Scheduler handling for preview/runbook inbound actions. +- Text fallback in Slack, Feishu, Weixin, and Telegram. + +Out of scope: + +- Template Library UI. +- Rich Feishu/Slack interactive cards. +- Agent-based command inference. +- Scheduled digests. +- Skill suggestion delivery. + +## File Structure + +- Create `backend/src/runbooks.ts` + - Define runbook types, builtin registry, command parser, validators, and expansion helpers. +- Add `backend/tests/runbooks.test.ts` + - Unit tests for command parsing, builtin argument validation, and expansion results. +- Modify `backend/src/types.ts` + - Add `RunbookSourceType`, `RunbookConfirmationPolicy`, and `IMRunbook`. +- Modify `backend/src/db.ts` + - Add `im_runbooks` table and CRUD methods. +- Add `backend/tests/runbook-db.test.ts` + - SQLite tests for user-defined runbook persistence. +- Modify `backend/src/bus.ts` + - Add `RUN_RUNBOOK` and `PREVIEW_RUNBOOK` inbound types and payload docs. +- Modify `backend/tests/bus.test.ts` + - Round-trip tests for the new inbound types. +- Modify `backend/src/scheduler.ts` + - Add `RunbookRegistry` field and `handle_inbound_message` branches. +- Add `backend/tests/scheduler-runbooks.test.ts` + - Scheduler tests for preview/run actions. +- Modify `backend/src/api.ts` + - Add runbook CRUD and preview/run endpoints. +- Modify `backend/tests/api-handler.test.ts` + - API tests for builtin listing, user runbook CRUD, preview, and run. +- Modify channel files: + - `backend/src/channels/slack.ts` + - `backend/src/channels/feishu.ts` + - `backend/src/channels/weixin.ts` + - `backend/src/channels/telegram.ts` +- Modify channel tests: + - `backend/tests/slack-channel.test.ts` + - `backend/tests/feishu-channel.test.ts` + - `backend/tests/weixin-channel.test.ts` + - `backend/tests/telegram-channel.test.ts` + +## Task 1: Shared Runbook Registry + +**Files:** + +- Create: `backend/src/runbooks.ts` +- Test: `backend/tests/runbooks.test.ts` + +- [ ] **Step 1: Write failing parser and expansion tests** + +Create `backend/tests/runbooks.test.ts`: + +```ts +import { describe, expect, test } from "bun:test"; + +import { + BUILTIN_RUNBOOKS, + RunbookConfirmationPolicy, + expand_runbook, + parse_runbook_command, +} from "../src/runbooks.ts"; + +describe("runbooks", () => { + test("parse_runbook_command recognizes builtins and arguments", () => { + expect(parse_runbook_command("/review-pr https://github.com/acme/app/pull/42")).toEqual({ + name: "review-pr", + args: ["https://github.com/acme/app/pull/42"], + raw_args: "https://github.com/acme/app/pull/42", + }); + expect(parse_runbook_command("/fix-ci https://github.com/acme/app/actions/runs/123")).toEqual({ + name: "fix-ci", + args: ["https://github.com/acme/app/actions/runs/123"], + raw_args: "https://github.com/acme/app/actions/runs/123", + }); + expect(parse_runbook_command("/status 1")).toBeNull(); + expect(parse_runbook_command("review-pr https://github.com/acme/app/pull/42")).toBeNull(); + }); + + test("builtin registry contains the minimum runbooks", () => { + expect(BUILTIN_RUNBOOKS.map((runbook) => runbook.name)).toEqual([ + "review-pr", + "fix-ci", + "summarize-thread", + "write-tests", + "release-check", + "scan-skills", + ]); + expect(BUILTIN_RUNBOOKS.find((runbook) => runbook.name === "review-pr")!.confirmation_policy).toBe( + RunbookConfirmationPolicy.AUTO, + ); + expect(BUILTIN_RUNBOOKS.find((runbook) => runbook.name === "release-check")!.confirmation_policy).toBe( + RunbookConfirmationPolicy.REQUIRED, + ); + }); + + test("expand_runbook validates arguments and creates deterministic prompts", () => { + const review = expand_runbook({ + name: "review-pr", + raw_args: "https://github.com/acme/app/pull/42", + source_channel: "slack", + source_ref: "C1:1.0", + working_dir: "~/repo", + agent: "codex", + source_metadata: { channel_id: "C1" }, + }); + + expect(review.ok).toBe(true); + expect(review.expansion!.confirmation_policy).toBe("auto"); + expect(review.expansion!.task.title).toBe("[Runbook] Review PR"); + expect(review.expansion!.task.prompt).toContain("Review this pull request:"); + expect(review.expansion!.task.prompt).toContain("https://github.com/acme/app/pull/42"); + expect(review.expansion!.task.working_dir).toBe("~/repo"); + expect(review.expansion!.task.tags).toBe("runbook,review-pr,slack"); + + const release = expand_runbook({ + name: "release-check", + raw_args: "", + source_channel: "telegram", + source_ref: "10:20", + working_dir: "~/repo", + agent: "claude", + source_metadata: { chat_id: 10 }, + }); + + expect(release.ok).toBe(true); + expect(release.expansion!.confirmation_policy).toBe("required"); + expect(release.expansion!.brief.title).toBe("Release readiness check"); + expect(release.expansion!.brief.needs_confirmation).toBe(true); + expect(release.expansion!.brief.acceptance_criteria).toContain("Run or identify the relevant release checks."); + }); + + test("expand_runbook returns usage errors for invalid arguments", () => { + expect(expand_runbook({ + name: "review-pr", + raw_args: "", + source_channel: "slack", + source_ref: "C1:1.0", + }).error).toContain("Usage: /review-pr "); + + expect(expand_runbook({ + name: "unknown", + raw_args: "", + source_channel: "slack", + source_ref: "C1:1.0", + }).error).toContain("Unknown runbook"); + }); +}); +``` + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/runbooks.test.ts +``` + +Expected: fail because `backend/src/runbooks.ts` does not exist. + +- [ ] **Step 3: Implement runbook registry** + +Create `backend/src/runbooks.ts`: + +```ts +import { makeTask, ScheduleType, type Task } from "./types.ts"; +import { makeTaskBrief, type TaskBrief } from "./types.ts"; + +export const RunbookConfirmationPolicy = { + AUTO: "auto", + REQUIRED: "required", +} as const; +export type RunbookConfirmationPolicy = + (typeof RunbookConfirmationPolicy)[keyof typeof RunbookConfirmationPolicy]; + +export const RunbookSourceType = { + BUILTIN: "builtin", + TEMPLATE: "template", + SKILL: "skill", +} as const; +export type RunbookSourceType = + (typeof RunbookSourceType)[keyof typeof RunbookSourceType]; + +export interface RunbookDefinition { + name: string; + aliases: string[]; + description: string; + source_type: RunbookSourceType; + source_id: string | null; + command_schema: Record; + prompt_template: string; + default_agent: string | null; + confirmation_policy: RunbookConfirmationPolicy; + enabled: boolean; +} + +export interface ParsedRunbookCommand { + name: string; + args: string[]; + raw_args: string; +} + +export interface RunbookExpansion { + runbook: RunbookDefinition; + confirmation_policy: RunbookConfirmationPolicy; + task: Task; + brief: TaskBrief; +} + +export type RunbookResult = + | { ok: true; expansion: RunbookExpansion } + | { ok: false; error: string }; + +type ExpandArgs = { + name: string; + raw_args: string; + source_channel: string; + source_ref: string; + source_metadata?: Record; + working_dir?: string | null; + agent?: string | null; +}; + +type BuiltinSpec = RunbookDefinition & { + usage: string; + title: (rawArgs: string) => string; + goal: (rawArgs: string) => string; + acceptance: (rawArgs: string) => string[]; + validate: (rawArgs: string) => string | null; +}; + +function firstArg(rawArgs: string): string { + return rawArgs.trim().split(/\s+/)[0] ?? ""; +} + +function requireArg(usage: string): (rawArgs: string) => string | null { + return (rawArgs) => (firstArg(rawArgs) ? null : `Usage: ${usage}`); +} + +function noValidation(_rawArgs: string): string | null { + return null; +} + +export const BUILTIN_RUNBOOKS: BuiltinSpec[] = [ + { + name: "review-pr", + aliases: [], + description: "Review a pull request and summarize risks, bugs, and missing tests.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.AUTO, + enabled: true, + usage: "/review-pr ", + validate: requireArg("/review-pr "), + title: () => "[Runbook] Review PR", + goal: (rawArgs) => `Review this pull request:\n${firstArg(rawArgs)}`, + acceptance: () => [ + "Identify correctness, reliability, security, and test coverage risks.", + "Call out specific files or changes when possible.", + "Summarize whether the PR is safe to merge and what should change first.", + ], + }, + { + name: "fix-ci", + aliases: [], + description: "Inspect a failing CI run and propose or apply the minimal fix.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: ["url"] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/fix-ci ", + validate: requireArg("/fix-ci "), + title: () => "Fix failing CI run", + goal: (rawArgs) => `Investigate this failing CI run and fix the minimal issue:\n${firstArg(rawArgs)}`, + acceptance: () => [ + "Identify the failing job and likely cause.", + "Patch the minimal relevant code or configuration.", + "Run the focused tests or explain why they cannot run.", + ], + }, + { + name: "summarize-thread", + aliases: [], + description: "Summarize the current IM thread into a task brief or notes.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: [] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/summarize-thread", + validate: noValidation, + title: () => "Summarize IM thread", + goal: () => "Summarize the current IM thread into a clear task brief or notes.", + acceptance: () => [ + "Extract the concrete asks, decisions, and open questions.", + "Separate facts from assumptions.", + "Produce a concise summary suitable for creating a task.", + ], + }, + { + name: "write-tests", + aliases: [], + description: "Add or improve tests for a file or module.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: ["path"] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.AUTO, + enabled: true, + usage: "/write-tests ", + validate: requireArg("/write-tests "), + title: (rawArgs) => `[Runbook] Write tests for ${firstArg(rawArgs)}`, + goal: (rawArgs) => `Add or improve tests for ${firstArg(rawArgs)}.`, + acceptance: () => [ + "Identify the behavior that needs coverage.", + "Add focused tests using the repo's existing test style.", + "Run the relevant test command or explain why it cannot run.", + ], + }, + { + name: "release-check", + aliases: [], + description: "Run a release readiness checklist for the active repo.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: [] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/release-check", + validate: noValidation, + title: () => "Release readiness check", + goal: () => "Run a release readiness checklist for the active repository.", + acceptance: () => [ + "Inspect the current repository state and recent changes.", + "Run or identify the relevant release checks.", + "Report blockers, risks, and the recommended release decision.", + ], + }, + { + name: "scan-skills", + aliases: [], + description: "Trigger a manual Skill Library scan.", + source_type: RunbookSourceType.BUILTIN, + source_id: null, + command_schema: { args: [] }, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.REQUIRED, + enabled: true, + usage: "/scan-skills", + validate: noValidation, + title: () => "Scan for reusable skills", + goal: () => "Run a manual Skill Library scan for recurring task patterns.", + acceptance: () => [ + "Scan recent completed runs for recurring workflows.", + "Summarize any candidate skills or report that none were found.", + "Do not install any skill without explicit approval.", + ], + }, +]; + +export function parse_runbook_command(text: string): ParsedRunbookCommand | null { + const trimmed = text.trim(); + const match = /^\/([a-z-]+)(?:\s+([\s\S]*))?$/i.exec(trimmed); + if (!match) return null; + const name = match[1]!.toLowerCase(); + const raw_args = (match[2] ?? "").trim(); + const known = find_runbook(name); + if (!known) return null; + return { + name: known.name, + raw_args, + args: raw_args ? raw_args.split(/\s+/) : [], + }; +} + +export function find_runbook(nameOrAlias: string): BuiltinSpec | null { + const normalized = nameOrAlias.toLowerCase(); + return ( + BUILTIN_RUNBOOKS.find( + (runbook) => + runbook.name === normalized || + runbook.aliases.some((alias) => alias.toLowerCase() === normalized), + ) ?? null + ); +} + +export function expand_runbook(args: ExpandArgs): RunbookResult { + const runbook = find_runbook(args.name); + if (!runbook) return { ok: false, error: `Unknown runbook: ${args.name}` }; + const validationError = runbook.validate(args.raw_args); + if (validationError) return { ok: false, error: validationError }; + + const title = runbook.title(args.raw_args); + const goal = runbook.goal(args.raw_args); + const acceptance = runbook.acceptance(args.raw_args); + const prompt = [ + `Runbook: /${runbook.name}`, + "", + "Goal:", + goal, + "", + "Acceptance criteria:", + ...acceptance.map((criterion, index) => `${index + 1}. ${criterion}`), + ].join("\n"); + const agent = args.agent ?? runbook.default_agent; + const task = makeTask({ + title, + prompt, + working_dir: args.working_dir ?? null, + schedule_type: ScheduleType.IMMEDIATE, + tags: `runbook,${runbook.name},${args.source_channel}`, + agent, + }); + const brief = makeTaskBrief({ + title: title.replace(/^\[Runbook]\s*/, ""), + goal, + context_summary: `Created from /${runbook.name} ${args.raw_args}`.trim(), + acceptance_criteria: acceptance, + working_dir: args.working_dir ?? null, + working_dir_confidence: args.working_dir ? "high" : "unknown", + agent, + risk_level: runbook.confirmation_policy === "required" ? "elevated" : "normal", + needs_confirmation: runbook.confirmation_policy === "required", + source_channel: args.source_channel, + source_ref: args.source_ref, + source_metadata: args.source_metadata ?? {}, + }); + + return { + ok: true, + expansion: { + runbook, + confirmation_policy: runbook.confirmation_policy, + task, + brief, + }, + }; +} +``` + +- [ ] **Step 4: Verify tests pass** + +Run: + +```bash +cd backend && bun test tests/runbooks.test.ts +``` + +Expected: all runbook parser and expansion tests pass. + +- [ ] **Step 5: Commit** + +```bash +git add backend/src/runbooks.ts backend/tests/runbooks.test.ts +git commit -m "Add shared IM runbook registry" +``` + +## Task 2: Runbook Persistence + +**Files:** + +- Modify: `backend/src/types.ts` +- Modify: `backend/src/db.ts` +- Test: `backend/tests/runbook-db.test.ts` + +- [ ] **Step 1: Write failing DB tests** + +Create `backend/tests/runbook-db.test.ts`: + +```ts +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { TaskDB } from "../src/db.ts"; +import { makeIMRunbook } from "../src/types.ts"; + +describe("im runbooks db", () => { + let tmpDir: string; + let db: TaskDB; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-runbooks-")); + db = new TaskDB(path.join(tmpDir, "runbooks.db")); + }); + + afterEach(() => { + db.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("im runbooks round-trip aliases schema and enabled state", () => { + const id = db.add_im_runbook( + makeIMRunbook({ + name: "triage-issue", + aliases: ["issue-triage"], + description: "Triage an issue", + source_type: "template", + source_id: "template-1", + command_schema: { args: ["url"] }, + prompt_template: "Triage {{url}}", + default_agent: "codex", + confirmation_policy: "required", + enabled: true, + }), + ); + + const loaded = db.get_im_runbook(id)!; + expect(loaded["name"]).toBe("triage-issue"); + expect(loaded["aliases"]).toEqual(["issue-triage"]); + expect(loaded["command_schema"]).toEqual({ args: ["url"] }); + expect(loaded["enabled"]).toBe(true); + }); + + test("im runbooks update list and delete", () => { + const id = db.add_im_runbook(makeIMRunbook({ name: "custom-check", prompt_template: "Check it" })); + db.update_im_runbook(id, { enabled: false, description: "Disabled" }); + expect(db.get_im_runbook(id)!["enabled"]).toBe(false); + expect(db.get_im_runbooks()).toHaveLength(1); + db.delete_im_runbook(id); + expect(db.get_im_runbook(id)).toBeNull(); + }); +}); +``` + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/runbook-db.test.ts +``` + +Expected: fail because `makeIMRunbook` and DB methods do not exist. + +- [ ] **Step 3: Add IMRunbook type and DB methods** + +In `backend/src/types.ts`, add: + +```ts +export const RunbookSourceType = { + BUILTIN: "builtin", + TEMPLATE: "template", + SKILL: "skill", +} as const; +export type RunbookSourceType = + (typeof RunbookSourceType)[keyof typeof RunbookSourceType]; + +export const RunbookConfirmationPolicy = { + AUTO: "auto", + REQUIRED: "required", +} as const; +export type RunbookConfirmationPolicy = + (typeof RunbookConfirmationPolicy)[keyof typeof RunbookConfirmationPolicy]; + +export interface IMRunbook { + id: number | null; + name: string; + aliases: string[]; + description: string; + source_type: RunbookSourceType; + source_id: string | null; + command_schema: Record; + prompt_template: string; + default_agent: string | null; + confirmation_policy: RunbookConfirmationPolicy; + enabled: boolean; + created_at: string | null; + updated_at: string | null; +} + +export function makeIMRunbook(partial: Partial = {}): IMRunbook { + return { + id: null, + name: "", + aliases: [], + description: "", + source_type: RunbookSourceType.TEMPLATE, + source_id: null, + command_schema: {}, + prompt_template: "", + default_agent: null, + confirmation_policy: RunbookConfirmationPolicy.AUTO, + enabled: true, + created_at: null, + updated_at: null, + ...partial, + }; +} +``` + +In `backend/src/db.ts`, add `im_runbooks` schema during `_init_db`: + +```sql +CREATE TABLE IF NOT EXISTS im_runbooks ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL UNIQUE, + aliases TEXT NOT NULL DEFAULT '[]', + description TEXT NOT NULL DEFAULT '', + source_type TEXT NOT NULL, + source_id TEXT, + command_schema TEXT NOT NULL DEFAULT '{}', + prompt_template TEXT NOT NULL, + default_agent TEXT, + confirmation_policy TEXT NOT NULL DEFAULT 'auto', + enabled INTEGER NOT NULL DEFAULT 1, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL +) +``` + +Then add methods: + +```ts +add_im_runbook(runbook: IMRunbook): number; +get_im_runbook(id: number): Row | null; +get_im_runbook_by_name(name: string): Row | null; +get_im_runbooks(): Row[]; +update_im_runbook(id: number, updates: Record): void; +delete_im_runbook(id: number): void; +``` + +Use the same JSON encode/decode pattern as `task_briefs`. + +- [ ] **Step 4: Verify tests pass** + +Run: + +```bash +cd backend && bun test tests/runbook-db.test.ts +``` + +Expected: DB persistence tests pass. + +- [ ] **Step 5: Commit** + +```bash +git add backend/src/types.ts backend/src/db.ts backend/tests/runbook-db.test.ts +git commit -m "Add IM runbook persistence" +``` + +## Task 3: MessageBus and Scheduler Runbook Actions + +**Files:** + +- Modify: `backend/src/bus.ts` +- Modify: `backend/src/scheduler.ts` +- Modify: `backend/tests/bus.test.ts` +- Test: `backend/tests/scheduler-runbooks.test.ts` + +- [ ] **Step 1: Write failing bus and scheduler tests** + +Extend `backend/tests/bus.test.ts` with: + +```ts +test("test_message_bus_round_trips_runbook_inbound_messages", async () => { + const bus = new MessageBus(); + const channel = new TestChannel(bus, { get_task: () => null }); + + channel.publish_inbound( + channel._make_inbound(InboundMessageType.PREVIEW_RUNBOOK, { + name: "review-pr", + raw_args: "https://github.com/acme/app/pull/42", + }), + ); + channel.publish_inbound( + channel._make_inbound(InboundMessageType.RUN_RUNBOOK, { + name: "review-pr", + raw_args: "https://github.com/acme/app/pull/42", + }), + ); + + expect((await bus.get_inbound())!.type).toBe("preview_runbook"); + expect((await bus.get_inbound())!.type).toBe("run_runbook"); +}); +``` + +Create `backend/tests/scheduler-runbooks.test.ts`: + +```ts +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { InboundMessageType, makeInboundMessage } from "../src/bus.ts"; +import { TaskDB } from "../src/db.ts"; +import { TaskScheduler } from "../src/scheduler.ts"; + +describe("scheduler runbook inbound actions", () => { + let tmpDir: string; + let db: TaskDB; + let scheduler: TaskScheduler; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-runbooks-")); + db = new TaskDB(path.join(tmpDir, "tasks.db")); + scheduler = new TaskScheduler(db); + }); + + afterEach(() => { + scheduler.stop(); + db.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("PREVIEW_RUNBOOK returns expansion without creating task or brief", () => { + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.PREVIEW_RUNBOOK, + source: "slack", + payload: { + name: "review-pr", + raw_args: "https://github.com/acme/app/pull/42", + working_dir: "~/repo", + }, + reply_to: "C1", + metadata: { channel_id: "C1" }, + }), + ); + + expect(result["status"]).toBe("preview"); + expect(result["runbook"]).toBe("review-pr"); + expect(result["task"]).toEqual(expect.objectContaining({ title: "[Runbook] Review PR" })); + expect(db.get_tasks()).toHaveLength(0); + expect(db.get_task_briefs()).toHaveLength(0); + }); + + test("RUN_RUNBOOK creates immediate tasks for auto runbooks", () => { + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.RUN_RUNBOOK, + source: "slack", + payload: { + name: "review-pr", + raw_args: "https://github.com/acme/app/pull/42", + working_dir: "~/repo", + }, + reply_to: "C1", + metadata: { channel_id: "C1" }, + }), + ); + + expect(result["status"]).toBe("created"); + expect(result["task_id"]).toBe(1); + expect(db.get_task(1)!["tags"]).toContain("runbook"); + }); + + test("RUN_RUNBOOK creates briefs for required-confirmation runbooks", () => { + const result = scheduler.handle_inbound_message( + makeInboundMessage({ + type: InboundMessageType.RUN_RUNBOOK, + source: "telegram", + payload: { + name: "release-check", + raw_args: "", + working_dir: "~/repo", + }, + reply_to: "10", + metadata: { chat_id: 10 }, + }), + ); + + expect(result["status"]).toBe("draft"); + expect(result["brief_id"]).toBe(1); + expect(db.get_task_brief(1)!["title"]).toBe("Release readiness check"); + expect(db.get_tasks()).toHaveLength(0); + }); +}); +``` + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/bus.test.ts --test-name-pattern runbook +cd backend && bun test tests/scheduler-runbooks.test.ts +``` + +Expected: fail because inbound enum values and scheduler branches do not exist. + +- [ ] **Step 3: Add inbound types and scheduler branches** + +In `backend/src/bus.ts`, add: + +```ts +RUN_RUNBOOK: "run_runbook", +PREVIEW_RUNBOOK: "preview_runbook", +``` + +Update the inbound payload comment: + +```ts + * RUN_RUNBOOK -> {"name", "raw_args", "working_dir", "agent"} + * PREVIEW_RUNBOOK -> {"name", "raw_args", "working_dir", "agent"} +``` + +In `backend/src/scheduler.ts`, import `expand_runbook` and add branches in `handle_inbound_message`: + +```ts +if (msg.type === InboundMessageType.PREVIEW_RUNBOOK) { + return this._preview_runbook(msg); +} +if (msg.type === InboundMessageType.RUN_RUNBOOK) { + return this._run_runbook(msg); +} +``` + +Add helpers: + +```ts +_preview_runbook(msg: InboundMessage): Row { + const result = expand_runbook({ + name: String(msg.payload["name"] ?? ""), + raw_args: String(msg.payload["raw_args"] ?? ""), + source_channel: msg.source, + source_ref: String(msg.payload["source_ref"] ?? msg.reply_to ?? msg.source), + source_metadata: msg.metadata, + working_dir: (msg.payload["working_dir"] as string | null | undefined) ?? null, + agent: (msg.payload["agent"] as string | null | undefined) ?? null, + }); + if (!result.ok) throw new Error(result.error); + return { + status: "preview", + runbook: result.expansion.runbook.name, + confirmation_policy: result.expansion.confirmation_policy, + task: result.expansion.task, + brief: result.expansion.brief, + }; +} + +_run_runbook(msg: InboundMessage): Row { + const preview = this._preview_runbook(msg); + if (preview["confirmation_policy"] === "required") { + const brief_id = this.db.add_task_brief(preview["brief"] as TaskBrief); + return { status: "draft", brief_id, runbook: preview["runbook"] }; + } + const task_id = this.submit_task(preview["task"] as Task); + return { status: "created", task_id, runbook: preview["runbook"] }; +} +``` + +- [ ] **Step 4: Verify tests pass** + +Run: + +```bash +cd backend && bun test tests/bus.test.ts --test-name-pattern runbook +cd backend && bun test tests/scheduler-runbooks.test.ts +``` + +Expected: bus and scheduler runbook tests pass. + +- [ ] **Step 5: Commit** + +```bash +git add backend/src/bus.ts backend/src/scheduler.ts backend/tests/bus.test.ts backend/tests/scheduler-runbooks.test.ts +git commit -m "Add scheduler runbook actions" +``` + +## Task 4: Runbook REST API + +**Files:** + +- Modify: `backend/src/api.ts` +- Modify: `backend/tests/api-handler.test.ts` + +- [ ] **Step 1: Write failing API tests** + +Add to `backend/tests/api-handler.test.ts`: + +```ts +test("runbook API lists builtins and previews runbooks", async () => { + const listed = await json(new Request("http://127.0.0.1:9712/api/im-runbooks")); + expect(listed["runbooks"].some((runbook: any) => runbook["name"] === "review-pr")).toBe(true); + + const previewRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks/review-pr/preview", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + raw_args: "https://github.com/acme/app/pull/42", + working_dir: "~/repo", + source_channel: "api", + source_ref: "manual", + }), + }), + ); + expect(previewRes.status).toBe(200); + const preview = await previewRes.json(); + expect(preview["status"]).toBe("preview"); + expect(preview["task"]["title"]).toBe("[Runbook] Review PR"); +}); + +test("runbook API creates user runbooks and runs builtins", async () => { + const createdRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + name: "custom-check", + aliases: ["ccheck"], + description: "Run a custom check", + source_type: "template", + prompt_template: "Check the repo", + confirmation_policy: "required", + }), + }), + ); + expect(createdRes.status).toBe(201); + const created = await createdRes.json(); + + const patched = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/im-runbooks/${created["id"]}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ enabled: false }), + }), + ); + expect(patched.status).toBe(200); + + const runRes = await handleApiRequest( + ctx, + new Request("http://127.0.0.1:9712/api/im-runbooks/release-check/run", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ working_dir: "~/repo", source_channel: "api", source_ref: "manual" }), + }), + ); + expect(runRes.status).toBe(201); + const run = await runRes.json(); + expect(run["status"]).toBe("draft"); + expect(db.get_task_brief(Number(run["brief_id"]))).not.toBeNull(); + + const deleted = await handleApiRequest( + ctx, + new Request(`http://127.0.0.1:9712/api/im-runbooks/${created["id"]}`, { method: "DELETE" }), + ); + expect(deleted.status).toBe(200); +}); +``` + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/api-handler.test.ts --test-name-pattern runbook +``` + +Expected: fail with 404s for `/api/im-runbooks`. + +- [ ] **Step 3: Implement API routes** + +Add route handling before generic task routes: + +```ts +if (path === "/api/im-runbooks" && method === "GET") { + return jsonResponse({ + runbooks: builtin_runbooks_for_api().concat(ctx.db.get_im_runbooks()), + }); +} +if (path === "/api/im-runbooks" && method === "POST") { + const body = await readJson(request); + const id = ctx.db.add_im_runbook(validateIMRunbookPayload(body)); + return jsonResponse({ id, ...ctx.db.get_im_runbook(id) }, 201); +} +``` + +Add routes for: + +```text +PATCH /api/im-runbooks/:id +DELETE /api/im-runbooks/:id +POST /api/im-runbooks/:name/preview +POST /api/im-runbooks/:name/run +``` + +Preview/run should call `ctx.scheduler.handle_inbound_message(makeInboundMessage(...))` so API behavior matches IM behavior. + +- [ ] **Step 4: Verify API tests pass** + +Run: + +```bash +cd backend && bun test tests/api-handler.test.ts --test-name-pattern runbook +``` + +Expected: runbook API tests pass. + +- [ ] **Step 5: Commit** + +```bash +git add backend/src/api.ts backend/tests/api-handler.test.ts +git commit -m "Add IM runbook API" +``` + +## Task 5: Channel Text Fallback + +**Files:** + +- Modify: `backend/src/channels/slack.ts` +- Modify: `backend/src/channels/feishu.ts` +- Modify: `backend/src/channels/weixin.ts` +- Modify: `backend/src/channels/telegram.ts` +- Modify tests for all four channels. + +- [ ] **Step 1: Write failing channel tests** + +For each channel test file, add tests matching that channel's helper style. The Slack test should look like: + +```ts +test("test_runbook_command_runs_or_creates_draft_from_text_fallback", async () => { + const scheduler = new StubScheduler(); + const { channel, web } = _make_channel(undefined, scheduler); + + await with_resolved_dir("~/repo", () => + channel._handle_user_message("/review-pr https://github.com/acme/app/pull/42", "C1", null, "1.0"), + ); + + expect(scheduler.inbound.at(-1)!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound.at(-1)!.payload["name"]).toBe("review-pr"); + expect(scheduler.inbound.at(-1)!.payload["raw_args"]).toBe("https://github.com/acme/app/pull/42"); + expect(last_text(web)).toContain("Task #"); + + await channel._handle_user_message("/release-check", "C1", null, "2.0"); + + expect(scheduler.inbound.at(-1)!.type).toBe(InboundMessageType.RUN_RUNBOOK); + expect(scheduler.inbound.at(-1)!.payload["name"]).toBe("release-check"); + expect(last_text(web)).toContain("Draft task brief #"); +}); +``` + +Mirror the same assertions in Feishu, Weixin, and Telegram using their existing fake send helpers. + +- [ ] **Step 2: Verify tests fail** + +Run: + +```bash +cd backend && bun test tests/slack-channel.test.ts --test-name-pattern runbook +cd backend && bun test tests/feishu-channel.test.ts --test-name-pattern runbook +cd backend && bun test tests/weixin-channel.test.ts --test-name-pattern runbook +cd backend && bun test tests/telegram-channel.test.ts --test-name-pattern runbook +``` + +Expected: fail because channels do not parse runbook commands yet. + +- [ ] **Step 3: Implement shared channel rendering helpers** + +In `backend/src/runbooks.ts`, add: + +```ts +export function format_runbook_created_reply(taskId: number, runbook: string): string { + return `Task #${taskId} started from /${runbook}. Thinking โ–Œ`; +} + +export function format_runbook_brief_reply(briefId: number, runbook: string): string { + return [ + `Draft task brief #${briefId} created from /${runbook}.`, + "", + `Run: \`/confirm-brief ${briefId}\``, + `Discard: \`/discard-brief ${briefId}\``, + ].join("\n"); +} +``` + +- [ ] **Step 4: Add channel runbook branches** + +In each channel, call `parse_runbook_command(text)` after brief commands and before legacy unknown-command handling or default task creation. + +Each branch should send: + +```ts +this._make_inbound(InboundMessageType.RUN_RUNBOOK, { + name: parsed.name, + raw_args: parsed.raw_args, + source_ref, + working_dir: await resolve_working_dir(parsed.raw_args || text, channelName, this.db), + agent: resolve_agent(channelName, this.db), +}, reply_to, metadata) +``` + +Then render: + +```ts +if (result["status"] === "created") { + // map origin and start streaming when the channel supports streaming +} +if (result["status"] === "draft") { + // reply with draft instructions +} +``` + +- [ ] **Step 5: Verify channel tests pass** + +Run the four focused channel commands from Step 2 again. + +Expected: all runbook channel tests pass. + +- [ ] **Step 6: Commit** + +```bash +git add backend/src/runbooks.ts backend/src/channels/slack.ts backend/src/channels/feishu.ts backend/src/channels/weixin.ts backend/src/channels/telegram.ts backend/tests/slack-channel.test.ts backend/tests/feishu-channel.test.ts backend/tests/weixin-channel.test.ts backend/tests/telegram-channel.test.ts +git commit -m "Add IM runbook text fallback" +``` + +## Task 6: Phase 2 Quality Gate + +**Files:** + +- All changed files. + +- [ ] **Step 1: Run focused runbook tests** + +```bash +cd backend && bun test tests/runbooks.test.ts tests/runbook-db.test.ts tests/scheduler-runbooks.test.ts tests/api-handler.test.ts tests/slack-channel.test.ts tests/feishu-channel.test.ts tests/weixin-channel.test.ts tests/telegram-channel.test.ts +``` + +Expected: all focused runbook and channel tests pass. + +- [ ] **Step 2: Run backend CI gate** + +```bash +make check +``` + +If formatting fails: + +```bash +make format +make check +``` + +Expected: backend typecheck, Prettier check, and all tests pass. + +- [ ] **Step 3: Commit any final cleanup** + +```bash +git status --short +git add +git commit -m "Complete IM runbooks phase" +``` + +Skip this commit if all work was already committed task-by-task and `git status --short` is clean. + +## Self-Review + +- Spec coverage: + - Shared RunbookRegistry: Task 1. + - Builtin runbooks: Task 1. + - `im_runbooks` persistence: Task 2. + - MessageBus `RUN_RUNBOOK` and `PREVIEW_RUNBOOK`: Task 3. + - REST API: Task 4. + - Text fallback across Slack, Feishu, Telegram, Weixin: Task 5. + - Full backend quality gate: Task 6. +- Intentional gaps: + - Template Library UI and rich cards are deferred because the spec allows text fallback first. + - Skill-promoted runbooks are represented in the data model but not auto-generated in this phase. +- Placeholder scan: + - No `TODO`, `TBD`, or "similar to" placeholders remain. +- Type consistency: + - `RunbookConfirmationPolicy`, `RunbookSourceType`, `IMRunbook`, `RunbookDefinition`, `RunbookExpansion`, `RUN_RUNBOOK`, and `PREVIEW_RUNBOOK` names are used consistently across tasks. diff --git a/docs/superpowers/plans/2026-06-14-im-inbox-phase-3-digests.md b/docs/superpowers/plans/2026-06-14-im-inbox-phase-3-digests.md new file mode 100644 index 0000000..37d8a1b --- /dev/null +++ b/docs/superpowers/plans/2026-06-14-im-inbox-phase-3-digests.md @@ -0,0 +1,226 @@ +# IM Inbox Phase 3 Digests Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add IM digest preview and send flows that summarize recent AgentForge state without noisy per-event spam. + +**Architecture:** Add a shared digest composer that reads tasks, heartbeats, and skill patterns from `TaskDB` and returns a deterministic `IMDigest` object plus text fallback body. API endpoints call the composer for preview and optionally deliver the text through configured channel adapters. Scheduler support starts with a `TRIGGER_DIGEST` inbound action so the scheduling surface is shared with other IM actions; cron automation can use the same action once channel recipients are configured. + +**Tech Stack:** Bun, TypeScript, bun:sqlite, bun:test, existing `TaskDB`, `TaskScheduler`, `MessageBus`, and channel adapters. + +--- + +## Scope + +This plan implements Phase 3 from `docs/superpowers/specs/2026-06-14-agentforge-im-inbox-design.md`. + +In scope: + +- Shared digest composer with text fallback output. +- Digest content sections: + - Completed tasks. + - Needs-you tasks with `question`. + - Failed tasks. + - Heartbeat watcher decisions that are not idle. + - Skill candidates or drafts waiting for attention. + - Suggested next commands. +- `TRIGGER_DIGEST` inbound message type. +- REST API: + - `POST /api/im-digests/preview` + - `POST /api/im-digests/send` +- Digest settings surfaced through existing settings: + - `im_digest_enabled` + - `im_digest_cron` + - `im_digest_channels` + - `im_attention_digest_minutes` +- Text delivery through existing Slack, Feishu, Telegram, and Weixin channel objects when available. + +Out of scope: + +- Rich digest cards. +- UI settings controls in the renderer. +- Full cron automation loop if no recipients are configured. +- A second timer system separate from scheduler/heartbeat infrastructure. + +## File Structure + +- Create `backend/src/digests.ts` + - Define digest types, source row normalization, composer, text renderer, and recipient parser. +- Add `backend/tests/digests.test.ts` + - Unit tests for quiet empty digests, sections, suggested commands, and recipient parsing. +- Modify `backend/src/bus.ts` + - Add `TRIGGER_DIGEST`. +- Modify `backend/tests/bus.test.ts` + - Round-trip test for digest inbound action. +- Modify `backend/src/scheduler.ts` + - Handle `TRIGGER_DIGEST` by returning a preview/sendable digest payload. +- Add `backend/tests/scheduler-digests.test.ts` + - Scheduler tests for manual digest trigger and quiet behavior. +- Modify `backend/src/api.ts` + - Add preview/send endpoints and expose digest settings. +- Modify `backend/tests/api-handler.test.ts` + - API tests for preview, send, settings, and unavailable channel delivery errors. +- Modify channel adapters only as needed for small public send helpers. + +## Task 1: Digest Composer + +- [ ] **Step 1: Write failing composer tests** + +Create `backend/tests/digests.test.ts` covering: + +- Empty digest returns `has_content: false` and a quiet text body. +- Completed, failed, and question-waiting tasks produce separate sections. +- Non-idle heartbeat ticks produce watcher lines. +- Candidate/drafted skill patterns produce skill lines. +- Suggested commands include `/fix-ci ` after failed tasks and `/scan-skills` when skill items exist. +- Recipient parser accepts JSON array strings and rejects malformed entries. + +- [ ] **Step 2: Implement `backend/src/digests.ts`** + +Define: + +- `IMDigestSection` +- `IMDigest` +- `IMDigestRecipient` +- `compose_im_digest(db, options)` +- `render_im_digest_text(digest)` +- `parse_im_digest_recipients(value)` + +Keep the composer deterministic and bounded: default limit 10 rows per section. + +- [ ] **Step 3: Verify** + +Run: + +```bash +cd backend && bun test tests/digests.test.ts +``` + +- [ ] **Step 4: Commit** + +```bash +git add backend/src/digests.ts backend/tests/digests.test.ts +git commit -m "Add IM digest composer" +``` + +## Task 2: Bus and Scheduler Digest Action + +- [ ] **Step 1: Write failing bus/scheduler tests** + +Update `backend/tests/bus.test.ts` and add `backend/tests/scheduler-digests.test.ts`. + +Expected behavior: + +- `TRIGGER_DIGEST` round-trips through `MessageBus`. +- `TaskScheduler.handle_inbound_message(TRIGGER_DIGEST)` returns `{ status: "ready", digest }` when content exists. +- It returns `{ status: "quiet", digest }` when no content exists and `include_empty` is false. + +- [ ] **Step 2: Implement bus and scheduler changes** + +Add: + +- `InboundMessageType.TRIGGER_DIGEST` +- `_handle_trigger_digest(msg)` in `TaskScheduler` + +- [ ] **Step 3: Verify** + +Run: + +```bash +cd backend && bun test tests/bus.test.ts tests/scheduler-digests.test.ts tests/digests.test.ts +``` + +- [ ] **Step 4: Commit** + +```bash +git add backend/src/bus.ts backend/src/scheduler.ts backend/tests/bus.test.ts backend/tests/scheduler-digests.test.ts +git commit -m "Add scheduler IM digest action" +``` + +## Task 3: Digest API and Delivery + +- [ ] **Step 1: Write failing API tests** + +Extend `backend/tests/api-handler.test.ts` for: + +- `POST /api/im-digests/preview` returns a digest object and text body. +- `POST /api/im-digests/send` sends to an explicit recipient when the channel object is available. +- `POST /api/im-digests/send` returns `409` if no recipients are configured. +- `GET /api/settings` exposes digest settings. +- `PUT /api/settings` persists digest settings through the existing generic path. + +- [ ] **Step 2: Implement API routes** + +Add: + +- `POST /api/im-digests/preview` +- `POST /api/im-digests/send` +- `send_im_digest(ctx, recipient, text)` + +Channel delivery should use existing test seams: + +- Slack: `_reply(channel_id, null, text)` +- Feishu: `_send_message(chat_id, text)` +- Telegram: send through `_api("sendMessage", ...)` +- Weixin: `_send_message(peer_id, text)` or the existing reply helper if available + +- [ ] **Step 3: Verify** + +Run: + +```bash +cd backend && bun test tests/api-handler.test.ts tests/digests.test.ts +``` + +- [ ] **Step 4: Commit** + +```bash +git add backend/src/api.ts backend/tests/api-handler.test.ts +git commit -m "Add IM digest API" +``` + +## Task 4: Phase 3 Quality Gate + +- [ ] **Step 1: Run focused tests** + +```bash +cd backend && bun test tests/digests.test.ts tests/scheduler-digests.test.ts tests/api-handler.test.ts tests/bus.test.ts +``` + +- [ ] **Step 2: Run backend CI gate** + +```bash +make check +``` + +If formatting fails: + +```bash +make format +make check +``` + +- [ ] **Step 3: Commit final cleanup if needed** + +```bash +git status --short +git add +git commit -m "Complete IM digests phase" +``` + +Skip if clean. + +## Self-Review + +- Spec coverage: + - Digest preview/send endpoints: Task 3. + - Daily standup content shape: Task 1. + - Attention-needed section: Task 1. + - Watcher and skill sections: Task 1. + - Scheduler reuse via inbound action: Task 2. + - Existing settings path for digest settings: Task 3. +- Intentional gaps: + - Rich cards and renderer settings controls are deferred. + - Cron automation is represented through scheduler action and settings, but should only be activated when recipients are explicitly configured. +- Placeholder scan: + - No `TODO`, `TBD`, or "similar to" placeholders remain. diff --git a/docs/superpowers/plans/2026-06-14-im-inbox-phase-4-skill-suggestions.md b/docs/superpowers/plans/2026-06-14-im-inbox-phase-4-skill-suggestions.md new file mode 100644 index 0000000..2ef4410 --- /dev/null +++ b/docs/superpowers/plans/2026-06-14-im-inbox-phase-4-skill-suggestions.md @@ -0,0 +1,349 @@ +# IM Inbox Phase 4 Skill Suggestions Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Make Skill Library candidates actionable from IM by showing suggestions, starting draft generation, dismissing noisy patterns, and approving only after a draft has been shown. + +**Architecture:** Add a focused shared module for IM skill suggestion collection, command parsing, and text rendering. Persist per-channel suggestion delivery state in SQLite so repeated suggestions can be suppressed and IM approval can require an already-shown draft. Reuse the existing scheduler `trigger_skill_draft`, `approve_skill`, and `dismiss_skill_pattern` methods. + +**Tech Stack:** Bun, TypeScript, `bun:test`, SQLite via `bun:sqlite`, existing AgentForge `MessageBus`, `TaskScheduler`, and IM channel adapters. + +--- + +## File Structure + +- Create `backend/src/skill_suggestions.ts` + - Collect candidate/drafted skill patterns for an IM channel. + - Render text fallback suggestion messages. + - Parse `/draft-skill`, `/approve-skill`, and `/dismiss-skill` commands. +- Modify `backend/src/types.ts` + - Add `IMSkillSuggestionAction` enum-like constants if shared typing is needed. +- Modify `backend/src/db.ts` + - Add `im_skill_suggestions` table and CRUD helpers for suggested/draft-shown/dismissed/approved state. +- Modify `backend/src/bus.ts` + - Add `SKILL_SUGGESTION_ACTION` inbound message type. +- Modify `backend/src/scheduler.ts` + - Add `_handle_skill_suggestion_action` using existing Skill Library methods. +- Modify `backend/src/api.ts` + - Add preview/send/action endpoints and settings exposure. +- Modify `backend/src/channels/brief_utils.ts` + - Export shared parser/formatter glue for skill suggestion commands. +- Modify `backend/src/channels/{slack,feishu,telegram,weixin}.ts` + - Route text fallback commands to `SKILL_SUGGESTION_ACTION`. + +## Task 1: Shared Suggestion Collection And Rendering + +**Files:** +- Create: `backend/src/skill_suggestions.ts` +- Test: `backend/tests/skill-suggestions.test.ts` + +- [ ] **Step 1: Write the failing test** + +```ts +import { afterEach, beforeEach, describe, expect, test } from "bun:test"; +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +import { TaskDB } from "../src/db.ts"; +import { collect_im_skill_suggestions, render_im_skill_suggestion_text } from "../src/skill_suggestions.ts"; +import { makeTask } from "../src/types.ts"; + +describe("IM skill suggestions", () => { + let tmpDir: string; + let db: TaskDB; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "agentforge-skill-suggestions-")); + db = new TaskDB(path.join(tmpDir, "suggestions.db")); + }); + + afterEach(() => { + db.conn.close(); + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + test("collects candidate patterns that originated from an IM channel", () => { + const taskId = db.add_task(makeTask({ title: "Fix CI", prompt: "p", tags: "runbook,fix-ci,slack" })); + const patternId = db.upsert_skill_pattern("fix-ci-investigation", "recipe", "Investigate failed CI", taskId, 100)!; + db.upsert_skill_pattern("fix-ci-investigation", "recipe", "Investigate failed CI", taskId, 101); + db.upsert_skill_pattern("fix-ci-investigation", "recipe", "Investigate failed CI", taskId, 102); + db.set_skill_pattern_status(patternId, "candidate"); + + const suggestions = collect_im_skill_suggestions(db, { channel: "slack" }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]!.pattern_id).toBe(patternId); + expect(render_im_skill_suggestion_text(suggestions[0]!)).toContain("/draft-skill"); + }); +}); +``` + +- [ ] **Step 2: Run test to verify it fails** + +Run: `cd backend && bun test tests/skill-suggestions.test.ts` + +Expected: FAIL because `backend/src/skill_suggestions.ts` does not exist. + +- [ ] **Step 3: Implement minimal pure module** + +Create `backend/src/skill_suggestions.ts` with: + +```ts +export interface IMSkillSuggestion { + pattern_id: number; + pattern_key: string; + summary: string; + recurrence_count: number; + status: string; + draft_status: string | null; + draft_name: string | null; + draft_description: string | null; + draft_body: string | null; + source_tasks: Array<{ id: number; title: string }>; +} + +export function collect_im_skill_suggestions(db: any, opts: { channel?: string | null; limit?: number } = {}): IMSkillSuggestion[] { + // Use db.get_skill_patterns(), keep candidate rows plus rows with ready/drafting drafts. + // Filter to contributing tasks whose tags include the requested channel. +} + +export function render_im_skill_suggestion_text(suggestion: IMSkillSuggestion): string { + // Render spec-shaped text with /draft-skill, /approve-skill, and /dismiss-skill commands. +} +``` + +- [ ] **Step 4: Run test to verify it passes** + +Run: `cd backend && bun test tests/skill-suggestions.test.ts` + +Expected: PASS. + +- [ ] **Step 5: Commit** + +```bash +git add backend/src/skill_suggestions.ts backend/tests/skill-suggestions.test.ts +git commit -m "Add IM skill suggestion renderer" +``` + +## Task 2: Persist Suggestion State + +**Files:** +- Modify: `backend/src/db.ts` +- Test: `backend/tests/skill-suggestions.test.ts` + +- [ ] **Step 1: Write the failing tests** + +Add tests that: + +```ts +test("suggestion state suppresses repeated sends and records shown drafts", () => { + db.upsert_im_skill_suggestion({ pattern_id: 7, channel: "slack", target: "C1", status: "suggested" }); + expect(db.get_im_skill_suggestion(7, "slack", "C1")!["status"]).toBe("suggested"); + expect(db.should_send_im_skill_suggestion(7, "slack", "C1")).toBe(false); + + db.mark_im_skill_suggestion_draft_shown(7, "slack", "C1"); + expect(db.get_im_skill_suggestion(7, "slack", "C1")!["draft_shown_at"]).toBeTruthy(); +}); +``` + +- [ ] **Step 2: Run test to verify it fails** + +Run: `cd backend && bun test tests/skill-suggestions.test.ts` + +Expected: FAIL because DB methods do not exist. + +- [ ] **Step 3: Add schema and helpers** + +Add `im_skill_suggestions`: + +```sql +CREATE TABLE IF NOT EXISTS im_skill_suggestions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + pattern_id INTEGER NOT NULL, + channel TEXT NOT NULL, + target TEXT NOT NULL DEFAULT '', + status TEXT NOT NULL DEFAULT 'suggested', + suggested_at TEXT, + draft_shown_at TEXT, + dismissed_at TEXT, + approved_at TEXT, + metadata TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + UNIQUE(pattern_id, channel, target) +) +``` + +Add methods: + +```ts +upsert_im_skill_suggestion(input: { pattern_id: number; channel: string; target?: string | null; status?: string; metadata?: Record }): void +get_im_skill_suggestion(pattern_id: number, channel: string, target?: string | null): Row | null +should_send_im_skill_suggestion(pattern_id: number, channel: string, target?: string | null): boolean +mark_im_skill_suggestion_draft_shown(pattern_id: number, channel: string, target?: string | null): void +mark_im_skill_suggestion_status(pattern_id: number, channel: string, target: string | null, status: "dismissed" | "approved"): void +``` + +- [ ] **Step 4: Run test to verify it passes** + +Run: `cd backend && bun test tests/skill-suggestions.test.ts` + +Expected: PASS. + +- [ ] **Step 5: Commit** + +```bash +git add backend/src/db.ts backend/tests/skill-suggestions.test.ts +git commit -m "Persist IM skill suggestion state" +``` + +## Task 3: Scheduler And API Actions + +**Files:** +- Modify: `backend/src/bus.ts` +- Modify: `backend/src/scheduler.ts` +- Modify: `backend/src/api.ts` +- Test: `backend/tests/scheduler-skill-suggestions.test.ts` +- Test: `backend/tests/api-handler.test.ts` + +- [ ] **Step 1: Write the failing scheduler tests** + +```ts +test("SKILL_SUGGESTION_ACTION starts draft generation", () => { + const patternId = createCandidate(db); + scheduler.trigger_skill_draft = mock(() => true) as any; + const result = scheduler.handle_inbound_message(makeInboundMessage({ + type: InboundMessageType.SKILL_SUGGESTION_ACTION, + source: "slack", + payload: { action: "draft", pattern_id: patternId, source_channel: "slack", target: "C1" }, + })); + expect(result["status"]).toBe("drafting"); +}); + +test("SKILL_SUGGESTION_ACTION rejects approval before draft was shown", () => { + const patternId = createCandidateWithReadyDraft(db); + expect(() => scheduler.handle_inbound_message(makeInboundMessage({ + type: InboundMessageType.SKILL_SUGGESTION_ACTION, + source: "slack", + payload: { action: "approve", pattern_id: patternId, source_channel: "slack", target: "C1" }, + }))).toThrow("draft must be shown before approval"); +}); +``` + +- [ ] **Step 2: Run test to verify it fails** + +Run: `cd backend && bun test tests/scheduler-skill-suggestions.test.ts` + +Expected: FAIL because the inbound type and handler do not exist. + +- [ ] **Step 3: Implement scheduler action** + +Add `InboundMessageType.SKILL_SUGGESTION_ACTION`, route it in `handle_inbound_message`, and implement: + +- `draft`: call `trigger_skill_draft`, upsert suggestion state, return `{ status: "drafting" }`. +- `dismiss`: call `dismiss_skill_pattern`, mark suggestion dismissed, return `{ status: "dismissed" }`. +- `approve`: require a ready draft body and `draft_shown_at`, call `approve_skill`, mark suggestion approved, return `{ status: "approved", skill }`. +- `show`: require ready draft body, mark `draft_shown_at`, return `{ status: "ready", text, suggestion }`. + +- [ ] **Step 4: Write API tests** + +Add tests for: + +- `POST /api/im-skill-suggestions/preview` returns rendered suggestions. +- `POST /api/im-skill-suggestions/:id/action` rejects approval before draft is shown. +- `POST /api/im-skill-suggestions/:id/action` with `show` marks the draft shown. + +- [ ] **Step 5: Implement API routes** + +Add: + +```text +POST /api/im-skill-suggestions/preview +POST /api/im-skill-suggestions/send +POST /api/im-skill-suggestions/:id/action +``` + +Expose settings: + +```text +im_skill_suggestions_enabled = 0 +im_skill_suggestion_channels = [] +``` + +- [ ] **Step 6: Run focused tests** + +Run: `cd backend && bun test tests/scheduler-skill-suggestions.test.ts tests/api-handler.test.ts tests/bus.test.ts` + +Expected: PASS. + +- [ ] **Step 7: Commit** + +```bash +git add backend/src/bus.ts backend/src/scheduler.ts backend/src/api.ts backend/tests/scheduler-skill-suggestions.test.ts backend/tests/api-handler.test.ts backend/tests/bus.test.ts +git commit -m "Add IM skill suggestion actions" +``` + +## Task 4: Channel Text Fallback + +**Files:** +- Modify: `backend/src/channels/brief_utils.ts` +- Modify: `backend/src/channels/slack.ts` +- Modify: `backend/src/channels/feishu.ts` +- Modify: `backend/src/channels/telegram.ts` +- Modify: `backend/src/channels/weixin.ts` +- Test: `backend/tests/slack-channel.test.ts` +- Test: `backend/tests/feishu-channel.test.ts` +- Test: `backend/tests/telegram-channel.test.ts` +- Test: `backend/tests/weixin-channel.test.ts` + +- [ ] **Step 1: Write failing parser and channel tests** + +Parser expectations: + +```ts +expect(parse_skill_suggestion_command("/draft-skill 4")).toEqual({ action: "draft", pattern_id: 4 }); +expect(parse_skill_suggestion_command("/approve-skill #4")).toEqual({ action: "approve", pattern_id: 4 }); +expect(parse_skill_suggestion_command("/dismiss-skill 4")).toEqual({ action: "dismiss", pattern_id: 4 }); +``` + +Channel expectation: + +```ts +await channel._handle_user_message("/draft-skill 4", "C1", null, "2.0"); +expect(scheduler.inbound[0]!.type).toBe(InboundMessageType.SKILL_SUGGESTION_ACTION); +expect(last_text(web)).toContain("Skill draft"); +``` + +- [ ] **Step 2: Run channel tests to verify failure** + +Run: `cd backend && bun test tests/slack-channel.test.ts tests/feishu-channel.test.ts tests/telegram-channel.test.ts tests/weixin-channel.test.ts` + +Expected: FAIL because the parser and handlers are missing. + +- [ ] **Step 3: Add shared parser and replies** + +Add `parse_skill_suggestion_command`, `format_skill_suggestion_action_reply`, and `format_skill_suggestion_help` to `brief_utils.ts`. + +- [ ] **Step 4: Wire all four channels** + +In each slash-command branch, parse skill suggestion commands after brief/runbook and before generic `/help`; call scheduler with `SKILL_SUGGESTION_ACTION`. + +- [ ] **Step 5: Run focused channel tests** + +Run: `cd backend && bun test tests/slack-channel.test.ts tests/feishu-channel.test.ts tests/telegram-channel.test.ts tests/weixin-channel.test.ts` + +Expected: PASS. + +- [ ] **Step 6: Commit** + +```bash +git add backend/src/channels backend/tests/*channel.test.ts +git commit -m "Add IM skill suggestion text commands" +``` + +## Final Verification + +- [ ] Run `make check`. +- [ ] If format fails, run `make format`, rerun `make check`, and commit formatting-only changes. +- [ ] Confirm `git status --short` has no unexpected tracked changes. diff --git a/docs/superpowers/specs/2026-06-14-agentforge-im-inbox-design.md b/docs/superpowers/specs/2026-06-14-agentforge-im-inbox-design.md new file mode 100644 index 0000000..8ab82c9 --- /dev/null +++ b/docs/superpowers/specs/2026-06-14-agentforge-im-inbox-design.md @@ -0,0 +1,664 @@ +# AgentForge IM Inbox Design + +**Status:** Draft +**Date:** 2026-06-14 +**Scope:** Chat-to-Task Inbox, IM Runbooks, Agent Standup/Digest, Skill Suggestions + +## 1. Product Thesis + +AgentForge should treat IM as a first-class product surface, but not as a replacement for the desktop board. + +The desktop app remains the place for deep inspection, configuration, and multi-task management. IM becomes the low-friction daily surface for four behaviors: + +1. Drop messy context into AgentForge. +2. Turn that context into executable tasks or reusable runbooks. +3. Receive low-noise progress and standup summaries. +4. Approve useful skills when repeated work patterns emerge. + +The user-facing promise: + +> Forward a chat, screenshot, link, log, or rough instruction to AgentForge. It turns the mess into a clear task, runs the right agent, reports back when attention is needed, and gradually learns the recurring workflows worth saving. + +This keeps AgentForge's core positioning intact: local-first, single-user, task-oriented agent orchestration for macOS. + +## 2. Strategic Boundaries + +- **Keep AgentForge single-user and local-first.** IM is a remote control and notification surface for the user's local Mac, not a multi-tenant team SaaS. +- **Do not build a general chat assistant.** IM messages should become tasks, runbooks, decisions, or summaries. Free-form conversation is only useful when attached to an AgentForge task. +- **Do not add more channels as the main bet.** The product value comes from better behavior on existing Feishu, Slack, Telegram, and WeChat integrations. +- **Preserve the kanban board.** IM should increase task creation and follow-up frequency; the desktop app still owns full history, settings, and detailed output. +- **Prefer explicit confirmation before expensive or ambiguous work.** IM input is often messy, forwarded, incomplete, or accidental. + +## 3. One-Line Definition + +AgentForge IM Inbox is a chat-native layer that converts incoming IM context into structured task briefs, exposes reusable runbooks as IM commands, sends scheduled agent standups, and asks for approval when repeated work can become a skill. + +## 4. The Product Loop + +```text +Chat / screenshot / forwarded message / link / log + | + v +IM Inbox extracts a structured task brief + | + v +User confirms or edits lightweight fields in IM + | + v +AgentForge creates and runs the task locally + | + v +IM reports only useful state changes and daily digests + | + v +Repeated workflows become runbooks or skill suggestions + | + v +Next time the user runs the same workflow from IM in one command +``` + +The loop matters more than any single feature. Chat-to-Task creates volume, runbooks create reuse, digests create return frequency, and skill suggestions create compounding value. + +## 5. Feature Set + +### 5.1 Chat-to-Task Inbox + +**Goal** + +Turn messy IM input into a clear AgentForge task before execution. + +**Inputs** + +- Plain messages. +- Forwarded chat records. +- Screenshots and images already supported by channel adapters. +- Links to PRs, issues, CI runs, docs, logs, or web pages. +- Existing reply-thread context when the message is sent inside a task conversation. + +**Behavior** + +When a message appears to be a new work request, AgentForge creates a `task_brief` draft instead of immediately running a task if any of these are true: + +- The message contains forwarded context with multiple speakers. +- The message contains an image or attachment. +- The working directory is unknown or low-confidence. +- The requested action is ambiguous. +- The request appears expensive, destructive, or broad. + +For simple direct commands with an obvious working directory, channels may keep the current fast path and create a task immediately. + +**Task brief fields** + +```json +{ + "title": "Fix login redirect regression", + "goal": "Find and fix the redirect loop after password login.", + "context_summary": "User forwarded a QA report and screenshot showing...", + "source_items": [ + { + "kind": "forwarded_message", + "channel": "feishu", + "source_ref": "message_id_or_thread_id" + } + ], + "working_dir": "~/workspace/myapp", + "working_dir_confidence": "high", + "agent": "codex", + "acceptance_criteria": [ + "Reproduce or identify the redirect loop.", + "Patch the minimal relevant code.", + "Run the focused auth tests or explain why they cannot run." + ], + "risk_level": "normal", + "needs_confirmation": true +} +``` + +**IM interaction** + +The user sees a concise brief: + +```text +Draft task: Fix login redirect regression +Repo: ~/workspace/myapp +Agent: codex + +Goal: +Find and fix the redirect loop after password login. + +Acceptance: +1. Identify the cause. +2. Patch the minimal relevant code. +3. Run focused auth tests. + +Reply "run" to start, "edit : " to adjust, or "discard". +``` + +Feishu and Slack can later render this as interactive cards/buttons. Telegram and WeChat can use text commands first. + +**Why this matters** + +The current "send any message to create a task" model is fast, but it treats all IM input as clean task text. Chat-to-Task Inbox acknowledges that the best IM inputs are often messy: forwarded conversations, screenshots, links, partial thoughts, and production symptoms. + +### 5.2 IM Runbooks + +**Goal** + +Make repeatable AgentForge workflows runnable from IM with short, memorable commands. + +**Definition** + +An IM runbook is a named command that expands into a task template, prompt shape, agent choice, schedule defaults, and optional confirmation policy. + +Examples: + +```text +/review-pr https://github.com/acme/app/pull/42 +/fix-ci https://github.com/acme/app/actions/runs/123 +/summarize-thread +/write-tests backend/src/auth.ts +/release-check +/scan-skills +``` + +**Runbook sources** + +Runbooks can come from three places: + +1. Built-in AgentForge runbooks. +2. User-created templates from the Template Library. +3. Promoted skills or skill patterns that expose a command alias. + +**Minimum built-in runbooks** + +| Command | Purpose | Confirmation | +|---|---|---| +| `/review-pr ` | Review a PR and summarize risks, bugs, and missing tests. | Optional | +| `/fix-ci ` | Inspect a failing CI run and propose or apply a fix. | Required before code changes if repo is unclear | +| `/summarize-thread` | Summarize the current IM thread into a task brief or notes. | Required before task creation | +| `/write-tests ` | Add or improve tests for a file or module. | Optional | +| `/release-check` | Run a release readiness checklist for the active repo. | Required | +| `/scan-skills` | Trigger a manual Skill Library scan. | Required | + +**Command resolution** + +Command parsing should be channel-independent: + +```text +Inbound IM text + -> Channel adapter normalizes sender/thread metadata + -> RunbookRegistry matches command and arguments + -> Runbook expands to TaskBrief or direct Task + -> User confirms if required + -> Scheduler receives the final Task +``` + +**Why this matters** + +Runbooks turn AgentForge from a task queue into a personal automation menu. They also create a natural bridge between IM, Template Library, and Skill Library. + +### 5.3 Agent Standup / Digest + +**Goal** + +Bring AgentForge back into the user's daily flow without noisy per-event spam. + +**Digest types** + +1. **Daily standup:** A scheduled summary of recent task activity. +2. **Attention digest:** A batched message when one or more tasks need user input. +3. **Watcher digest:** A summary of heartbeat-triggered signals. +4. **Skill digest:** New skill candidates or draft skills waiting for approval. + +**Default behavior** + +- Daily standup is opt-in. +- Attention digest is enabled for tasks created from that channel. +- Digest messages are grouped by channel and user. +- Idle heartbeat ticks stay silent. + +**Daily standup shape** + +```text +AgentForge Standup + +Completed: +1. Fixed auth redirect regression (#184) +2. Reviewed billing PR and found 2 test gaps + +Needs you: +1. CI fix task is waiting for approval to edit workflow files +2. Skill draft "fix-ci-runbook" is ready to review + +Failed: +1. Release check could not run tests: missing env DATABASE_URL + +Suggested next: +/fix-ci +/scan-skills +``` + +**Scheduling** + +The digest should reuse the existing heartbeat/scheduler infrastructure instead of introducing a second timer system. + +Suggested settings: + +| Key | Default | Meaning | +|---|---|---| +| `im_digest_enabled` | `0` | Master switch for scheduled standups. | +| `im_digest_cron` | `0 9 * * 1-5` | Weekday 9 AM by default. | +| `im_digest_channels` | `[]` | Explicit channels and recipients to notify. | +| `im_attention_digest_minutes` | `20` | Batch user-input notifications within this window. | + +**Why this matters** + +AgentForge should feel alive without being needy. A good digest creates a reason to return and a compact sense that local agents are working on the user's behalf. + +### 5.4 Skill Suggestions in IM + +**Goal** + +Move Skill Library approval into the same surface where the user already sees task outcomes. + +**Trigger** + +When Skill Library marks a pattern as `candidate` or `drafted`, AgentForge may send an IM suggestion if: + +- the source tasks originated from that IM channel, or +- the user opted into global skill suggestions for that channel. + +**Message shape** + +```text +Skill suggestion: fix-ci-investigation + +I found this recurring workflow across 3 tasks: +Investigate a failed CI run, identify the failing job, patch the minimal issue, +run the focused test, and update the PR summary. + +Source tasks: +1. #183 Fix frontend CI +2. #191 Repair backend test job +3. #205 Update release workflow + +Reply: +"draft" to generate a SKILL.md draft +"approve" to install after draft review +"dismiss" to stop suggesting this pattern +``` + +**Approval policy** + +- IM can request draft generation. +- IM can approve installation only after the draft exists and has been shown or linked. +- Desktop UI remains the richest editor for the full `SKILL.md`. +- If the skill writes files under `~/.agentforge/skills`, `~/.claude/skills`, or `~/.agents/skills`, the approval message must explicitly say so. + +**Why this matters** + +Skill Library is the long-term compounding layer. IM suggestions make that compounding visible at the moment the user remembers the repeated work. + +## 6. Architecture + +### 6.1 New Backend Concepts + +#### `TaskBrief` + +A pending, structured draft that may become a real task. + +Responsibilities: + +- Store extracted task intent before execution. +- Preserve source IM context. +- Track confirmation status. +- Avoid polluting the task board with ambiguous or accidental messages. + +Suggested statuses: + +```text +draft -> confirmed -> converted +draft -> discarded +draft -> expired +``` + +#### `Runbook` + +A reusable command definition that expands IM input into a task brief or task. + +Responsibilities: + +- Own command names and aliases. +- Validate arguments. +- Produce task title, prompt, working directory hints, agent choice, and confirmation policy. +- Bridge Template Library and Skill Library into IM. + +#### `DigestJob` + +A scheduled summarization pass that reads recent AgentForge state and sends one compact outbound message. + +Responsibilities: + +- Use existing scheduler/heartbeat timing. +- Summarize tasks, blocked states, heartbeat signals, and skill candidates. +- Avoid one-message-per-event spam. + +### 6.2 Reused Existing Infrastructure + +| Existing piece | Reuse | +|---|---| +| `MessageBus` inbound actions | Add brief confirmation, runbook execution, and digest-triggered actions. | +| Channel adapters | Normalize IM metadata and render channel-specific brief/digest messages. | +| `TaskScheduler.submit_task` | Final task execution remains unchanged after confirmation. | +| Heartbeats | Schedule daily digests and watcher summaries. | +| Skill Library tables | Source skill suggestions and draft status. | +| Template Library design | Source user-defined runbooks. | +| `task_output_events` | Feed digest summaries and skill suggestions. | + +### 6.3 Channel Adapter Responsibilities + +Each channel adapter should stay thin: + +- Parse channel-specific events into normalized IM messages. +- Preserve sender, chat, thread, root message, attachments, and forwarded metadata. +- Render text fallback for all features. +- Use richer cards/buttons only where the channel supports them. + +The business logic for briefs, runbooks, digest generation, and skill suggestions should live in shared backend modules, not separately in each channel. + +## 7. Data Model + +### 7.1 `task_briefs` + +```sql +CREATE TABLE task_briefs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + status TEXT NOT NULL DEFAULT 'draft', + title TEXT NOT NULL, + goal TEXT NOT NULL, + context_summary TEXT NOT NULL DEFAULT '', + acceptance_criteria TEXT NOT NULL DEFAULT '[]', + working_dir TEXT, + working_dir_confidence TEXT NOT NULL DEFAULT 'unknown', + agent TEXT, + risk_level TEXT NOT NULL DEFAULT 'normal', + needs_confirmation INTEGER NOT NULL DEFAULT 1, + source_channel TEXT NOT NULL, + source_ref TEXT NOT NULL, + source_metadata TEXT NOT NULL DEFAULT '{}', + created_task_id INTEGER, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + expires_at TEXT +); +``` + +### 7.2 `im_runbooks` + +```sql +CREATE TABLE im_runbooks ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL UNIQUE, + aliases TEXT NOT NULL DEFAULT '[]', + description TEXT NOT NULL DEFAULT '', + source_type TEXT NOT NULL, -- builtin | template | skill + source_id TEXT, + command_schema TEXT NOT NULL DEFAULT '{}', + prompt_template TEXT NOT NULL, + default_agent TEXT, + confirmation_policy TEXT NOT NULL DEFAULT 'auto', + enabled INTEGER NOT NULL DEFAULT 1, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL +); +``` + +### 7.3 `im_delivery_refs` + +Persist channel/thread mappings that are currently held partly in memory by channel adapters. + +```sql +CREATE TABLE im_delivery_refs ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + task_id INTEGER, + brief_id INTEGER, + channel TEXT NOT NULL, + chat_id TEXT NOT NULL, + thread_id TEXT, + message_id TEXT, + recipient_id TEXT, + purpose TEXT NOT NULL, -- origin | brief | notification | digest | skill_suggestion + metadata TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL +); +``` + +This makes IM follow-up behavior more durable across backend restarts. + +## 8. API Surface + +### 8.1 Task Briefs + +```text +GET /api/task-briefs +GET /api/task-briefs/:id +POST /api/task-briefs +PATCH /api/task-briefs/:id +POST /api/task-briefs/:id/confirm +POST /api/task-briefs/:id/discard +``` + +`POST /api/task-briefs/:id/confirm` creates the real task and returns `{ task_id }`. + +### 8.2 Runbooks + +```text +GET /api/im-runbooks +POST /api/im-runbooks +PATCH /api/im-runbooks/:id +DELETE /api/im-runbooks/:id +POST /api/im-runbooks/:name/preview +POST /api/im-runbooks/:name/run +``` + +`preview` returns a `TaskBrief` without creating a task. `run` either creates a brief or a task depending on confirmation policy. + +### 8.3 Digests + +```text +POST /api/im-digests/preview +POST /api/im-digests/send +``` + +The preview endpoint helps the desktop UI show what the next digest would contain. + +## 9. Message Routing + +### 9.1 New MessageBus Inbound Types + +```text +CREATE_BRIEF +CONFIRM_BRIEF +DISCARD_BRIEF +RUN_RUNBOOK +PREVIEW_RUNBOOK +TRIGGER_DIGEST +SKILL_SUGGESTION_ACTION +``` + +These actions should complement existing `CREATE_TASK`, `RESUME_TASK`, `RESPOND_TASK`, `CANCEL_TASK`, and `STATUS_QUERY`. + +### 9.2 Routing Priority + +When an inbound IM message arrives: + +1. If it is a reply inside an active task thread, route to existing resume/respond behavior. +2. If it is a known runbook command, route to RunbookRegistry. +3. If it is a brief action such as `run`, `discard`, or `edit`, apply it to the active brief. +4. If it is a skill suggestion action, route to Skill Library. +5. Otherwise, run Chat-to-Task classification. +6. If classification is high-confidence and safe, create a task. +7. If classification is ambiguous, create a task brief. + +This preserves current reply-to-resume behavior and avoids breaking the fastest path. + +## 10. Classification and Extraction + +### 10.1 Classifier Output + +The classifier should return structured JSON: + +```json +{ + "intent": "new_task", + "confidence": "medium", + "should_create_brief": true, + "reason": "Forwarded context with unclear target repository.", + "brief": { + "title": "...", + "goal": "...", + "context_summary": "...", + "acceptance_criteria": ["..."], + "working_dir": null, + "working_dir_confidence": "unknown", + "agent": "codex", + "risk_level": "normal" + } +} +``` + +Supported intents: + +```text +new_task +resume_task +runbook +status_query +cancel_task +digest_request +skill_action +ignore +``` + +### 10.2 Cost Control + +Classification should be rule-first, agent-second: + +- Slash commands and simple replies do not need an agent call. +- Explicit `/new`, `/dir`, `/agent`, `/status`, `/cancel`, and `/resume` keep current deterministic handling. +- Forwarded messages, images, long text, and unclear repo references may call the configured classification agent. +- The classifier should have a small context window and should not read task output history unless explicitly summarizing a thread. + +## 11. Error Handling + +- If classification fails, fall back to current behavior only for simple text. For complex forwarded or media input, ask the user to retry or clarify. +- If a brief expires, future `run` replies should say the draft expired and offer to regenerate it. +- If a runbook argument is invalid, return usage examples rather than creating a malformed task. +- If digest generation fails, log the failure and send no partial digest unless the user manually requested one. +- If an IM send fails, task state must not change. +- If a channel does not support cards/buttons, all actions must remain possible through text replies. + +## 12. Privacy and Safety + +- IM content is already entering AgentForge through user-configured channels. This feature must not introduce any new remote service beyond the configured channel APIs and selected local/CLI agent. +- Store source metadata needed for traceability, but do not duplicate large raw attachments in new tables when existing media handling already stores them. +- Confirmation is required before: + - installing skills, + - broad or destructive repo changes, + - running unclear forwarded requests, + - sending scheduled digests to a newly configured recipient. +- Digest content should avoid dumping large code/output blocks. It should summarize and link back to task IDs. + +## 13. Rollout Plan + +### Phase 1: Chat-to-Task Briefs + +- Add `TaskBrief` model and APIs. +- Add deterministic brief confirmation/discard flow. +- Support text fallback in all channels. +- Preserve current immediate task creation for simple messages. + +### Phase 2: IM Runbooks + +- Add shared RunbookRegistry. +- Ship built-in runbooks for PR review, CI fix, thread summary, test writing, release check, and skill scan. +- Add text command support across Feishu, Slack, Telegram, and WeChat. +- Connect user templates as runbook sources after the core path works. + +### Phase 3: Digests + +- Add digest preview and scheduled daily standup. +- Reuse heartbeat/scheduler timing. +- Batch attention-needed notifications. +- Add settings in the desktop app. + +### Phase 4: Skill Suggestions + +- Send IM suggestions for Skill Library candidates. +- Support draft generation and dismissal from IM. +- Allow final approval from IM only after the draft content is visible or linked. + +## 14. Testing + +### Backend unit tests + +- Task brief creation, edit, confirm, discard, expiry. +- Runbook command parsing and argument validation. +- Routing priority between task replies, runbooks, brief actions, and new task classification. +- Digest grouping and quiet behavior when there is no useful content. +- Skill suggestion action handling. + +### Channel tests + +- Feishu, Slack, Telegram, and WeChat text fallback for brief confirmation. +- Thread/chat mapping persists through `im_delivery_refs`. +- Existing reply-to-resume behavior still wins over new task classification. +- Failed sends do not mutate task or brief state. + +### Integration tests + +- Forwarded message creates a brief, user replies `run`, scheduler receives a task. +- `/review-pr ` previews or creates the expected task. +- Daily digest summarizes completed, failed, and waiting tasks without including idle heartbeat ticks. +- Skill candidate emits a suggestion and `dismiss` prevents repeated suggestions. + +## 15. Success Criteria + +The feature is successful if: + +- Users can forward messy IM context and get a clear task brief instead of hand-writing prompts. +- Users can run common workflows from IM without opening the desktop app. +- Digests increase awareness without increasing notification noise. +- Skill Library suggestions become visible and actionable at the moment repeated work is fresh. +- Existing channel behavior for simple task creation and reply-to-resume remains intact. + +## 16. Explicit Non-Goals + +- No team workspace, shared assignment model, or multi-user permission system. +- No new public network listener. +- No requirement to build rich cards before text fallback works. +- No generic chatbot persona. +- No automatic skill installation without explicit user approval. +- No replacement of the desktop app's task board or settings UI. + +## 17. Open Design Decisions + +These decisions are intentionally narrowed to implementation-time choices, not unresolved product scope: + +| Decision | Recommended default | +|---|---| +| First rich channel | Feishu, because existing card and streaming support is strongest. | +| Brief expiration | 7 days for draft briefs. | +| Classifier agent | Use the current default agent unless a dedicated setting is added. | +| Direct-create threshold | Only direct-create when text is short, action is clear, and working directory confidence is high. | +| Digest default | Opt-in scheduled digest; attention-needed messages only for tasks created from that channel. | + +## 18. Self-Review + +- No implementation is required by this spec before user approval. +- The scope is decomposed into four phases and can be implemented incrementally. +- The design keeps AgentForge local-first and single-user. +- Existing reply-to-resume behavior is preserved as the highest-priority route. +- Every rich IM interaction has a text fallback. +- Skill installation remains approval-gated. diff --git a/taskboard-electron/.bun/renderer/agentforge-kx7zrz3a.png b/taskboard-electron/.bun/renderer/agentforge-kx7zrz3a.png new file mode 100644 index 0000000..9973717 Binary files /dev/null and b/taskboard-electron/.bun/renderer/agentforge-kx7zrz3a.png differ diff --git a/taskboard-electron/.bun/renderer/assets/agentforge-source.png b/taskboard-electron/.bun/renderer/assets/agentforge-source.png new file mode 100644 index 0000000..7c1e366 Binary files /dev/null and b/taskboard-electron/.bun/renderer/assets/agentforge-source.png differ diff --git a/taskboard-electron/.bun/renderer/assets/agentforge.icns b/taskboard-electron/.bun/renderer/assets/agentforge.icns new file mode 100644 index 0000000..cfdbae0 Binary files /dev/null and b/taskboard-electron/.bun/renderer/assets/agentforge.icns differ diff --git a/taskboard-electron/.bun/renderer/assets/agentforge.png b/taskboard-electron/.bun/renderer/assets/agentforge.png new file mode 100644 index 0000000..9973717 Binary files /dev/null and b/taskboard-electron/.bun/renderer/assets/agentforge.png differ diff --git a/taskboard-electron/.bun/renderer/chunk-70t289vh.css b/taskboard-electron/.bun/renderer/chunk-70t289vh.css new file mode 100644 index 0000000..1bf51b6 --- /dev/null +++ b/taskboard-electron/.bun/renderer/chunk-70t289vh.css @@ -0,0 +1,60 @@ +/* src/index.css */ +html, body, #root { + width: 100%; + min-width: 0; + min-height: 100%; + margin: 0; +} + +html { + --buncss-light: initial; + --buncss-dark: ; + color-scheme: light dark; + background: #0f1012; +} + +@media (prefers-color-scheme: dark) { + html { + --buncss-light: ; + --buncss-dark: initial; + } +} + +body { + overflow-x: hidden; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +* { + box-sizing: border-box; +} + +button, input, textarea, select { + font: inherit; +} + +button { + user-select: none; +} + +img { + max-width: 100%; +} + +@media (max-width: 980px) { + .app-topbar { + flex-wrap: wrap; + } + + .app-toolbar { + overflow-x: auto; + justify-content: flex-start; + width: 100%; + padding-bottom: 2px; + } + + .board-grid { + grid-template-columns: minmax(300px, 1fr) !important; + } +} diff --git a/taskboard-electron/.bun/renderer/chunk-qgtap3d3.js b/taskboard-electron/.bun/renderer/chunk-cs88ar74.js similarity index 92% rename from taskboard-electron/.bun/renderer/chunk-qgtap3d3.js rename to taskboard-electron/.bun/renderer/chunk-cs88ar74.js index 37d6718..bfa5f1c 100644 --- a/taskboard-electron/.bun/renderer/chunk-qgtap3d3.js +++ b/taskboard-electron/.bun/renderer/chunk-cs88ar74.js @@ -11072,9 +11072,9 @@ var require_bit_buffer = __commonJS((exports, module) => { this.length = 0; } BitBuffer.prototype = { - get: function(index2) { - const bufIndex = Math.floor(index2 / 8); - return (this.buffer[bufIndex] >>> 7 - index2 % 8 & 1) === 1; + get: function(index3) { + const bufIndex = Math.floor(index3 / 8); + return (this.buffer[bufIndex] >>> 7 - index3 % 8 & 1) === 1; }, put: function(num, length) { for (let i = 0;i < length; i++) { @@ -11109,10 +11109,10 @@ var require_bit_matrix = __commonJS((exports, module) => { this.reservedBit = new Uint8Array(size * size); } BitMatrix.prototype.set = function(row, col, value, reserved) { - const index2 = row * this.size + col; - this.data[index2] = value; + const index3 = row * this.size + col; + this.data[index3] = value; if (reserved) - this.reservedBit[index2] = true; + this.reservedBit[index3] = true; }; BitMatrix.prototype.get = function(row, col) { return this.data[row * this.size + col]; @@ -12627,18 +12627,18 @@ var require_qrcode = __commonJS((exports) => { maxDataSize = Math.max(maxDataSize, dataSize); } const data = new Uint8Array(totalCodewords); - let index2 = 0; + let index3 = 0; let i, r; for (i = 0;i < maxDataSize; i++) { for (r = 0;r < ecTotalBlocks; r++) { if (i < dcData[r].length) { - data[index2++] = dcData[r][i]; + data[index3++] = dcData[r][i]; } } } for (i = 0;i < ecCount; i++) { for (r = 0;r < ecTotalBlocks; r++) { - data[index2++] = ecData[r][i]; + data[index3++] = ecData[r][i]; } } return data; @@ -13015,13 +13015,290 @@ var require_jsx_runtime = __commonJS((exports, module) => { module.exports = exports_react_jsx_runtime_production; } }); - // src/renderer/main.tsx -var import_react2 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); var import_client = __toESM(require_client(), 1); // src/renderer/App.tsx +var import_react4 = __toESM(require_react(), 1); +// node_modules/lucide-react/dist/esm/createLucideIcon.mjs +var import_react3 = __toESM(require_react(), 1); + +// node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs +var mergeClasses = (...classes) => classes.filter((className, index2, array) => { + return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2; +}).join(" ").trim(); + +// node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs +var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); + +// node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs +var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()); + +// node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs +var toPascalCase = (string) => { + const camelCase = toCamelCase(string); + return camelCase.charAt(0).toUpperCase() + camelCase.slice(1); +}; + +// node_modules/lucide-react/dist/esm/Icon.mjs +var import_react2 = __toESM(require_react(), 1); + +// node_modules/lucide-react/dist/esm/defaultAttributes.mjs +var defaultAttributes = { + xmlns: "http://www.w3.org/2000/svg", + width: 24, + height: 24, + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + strokeWidth: 2, + strokeLinecap: "round", + strokeLinejoin: "round" +}; + +// node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs +var hasA11yProp = (props) => { + for (const prop in props) { + if (prop.startsWith("aria-") || prop === "role" || prop === "title") { + return true; + } + } + return false; +}; + +// node_modules/lucide-react/dist/esm/context.mjs var import_react = __toESM(require_react(), 1); +"use client"; +var LucideContext = import_react.createContext({}); +var useLucideContext = () => import_react.useContext(LucideContext); + +// node_modules/lucide-react/dist/esm/Icon.mjs +"use client"; +var Icon = import_react2.forwardRef(({ color, size, strokeWidth, absoluteStrokeWidth, className = "", children, iconNode, ...rest }, ref) => { + const { + size: contextSize = 24, + strokeWidth: contextStrokeWidth = 2, + absoluteStrokeWidth: contextAbsoluteStrokeWidth = false, + color: contextColor = "currentColor", + className: contextClass = "" + } = useLucideContext() ?? {}; + const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth; + return import_react2.createElement("svg", { + ref, + ...defaultAttributes, + width: size ?? contextSize ?? defaultAttributes.width, + height: size ?? contextSize ?? defaultAttributes.height, + stroke: color ?? contextColor, + strokeWidth: calculatedStrokeWidth, + className: mergeClasses("lucide", contextClass, className), + ...!children && !hasA11yProp(rest) && { "aria-hidden": "true" }, + ...rest + }, [ + ...iconNode.map(([tag, attrs]) => import_react2.createElement(tag, attrs)), + ...Array.isArray(children) ? children : [children] + ]); +}); + +// node_modules/lucide-react/dist/esm/createLucideIcon.mjs +var createLucideIcon = (iconName, iconNode) => { + const Component2 = import_react3.forwardRef(({ className, ...props }, ref) => import_react3.createElement(Icon, { + ref, + iconNode, + className: mergeClasses(`lucide-${toKebabCase(toPascalCase(iconName))}`, `lucide-${iconName}`, className), + ...props + })); + Component2.displayName = toPascalCase(iconName); + return Component2; +}; + +// node_modules/lucide-react/dist/esm/icons/circle-check.mjs +var __iconNode = [ + ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], + ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }] +]; +var CircleCheck = createLucideIcon("circle-check", __iconNode); +// node_modules/lucide-react/dist/esm/icons/sparkles.mjs +var __iconNode2 = [ + [ + "path", + { + d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z", + key: "1s2grr" + } + ], + ["path", { d: "M20 2v4", key: "1rf3ol" }], + ["path", { d: "M22 4h-4", key: "gwowj6" }], + ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }] +]; +var Sparkles = createLucideIcon("sparkles", __iconNode2); +// node_modules/lucide-react/dist/esm/icons/square-kanban.mjs +var __iconNode3 = [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], + ["path", { d: "M8 7v7", key: "1x2jlm" }], + ["path", { d: "M12 7v4", key: "xawao1" }], + ["path", { d: "M16 7v9", key: "1hp2iy" }] +]; +var SquareKanban = createLucideIcon("square-kanban", __iconNode3); +// node_modules/lucide-react/dist/esm/icons/git-fork.mjs +var __iconNode4 = [ + ["circle", { cx: "12", cy: "18", r: "3", key: "1mpf1b" }], + ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }], + ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }], + ["path", { d: "M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9", key: "1uq4wg" }], + ["path", { d: "M12 12v3", key: "158kv8" }] +]; +var GitFork = createLucideIcon("git-fork", __iconNode4); +// node_modules/lucide-react/dist/esm/icons/heart-pulse.mjs +var __iconNode5 = [ + [ + "path", + { + d: "M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5", + key: "mvr1a0" + } + ], + ["path", { d: "M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27", key: "auskq0" }] +]; +var HeartPulse = createLucideIcon("heart-pulse", __iconNode5); +// node_modules/lucide-react/dist/esm/icons/inbox.mjs +var __iconNode6 = [ + ["polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12", key: "o97t9d" }], + [ + "path", + { + d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z", + key: "oot6mr" + } + ] +]; +var Inbox = createLucideIcon("inbox", __iconNode6); +// node_modules/lucide-react/dist/esm/icons/monitor-cog.mjs +var __iconNode7 = [ + ["path", { d: "M12 17v4", key: "1riwvh" }], + ["path", { d: "m14.305 7.53.923-.382", key: "1mlnsw" }], + ["path", { d: "m15.228 4.852-.923-.383", key: "82mpwg" }], + ["path", { d: "m16.852 3.228-.383-.924", key: "ln4sir" }], + ["path", { d: "m16.852 8.772-.383.923", key: "1dejw0" }], + ["path", { d: "m19.148 3.228.383-.924", key: "192kgf" }], + ["path", { d: "m19.53 9.696-.382-.924", key: "fiavlr" }], + ["path", { d: "m20.772 4.852.924-.383", key: "1j8mgp" }], + ["path", { d: "m20.772 7.148.924.383", key: "zix9be" }], + ["path", { d: "M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7", key: "1tnzv8" }], + ["path", { d: "M8 21h8", key: "1ev6f3" }], + ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }] +]; +var MonitorCog = createLucideIcon("monitor-cog", __iconNode7); +// node_modules/lucide-react/dist/esm/icons/moon.mjs +var __iconNode8 = [ + [ + "path", + { + d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401", + key: "kfwtm" + } + ] +]; +var Moon = createLucideIcon("moon", __iconNode8); +// node_modules/lucide-react/dist/esm/icons/pause.mjs +var __iconNode9 = [ + ["rect", { x: "14", y: "3", width: "5", height: "18", rx: "1", key: "kaeet6" }], + ["rect", { x: "5", y: "3", width: "5", height: "18", rx: "1", key: "1wsw3u" }] +]; +var Pause = createLucideIcon("pause", __iconNode9); +// node_modules/lucide-react/dist/esm/icons/pencil.mjs +var __iconNode10 = [ + [ + "path", + { + d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z", + key: "1a8usu" + } + ], + ["path", { d: "m15 5 4 4", key: "1mk7zo" }] +]; +var Pencil = createLucideIcon("pencil", __iconNode10); +// node_modules/lucide-react/dist/esm/icons/play.mjs +var __iconNode11 = [ + [ + "path", + { + d: "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z", + key: "10ikf1" + } + ] +]; +var Play = createLucideIcon("play", __iconNode11); +// node_modules/lucide-react/dist/esm/icons/plus.mjs +var __iconNode12 = [ + ["path", { d: "M5 12h14", key: "1ays0h" }], + ["path", { d: "M12 5v14", key: "s699le" }] +]; +var Plus = createLucideIcon("plus", __iconNode12); +// node_modules/lucide-react/dist/esm/icons/radar.mjs +var __iconNode13 = [ + ["path", { d: "M19.07 4.93A10 10 0 0 0 6.99 3.34", key: "z3du51" }], + ["path", { d: "M4 6h.01", key: "oypzma" }], + ["path", { d: "M2.29 9.62A10 10 0 1 0 21.31 8.35", key: "qzzz0" }], + ["path", { d: "M16.24 7.76A6 6 0 1 0 8.23 16.67", key: "1yjesh" }], + ["path", { d: "M12 18h.01", key: "mhygvu" }], + ["path", { d: "M17.99 11.66A6 6 0 0 1 15.77 16.67", key: "1u2y91" }], + ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }], + ["path", { d: "m13.41 10.59 5.66-5.66", key: "mhq4k0" }] +]; +var Radar = createLucideIcon("radar", __iconNode13); +// node_modules/lucide-react/dist/esm/icons/rotate-ccw.mjs +var __iconNode14 = [ + ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }], + ["path", { d: "M3 3v5h5", key: "1xhq8a" }] +]; +var RotateCcw = createLucideIcon("rotate-ccw", __iconNode14); +// node_modules/lucide-react/dist/esm/icons/search.mjs +var __iconNode15 = [ + ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }], + ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }] +]; +var Search = createLucideIcon("search", __iconNode15); +// node_modules/lucide-react/dist/esm/icons/settings.mjs +var __iconNode16 = [ + [ + "path", + { + d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915", + key: "1i5ecw" + } + ], + ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }] +]; +var Settings = createLucideIcon("settings", __iconNode16); +// node_modules/lucide-react/dist/esm/icons/square.mjs +var __iconNode17 = [ + ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }] +]; +var Square = createLucideIcon("square", __iconNode17); +// node_modules/lucide-react/dist/esm/icons/sun.mjs +var __iconNode18 = [ + ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }], + ["path", { d: "M12 2v2", key: "tus03m" }], + ["path", { d: "M12 20v2", key: "1lh1kg" }], + ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }], + ["path", { d: "m17.66 17.66 1.41 1.41", key: "ptbguv" }], + ["path", { d: "M2 12h2", key: "1t8f8n" }], + ["path", { d: "M20 12h2", key: "1q8mjw" }], + ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }], + ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }] +]; +var Sun = createLucideIcon("sun", __iconNode18); +// node_modules/lucide-react/dist/esm/icons/trash-2.mjs +var __iconNode19 = [ + ["path", { d: "M10 11v6", key: "nco0om" }], + ["path", { d: "M14 11v6", key: "outv1u" }], + ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }], + ["path", { d: "M3 6h18", key: "d0wm0j" }], + ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }] +]; +var Trash2 = createLucideIcon("trash-2", __iconNode19); +// src/renderer/App.tsx var import_qrcode = __toESM(require_browser(), 1); // src/renderer/dateTime.ts @@ -13316,9 +13593,9 @@ function buildExecutionSteps(events) { } steps.push(step); } - return steps.map((step, index2) => ({ + return steps.map((step, index3) => ({ ...step, - number: index2 + 1 + number: index3 + 1 })); } function compareEventsChronologically(a, b) { @@ -13473,75 +13750,129 @@ var jsx_runtime = __toESM(require_jsx_runtime(), 1); var API = "http://127.0.0.1:9712/api"; var THEMES = { dark: { - bg: "#0a0a0f", - surface: "#12121a", - surfaceHover: "#1a1a26", - border: "#1e1e2e", - borderActive: "#2d2d44", - text: "#e2e2ef", - textMuted: "#6b6b8a", - textDim: "#44445e", - accent: "#7c6aff", - accentGlow: "rgba(124, 106, 255, 0.15)", - green: "#34d399", - greenBg: "rgba(52, 211, 153, 0.08)", - orange: "#fbbf24", - orangeBg: "rgba(251, 191, 36, 0.08)", - red: "#f87171", - redBg: "rgba(248, 113, 113, 0.08)", - blue: "#60a5fa", - blueBg: "rgba(96, 165, 250, 0.08)", - cyan: "#22d3ee", - cyanBg: "rgba(34, 211, 238, 0.08)" + bg: "#0d0e10", + surface: "#17181c", + surfaceHover: "#1c1d22", + panel: "#111216", + panelRaised: "#18191e", + field: "#101115", + border: "rgba(255, 255, 255, 0.085)", + borderActive: "rgba(94, 106, 210, 0.48)", + text: "#f4f4f5", + textMuted: "#a6a8b0", + textDim: "#70737c", + accent: "#5e6ad2", + accentGlow: "rgba(94, 106, 210, 0.18)", + green: "#4cb782", + greenBg: "rgba(76, 183, 130, 0.12)", + orange: "#d99a45", + orangeBg: "rgba(217, 154, 69, 0.13)", + red: "#e06c75", + redBg: "rgba(224, 108, 117, 0.13)", + blue: "#6aa6f8", + blueBg: "rgba(106, 166, 248, 0.12)", + cyan: "#64b5d9", + cyanBg: "rgba(100, 181, 217, 0.12)", + yellow: "#d8b84e", + headerBg: "rgba(13, 14, 16, 0.9)", + headerBorder: "rgba(255, 255, 255, 0.08)", + boardBg: "linear-gradient(180deg, #101114 0%, #0d0e10 48%, #0b0c0e 100%)", + columnBg: "rgba(18, 19, 23, 0.72)", + columnHeader: "#f4f4f5", + shadow: "0 22px 54px rgba(0, 0, 0, 0.34)", + shadowSoft: "0 10px 28px rgba(0, 0, 0, 0.2)", + brandStart: "#f2f3f5", + brandEnd: "#bfc4cf", + brandInk: "#ffffff" }, light: { - bg: "#f5f5fa", + bg: "#f7f8fa", surface: "#ffffff", - surfaceHover: "#eeeef7", - border: "#dcdce8", - borderActive: "#b8b8d0", - text: "#1a1a2e", - textMuted: "#6b6b8a", - textDim: "#a0a0bc", - accent: "#5b4ecc", - accentGlow: "rgba(91, 78, 204, 0.12)", - green: "#059669", - greenBg: "rgba(5, 150, 105, 0.08)", - orange: "#d97706", - orangeBg: "rgba(217, 119, 6, 0.08)", - red: "#dc2626", - redBg: "rgba(220, 38, 38, 0.08)", - blue: "#2563eb", - blueBg: "rgba(37, 99, 235, 0.08)", - cyan: "#0891b2", - cyanBg: "rgba(8, 145, 178, 0.08)" + surfaceHover: "#fafbfc", + panel: "#f1f2f5", + panelRaised: "#ffffff", + field: "#f3f4f7", + border: "rgba(31, 35, 40, 0.12)", + borderActive: "rgba(94, 106, 210, 0.44)", + text: "#1f2328", + textMuted: "#636a75", + textDim: "#8a919d", + accent: "#5e6ad2", + accentGlow: "rgba(94, 106, 210, 0.13)", + green: "#2f9f6a", + greenBg: "rgba(47, 159, 106, 0.1)", + orange: "#b97722", + orangeBg: "rgba(185, 119, 34, 0.11)", + red: "#d14d57", + redBg: "rgba(209, 77, 87, 0.1)", + blue: "#3978d8", + blueBg: "rgba(57, 120, 216, 0.1)", + cyan: "#2f8fb7", + cyanBg: "rgba(47, 143, 183, 0.1)", + yellow: "#a98b19", + headerBg: "rgba(247, 248, 250, 0.9)", + headerBorder: "rgba(31, 35, 40, 0.1)", + boardBg: "linear-gradient(180deg, #fbfbfc 0%, #f7f8fa 48%, #eef0f4 100%)", + columnBg: "rgba(255, 255, 255, 0.78)", + columnHeader: "#1f2328", + shadow: "0 18px 42px rgba(31, 35, 40, 0.12)", + shadowSoft: "0 8px 22px rgba(31, 35, 40, 0.08)", + brandStart: "#ffffff", + brandEnd: "#d9dde7", + brandInk: "#ffffff" } }; var theme = THEMES.dark; +var APP_FONT_STACK = "'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif"; +var DISPLAY_FONT_STACK = "'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif"; +var MONO_FONT_STACK = "'SF Mono', 'JetBrains Mono', ui-monospace, Menlo, monospace"; +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} function getStatusConfig() { return { - pending: { label: "Pending", color: theme.orange, bg: theme.orangeBg, icon: "โ—Œ" }, - scheduled: { label: "Scheduled", color: theme.cyan, bg: theme.cyanBg, icon: "โฑ" }, - running: { label: "Running", color: theme.blue, bg: theme.blueBg, icon: "โŸณ" }, - completed: { label: "Completed", color: theme.green, bg: theme.greenBg, icon: "โœ“" }, - failed: { label: "Failed", color: theme.red, bg: theme.redBg, icon: "โœ•" }, + pending: { label: "Pending", color: theme.orange, bg: theme.orangeBg }, + scheduled: { label: "Scheduled", color: theme.cyan, bg: theme.cyanBg }, + running: { label: "Running", color: theme.blue, bg: theme.blueBg }, + completed: { label: "Completed", color: theme.green, bg: theme.greenBg }, + failed: { label: "Failed", color: theme.red, bg: theme.redBg }, cancelled: { label: "Cancelled", color: theme.textMuted, - bg: "rgba(107,107,138,0.08)", - icon: "โ—ป" + bg: "rgba(107,107,138,0.08)" }, - blocked: { label: "Blocked", color: theme.textMuted, bg: "rgba(107,107,138,0.1)", icon: "โŠ˜" } + blocked: { label: "Blocked", color: theme.textMuted, bg: "rgba(107,107,138,0.1)" } }; } var COLUMNS = [ - { key: "queued", label: "Queue", statuses: ["pending", "scheduled", "blocked"], icon: "โง–" }, - { key: "running", label: "Running", statuses: ["running"], icon: "โ–ธ" }, - { key: "done", label: "Done", statuses: ["completed", "failed", "cancelled"], icon: "โ—†" } + { + key: "queued", + label: "Queue", + hint: "ready, delayed, or blocked", + statuses: ["pending", "scheduled", "blocked"], + icon: Inbox, + tone: "orange" + }, + { + key: "running", + label: "Running", + hint: "live agent sessions", + statuses: ["running"], + icon: Play, + tone: "blue" + }, + { + key: "done", + label: "Done", + hint: "completed, failed, cancelled", + statuses: ["completed", "failed", "cancelled"], + icon: CircleCheck, + tone: "green" + } ]; var AGENTS = { - claude: { label: "Claude Code", icon: "โŒ˜", color: "#7c6aff" }, - codex: { label: "Codex CLI", icon: "โ—ˆ", color: "#10a37f" } + claude: { label: "Claude Code", icon: "C", color: "#ff9f0a" }, + codex: { label: "Codex CLI", icon: "X", color: "#00c7be" } }; var DEFAULT_AGENT = "codex"; var DEFAULT_TIMEOUT_SECONDS = 12000; @@ -13747,14 +14078,14 @@ function FormattedOutput({ content, theme: theme2 }) { } return /* @__PURE__ */ jsx_runtime.jsx("div", { style: { fontFamily: "'JetBrains Mono', monospace", fontSize: "12px", lineHeight: "1.6" }, - children: parsedContent.map((item, index2) => item.type === "image" ? /* @__PURE__ */ jsx_runtime.jsx("div", { + children: parsedContent.map((item, index3) => item.type === "image" ? /* @__PURE__ */ jsx_runtime.jsx("div", { style: { margin: "6px 0" }, children: /* @__PURE__ */ jsx_runtime.jsx("img", { src: item.src, alt: "output image", style: { maxWidth: "100%", borderRadius: "4px", display: "block" } }) - }, index2) : /* @__PURE__ */ jsx_runtime.jsx("div", { + }, index3) : /* @__PURE__ */ jsx_runtime.jsx("div", { style: { ...item.style, whiteSpace: "pre-wrap", @@ -13763,11 +14094,11 @@ function FormattedOutput({ content, theme: theme2 }) { padding: "2px 0" }, children: item.text - }, index2)) + }, index3)) }); } function ExecutionTimeline({ events }) { - const [expanded, setExpanded] = import_react.useState(true); + const [expanded, setExpanded] = import_react4.useState(true); const steps = buildExecutionSteps(events); if (steps.length === 0) { return /* @__PURE__ */ jsx_runtime.jsx("div", { @@ -13830,9 +14161,9 @@ function ExecutionTimeline({ events }) { }), expanded && /* @__PURE__ */ jsx_runtime.jsx("div", { style: { padding: "12px 12px 14px" }, - children: steps.map((step, index2) => /* @__PURE__ */ jsx_runtime.jsx(ExecutionTimelineStep, { + children: steps.map((step, index3) => /* @__PURE__ */ jsx_runtime.jsx(ExecutionTimelineStep, { step, - isLast: index2 === steps.length - 1 + isLast: index3 === steps.length - 1 }, `${step.id}-${step.number}`)) }) ] @@ -14091,6 +14422,26 @@ async function csrfHeaders(extra = {}) { const token = await getCsrfToken(); return { "Content-Type": "application/json", "X-CSRF-Token": token, ...extra }; } +async function fetchWithTimeout(input, timeoutMs, init = {}) { + if (typeof AbortController === "undefined") { + let timeout2 = 0; + const timeoutPromise = new Promise((_, reject) => { + timeout2 = window.setTimeout(() => reject(new Error("Request timed out")), timeoutMs); + }); + try { + return await Promise.race([fetch(input, init), timeoutPromise]); + } finally { + window.clearTimeout(timeout2); + } + } + const controller = new AbortController; + const timeout = window.setTimeout(() => controller.abort(), timeoutMs); + try { + return await fetch(input, { ...init, signal: controller.signal }); + } finally { + window.clearTimeout(timeout); + } +} async function fetchTasks() { const res = await fetch(`${API}/tasks`); if (!res.ok) @@ -14374,31 +14725,251 @@ async function runWeixinAction(action) { } } function Tooltip({ text, children }) { - const [visible, setVisible] = import_react.useState(false); + const [visible, setVisible] = import_react4.useState(false); + const [position, setPosition] = import_react4.useState(null); + const triggerRef = import_react4.useRef(null); + const tooltipRef = import_react4.useRef(null); + import_react4.useEffect(() => { + if (!visible) + return; + const updatePosition = () => { + const trigger = triggerRef.current; + const tooltip = tooltipRef.current; + if (!trigger || !tooltip) + return; + const triggerRect = trigger.getBoundingClientRect(); + const tooltipRect = tooltip.getBoundingClientRect(); + const gap = 8; + const margin = 8; + const topCandidate = triggerRect.top - tooltipRect.height - gap; + const placement = topCandidate < margin ? "bottom" : "top"; + const top = placement === "top" ? topCandidate : triggerRect.bottom + gap; + const centeredLeft = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2; + const maxLeft = window.innerWidth - tooltipRect.width - margin; + const left = clamp(centeredLeft, margin, Math.max(margin, maxLeft)); + setPosition({ + arrowLeft: clamp(triggerRect.left + triggerRect.width / 2 - left, 10, tooltipRect.width - 10), + left, + top, + placement + }); + }; + const frame = requestAnimationFrame(updatePosition); + window.addEventListener("resize", updatePosition); + window.addEventListener("scroll", updatePosition, true); + return () => { + cancelAnimationFrame(frame); + window.removeEventListener("resize", updatePosition); + window.removeEventListener("scroll", updatePosition, true); + }; + }, [visible, text]); return /* @__PURE__ */ jsx_runtime.jsxs("div", { + ref: triggerRef, style: { position: "relative", display: "inline-flex" }, - onMouseEnter: () => setVisible(true), + onMouseEnter: () => { + setPosition(null); + setVisible(true); + }, onMouseLeave: () => setVisible(false), + onFocus: () => { + setPosition(null); + setVisible(true); + }, + onBlur: () => setVisible(false), children: [ children, - visible && /* @__PURE__ */ jsx_runtime.jsx("div", { + visible && /* @__PURE__ */ jsx_runtime.jsxs("div", { + ref: tooltipRef, style: { - position: "absolute", - bottom: "calc(100% + 6px)", - left: "50%", - transform: "translateX(-50%)", + position: "fixed", + top: position?.top ?? 0, + left: position?.left ?? 0, + opacity: position ? 1 : 0, background: theme.surface, border: `1px solid ${theme.border}`, color: theme.textMuted, fontSize: 11, - padding: "4px 8px", - borderRadius: 6, + padding: "5px 8px", + borderRadius: 8, whiteSpace: "nowrap", pointerEvents: "none", - boxShadow: "0 4px 12px rgba(0,0,0,0.3)", - zIndex: 9999 + boxShadow: theme.shadowSoft, + zIndex: 9999, + transition: "opacity 0.12s ease" }, - children: text + children: [ + text, + /* @__PURE__ */ jsx_runtime.jsx("span", { + "aria-hidden": "true", + style: { + position: "absolute", + left: position?.arrowLeft ?? "50%", + [position?.placement === "bottom" ? "top" : "bottom"]: -4, + width: 7, + height: 7, + background: theme.surface, + borderLeft: `1px solid ${theme.border}`, + borderTop: `1px solid ${theme.border}`, + transform: position?.placement === "bottom" ? "translateX(-50%) rotate(45deg)" : "translateX(-50%) rotate(225deg)" + } + }) + ] + }) + ] + }); +} +function BrandMark({ size = 40 }) { + return /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + width: size, + height: size, + borderRadius: 8, + display: "grid", + placeItems: "center", + background: `linear-gradient(180deg, ${theme.brandStart}, ${theme.brandEnd})`, + border: `1px solid ${theme.border}`, + position: "relative", + overflow: "hidden", + flexShrink: 0 + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx("img", { + src: "./assets/agentforge.png", + alt: "AgentForge", + style: { width: size, height: size, display: "block" } + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + "aria-hidden": "true", + style: { + position: "absolute", + inset: 1, + borderRadius: 7, + border: "1px solid rgba(255,255,255,0.14)", + pointerEvents: "none" + } + }) + ] + }); +} +function IconGlyph({ + icon: Icon2, + size = 15, + strokeWidth = 2.35, + style: style2 +}) { + return /* @__PURE__ */ jsx_runtime.jsx(Icon2, { + "aria-hidden": "true", + size, + strokeWidth, + style: { display: "block", flexShrink: 0, ...style2 } + }); +} +function IconWell({ + icon, + color = theme.accent, + background = theme.field, + size = 28, + iconSize = 15, + active = false +}) { + return /* @__PURE__ */ jsx_runtime.jsx("span", { + "aria-hidden": "true", + style: { + width: size, + height: size, + borderRadius: 7, + display: "grid", + placeItems: "center", + background: active ? theme.accentGlow : background, + border: `1px solid ${active ? theme.borderActive : theme.border}`, + color, + flexShrink: 0 + }, + children: /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon, + size: iconSize + }) + }); +} +function HeaderButton({ children, onClick, title, active = false }) { + return /* @__PURE__ */ jsx_runtime.jsx(Tooltip, { + text: title, + children: /* @__PURE__ */ jsx_runtime.jsx("button", { + onClick, + "aria-label": title, + style: { + width: 32, + height: 32, + borderRadius: 6, + border: `1px solid ${active ? theme.accent : theme.border}`, + background: active ? theme.accentGlow : theme.surface, + color: active ? theme.accent : theme.textMuted, + cursor: "pointer", + fontSize: 15, + display: "grid", + placeItems: "center", + boxShadow: active ? `0 0 0 2px ${theme.accentGlow}` : "none", + transition: "background 0.15s ease, color 0.15s ease, border-color 0.15s ease" + }, + children + }) + }); +} +function StatusPill({ connected, label, tone = theme.green, background = theme.greenBg }) { + const activeTone = connected ? tone : theme.red; + const activeBackground = connected ? background : theme.redBg; + return /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + display: "inline-flex", + alignItems: "center", + gap: 7, + color: activeTone, + background: connected ? background : activeBackground, + border: `1px solid ${connected ? `${activeTone}40` : `${theme.red}55`}`, + borderRadius: 999, + padding: "4px 9px", + fontSize: 11, + fontWeight: 650, + fontFamily: MONO_FONT_STACK + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx("span", { + "aria-hidden": "true", + style: { + width: 7, + height: 7, + borderRadius: "50%", + background: activeTone + } + }), + connected ? label : "offline" + ] + }); +} +function MetricTile({ label, value, tone = theme.text }) { + return /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + minWidth: 84, + padding: "8px 10px", + borderRadius: 8, + border: `1px solid ${theme.border}`, + background: theme.surface + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { color: theme.textDim, fontSize: 11, fontWeight: 600 }, + children: label + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { + color: tone, + fontSize: 18, + fontWeight: 720, + lineHeight: 1.1, + marginTop: 2, + fontFamily: DISPLAY_FONT_STACK + }, + children: value }) ] }); @@ -14410,18 +14981,23 @@ function Badge({ status }) { display: "inline-flex", alignItems: "center", gap: 5, - padding: "3px 10px", - borderRadius: 20, + padding: "3px 7px", + borderRadius: 999, fontSize: 11, - fontWeight: 600, + fontWeight: 650, color: cfg.color, background: cfg.bg, - letterSpacing: 0.3 + border: `1px solid ${cfg.color}33` }, children: [ /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { fontSize: 10 }, - children: cfg.icon + "aria-hidden": "true", + style: { + width: 6, + height: 6, + borderRadius: "50%", + background: cfg.color + } }), cfg.label ] @@ -14430,13 +15006,13 @@ function Badge({ status }) { function Tag({ children }) { return /* @__PURE__ */ jsx_runtime.jsx("span", { style: { - padding: "2px 8px", + padding: "3px 7px", borderRadius: 4, fontSize: 10, - fontWeight: 500, - background: theme.accentGlow, - color: theme.accent, - letterSpacing: 0.4 + fontWeight: 650, + background: theme.field, + color: theme.textMuted, + border: `1px solid ${theme.border}` }, children }); @@ -14447,259 +15023,427 @@ function AgentBadge({ agent }) { style: { display: "inline-flex", alignItems: "center", - gap: 4, - padding: "2px 8px", + gap: 6, + padding: "3px 8px", borderRadius: 4, fontSize: 10, - fontWeight: 600, + fontWeight: 650, color: cfg.color, background: `${cfg.color}18`, - letterSpacing: 0.3 + border: `1px solid ${cfg.color}2f` }, children: [ /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { fontSize: 9 }, + style: { + width: 14, + height: 14, + borderRadius: 4, + display: "grid", + placeItems: "center", + color: theme.brandInk, + background: cfg.color, + fontSize: 9, + fontWeight: 700, + lineHeight: 1, + fontFamily: MONO_FONT_STACK + }, children: cfg.icon }), cfg.label ] }); } +function uiField(overrides = {}) { + return { + width: "100%", + padding: "9px 11px", + borderRadius: 6, + border: `1px solid ${theme.border}`, + background: theme.field, + color: theme.text, + fontSize: 13, + outline: "none", + boxSizing: "border-box", + fontFamily: APP_FONT_STACK, + transition: "border-color 0.15s ease, background 0.15s ease", + ...overrides + }; +} +function uiLabel() { + return { + fontSize: 11, + fontWeight: 650, + color: theme.textMuted, + letterSpacing: 0, + marginBottom: 6, + display: "block" + }; +} +function modalOverlay() { + return { + position: "fixed", + inset: 0, + background: "rgba(0, 0, 0, 0.58)", + display: "flex", + alignItems: "center", + justifyContent: "center", + zIndex: 1000, + backdropFilter: "blur(6px)", + padding: 20 + }; +} +function modalPanel(width, maxHeight = "84vh") { + return { + background: theme.surface, + border: `1px solid ${theme.border}`, + borderRadius: 10, + padding: 24, + width, + maxWidth: "calc(100vw - 40px)", + maxHeight, + overflow: "auto", + boxShadow: theme.shadow + }; +} +function modalTitle() { + return { + margin: "0 0 18px", + fontSize: 16, + fontWeight: 720, + color: theme.text, + fontFamily: DISPLAY_FONT_STACK + }; +} +function secondaryButton() { + return { + padding: "8px 14px", + borderRadius: 6, + border: `1px solid ${theme.border}`, + background: theme.surface, + color: theme.textMuted, + cursor: "pointer", + fontSize: 13, + fontWeight: 650 + }; +} +function primaryButton() { + return { + padding: "8px 15px", + borderRadius: 6, + border: `1px solid ${theme.accent}`, + background: theme.accent, + color: theme.brandInk, + cursor: "pointer", + fontSize: 13, + fontWeight: 680 + }; +} +function segmentedButton(active) { + return { + flex: 1, + padding: "7px 10px", + borderRadius: 6, + cursor: "pointer", + border: `1px solid ${active ? theme.borderActive : theme.border}`, + background: active ? theme.accentGlow : theme.surface, + color: active ? theme.text : theme.textMuted, + fontSize: 12, + fontWeight: 650, + minWidth: 96, + transition: "background 0.15s ease, border-color 0.15s ease, color 0.15s ease" + }; +} function TaskCard({ task, onAction, onViewDetail }) { - const [hovered, setHovered] = import_react.useState(false); - const cfg = getStatusConfig()[task.status] || getStatusConfig().pending; + const [hovered, setHovered] = import_react4.useState(false); const tags = task.tags ? task.tags.split(",").filter(Boolean) : []; - return /* @__PURE__ */ jsx_runtime.jsxs("div", { + return /* @__PURE__ */ jsx_runtime.jsx("div", { onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), onClick: () => onViewDetail(task), style: { background: hovered ? theme.surfaceHover : theme.surface, border: `1px solid ${hovered ? theme.borderActive : theme.border}`, - borderLeft: `3px solid ${cfg.color}`, - borderRadius: 10, - padding: "14px 16px", + borderRadius: 8, cursor: "pointer", - transition: "all 0.2s ease", + overflow: "hidden", + transition: "transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease", transform: hovered ? "translateY(-1px)" : "none", - boxShadow: hovered ? `0 4px 20px rgba(0,0,0,0.3)` : "none" + boxShadow: hovered ? "0 8px 24px rgba(0,0,0,0.14)" : "none" }, - children: [ - /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { - display: "flex", - justifyContent: "space-between", - alignItems: "flex-start", - marginBottom: 8 - }, - children: [ - /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { - fontSize: 13, - fontWeight: 600, - color: theme.text, - lineHeight: 1.4, - flex: 1, - marginRight: 8, - fontFamily: "'JetBrains Mono', 'SF Mono', monospace" - }, - children: task.title - }), - /* @__PURE__ */ jsx_runtime.jsx(Badge, { - status: task.status - }) - ] - }), - /* @__PURE__ */ jsx_runtime.jsx("div", { - style: { - fontSize: 12, - color: theme.textMuted, - marginBottom: 10, - lineHeight: 1.5, - overflow: "hidden", - textOverflow: "ellipsis", - display: "-webkit-box", - WebkitLineClamp: 2, - WebkitBoxOrient: "vertical" - }, - children: task.prompt - }), - /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, - children: [ - /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { display: "flex", gap: 4, flexWrap: "wrap" }, - children: [ - /* @__PURE__ */ jsx_runtime.jsx(AgentBadge, { - agent: task.agent - }), - task.schedule_type === "delayed" && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { - children: [ - "โณ ", - task.delay_seconds, - "s" - ] - }), - task.schedule_type === "scheduled_at" && task.next_run_at && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { - children: [ - "\uD83D\uDCC5 ", - formatTaskDateTime(task.next_run_at) - ] - }), - task.schedule_type === "cron" && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { - children: [ - "โฒ ", - task.cron_expr - ] - }), - tags.map((t, i) => /* @__PURE__ */ jsx_runtime.jsx(Tag, { - children: t.trim() - }, i)) - ] - }), - /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { display: "flex", gap: 4 }, - onClick: (e) => e.stopPropagation(), - children: [ - ["pending", "scheduled", "blocked"].includes(task.status) && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โœŽ", - title: "Edit", - onClick: () => onAction("edit", task.id), - color: theme.blue || theme.accent - }), - ["completed", "cancelled", "failed"].includes(task.status) && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โ‘‚", - title: "Fork", - onClick: () => onAction("fork", task.id), - color: theme.cyan || theme.accent - }), - task.status === "failed" && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โ†ป", - title: "Retry", - onClick: () => onAction("retry", task.id), - color: theme.orange - }), - ["pending", "scheduled", "running"].includes(task.status) && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โ– ", - title: "Cancel", - onClick: () => onAction("cancel", task.id), - color: theme.red - }), - /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "ร—", - title: "Delete", - onClick: () => onAction("delete", task.id), - color: theme.textMuted - }) - ] - }) - ] - }), - task.run_count > 0 && /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { fontSize: 10, color: theme.textDim, marginTop: 8, fontFamily: "monospace" }, - children: [ - "Runs: ", - task.run_count, - task.max_runs ? ` / ${task.max_runs}` : "", - task.last_run_at && ` ยท Last: ${formatTaskTime(task.last_run_at)}` - ] - }), - task.status === "blocked" && task.dependencies && task.dependencies.length > 0 && /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { fontSize: 10, color: theme.textDim, marginTop: 6, fontFamily: "monospace" }, - children: [ - "โŠ˜ Waiting for: ", - task.dependencies.map((d) => `#${d.depends_on_task_id}`).join(", ") - ] - }), - task.dependents && task.dependents.length > 0 && task.status === "completed" && /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { fontSize: 10, color: theme.textDim, marginTop: 6, fontFamily: "monospace" }, - children: [ - "โ†’ Unlocks: ", - task.dependents.map((id) => `#${id}`).join(", ") - ] - }), - task.dag_id && /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { - fontSize: 10, - color: theme.accent, - marginTop: 4, - opacity: 0.6, - fontFamily: "monospace" - }, - children: [ - "dag: ", - task.dag_id - ] - }) - ] + children: /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + padding: "12px 13px", + display: "flex", + flexDirection: "column", + gap: 9 + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + display: "flex", + justifyContent: "space-between", + alignItems: "center", + gap: 10 + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsxs("span", { + style: { + color: theme.textDim, + fontFamily: MONO_FONT_STACK, + fontSize: 10, + fontWeight: 800 + }, + children: [ + "#", + task.id + ] + }), + /* @__PURE__ */ jsx_runtime.jsx(Badge, { + status: task.status + }) + ] + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { + fontSize: 13.5, + fontWeight: 680, + color: theme.text, + lineHeight: 1.35, + fontFamily: DISPLAY_FONT_STACK + }, + children: task.title || "Untitled task" + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { + fontSize: 12, + color: theme.textMuted, + lineHeight: 1.45, + overflow: "hidden", + textOverflow: "ellipsis", + display: "-webkit-box", + WebkitLineClamp: 2, + WebkitBoxOrient: "vertical" + }, + children: task.prompt || "No prompt saved for this task." + }), + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { display: "flex", gap: 5, flexWrap: "wrap" }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx(AgentBadge, { + agent: task.agent + }), + task.schedule_type === "delayed" && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { + children: [ + "delay ", + task.delay_seconds, + "s" + ] + }), + task.schedule_type === "scheduled_at" && task.next_run_at && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { + children: [ + "at ", + formatTaskDateTime(task.next_run_at) + ] + }), + task.schedule_type === "cron" && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { + children: [ + "cron ", + task.cron_expr + ] + }), + task.run_count > 0 && /* @__PURE__ */ jsx_runtime.jsxs(Tag, { + children: [ + "runs ", + task.run_count, + task.max_runs ? `/${task.max_runs}` : "" + ] + }), + tags.slice(0, 4).map((t, i) => /* @__PURE__ */ jsx_runtime.jsx(Tag, { + children: t.trim() + }, i)) + ] + }), + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + display: "flex", + justifyContent: "space-between", + alignItems: "center", + gap: 10, + borderTop: `1px solid ${theme.border}`, + paddingTop: 9 + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { fontSize: 10, color: theme.textDim, fontFamily: MONO_FONT_STACK }, + children: task.last_run_at ? `last ${formatTaskTime(task.last_run_at)}` : "not run yet" + }), + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { display: "flex", gap: 4, opacity: hovered ? 1 : 0.7 }, + onClick: (e) => e.stopPropagation(), + children: [ + ["pending", "scheduled", "blocked"].includes(task.status) && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { + icon: Pencil, + title: "Edit", + onClick: () => onAction("edit", task.id), + color: theme.blue || theme.accent + }), + ["completed", "cancelled", "failed"].includes(task.status) && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { + icon: GitFork, + title: "Fork", + onClick: () => onAction("fork", task.id), + color: theme.cyan || theme.accent + }), + task.status === "failed" && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { + icon: RotateCcw, + title: "Retry", + onClick: () => onAction("retry", task.id), + color: theme.orange + }), + ["pending", "scheduled", "running"].includes(task.status) && /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { + icon: Square, + title: "Cancel", + onClick: () => onAction("cancel", task.id), + color: theme.red + }), + /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { + icon: Trash2, + title: "Delete", + onClick: () => onAction("delete", task.id), + color: theme.textMuted + }) + ] + }) + ] + }), + task.status === "blocked" && task.dependencies && task.dependencies.length > 0 && /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { fontSize: 10, color: theme.textDim, fontFamily: MONO_FONT_STACK }, + children: [ + "waiting for ", + task.dependencies.map((d) => `#${d.depends_on_task_id}`).join(", ") + ] + }), + task.dependents && task.dependents.length > 0 && task.status === "completed" && /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { fontSize: 10, color: theme.textDim, fontFamily: MONO_FONT_STACK }, + children: [ + "unlocks ", + task.dependents.map((id) => `#${id}`).join(", ") + ] + }), + task.dag_id && /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { + fontSize: 10, + color: theme.accent, + opacity: 0.72, + fontFamily: MONO_FONT_STACK + }, + children: [ + "dag ", + task.dag_id + ] + }) + ] + }) }); } -function ActionBtn({ label, title, onClick, color }) { - const [hovered, setHovered] = import_react.useState(false); +function ActionBtn({ icon, title, onClick, color }) { + const [hovered, setHovered] = import_react4.useState(false); return /* @__PURE__ */ jsx_runtime.jsx("button", { title, onClick, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), style: { - background: hovered ? `${color}22` : "transparent", - border: "none", + background: hovered ? `${color}22` : theme.field, + border: `1px solid ${hovered ? `${color}66` : theme.border}`, color, cursor: "pointer", - width: 24, - height: 24, + width: 26, + height: 26, borderRadius: 6, - fontSize: 14, display: "flex", alignItems: "center", justifyContent: "center", - transition: "background 0.15s" + transition: "background 0.15s ease, border-color 0.15s ease" }, - children: label + children: /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon, + size: 13, + strokeWidth: 2.4 + }) }); } function Column({ col, tasks, onAction, onViewDetail }) { + const iconColor = theme[col.tone] || theme.accent; + const iconBackground = theme[`${col.tone}Bg`] || theme.field; return /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { flex: 1, minWidth: 300 }, + style: { + minWidth: 0, + borderRadius: 8, + border: `1px solid ${theme.border}`, + background: theme.columnBg, + boxShadow: "none", + padding: 10, + minHeight: 420 + }, children: [ /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { display: "flex", alignItems: "center", - gap: 10, - marginBottom: 16, - padding: "0 4px" + justifyContent: "space-between", + gap: 12, + marginBottom: 12, + padding: "2px 2px 10px", + borderBottom: `1px solid ${theme.border}` }, children: [ - /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { fontSize: 16, opacity: 0.4 }, - children: col.icon - }), - /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { - fontSize: 12, - fontWeight: 700, - color: theme.textMuted, - letterSpacing: 1.5, - textTransform: "uppercase" - }, - children: col.label + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { display: "flex", alignItems: "center", gap: 9, minWidth: 0 }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx(IconWell, { + icon: col.icon, + color: iconColor, + background: iconBackground, + size: 28, + iconSize: 15 + }), + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { minWidth: 0 }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { + fontSize: 13, + fontWeight: 720, + color: theme.columnHeader, + fontFamily: DISPLAY_FONT_STACK + }, + children: col.label + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { fontSize: 10, color: theme.textDim, marginTop: 2 }, + children: col.hint + }) + ] + }) + ] }), /* @__PURE__ */ jsx_runtime.jsx("span", { style: { - background: theme.border, - borderRadius: 10, - padding: "2px 8px", + background: theme.surface, + border: `1px solid ${theme.border}`, + borderRadius: 999, + padding: "3px 8px", fontSize: 11, - color: theme.textDim, - fontWeight: 600 + color: theme.textMuted, + fontWeight: 600, + fontFamily: MONO_FONT_STACK }, children: tasks.length }) ] }), /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { display: "flex", flexDirection: "column", gap: 8 }, + style: { display: "flex", flexDirection: "column", gap: 10 }, children: [ tasks.map((t) => /* @__PURE__ */ jsx_runtime.jsx(TaskCard, { task: t, @@ -14709,13 +15453,14 @@ function Column({ col, tasks, onAction, onViewDetail }) { tasks.length === 0 && /* @__PURE__ */ jsx_runtime.jsx("div", { style: { border: `1px dashed ${theme.border}`, - borderRadius: 10, - padding: 32, + borderRadius: 8, + padding: "28px 18px", textAlign: "center", color: theme.textDim, - fontSize: 12 + fontSize: 12, + background: theme.surface }, - children: "No tasks" + children: "Clear" }) ] }) @@ -14747,7 +15492,7 @@ function HeartbeatBadge({ enabled }) { } function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = "create" }) { const savedDir = localStorage.getItem("agentforge_working_dir") || "~/papers"; - const [form, setForm] = import_react.useState(() => ({ + const [form, setForm] = import_react4.useState(() => ({ name: initialData?.name || "", working_dir: initialData?.working_dir || savedDir, schedule_type: initialData?.schedule_type || "interval", @@ -14760,27 +15505,8 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " enabled: initialData?.enabled ?? true })); const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v })); - const inputStyle = { - width: "100%", - padding: "10px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.text, - fontSize: 13, - outline: "none", - boxSizing: "border-box", - fontFamily: "'JetBrains Mono', 'SF Mono', monospace" - }; - const labelStyle = { - fontSize: 11, - fontWeight: 600, - color: theme.textMuted, - letterSpacing: 0.8, - textTransform: "uppercase", - marginBottom: 6, - display: "block" - }; + const inputStyle = uiField(); + const labelStyle = uiLabel(); const handleSubmit = () => { localStorage.setItem("agentforge_working_dir", form.working_dir); onSubmit({ @@ -14793,37 +15519,15 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " }; return /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - position: "fixed", - inset: 0, - background: "rgba(0,0,0,0.7)", - display: "flex", - alignItems: "center", - justifyContent: "center", - zIndex: 1000, - backdropFilter: "blur(8px)" + ...modalOverlay() }, onClick: onClose, children: /* @__PURE__ */ jsx_runtime.jsxs("div", { onClick: (e) => e.stopPropagation(), - style: { - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 16, - padding: 32, - width: 640, - maxHeight: "84vh", - overflow: "auto", - boxShadow: "0 24px 80px rgba(0,0,0,0.5)" - }, + style: modalPanel(640), children: [ /* @__PURE__ */ jsx_runtime.jsx("h2", { - style: { - margin: "0 0 24px", - fontSize: 18, - fontWeight: 700, - color: theme.text, - fontFamily: "'JetBrains Mono', monospace" - }, + style: modalTitle(), children: mode === "edit" ? "Edit Heartbeat" : "New Heartbeat" }), /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -14864,14 +15568,10 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " set("working_dir", dir); }, style: { - padding: "8px 14px", - borderRadius: 8, + ...secondaryButton(), + padding: "0 13px", + height: 37, cursor: "pointer", - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.textMuted, - fontSize: 12, - fontWeight: 600, whiteSpace: "nowrap" }, children: "Browse" @@ -14890,19 +15590,8 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " style: { display: "flex", gap: 8 }, children: ["interval", "cron"].map((t) => /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => set("schedule_type", t), - style: { - flex: 1, - padding: "8px 12px", - borderRadius: 8, - cursor: "pointer", - border: `1px solid ${form.schedule_type === t ? theme.accent : theme.border}`, - background: form.schedule_type === t ? theme.accentGlow : "transparent", - color: form.schedule_type === t ? theme.accent : theme.textMuted, - fontSize: 12, - fontWeight: 600, - textTransform: "capitalize" - }, - children: t === "interval" ? "โŸณ Interval" : "โฒ Cron" + style: segmentedButton(form.schedule_type === t), + children: t === "interval" ? "Interval" : "Cron" }, t)) }) ] @@ -15022,31 +15711,12 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " children: [ /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: onClose, - style: { - padding: "10px 20px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: "transparent", - color: theme.textMuted, - cursor: "pointer", - fontSize: 13, - fontWeight: 600 - }, + style: secondaryButton(), children: "Cancel" }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: handleSubmit, - style: { - padding: "10px 24px", - borderRadius: 8, - border: "none", - background: theme.accent, - color: "#fff", - cursor: "pointer", - fontSize: 13, - fontWeight: 600, - boxShadow: `0 0 20px ${theme.accentGlow}` - }, + style: primaryButton(), children: mode === "edit" ? "Save" : "Create Heartbeat" }) ] @@ -15058,9 +15728,9 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { const tags = []; if (heartbeat.schedule_type === "interval" && heartbeat.interval_seconds) - tags.push(`โŸณ ${heartbeat.interval_seconds}s`); + tags.push(`every ${heartbeat.interval_seconds}s`); if (heartbeat.schedule_type === "cron" && heartbeat.cron_expr) - tags.push(`โฒ ${heartbeat.cron_expr}`); + tags.push(`cron ${heartbeat.cron_expr}`); if (heartbeat.last_decision) tags.push(`Last: ${heartbeat.last_decision}`); return /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -15068,10 +15738,10 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { style: { background: theme.surface, border: `1px solid ${theme.border}`, - borderRadius: 12, - padding: "16px 18px", + borderRadius: 8, + padding: "14px 15px", cursor: "pointer", - transition: "all 0.2s ease" + transition: "border-color 0.16s ease, background 0.16s ease" }, children: [ /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -15083,9 +15753,9 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { /* @__PURE__ */ jsx_runtime.jsx("div", { style: { fontSize: 14, - fontWeight: 700, + fontWeight: 680, color: theme.text, - fontFamily: "'JetBrains Mono', monospace", + fontFamily: DISPLAY_FONT_STACK, marginBottom: 6 }, children: heartbeat.name @@ -15129,30 +15799,30 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { onClick: (e) => e.stopPropagation(), children: [ /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โšก", + icon: Play, title: "Run now", onClick: () => onAction("run", heartbeat.id), color: theme.orange }), /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โœŽ", + icon: Pencil, title: "Edit", onClick: () => onAction("edit", heartbeat.id), color: theme.blue }), heartbeat.enabled ? /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โšโš", + icon: Pause, title: "Pause", onClick: () => onAction("pause", heartbeat.id), color: theme.textMuted }) : /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "โ–ถ", + icon: Play, title: "Resume", onClick: () => onAction("resume", heartbeat.id), color: theme.green }), /* @__PURE__ */ jsx_runtime.jsx(ActionBtn, { - label: "ร—", + icon: Trash2, title: "Delete", onClick: () => onAction("delete", heartbeat.id), color: theme.red @@ -15189,14 +15859,14 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { }); } function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) { - const [selectedTickId, setSelectedTickId] = import_react.useState(null); - const [tickOutput, setTickOutput] = import_react.useState(""); - const [tickRunning, setTickRunning] = import_react.useState(false); - const outputRef = import_react.useRef(null); - import_react.useEffect(() => { + const [selectedTickId, setSelectedTickId] = import_react4.useState(null); + const [tickOutput, setTickOutput] = import_react4.useState(""); + const [tickRunning, setTickRunning] = import_react4.useState(false); + const outputRef = import_react4.useRef(null); + import_react4.useEffect(() => { setSelectedTickId(ticks[0]?.id || null); }, [heartbeat.id, ticks]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (!selectedTickId) { setTickOutput(""); setTickRunning(false); @@ -15224,7 +15894,7 @@ function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) { clearInterval(interval); }; }, [heartbeat.id, selectedTickId]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (outputRef.current) { outputRef.current.scrollTop = outputRef.current.scrollHeight; } @@ -15259,9 +15929,9 @@ function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) { /* @__PURE__ */ jsx_runtime.jsx("div", { style: { fontSize: 18, - fontWeight: 700, + fontWeight: 720, color: theme.text, - fontFamily: "'JetBrains Mono', monospace" + fontFamily: DISPLAY_FONT_STACK }, children: heartbeat.name }), @@ -15299,13 +15969,13 @@ function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) { }), heartbeat.schedule_type === "interval" ? /* @__PURE__ */ jsx_runtime.jsxs(Tag, { children: [ - "โŸณ ", + "every ", heartbeat.interval_seconds, "s" ] }) : /* @__PURE__ */ jsx_runtime.jsxs(Tag, { children: [ - "โฒ ", + "cron ", heartbeat.cron_expr ] }), @@ -15554,7 +16224,7 @@ function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) { } function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { const savedDir = localStorage.getItem("agentforge_working_dir") || "~/papers"; - const [form, setForm] = import_react.useState(() => { + const [form, setForm] = import_react4.useState(() => { if (initialData) { return { title: initialData.title || "", @@ -15584,7 +16254,7 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { dag_id: "" }; }); - const [promptImages, setPromptImages] = import_react.useState(() => { + const [promptImages, setPromptImages] = import_react4.useState(() => { if (initialData?.prompt_images && Array.isArray(initialData.prompt_images)) { return initialData.prompt_images.map((img) => ({ name: img.name || "image", @@ -15595,7 +16265,7 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { } return []; }); - const [depRows, setDepRows] = import_react.useState(() => { + const [depRows, setDepRows] = import_react4.useState(() => { if (initialData?.dependencies && Array.isArray(initialData.dependencies)) { return initialData.dependencies.map((dep) => ({ task_id: dep.depends_on_task_id, @@ -15605,7 +16275,7 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { } return []; }); - const [scheduledAtError, setScheduledAtError] = import_react.useState(""); + const [scheduledAtError, setScheduledAtError] = import_react4.useState(""); const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v })); const handleImageSelect = (e) => { const files = Array.from(e.target.files || []); @@ -15652,61 +16322,19 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { } onSubmit(data); }; - const inputStyle = { - width: "100%", - padding: "10px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.text, - fontSize: 13, - outline: "none", - boxSizing: "border-box", - fontFamily: "'JetBrains Mono', 'SF Mono', monospace", - transition: "border-color 0.2s" - }; - const labelStyle = { - fontSize: 11, - fontWeight: 600, - color: theme.textMuted, - letterSpacing: 0.8, - textTransform: "uppercase", - marginBottom: 6, - display: "block" - }; + const inputStyle = uiField(); + const labelStyle = uiLabel(); return /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - position: "fixed", - inset: 0, - background: "rgba(0,0,0,0.7)", - display: "flex", - alignItems: "center", - justifyContent: "center", - zIndex: 1000, - backdropFilter: "blur(8px)" + ...modalOverlay() }, onClick: onClose, children: /* @__PURE__ */ jsx_runtime.jsxs("div", { onClick: (e) => e.stopPropagation(), - style: { - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 16, - padding: 32, - width: 520, - maxHeight: "80vh", - overflow: "auto", - boxShadow: "0 24px 80px rgba(0,0,0,0.5)" - }, + style: modalPanel(520, "82vh"), children: [ /* @__PURE__ */ jsx_runtime.jsx("h2", { - style: { - margin: "0 0 24px", - fontSize: 18, - fontWeight: 700, - color: theme.text, - fontFamily: "'JetBrains Mono', monospace" - }, + style: modalTitle(), children: mode === "edit" ? "Edit Task" : mode === "fork" ? "Fork Task" : "New Task" }), /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -15852,16 +16480,11 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { set("working_dir", dir); }, style: { - padding: "8px 14px", - borderRadius: 8, + ...secondaryButton(), + padding: "0 13px", + height: 37, cursor: "pointer", - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.textMuted, - fontSize: 12, - fontWeight: 600, - whiteSpace: "nowrap", - transition: "all 0.15s" + whiteSpace: "nowrap" }, children: "Browse" }) @@ -15879,21 +16502,8 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { style: { display: "flex", gap: 8, flexWrap: "wrap" }, children: ["immediate", "delayed", "scheduled_at", "cron"].map((t) => /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => set("schedule_type", t), - style: { - flex: 1, - padding: "8px 12px", - borderRadius: 8, - cursor: "pointer", - border: `1px solid ${form.schedule_type === t ? theme.accent : theme.border}`, - background: form.schedule_type === t ? theme.accentGlow : "transparent", - color: form.schedule_type === t ? theme.accent : theme.textMuted, - fontSize: 12, - fontWeight: 600, - textTransform: "capitalize", - transition: "all 0.15s", - minWidth: 100 - }, - children: t === "immediate" ? "โšก Immediate" : t === "delayed" ? "โณ Delayed" : t === "scheduled_at" ? "\uD83D\uDCC5 At Time" : "โฒ Cron" + style: segmentedButton(form.schedule_type === t), + children: t === "immediate" ? "Immediate" : t === "delayed" ? "Delayed" : t === "scheduled_at" ? "At Time" : "Cron" }, t)) }) ] @@ -16051,11 +16661,11 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { padding: "5px 12px", borderRadius: 6, border: `1px dashed ${theme.border}`, - background: "transparent", + background: theme.surface, color: theme.textMuted, cursor: "pointer", fontSize: 11, - fontWeight: 600 + fontWeight: 650 }, children: "+ Add dependency" }) @@ -16109,31 +16719,12 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { children: [ /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: onClose, - style: { - padding: "10px 20px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: "transparent", - color: theme.textMuted, - cursor: "pointer", - fontSize: 13, - fontWeight: 600 - }, + style: secondaryButton(), children: "Cancel" }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: handleSubmit, - style: { - padding: "10px 24px", - borderRadius: 8, - border: "none", - background: theme.accent, - color: "#fff", - cursor: "pointer", - fontSize: 13, - fontWeight: 600, - boxShadow: `0 0 20px ${theme.accentGlow}` - }, + style: primaryButton(), children: mode === "edit" ? "Save Changes" : mode === "fork" ? "Create Fork" : "Create Task" }) ] @@ -16143,19 +16734,19 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { }); } function DetailPanel({ task, onClose, onResume }) { - const [liveOutput, setLiveOutput] = import_react.useState(""); - const [resumeText, setResumeText] = import_react.useState(""); - const [resumeError, setResumeError] = import_react.useState(""); - const [resumeSent, setResumeSent] = import_react.useState(false); - const [messages, setMessages] = import_react.useState([]); - const [events, setEvents] = import_react.useState([]); - const [showMessages, setShowMessages] = import_react.useState(false); - const [showEvents, setShowEvents] = import_react.useState(false); - const [showLiveOutput, setShowLiveOutput] = import_react.useState(true); - const liveOutputRef = import_react.useRef(null); - const messagesRef = import_react.useRef(null); - const eventsRef = import_react.useRef(null); - import_react.useEffect(() => { + const [liveOutput, setLiveOutput] = import_react4.useState(""); + const [resumeText, setResumeText] = import_react4.useState(""); + const [resumeError, setResumeError] = import_react4.useState(""); + const [resumeSent, setResumeSent] = import_react4.useState(false); + const [messages, setMessages] = import_react4.useState([]); + const [events, setEvents] = import_react4.useState([]); + const [showMessages, setShowMessages] = import_react4.useState(false); + const [showEvents, setShowEvents] = import_react4.useState(false); + const [showLiveOutput, setShowLiveOutput] = import_react4.useState(true); + const liveOutputRef = import_react4.useRef(null); + const messagesRef = import_react4.useRef(null); + const eventsRef = import_react4.useRef(null); + import_react4.useEffect(() => { if (task.status !== "running") { setLiveOutput(""); return; @@ -16183,17 +16774,17 @@ function DetailPanel({ task, onClose, onResume }) { clearInterval(interval); }; }, [task.id, task.status]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (liveOutputRef.current) { liveOutputRef.current.scrollTop = liveOutputRef.current.scrollHeight; } }, [liveOutput]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (showMessages) { fetchTaskMessages(task.id).then(setMessages); } }, [task.id, showMessages]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (!showEvents) return; let cancelled = false; @@ -16214,7 +16805,7 @@ function DetailPanel({ task, onClose, onResume }) { clearInterval(interval); }; }, [task.id, task.status, showEvents]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (messagesRef.current) { messagesRef.current.scrollTop = messagesRef.current.scrollHeight; } @@ -16771,7 +17362,7 @@ function DetailPanel({ task, onClose, onResume }) { }), resumeSent && /* @__PURE__ */ jsx_runtime.jsx("div", { style: { fontSize: 12, color: theme.green, marginTop: 6 }, - children: "โœจ ๅทฒๅ‘้€๏ผไปปๅŠกๆญฃๅœจ้‡ๆ–ฐๅ”ค้†’๏ผŒ่ฏท็จๅ€™~" + children: "Sent. The task is waking up again." }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: handleResume, @@ -16844,13 +17435,13 @@ function SettingsModal({ channelsStatus: initialChannelsStatus, onChannelsSave }) { - const [tab, setTab] = import_react.useState("general"); - const [timeout, setTimeout2] = import_react.useState(initialTimeout ?? DEFAULT_TIMEOUT_SECONDS); - const [defaultAgent, setDefaultAgent] = import_react.useState(initialDefaultAgent ?? DEFAULT_AGENT); - const [skillEnabled, setSkillEnabled] = import_react.useState(false); - const [skillSweepAgent, setSkillSweepAgent] = import_react.useState(DEFAULT_AGENT); - const [skillSweepCron, setSkillSweepCron] = import_react.useState("0 3 * * *"); - const [feishu, setFeishu] = import_react.useState({ + const [tab, setTab] = import_react4.useState("general"); + const [timeout, setTimeout2] = import_react4.useState(initialTimeout ?? DEFAULT_TIMEOUT_SECONDS); + const [defaultAgent, setDefaultAgent] = import_react4.useState(initialDefaultAgent ?? DEFAULT_AGENT); + const [skillEnabled, setSkillEnabled] = import_react4.useState(false); + const [skillSweepAgent, setSkillSweepAgent] = import_react4.useState(DEFAULT_AGENT); + const [skillSweepCron, setSkillSweepCron] = import_react4.useState("0 3 * * *"); + const [feishu, setFeishu] = import_react4.useState({ feishu_app_id: "", feishu_app_secret: "", feishu_default_chat_id: "", @@ -16858,19 +17449,19 @@ function SettingsModal({ feishu_enabled: "false", ...initialFeishu }); - const [feishuSaving, setFeishuSaving] = import_react.useState(false); - const [feishuMsg, setFeishuMsg] = import_react.useState(null); - const [channels, setChannels] = import_react.useState(createInitialChannelsState(initialChannelsStatus)); - const [channelsSaving, setChannelsSaving] = import_react.useState(false); - const [channelsMsg, setChannelsMsg] = import_react.useState(null); - const [weixinQrSrc, setWeixinQrSrc] = import_react.useState(""); - const [weixinActionBusy, setWeixinActionBusy] = import_react.useState(false); - const [collapsedChannels, setCollapsedChannels] = import_react.useState({ + const [feishuSaving, setFeishuSaving] = import_react4.useState(false); + const [feishuMsg, setFeishuMsg] = import_react4.useState(null); + const [channels, setChannels] = import_react4.useState(createInitialChannelsState(initialChannelsStatus)); + const [channelsSaving, setChannelsSaving] = import_react4.useState(false); + const [channelsMsg, setChannelsMsg] = import_react4.useState(null); + const [weixinQrSrc, setWeixinQrSrc] = import_react4.useState(""); + const [weixinActionBusy, setWeixinActionBusy] = import_react4.useState(false); + const [collapsedChannels, setCollapsedChannels] = import_react4.useState({ telegram: true, slack: true, weixin: true }); - import_react.useEffect(() => { + import_react4.useEffect(() => { let cancelled = false; const refreshChannels = async (preserveUserEdits = true) => { const status = await fetchChannelsStatus(); @@ -16903,7 +17494,7 @@ function SettingsModal({ clearInterval(intervalId); }; }, []); - import_react.useEffect(() => { + import_react4.useEffect(() => { let cancelled = false; const qrValue = channels.weixin?.qr_code_url || ""; if (!qrValue) { @@ -16996,86 +17587,45 @@ function SettingsModal({ setChannelsSaving(false); } }; - const fieldStyle = { - width: "100%", - padding: "10px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.text, - fontSize: 13, - outline: "none", - boxSizing: "border-box", - fontFamily: "'JetBrains Mono', 'SF Mono', monospace" - }; - const labelStyle = { - fontSize: 11, - fontWeight: 600, - color: theme.textMuted, - letterSpacing: 0.8, - textTransform: "uppercase", - marginBottom: 8, - display: "block" - }; + const fieldStyle = uiField(); + const labelStyle = uiLabel(); const hintStyle = { fontSize: 10, color: theme.textDim, marginTop: 4 }; const tabs = ["general", "channels", "feishu"]; const tabLabel = { general: "General", channels: "Channels", feishu: "Feishu / Lark" }; return /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - position: "fixed", - inset: 0, - background: "rgba(0,0,0,0.7)", - display: "flex", - alignItems: "center", - justifyContent: "center", - zIndex: 1000, - backdropFilter: "blur(8px)" + ...modalOverlay() }, onClick: onClose, children: /* @__PURE__ */ jsx_runtime.jsxs("div", { onClick: (e) => e.stopPropagation(), - style: { - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 16, - padding: 32, - width: 480, - maxHeight: "85vh", - overflowY: "auto", - boxShadow: "0 24px 80px rgba(0,0,0,0.5)" - }, + style: modalPanel(520, "85vh"), children: [ /* @__PURE__ */ jsx_runtime.jsx("h2", { - style: { - margin: "0 0 20px", - fontSize: 18, - fontWeight: 700, - color: theme.text, - fontFamily: "'JetBrains Mono', monospace" - }, + style: modalTitle(), children: "Settings" }), /* @__PURE__ */ jsx_runtime.jsx("div", { style: { display: "flex", - gap: 4, - marginBottom: 24, - borderBottom: `1px solid ${theme.border}`, - paddingBottom: 0 + gap: 3, + marginBottom: 20, + padding: 2, + border: `1px solid ${theme.border}`, + borderRadius: 7, + background: theme.field }, children: tabs.map((t) => /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => setTab(t), style: { - padding: "7px 16px", - borderRadius: "8px 8px 0 0", + padding: "7px 12px", + borderRadius: 5, border: "none", cursor: "pointer", fontSize: 12, - fontWeight: 600, - background: tab === t ? theme.bg : "transparent", - color: tab === t ? theme.text : theme.textMuted, - borderBottom: tab === t ? `2px solid ${theme.accent}` : "2px solid transparent", - marginBottom: -1 + fontWeight: 650, + background: tab === t ? theme.surface : "transparent", + color: tab === t ? theme.text : theme.textMuted }, children: tabLabel[t] }, t)) @@ -17153,12 +17703,12 @@ function SettingsModal({ onChange: (e) => setSkillEnabled(e.target.checked), style: { width: 16, height: 16, cursor: "pointer" } }), - "Skill Library ่‡ชๅŠจๆ‰ซๆ" + "Skill Library automatic scans" ] }), /* @__PURE__ */ jsx_runtime.jsx("div", { style: hintStyle, - children: "ๅฎšๆ—ถ่ฎฉ agent ๆ‰ซๆๅทฒๅฎŒๆˆไปปๅŠกใ€ๆฃ€ๆต‹ๅคๅ‘ๆจกๅผ๏ผˆๆถˆ่€— token๏ผŒ้ป˜่ฎคๅ…ณ้—ญ๏ผ‰ใ€‚ ๆ‰‹ๅŠจใ€Œๆ‰ซไธ€้ใ€ๆŒ‰้’ฎไธๅ—ๆญคๅผ€ๅ…ณๅฝฑๅ“ใ€‚" + children: "Run scheduled sweeps over completed tasks to detect recurring patterns. This uses tokens and is off by default. The manual scan button is not affected." }) ] }), @@ -17169,7 +17719,7 @@ function SettingsModal({ children: [ /* @__PURE__ */ jsx_runtime.jsx("label", { style: labelStyle, - children: "ๆ‰ซๆ Agent" + children: "Sweep Agent" }), /* @__PURE__ */ jsx_runtime.jsxs("select", { value: skillSweepAgent, @@ -17188,7 +17738,7 @@ function SettingsModal({ }), /* @__PURE__ */ jsx_runtime.jsx("div", { style: hintStyle, - children: "่ฟ่กŒ sweep ็š„ agentใ€‚" + children: "Agent used for skill sweeps." }) ] }), @@ -17197,7 +17747,7 @@ function SettingsModal({ children: [ /* @__PURE__ */ jsx_runtime.jsx("label", { style: labelStyle, - children: "ๆ‰ซๆ่Š‚ๅฅ (cron)" + children: "Sweep Cadence (cron)" }), /* @__PURE__ */ jsx_runtime.jsx("input", { value: skillSweepCron, @@ -17207,7 +17757,7 @@ function SettingsModal({ }), /* @__PURE__ */ jsx_runtime.jsx("div", { style: hintStyle, - children: "้ป˜่ฎคๆฏๆ—ฅๅ‡Œๆ™จ 3 ็‚นใ€‚ๅขž้‡ๆ‰ซๆ๏ผŒๅช็œ‹ไธŠๆฌกไปฅๆฅ็š„ๆ–ฐไปปๅŠกใ€‚" + children: "Default: 3 AM daily. Incremental scans only inspect tasks since the last sweep." }) ] }) @@ -17218,31 +17768,12 @@ function SettingsModal({ children: [ /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: onClose, - style: { - padding: "10px 20px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: "transparent", - color: theme.textMuted, - cursor: "pointer", - fontSize: 13, - fontWeight: 600 - }, + style: secondaryButton(), children: "Cancel" }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: handleSaveGeneral, - style: { - padding: "10px 24px", - borderRadius: 8, - border: "none", - background: theme.accent, - color: "#fff", - cursor: "pointer", - fontSize: 13, - fontWeight: 600, - boxShadow: `0 0 20px ${theme.accentGlow}` - }, + style: primaryButton(), children: "Save" }) ] @@ -18435,9 +18966,9 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { const taskCount = taskIds.length; const ready = p.recurrence_count >= 3 && taskCount >= 2; const draftStatus = p.draft_status; - const [expanded, setExpanded] = import_react.useState(false); - const [body, setBody] = import_react.useState(p.draft_body || ""); - import_react.useEffect(() => { + const [expanded, setExpanded] = import_react4.useState(false); + const [body, setBody] = import_react4.useState(p.draft_body || ""); + import_react4.useEffect(() => { if (draftStatus === "ready") setBody(p.draft_body || ""); }, [draftStatus, p.draft_body]); @@ -18455,10 +18986,11 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { }); return /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { - background: theme.surface, + background: theme.columnBg, border: `1px solid ${borderColor}`, - borderRadius: 12, + borderRadius: 8, padding: 16, + boxShadow: theme.shadowSoft, opacity: muted ? 0.5 : 1 }, children: [ @@ -18475,7 +19007,16 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { ] }), /* @__PURE__ */ jsx_runtime.jsx("div", { - style: { color: theme.textMuted, fontSize: 13, marginBottom: 10 }, + style: { + color: theme.textMuted, + fontSize: 13, + marginBottom: 10, + lineHeight: 1.5, + display: "-webkit-box", + WebkitBoxOrient: "vertical", + WebkitLineClamp: 2, + overflow: "hidden" + }, children: p.summary || "โ€”" }), /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -18490,15 +19031,16 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { children: [ /* @__PURE__ */ jsx_runtime.jsxs("span", { children: [ - "ๅคๅ‘ ", + "Recurs ", p.recurrence_count, - "ร—" + "x" ] }), /* @__PURE__ */ jsx_runtime.jsxs("span", { children: [ taskCount, - " ไธชไปปๅŠก" + " ", + taskCount === 1 ? "task" : "tasks" ] }), /* @__PURE__ */ jsx_runtime.jsx("span", { @@ -18506,7 +19048,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { }), ready && p.status !== "promoted" && /* @__PURE__ */ jsx_runtime.jsx("span", { style: { color: theme.accent, fontWeight: 700 }, - children: "โœ“ ่พพๆ ‡" + children: "Ready" }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => setExpanded((v) => !v), @@ -18519,7 +19061,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { fontSize: 11, fontWeight: 700 }, - children: expanded ? "ๆ”ถ่ตท โ–ฒ" : "่ฏฆๆƒ… โ–ผ" + children: expanded ? "Hide" : "Details" }) ] }), @@ -18539,12 +19081,12 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { children: [ /* @__PURE__ */ jsx_runtime.jsx("span", { style: { color: theme.textDim }, - children: "้ฆ–ๆฌก " + children: "First seen " }), (p.first_seen || "").replace("T", " ").slice(0, 19) || "โ€”", /* @__PURE__ */ jsx_runtime.jsx("span", { style: { color: theme.textDim }, - children: "ใ€€ๆœ€่ฟ‘ " + children: " ยท Last seen " }), (p.last_seen || "").replace("T", " ").slice(0, 19) || "โ€”" ] @@ -18552,9 +19094,9 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { color: theme.textDim, marginBottom: 4 }, children: [ - "่ดก็Œฎ็š„ไปปๅŠก๏ผˆ", + "Contributing tasks (", taskCount, - "๏ผ‰๏ผš" + "):" ] }), /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -18574,7 +19116,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { " ", t ? t.title : /* @__PURE__ */ jsx_runtime.jsx("span", { style: { color: theme.textDim }, - children: "(ๅทฒๅˆ ้™ค)" + children: "(deleted)" }) ] }, tid); @@ -18594,13 +19136,13 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { border: `1px solid ${p.draft_worthy ? "rgba(34,197,94,0.3)" : "rgba(245,158,11,0.35)"}` }, children: [ - p.draft_worthy ? "โœ“ agent ๅปบ่ฎฎๆฒ‰ๆท€" : "โš  agent ่ฎคไธบไปทๅ€ผๆœ‰้™๏ผˆๅฏไปๆ‰นๅ‡†ๆˆ–้ฉณๅ›ž๏ผ‰", - p.draft_worthiness_reason ? `๏ผš${p.draft_worthiness_reason}` : "" + p.draft_worthy ? "Agent recommends turning this into a skill" : "Agent thinks this may have limited value. You can still approve or reject it.", + p.draft_worthiness_reason ? `: ${p.draft_worthiness_reason}` : "" ] }), p.status === "promoted" && /* @__PURE__ */ jsx_runtime.jsx("div", { style: { fontSize: 12, color: theme.green, fontWeight: 700 }, - children: "โœ“ ๅทฒๆฒ‰ๆท€ไธบ Skill" + children: "Promoted to Skill" }), (p.status === "candidate" || p.status === "tracking") && draftStatus !== "ready" && draftStatus !== "drafting" && /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { display: "flex", gap: 8, alignItems: "center", flexWrap: "wrap" }, @@ -18608,21 +19150,21 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => onDraft(p.id), style: btn(theme.accent, "#fff"), - children: draftStatus === "error" ? "้‡่ฏ•่’ธ้ฆ" : "่’ธ้ฆๆˆ Skill" + children: draftStatus === "error" ? "Retry Distill" : "Distill Skill" }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => onDismiss(p.id), style: btn("transparent", theme.textMuted), - children: "้ฉณๅ›ž" + children: "Reject" }), p.status === "tracking" && /* @__PURE__ */ jsx_runtime.jsx("span", { style: { color: theme.textDim, fontSize: 11 }, - children: "ๆœช่พพ่‡ชๅŠจ้˜ˆๅ€ผ๏ผŒๅฏๆ‰‹ๅŠจ่’ธ้ฆ๏ผˆagent ไผšๅˆคๆ–ญๆ˜ฏๅฆๅ€ผๅพ—๏ผ‰" + children: "Below the automatic threshold. You can still distill it manually." }), draftStatus === "error" && /* @__PURE__ */ jsx_runtime.jsxs("span", { style: { color: theme.red, fontSize: 11 }, children: [ - "่’ธ้ฆๅคฑ่ดฅ๏ผš", + "Distill failed: ", p.draft_error ] }) @@ -18630,7 +19172,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { }), draftStatus === "drafting" && /* @__PURE__ */ jsx_runtime.jsx("div", { style: { fontSize: 12, color: theme.textMuted }, - children: "่’ธ้ฆไธญโ€ฆ" + children: "Distillingโ€ฆ" }), draftStatus === "ready" && (() => { const fm = parseSkillFrontmatter(body); @@ -18650,7 +19192,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { padding: "3px 9px", borderRadius: 6 }, - children: fm.name || "(ๆ—  name)" + children: fm.name || "(no name)" }), /* @__PURE__ */ jsx_runtime.jsxs("span", { style: { fontSize: 11, color: theme.textDim }, @@ -18676,7 +19218,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { fontWeight: 600, letterSpacing: 0.3 }, - children: "SKILL.md ยท ๅฏ็ผ–่พ‘๏ผˆfrontmatter ๅ†ณๅฎšๅ็งฐไธŽ่งฆๅ‘ๆ่ฟฐ๏ผ‰" + children: "SKILL.md ยท editable. Frontmatter controls the name and trigger description." }), /* @__PURE__ */ jsx_runtime.jsx("textarea", { value: body, @@ -18706,7 +19248,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => onApprove(p.id, { body }), style: { ...btn(theme.green, "#fff"), padding: "8px 18px", fontSize: 12 }, - children: "โœ“ ๆ‰นๅ‡†ๅนถๅ†™ๅ…ฅ" + children: "Approve and Write" }), /* @__PURE__ */ jsx_runtime.jsx("button", { onClick: () => onDismiss(p.id), @@ -18715,7 +19257,7 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { padding: "8px 18px", fontSize: 12 }, - children: "้ฉณๅ›ž" + children: "Reject" }) ] }) @@ -18726,9 +19268,9 @@ function SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) { }); } function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { - const [expanded, setExpanded] = import_react.useState(false); - const [content, setContent] = import_react.useState(null); - const [loading, setLoading] = import_react.useState(false); + const [expanded, setExpanded] = import_react4.useState(false); + const [content, setContent] = import_react4.useState(null); + const [loading, setLoading] = import_react4.useState(false); let sourceTaskIds = []; try { sourceTaskIds = JSON.parse(s.source_task_ids || "[]"); @@ -18743,7 +19285,7 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { const d = await res.json(); setContent(d.content ?? ""); } catch (e) { - setContent(`(ๅŠ ่ฝฝๅคฑ่ดฅ๏ผš${e.message})`); + setContent(`(failed to load: ${e.message})`); } finally { setLoading(false); } @@ -18751,10 +19293,11 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { }; return /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { - background: theme.surface, + background: theme.columnBg, border: `1px solid ${theme.border}`, - borderRadius: 12, + borderRadius: 8, padding: 14, + boxShadow: theme.shadowSoft, opacity: s.enabled ? 1 : 0.55 }, children: [ @@ -18779,12 +19322,21 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { fontSize: 11, fontWeight: 700 }, - children: expanded ? "ๆ”ถ่ตท โ–ฒ" : "ๆŸฅ็œ‹ SKILL.md โ–ผ" + children: expanded ? "Hide" : "View SKILL.md" }) ] }), /* @__PURE__ */ jsx_runtime.jsx("div", { - style: { color: theme.textMuted, fontSize: 12, marginBottom: 10, lineHeight: 1.5 }, + style: { + color: theme.textMuted, + fontSize: 12, + marginBottom: 10, + lineHeight: 1.5, + display: "-webkit-box", + WebkitBoxOrient: "vertical", + WebkitLineClamp: 2, + overflow: "hidden" + }, children: s.description || "โ€”" }), expanded && /* @__PURE__ */ jsx_runtime.jsxs("div", { @@ -18799,17 +19351,19 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { }), s.source_pattern_key && /* @__PURE__ */ jsx_runtime.jsxs("span", { children: [ - "ใ€€ๆฅๆบ pattern๏ผš", + " ยท Source pattern: ", s.source_pattern_key ] }), sourceTaskIds.length > 0 && /* @__PURE__ */ jsx_runtime.jsxs("span", { children: [ - "ๆฅๆบไปปๅŠก๏ผš", + " ", + "ยท Source tasks:", + " ", sourceTaskIds.map((tid) => { const t = (tasks || []).find((x) => x.id === tid); - return `#${tid}${t ? "๏ผˆ" + t.title + "๏ผ‰" : ""}`; - }).join("ใ€") + return `#${tid}${t ? " (" + t.title + ")" : ""}`; + }).join(", ") ] }) ] @@ -18830,7 +19384,7 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { maxHeight: 360, overflow: "auto" }, - children: loading ? "ๅŠ ่ฝฝไธญโ€ฆ" : content + children: loading ? "Loadingโ€ฆ" : content }) ] }), @@ -18853,7 +19407,7 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { onChange: (e) => onToggle(s.id, e.target.checked), style: { cursor: "pointer" } }), - s.enabled ? "ๅทฒๅฏ็”จ๏ผˆclaude/codex ๅŠ ่ฝฝไธญ๏ผ‰" : "ๅทฒๅœ็”จ๏ผˆsymlink ๅทฒๆ‘˜้™ค๏ผ‰" + s.enabled ? "Enabled for Claude/Codex" : "Disabled (symlinks removed)" ] }), /* @__PURE__ */ jsx_runtime.jsx("button", { @@ -18869,7 +19423,7 @@ function SkillRegistryCard({ s, tasks, onToggle, onDelete }) { fontSize: 11, fontWeight: 700 }, - children: "ๅˆ ้™ค" + children: "Delete" }) ] }) @@ -18880,7 +19434,7 @@ function SkillsView({ skillData, skills, tasks, - onSweep, + filter, onDraft, onApprove, onDismiss, @@ -18888,22 +19442,58 @@ function SkillsView({ onDeleteSkill }) { const patterns = (skillData.patterns || []).filter((p) => p.recurrence_count >= 2); + const skillQuery = (filter || "").trim().toLowerCase(); + const matchesQuery = (values) => { + if (!skillQuery) + return true; + return values.some((value) => String(value ?? "").toLowerCase().includes(skillQuery)); + }; + const taskTitle = (id) => (tasks || []).find((t) => t.id === id)?.title || ""; + const parseIds = (raw) => { + try { + return JSON.parse(raw || "[]"); + } catch { + return []; + } + }; + const filteredSkills = (skills || []).filter((s) => matchesQuery([ + s.name, + s.description, + s.kind, + s.path, + s.source_pattern_key, + s.enabled ? "enabled" : "disabled", + ...parseIds(s.source_task_ids).map(taskTitle) + ])); + const filteredPatterns = patterns.filter((p) => matchesQuery([ + p.pattern_key, + p.summary, + p.kind, + p.status, + p.draft_status, + p.draft_error, + p.draft_worthiness_reason, + p.draft_body, + ...parseIds(p.contributing_task_ids).map(taskTitle) + ])); const sweep = skillData.sweep || {}; const running = sweep.running; const last = sweep.last; let lastNote = null; - if (last) { - lastNote = last.error ? `ไธŠๆฌกๆ‰ซๆๅคฑ่ดฅ๏ผš${last.error}` : last.scanned === 0 ? `ไธŠๆฌกๆ‰ซๆ๏ผšๆฒกๆœ‰ๅทฒๅฎŒๆˆ็š„ไปปๅŠกๅฏๅˆ†ๆž๏ผˆagent ${last.agent}๏ผ‰` : `ไธŠๆฌกๆ‰ซๆ๏ผšๅˆ†ๆž ${last.scanned} ไธชไปปๅŠกใ€ๆ–ฐๅขž ${last.new ?? 0} ๆฌกๅคๅ‘ใ€ๅ€™้€‰ ${last.candidates ?? 0}๏ผˆagent ${last.agent}๏ผ‰`; + if (running) { + lastNote = "Sweep runningโ€ฆ"; + } else if (last) { + lastNote = last.error ? `Last sweep failed: ${last.error}` : last.scanned === 0 ? `Last sweep: no completed tasks to analyze (agent ${last.agent})` : `Last sweep: analyzed ${last.scanned} tasks, added ${last.new ?? 0} recurrences, found ${last.candidates ?? 0} candidates (agent ${last.agent})`; } - const [showRegistry, setShowRegistry] = import_react.useState(true); - const [showPatterns, setShowPatterns] = import_react.useState(true); + const [showRegistry, setShowRegistry] = import_react4.useState(true); + const [showPatterns, setShowPatterns] = import_react4.useState(true); const sectionHeader = (label, count, open, toggle) => /* @__PURE__ */ jsx_runtime.jsxs("button", { onClick: toggle, style: { display: "flex", alignItems: "center", gap: 8, - width: "100%", + width: "auto", background: "transparent", border: "none", cursor: "pointer", @@ -18922,95 +19512,89 @@ function SkillsView({ /* @__PURE__ */ jsx_runtime.jsxs("span", { style: { color: theme.textDim, fontWeight: 600 }, children: [ - "๏ผˆ", + "(", count, - "๏ผ‰" + ")" ] }) ] }); return /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { padding: 28, minHeight: "calc(100vh - 72px)" }, + style: { padding: 20, minHeight: "calc(100vh - 148px)" }, children: [ - /* @__PURE__ */ jsx_runtime.jsxs("div", { + /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - display: "flex", - alignItems: "center", - justifyContent: "space-between", - marginBottom: 16, - gap: 12 + marginBottom: 18, + minHeight: 30, + maxWidth: 920 }, + children: /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { color: theme.textMuted, fontSize: 12 }, + children: [ + "Cross-task recurrence ledger. Recurrence >= 2 can be distilled manually; recurrence >= 3 across 2+ tasks becomes a candidate.", + lastNote && /* @__PURE__ */ jsx_runtime.jsxs("span", { + style: { marginLeft: 10, color: theme.textDim }, + children: [ + "ยท ", + lastNote + ] + }) + ] + }) + }), + (skills || []).length > 0 && /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { marginBottom: 26 }, children: [ - /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { color: theme.textMuted, fontSize: 12 }, - children: [ - "่ทจไปปๅŠกๅคๅ‘ๆจกๅผ่ดฆๆœฌ ยท ๅคๅ‘ โ‰ฅ2 ๅณๅฏๆ‰‹ๅŠจ่’ธ้ฆไธบ Skill๏ผˆ่พพ โ‰ฅ3 ไธ”่ทจ โ‰ฅ2 ไปปๅŠก่‡ชๅŠจๆ ‡่ฎฐๅ€™้€‰๏ผ‰", - lastNote && /* @__PURE__ */ jsx_runtime.jsxs("span", { - style: { marginLeft: 10, color: theme.textDim }, - children: [ - "ยท ", - lastNote - ] - }) - ] - }), - /* @__PURE__ */ jsx_runtime.jsx("button", { - onClick: onSweep, - disabled: running, + sectionHeader("Installed Skills", skillQuery ? `${filteredSkills.length}/${skills.length}` : skills.length, showRegistry, () => setShowRegistry((v) => !v)), + showRegistry && (filteredSkills.length === 0 ? /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - padding: "8px 18px", + border: `1px dashed ${theme.border}`, borderRadius: 8, - border: "none", - background: running ? theme.border : theme.accent, - color: "#fff", - cursor: running ? "default" : "pointer", + padding: 28, + textAlign: "center", + color: theme.textDim, fontSize: 12, - fontWeight: 700, - letterSpacing: 0.3, - whiteSpace: "nowrap", - boxShadow: running ? "none" : `0 0 24px ${theme.accentGlow}` + background: theme.field, + maxWidth: 520 }, - children: running ? "ๆ‰ซๆไธญโ€ฆ" : "ๆ‰ซไธ€้" - }) - ] - }), - (skills || []).length > 0 && /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { marginBottom: 26 }, - children: [ - sectionHeader("ๅทฒๆฒ‰ๆท€ Skills", skills.length, showRegistry, () => setShowRegistry((v) => !v)), - showRegistry && /* @__PURE__ */ jsx_runtime.jsx("div", { + children: "No installed skills match this search." + }) : /* @__PURE__ */ jsx_runtime.jsx("div", { style: { display: "grid", - gridTemplateColumns: "repeat(auto-fit, minmax(360px, 1fr))", - gap: 12 + gridTemplateColumns: "repeat(auto-fill, minmax(min(100%, 380px), 520px))", + gap: 12, + justifyContent: "start" }, - children: skills.map((s) => /* @__PURE__ */ jsx_runtime.jsx(SkillRegistryCard, { + children: filteredSkills.map((s) => /* @__PURE__ */ jsx_runtime.jsx(SkillRegistryCard, { s, tasks, onToggle: onToggleSkill, onDelete: onDeleteSkill }, s.id)) - }) + })) ] }), - sectionHeader("ๆฃ€ๆต‹ๅˆฐ็š„ๆจกๅผ", patterns.length, showPatterns, () => setShowPatterns((v) => !v)), - showPatterns && (patterns.length === 0 ? /* @__PURE__ */ jsx_runtime.jsx("div", { + sectionHeader("Detected Patterns", skillQuery ? `${filteredPatterns.length}/${patterns.length}` : patterns.length, showPatterns, () => setShowPatterns((v) => !v)), + showPatterns && (filteredPatterns.length === 0 ? /* @__PURE__ */ jsx_runtime.jsx("div", { style: { border: `1px dashed ${theme.border}`, - borderRadius: 12, + borderRadius: 8, padding: 32, textAlign: "center", color: theme.textDim, - fontSize: 12 + fontSize: 12, + background: theme.field, + maxWidth: 520 }, - children: "่ฟ˜ๆฒกๆœ‰ๅคๅ‘ โ‰ฅ2 ็š„ๆจกๅผ โ€” ็‚นใ€Œๆ‰ซไธ€้ใ€่ฎฉ agent ๅˆ†ๆžๆœ€่ฟ‘ๅฎŒๆˆ็š„ไปปๅŠก๏ผˆๅคๅ‘ 1 ๆฌก็š„ๆš‚ไธๅฑ•็คบ๏ผ‰" + children: patterns.length === 0 ? "No patterns with recurrence >= 2 yet. Run a scan to analyze recent completed tasks." : "No detected patterns match this search." }) : /* @__PURE__ */ jsx_runtime.jsx("div", { style: { display: "grid", - gridTemplateColumns: "repeat(auto-fit, minmax(360px, 1fr))", - gap: 14 + gridTemplateColumns: "repeat(auto-fill, minmax(min(100%, 380px), 520px))", + gap: 14, + justifyContent: "start" }, - children: patterns.map((p) => /* @__PURE__ */ jsx_runtime.jsx(SkillPatternCard, { + children: filteredPatterns.map((p) => /* @__PURE__ */ jsx_runtime.jsx(SkillPatternCard, { p, tasks, onDraft, @@ -19022,52 +19606,52 @@ function SkillsView({ }); } function App() { - const [tasks, setTasks] = import_react.useState([]); - const [heartbeats, setHeartbeats] = import_react.useState([]); - const [heartbeatTicks, setHeartbeatTicks] = import_react.useState([]); - const [skillData, setSkillData] = import_react.useState({ + const [tasks, setTasks] = import_react4.useState([]); + const [heartbeats, setHeartbeats] = import_react4.useState([]); + const [heartbeatTicks, setHeartbeatTicks] = import_react4.useState([]); + const [skillData, setSkillData] = import_react4.useState({ patterns: [], sweep: { running: false, last: null } }); - const [skills, setSkills] = import_react.useState([]); - const [activeView, setActiveView] = import_react.useState("tasks"); - const [showNew, setShowNew] = import_react.useState(false); - const [showNewHeartbeat, setShowNewHeartbeat] = import_react.useState(false); - const [showSettings, setShowSettings] = import_react.useState(false); - const [detail, setDetail] = import_react.useState(null); - const [heartbeatDetail, setHeartbeatDetail] = import_react.useState(null); - const [connected, setConnected] = import_react.useState(false); - const [filter, setFilter] = import_react.useState(""); - const [taskTimeout, setTaskTimeout] = import_react.useState(DEFAULT_TIMEOUT_SECONDS); - const [defaultAgent, setDefaultAgent] = import_react.useState(DEFAULT_AGENT); - const [feishuSettings, setFeishuSettings] = import_react.useState({}); - const [channelsStatus, setChannelsStatus] = import_react.useState({}); - const [backendReady, setBackendReady] = import_react.useState(false); - const [backendError, setBackendError] = import_react.useState(null); - const [apiError, setApiError] = import_react.useState(null); - const [editingTask, setEditingTask] = import_react.useState(null); - const [forkingTask, setForkingTask] = import_react.useState(null); - const [editingHeartbeat, setEditingHeartbeat] = import_react.useState(null); - const [colorMode, setColorMode] = import_react.useState(() => localStorage.getItem("colorMode") || "system"); - const [systemDark, setSystemDark] = import_react.useState(() => window.matchMedia("(prefers-color-scheme: dark)").matches); + const [skills, setSkills] = import_react4.useState([]); + const [activeView, setActiveView] = import_react4.useState("tasks"); + const [showNew, setShowNew] = import_react4.useState(false); + const [showNewHeartbeat, setShowNewHeartbeat] = import_react4.useState(false); + const [showSettings, setShowSettings] = import_react4.useState(false); + const [detail, setDetail] = import_react4.useState(null); + const [heartbeatDetail, setHeartbeatDetail] = import_react4.useState(null); + const [connected, setConnected] = import_react4.useState(false); + const [filters, setFilters] = import_react4.useState({ tasks: "", heartbeats: "", skills: "" }); + const [taskTimeout, setTaskTimeout] = import_react4.useState(DEFAULT_TIMEOUT_SECONDS); + const [defaultAgent, setDefaultAgent] = import_react4.useState(DEFAULT_AGENT); + const [feishuSettings, setFeishuSettings] = import_react4.useState({}); + const [channelsStatus, setChannelsStatus] = import_react4.useState({}); + const [backendReady, setBackendReady] = import_react4.useState(false); + const [backendError, setBackendError] = import_react4.useState(null); + const [apiError, setApiError] = import_react4.useState(null); + const [editingTask, setEditingTask] = import_react4.useState(null); + const [forkingTask, setForkingTask] = import_react4.useState(null); + const [editingHeartbeat, setEditingHeartbeat] = import_react4.useState(null); + const [colorMode, setColorMode] = import_react4.useState(() => localStorage.getItem("colorMode") || "system"); + const [systemDark, setSystemDark] = import_react4.useState(() => window.matchMedia("(prefers-color-scheme: dark)").matches); const resolvedMode = colorMode === "system" ? systemDark ? "dark" : "light" : colorMode; theme = THEMES[resolvedMode]; - import_react.useEffect(() => { + import_react4.useEffect(() => { localStorage.setItem("colorMode", colorMode); document.body.style.background = THEMES[resolvedMode].bg; }, [colorMode, resolvedMode]); - import_react.useEffect(() => { + import_react4.useEffect(() => { const mq = window.matchMedia("(prefers-color-scheme: dark)"); const handler = (e) => setSystemDark(e.matches); mq.addEventListener("change", handler); return () => mq.removeEventListener("change", handler); }, []); - import_react.useEffect(() => { + import_react4.useEffect(() => { let cancelled = false; const deadline = Date.now() + 20000; const probe = async () => { try { - const res = await fetch(`${API}/health`, { signal: AbortSignal.timeout(800) }); + const res = await fetchWithTimeout(`${API}/health`, 800); if (res.ok) { if (!cancelled) setBackendReady(true); @@ -19087,7 +19671,7 @@ function App() { cancelled = true; }; }, []); - const poll = import_react.useCallback(async () => { + const poll = import_react4.useCallback(async () => { try { const [taskData, heartbeatData, skillRes, skillsRes] = await Promise.all([ fetchTasks(), @@ -19106,14 +19690,14 @@ function App() { setApiError(`Failed to fetch tasks: ${err.message}`); } }, []); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (!backendReady) return; poll(); const interval = setInterval(poll, 3000); return () => clearInterval(interval); }, [poll, backendReady]); - import_react.useEffect(() => { + import_react4.useEffect(() => { if (!backendReady) return; fetchSettings().then((s) => { @@ -19299,10 +19883,60 @@ function App() { setHeartbeatTicks([]); } }; + const filter = activeView === "tasks" ? filters.tasks : activeView === "heartbeats" ? filters.heartbeats : filters.skills; + const setActiveFilter = (value) => { + setFilters((prev) => activeView === "tasks" ? { ...prev, tasks: value } : activeView === "heartbeats" ? { ...prev, heartbeats: value } : { ...prev, skills: value }); + }; + const searchPlaceholder = activeView === "tasks" ? "Search tasks" : activeView === "heartbeats" ? "Search heartbeats" : "Search skills"; const filtered = filter ? tasks.filter((t) => t.title.toLowerCase().includes(filter.toLowerCase()) || t.tags?.toLowerCase().includes(filter.toLowerCase())) : tasks; const runningCount = tasks.filter((t) => t.status === "running").length; - const scheduledCount = tasks.filter((t) => t.status === "scheduled").length; + const queueCount = tasks.filter((t) => ["pending", "scheduled", "blocked"].includes(t.status)).length; + const doneCount = tasks.filter((t) => ["completed", "failed", "cancelled"].includes(t.status)).length; const enabledHeartbeatCount = heartbeats.filter((h) => h.enabled).length; + const pausedHeartbeatCount = Math.max(heartbeats.length - enabledHeartbeatCount, 0); + const heartbeatIssueCount = heartbeats.filter((h) => h.last_error).length; + const enabledSkillCount = skills.filter((s) => s.enabled).length; + const pausedSkillCount = Math.max(skills.length - enabledSkillCount, 0); + const skillPatternCount = (skillData.patterns || []).filter((p) => p.recurrence_count >= 2).length; + const activeSummary = { + tasks: { + label: `${runningCount} running / ${queueCount} queued`, + tone: runningCount > 0 ? theme.blue : theme.green, + background: runningCount > 0 ? theme.blueBg : theme.greenBg, + metrics: [ + { label: "Total", value: tasks.length }, + { label: "Queue", value: queueCount, tone: theme.orange }, + { label: "Running", value: runningCount, tone: theme.blue }, + { label: "Done", value: doneCount, tone: theme.green } + ] + }, + heartbeats: { + label: heartbeatIssueCount > 0 ? `${enabledHeartbeatCount} enabled / ${heartbeatIssueCount} issues` : `${enabledHeartbeatCount} enabled / ${pausedHeartbeatCount} paused`, + tone: heartbeatIssueCount > 0 ? theme.orange : theme.cyan, + background: heartbeatIssueCount > 0 ? theme.orangeBg : theme.cyanBg, + metrics: [ + { label: "Total", value: heartbeats.length }, + { label: "Enabled", value: enabledHeartbeatCount, tone: theme.green }, + { label: "Paused", value: pausedHeartbeatCount, tone: theme.textMuted }, + { + label: "Issues", + value: heartbeatIssueCount, + tone: heartbeatIssueCount ? theme.orange : theme.green + } + ] + }, + skills: { + label: `${enabledSkillCount} enabled / ${skillPatternCount} patterns`, + tone: theme.accent, + background: theme.accentGlow, + metrics: [ + { label: "Installed", value: skills.length }, + { label: "Enabled", value: enabledSkillCount, tone: theme.green }, + { label: "Paused", value: pausedSkillCount, tone: theme.textMuted }, + { label: "Patterns", value: skillPatternCount, tone: theme.accent } + ] + } + }[activeView]; if (backendError) { return /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { @@ -19370,12 +20004,13 @@ function App() { style: { minHeight: "100vh", background: theme.bg, + backgroundImage: theme.boardBg, color: theme.text, - fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" + fontFamily: APP_FONT_STACK }, children: [ /* @__PURE__ */ jsx_runtime.jsx("style", { - children: `@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} }` + children: `@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} } @keyframes deckIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }` }), apiError && /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { @@ -19425,197 +20060,260 @@ function App() { }), /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { - borderBottom: `1px solid ${theme.border}`, - padding: "16px 28px", - display: "flex", - alignItems: "center", - justifyContent: "space-between", - backdropFilter: "blur(10px)", + borderBottom: `1px solid ${theme.headerBorder}`, + padding: "12px 20px", + backdropFilter: "blur(16px)", position: "sticky", top: 0, zIndex: 100, - background: `${theme.bg}ee` + background: theme.headerBg, + animation: "deckIn 0.25s ease" }, children: [ /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { display: "flex", alignItems: "center", gap: 14 }, + className: "app-topbar", + style: { + display: "flex", + alignItems: "center", + justifyContent: "space-between", + gap: 14 + }, children: [ + /* @__PURE__ */ jsx_runtime.jsxs("div", { + style: { display: "flex", alignItems: "center", gap: 11, minWidth: 218 }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx(BrandMark, { + size: 34 + }), + /* @__PURE__ */ jsx_runtime.jsxs("div", { + children: [ + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { + fontSize: 17, + fontWeight: 780, + fontFamily: DISPLAY_FONT_STACK, + letterSpacing: 0, + lineHeight: 1 + }, + children: "AgentForge" + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { fontSize: 11, color: theme.textDim, marginTop: 4, fontWeight: 650 }, + children: "Agent orchestration board" + }) + ] + }) + ] + }), /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - width: 32, - height: 32, - borderRadius: 8, - background: `linear-gradient(135deg, ${theme.accent}, #a855f7)`, display: "flex", alignItems: "center", - justifyContent: "center", - fontSize: 16, - fontWeight: 800, - color: "#fff" + gap: 10, + minWidth: 0, + flex: 1, + justifyContent: "center" }, - children: "โŒ˜" + children: /* @__PURE__ */ jsx_runtime.jsx(StatusPill, { + connected, + label: activeSummary.label, + tone: activeSummary.tone, + background: activeSummary.background + }) }), /* @__PURE__ */ jsx_runtime.jsxs("div", { + className: "app-toolbar", + style: { display: "flex", alignItems: "center", gap: 8 }, children: [ /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - fontSize: 15, - fontWeight: 700, - fontFamily: "'JetBrains Mono', monospace", - letterSpacing: -0.3 + display: "flex", + background: theme.surface, + border: `1px solid ${theme.border}`, + borderRadius: 7, + padding: 2, + gap: 2 }, - children: "AgentForge" + children: [ + { key: "tasks", label: "Tasks", icon: SquareKanban }, + { key: "heartbeats", label: "Heartbeats", icon: HeartPulse }, + { key: "skills", label: "Skills", icon: Sparkles } + ].map((tab) => /* @__PURE__ */ jsx_runtime.jsxs("button", { + onClick: () => setActiveView(tab.key), + style: { + padding: "6px 9px", + borderRadius: 5, + border: "none", + background: activeView === tab.key ? theme.field : "transparent", + color: activeView === tab.key ? theme.text : theme.textMuted, + cursor: "pointer", + fontSize: 12, + fontWeight: 720, + display: "flex", + alignItems: "center", + gap: 6, + transition: "background 0.15s ease, color 0.15s ease" + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon: tab.icon, + size: 13, + strokeWidth: 2.6 + }), + tab.label + ] + }, tab.key)) }), /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { fontSize: 11, color: theme.textDim, marginTop: 1 }, + style: { + display: "flex", + alignItems: "center", + gap: 8, + padding: "0 9px", + height: 32, + borderRadius: 7, + border: `1px solid ${theme.border}`, + background: theme.surface + }, children: [ - connected ? /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { color: theme.green }, - children: "โ— Connected" - }) : /* @__PURE__ */ jsx_runtime.jsx("span", { - style: { color: theme.red }, - children: "โ— Disconnected โ€” run `bun taskboard.ts`" + /* @__PURE__ */ jsx_runtime.jsx(Search, { + "aria-hidden": "true", + size: 14, + strokeWidth: 2.4, + style: { color: theme.textDim, flexShrink: 0 } }), - connected && ` ยท ${runningCount} running ยท ${scheduledCount} scheduled ยท ${enabledHeartbeatCount} heartbeats` + /* @__PURE__ */ jsx_runtime.jsx("input", { + placeholder: searchPlaceholder, + value: filter, + onChange: (e) => setActiveFilter(e.target.value), + style: { + border: "none", + background: "transparent", + color: theme.text, + fontSize: 12, + outline: "none", + width: 152, + fontFamily: APP_FONT_STACK + } + }) ] - }) - ] - }) - ] - }), - /* @__PURE__ */ jsx_runtime.jsxs("div", { - style: { display: "flex", alignItems: "center", gap: 10 }, - children: [ - /* @__PURE__ */ jsx_runtime.jsx("div", { - style: { - display: "flex", - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 10, - padding: 4, - gap: 4 - }, - children: [ - { key: "tasks", label: "Tasks" }, - { key: "heartbeats", label: "Heartbeats" }, - { key: "skills", label: "Skills" } - ].map((tab) => /* @__PURE__ */ jsx_runtime.jsx("button", { - onClick: () => setActiveView(tab.key), - style: { - padding: "6px 10px", - borderRadius: 8, - border: "none", - background: activeView === tab.key ? theme.accentGlow : "transparent", - color: activeView === tab.key ? theme.accent : theme.textMuted, - cursor: "pointer", - fontSize: 12, - fontWeight: 700 - }, - children: tab.label - }, tab.key)) - }), - /* @__PURE__ */ jsx_runtime.jsx("input", { - placeholder: activeView === "tasks" ? "Filter tasks..." : "Filter heartbeats...", - value: filter, - onChange: (e) => setFilter(e.target.value), - style: { - padding: "8px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.surface, - color: theme.text, - fontSize: 12, - outline: "none", - width: 180 - } - }), - (() => { - const cycle = { system: "light", light: "dark", dark: "system" }; - const icons = { system: "โŠ™", light: "โ˜€", dark: "โ˜พ" }; - const labels = { system: "System theme", light: "Light mode", dark: "Dark mode" }; - return /* @__PURE__ */ jsx_runtime.jsx(Tooltip, { - text: labels[colorMode], - children: /* @__PURE__ */ jsx_runtime.jsx("button", { - onClick: () => setColorMode(cycle[colorMode]), + }), + (() => { + const cycle = { system: "light", light: "dark", dark: "system" }; + const icons = { system: MonitorCog, light: Sun, dark: Moon }; + const labels = { system: "System theme", light: "Light mode", dark: "Dark mode" }; + const ThemeIcon = icons[colorMode]; + return /* @__PURE__ */ jsx_runtime.jsx(HeaderButton, { + title: labels[colorMode], + onClick: () => setColorMode(cycle[colorMode]), + active: colorMode !== "system", + children: /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon: ThemeIcon, + size: 15 + }) + }); + })(), + /* @__PURE__ */ jsx_runtime.jsx(HeaderButton, { + title: "Settings", + onClick: () => setShowSettings(true), + children: /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon: Settings, + size: 15 + }) + }), + activeView === "skills" ? /* @__PURE__ */ jsx_runtime.jsxs("button", { + onClick: handleSweep, + disabled: !!skillData.sweep?.running, style: { - padding: "8px 10px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: "transparent", - color: theme.textMuted, + height: 32, + padding: "0 12px", + borderRadius: 6, + border: `1px solid ${skillData.sweep?.running ? theme.border : theme.accent}`, + background: skillData.sweep?.running ? theme.field : theme.accent, + color: skillData.sweep?.running ? theme.textMuted : theme.brandInk, + cursor: skillData.sweep?.running ? "default" : "pointer", + fontSize: 12, + fontWeight: 720, + display: "flex", + alignItems: "center", + gap: 7, + transition: "transform 0.15s ease, box-shadow 0.15s ease" + }, + children: [ + /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon: Radar, + size: 15, + strokeWidth: 2.8 + }), + skillData.sweep?.running ? "Scanning" : "Run Scan" + ] + }) : /* @__PURE__ */ jsx_runtime.jsxs("button", { + onClick: () => activeView === "tasks" ? setShowNew(true) : setShowNewHeartbeat(true), + style: { + height: 32, + padding: "0 12px", + borderRadius: 6, + border: `1px solid ${theme.accent}`, + background: theme.accent, + color: theme.brandInk, cursor: "pointer", - fontSize: 15, + fontSize: 12, + fontWeight: 720, display: "flex", alignItems: "center", - transition: "all 0.15s" + gap: 7, + transition: "transform 0.15s ease, box-shadow 0.15s ease" }, - children: icons[colorMode] + children: [ + /* @__PURE__ */ jsx_runtime.jsx(IconGlyph, { + icon: Plus, + size: 15, + strokeWidth: 2.8 + }), + activeView === "tasks" ? "New Task" : "New Heartbeat" + ] }) - }); - })(), - /* @__PURE__ */ jsx_runtime.jsx(Tooltip, { - text: "Settings", - children: /* @__PURE__ */ jsx_runtime.jsx("button", { - onClick: () => setShowSettings(true), - style: { - padding: "8px 12px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: "transparent", - color: theme.textMuted, - cursor: "pointer", - fontSize: 15, - display: "flex", - alignItems: "center", - transition: "all 0.15s" - }, - children: "โš™" - }) - }), - activeView !== "skills" && /* @__PURE__ */ jsx_runtime.jsx("button", { - onClick: () => activeView === "tasks" ? setShowNew(true) : setShowNewHeartbeat(true), - style: { - padding: "8px 18px", - borderRadius: 8, - border: "none", - background: theme.accent, - color: "#fff", - cursor: "pointer", - fontSize: 12, - fontWeight: 700, - letterSpacing: 0.3, - display: "flex", - alignItems: "center", - gap: 6, - boxShadow: `0 0 24px ${theme.accentGlow}`, - transition: "transform 0.15s" - }, - children: activeView === "tasks" ? "+ New Task" : "+ New Heartbeat" + ] }) ] + }), + /* @__PURE__ */ jsx_runtime.jsx("div", { + style: { display: "flex", gap: 8, marginTop: 10, overflowX: "auto" }, + children: activeSummary.metrics.map((metric) => /* @__PURE__ */ jsx_runtime.jsx(MetricTile, { + label: metric.label, + value: metric.value, + tone: metric.tone + }, metric.label)) }) ] }), activeView === "tasks" ? /* @__PURE__ */ jsx_runtime.jsx("div", { style: { - display: "flex", - gap: 20, - padding: 28, - minHeight: "calc(100vh - 72px)" + padding: "20px", + minHeight: "calc(100vh - 148px)" }, - children: COLUMNS.map((col) => /* @__PURE__ */ jsx_runtime.jsx(Column, { - col, - tasks: filtered.filter((t) => col.statuses.includes(t.status)), - onAction: handleAction, - onViewDetail: setDetail - }, col.key)) + children: /* @__PURE__ */ jsx_runtime.jsx("div", { + className: "board-grid", + style: { + display: "grid", + gridTemplateColumns: "repeat(3, minmax(0, 1fr))", + gap: 12, + alignItems: "start" + }, + children: COLUMNS.map((col) => /* @__PURE__ */ jsx_runtime.jsx(Column, { + col, + tasks: filtered.filter((t) => col.statuses.includes(t.status)), + onAction: handleAction, + onViewDetail: setDetail + }, col.key)) + }) }) : activeView === "heartbeats" ? /* @__PURE__ */ jsx_runtime.jsx("div", { - style: { padding: 28, minHeight: "calc(100vh - 72px)" }, + style: { padding: 20, minHeight: "calc(100vh - 148px)" }, children: /* @__PURE__ */ jsx_runtime.jsxs("div", { style: { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(360px, 1fr))", - gap: 14 + gap: 12 }, children: [ (filter ? heartbeats.filter((h) => h.name.toLowerCase().includes(filter.toLowerCase()) || h.check_prompt.toLowerCase().includes(filter.toLowerCase())) : heartbeats).map((h) => /* @__PURE__ */ jsx_runtime.jsx(HeartbeatCard, { @@ -19626,12 +20324,13 @@ function App() { heartbeats.length === 0 && /* @__PURE__ */ jsx_runtime.jsx("div", { style: { border: `1px dashed ${theme.border}`, - borderRadius: 12, + borderRadius: 8, padding: 32, textAlign: "center", color: theme.textDim, fontSize: 12, - gridColumn: "1 / -1" + gridColumn: "1 / -1", + background: theme.columnBg }, children: "No heartbeats yet" }) @@ -19641,7 +20340,7 @@ function App() { skillData, skills, tasks, - onSweep: handleSweep, + filter, onDraft: handleSkillDraft, onApprove: handleSkillApprove, onDismiss: handleSkillDismiss, @@ -19784,6 +20483,40 @@ function App() { }); } var styles = ` + html, body, #root { + min-height: 100%; + margin: 0; + } + + body { + overflow-x: hidden; + } + + button, input, textarea, select { + font: inherit; + } + + ::selection { + background: ${theme.accentGlow}; + color: ${theme.text}; + } + + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar-track { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: ${theme.borderActive}; + border: 3px solid transparent; + border-radius: 8px; + background-clip: padding-box; + } + @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } @@ -19827,9 +20560,9 @@ if (typeof document !== "undefined" && !document.querySelector("#live-output-sty // src/renderer/main.tsx var jsx_runtime2 = __toESM(require_jsx_runtime(), 1); -import_client.createRoot(document.getElementById("root")).render(/* @__PURE__ */ jsx_runtime2.jsx(import_react2.StrictMode, { +import_client.createRoot(document.getElementById("root")).render(/* @__PURE__ */ jsx_runtime2.jsx(import_react5.StrictMode, { children: /* @__PURE__ */ jsx_runtime2.jsx(App, {}) })); -//# debugId=6D6D54C3905035A964756E2164756E21 -//# sourceMappingURL=chunk-qgtap3d3.js.map +//# debugId=4BA23EF813E45A2F64756E2164756E21 +//# sourceMappingURL=chunk-cs88ar74.js.map diff --git a/taskboard-electron/.bun/renderer/chunk-qgtap3d3.js.map b/taskboard-electron/.bun/renderer/chunk-cs88ar74.js.map similarity index 72% rename from taskboard-electron/.bun/renderer/chunk-qgtap3d3.js.map rename to taskboard-electron/.bun/renderer/chunk-cs88ar74.js.map index a660534..4890950 100644 --- a/taskboard-electron/.bun/renderer/chunk-qgtap3d3.js.map +++ b/taskboard-electron/.bun/renderer/chunk-cs88ar74.js.map @@ -1,6 +1,6 @@ { "version": 3, - "sources": ["../../node_modules/react/cjs/react.production.js", "../../node_modules/react/index.js", "../../node_modules/scheduler/cjs/scheduler.production.js", "../../node_modules/scheduler/index.js", "../../node_modules/react-dom/cjs/react-dom.production.js", "../../node_modules/react-dom/index.js", "../../node_modules/react-dom/cjs/react-dom-client.production.js", "../../node_modules/react-dom/client.js", "../../node_modules/qrcode/lib/can-promise.js", "../../node_modules/qrcode/lib/core/utils.js", "../../node_modules/qrcode/lib/core/error-correction-level.js", "../../node_modules/qrcode/lib/core/bit-buffer.js", "../../node_modules/qrcode/lib/core/bit-matrix.js", "../../node_modules/qrcode/lib/core/alignment-pattern.js", "../../node_modules/qrcode/lib/core/finder-pattern.js", "../../node_modules/qrcode/lib/core/mask-pattern.js", "../../node_modules/qrcode/lib/core/error-correction-code.js", "../../node_modules/qrcode/lib/core/galois-field.js", "../../node_modules/qrcode/lib/core/polynomial.js", "../../node_modules/qrcode/lib/core/reed-solomon-encoder.js", "../../node_modules/qrcode/lib/core/version-check.js", "../../node_modules/qrcode/lib/core/regex.js", "../../node_modules/qrcode/lib/core/mode.js", "../../node_modules/qrcode/lib/core/version.js", "../../node_modules/qrcode/lib/core/format-info.js", "../../node_modules/qrcode/lib/core/numeric-data.js", "../../node_modules/qrcode/lib/core/alphanumeric-data.js", "../../node_modules/qrcode/lib/core/byte-data.js", "../../node_modules/qrcode/lib/core/kanji-data.js", "../../node_modules/dijkstrajs/dijkstra.js", "../../node_modules/qrcode/lib/core/segments.js", "../../node_modules/qrcode/lib/core/qrcode.js", "../../node_modules/qrcode/lib/renderer/utils.js", "../../node_modules/qrcode/lib/renderer/canvas.js", "../../node_modules/qrcode/lib/renderer/svg-tag.js", "../../node_modules/qrcode/lib/browser.js", "../../node_modules/react/cjs/react-jsx-runtime.production.js", "../../node_modules/react/jsx-runtime.js", "../../src/renderer/main.tsx", "../../src/renderer/App.tsx", "../../src/renderer/dateTime.ts", "../../src/renderer/channelsSettings.ts", "../../src/renderer/traceSteps.ts"], + "sources": ["../../node_modules/react/cjs/react.production.js", "../../node_modules/react/index.js", "../../node_modules/scheduler/cjs/scheduler.production.js", "../../node_modules/scheduler/index.js", "../../node_modules/react-dom/cjs/react-dom.production.js", "../../node_modules/react-dom/index.js", "../../node_modules/react-dom/cjs/react-dom-client.production.js", "../../node_modules/react-dom/client.js", "../../node_modules/qrcode/lib/can-promise.js", "../../node_modules/qrcode/lib/core/utils.js", "../../node_modules/qrcode/lib/core/error-correction-level.js", "../../node_modules/qrcode/lib/core/bit-buffer.js", "../../node_modules/qrcode/lib/core/bit-matrix.js", "../../node_modules/qrcode/lib/core/alignment-pattern.js", "../../node_modules/qrcode/lib/core/finder-pattern.js", "../../node_modules/qrcode/lib/core/mask-pattern.js", "../../node_modules/qrcode/lib/core/error-correction-code.js", "../../node_modules/qrcode/lib/core/galois-field.js", "../../node_modules/qrcode/lib/core/polynomial.js", "../../node_modules/qrcode/lib/core/reed-solomon-encoder.js", "../../node_modules/qrcode/lib/core/version-check.js", "../../node_modules/qrcode/lib/core/regex.js", "../../node_modules/qrcode/lib/core/mode.js", "../../node_modules/qrcode/lib/core/version.js", "../../node_modules/qrcode/lib/core/format-info.js", "../../node_modules/qrcode/lib/core/numeric-data.js", "../../node_modules/qrcode/lib/core/alphanumeric-data.js", "../../node_modules/qrcode/lib/core/byte-data.js", "../../node_modules/qrcode/lib/core/kanji-data.js", "../../node_modules/dijkstrajs/dijkstra.js", "../../node_modules/qrcode/lib/core/segments.js", "../../node_modules/qrcode/lib/core/qrcode.js", "../../node_modules/qrcode/lib/renderer/utils.js", "../../node_modules/qrcode/lib/renderer/canvas.js", "../../node_modules/qrcode/lib/renderer/svg-tag.js", "../../node_modules/qrcode/lib/browser.js", "../../node_modules/react/cjs/react-jsx-runtime.production.js", "../../node_modules/react/jsx-runtime.js", "../../src/renderer/main.tsx", "../../src/renderer/App.tsx", "../../node_modules/lucide-react/dist/esm/createLucideIcon.mjs", "../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs", "../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs", "../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs", "../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs", "../../node_modules/lucide-react/dist/esm/Icon.mjs", "../../node_modules/lucide-react/dist/esm/defaultAttributes.mjs", "../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs", "../../node_modules/lucide-react/dist/esm/context.mjs", "../../node_modules/lucide-react/dist/esm/icons/circle-check.mjs", "../../node_modules/lucide-react/dist/esm/icons/sparkles.mjs", "../../node_modules/lucide-react/dist/esm/icons/square-kanban.mjs", "../../node_modules/lucide-react/dist/esm/icons/git-fork.mjs", "../../node_modules/lucide-react/dist/esm/icons/heart-pulse.mjs", "../../node_modules/lucide-react/dist/esm/icons/inbox.mjs", "../../node_modules/lucide-react/dist/esm/icons/monitor-cog.mjs", "../../node_modules/lucide-react/dist/esm/icons/moon.mjs", "../../node_modules/lucide-react/dist/esm/icons/pause.mjs", "../../node_modules/lucide-react/dist/esm/icons/pencil.mjs", "../../node_modules/lucide-react/dist/esm/icons/play.mjs", "../../node_modules/lucide-react/dist/esm/icons/plus.mjs", "../../node_modules/lucide-react/dist/esm/icons/radar.mjs", "../../node_modules/lucide-react/dist/esm/icons/rotate-ccw.mjs", "../../node_modules/lucide-react/dist/esm/icons/search.mjs", "../../node_modules/lucide-react/dist/esm/icons/settings.mjs", "../../node_modules/lucide-react/dist/esm/icons/square.mjs", "../../node_modules/lucide-react/dist/esm/icons/sun.mjs", "../../node_modules/lucide-react/dist/esm/icons/trash-2.mjs", "../../src/renderer/dateTime.ts", "../../src/renderer/channelsSettings.ts", "../../src/renderer/traceSteps.ts"], "sourcesContent": [ "/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.4\";\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n", @@ -41,12 +41,40 @@ "/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n", "import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport App from \"./App.tsx\";\n\ncreateRoot(document.getElementById(\"root\")).render(\n \n \n ,\n);\n", - "import { useState, useEffect, useCallback, useRef, type CSSProperties } from \"react\";\nimport QRCode from \"qrcode\";\nimport {\n formatDateTimeLocalInput,\n formatTaskDateTime,\n formatTaskTime,\n parseTaskDateTime,\n serializeDateTimeLocalInput,\n} from \"./dateTime.ts\";\nimport {\n buildChannelsSavePayload,\n createInitialChannelsState,\n isWeixinQrImageSource,\n mergeChannelsStatus,\n} from \"./channelsSettings.ts\";\nimport { buildExecutionSteps } from \"./traceSteps.ts\";\n\nconst API = \"http://127.0.0.1:9712/api\";\n\n// โ”€โ”€โ”€ Theme โ”€โ”€โ”€\nconst THEMES: Record> = {\n dark: {\n bg: \"#0a0a0f\",\n surface: \"#12121a\",\n surfaceHover: \"#1a1a26\",\n border: \"#1e1e2e\",\n borderActive: \"#2d2d44\",\n text: \"#e2e2ef\",\n textMuted: \"#6b6b8a\",\n textDim: \"#44445e\",\n accent: \"#7c6aff\",\n accentGlow: \"rgba(124, 106, 255, 0.15)\",\n green: \"#34d399\",\n greenBg: \"rgba(52, 211, 153, 0.08)\",\n orange: \"#fbbf24\",\n orangeBg: \"rgba(251, 191, 36, 0.08)\",\n red: \"#f87171\",\n redBg: \"rgba(248, 113, 113, 0.08)\",\n blue: \"#60a5fa\",\n blueBg: \"rgba(96, 165, 250, 0.08)\",\n cyan: \"#22d3ee\",\n cyanBg: \"rgba(34, 211, 238, 0.08)\",\n },\n light: {\n bg: \"#f5f5fa\",\n surface: \"#ffffff\",\n surfaceHover: \"#eeeef7\",\n border: \"#dcdce8\",\n borderActive: \"#b8b8d0\",\n text: \"#1a1a2e\",\n textMuted: \"#6b6b8a\",\n textDim: \"#a0a0bc\",\n accent: \"#5b4ecc\",\n accentGlow: \"rgba(91, 78, 204, 0.12)\",\n green: \"#059669\",\n greenBg: \"rgba(5, 150, 105, 0.08)\",\n orange: \"#d97706\",\n orangeBg: \"rgba(217, 119, 6, 0.08)\",\n red: \"#dc2626\",\n redBg: \"rgba(220, 38, 38, 0.08)\",\n blue: \"#2563eb\",\n blueBg: \"rgba(37, 99, 235, 0.08)\",\n cyan: \"#0891b2\",\n cyanBg: \"rgba(8, 145, 178, 0.08)\",\n },\n};\n\n// Mutable module-level theme reference โ€” updated before each App render\nlet theme = THEMES.dark;\n\nfunction getStatusConfig() {\n return {\n pending: { label: \"Pending\", color: theme.orange, bg: theme.orangeBg, icon: \"โ—Œ\" },\n scheduled: { label: \"Scheduled\", color: theme.cyan, bg: theme.cyanBg, icon: \"โฑ\" },\n running: { label: \"Running\", color: theme.blue, bg: theme.blueBg, icon: \"โŸณ\" },\n completed: { label: \"Completed\", color: theme.green, bg: theme.greenBg, icon: \"โœ“\" },\n failed: { label: \"Failed\", color: theme.red, bg: theme.redBg, icon: \"โœ•\" },\n cancelled: {\n label: \"Cancelled\",\n color: theme.textMuted,\n bg: \"rgba(107,107,138,0.08)\",\n icon: \"โ—ป\",\n },\n blocked: { label: \"Blocked\", color: theme.textMuted, bg: \"rgba(107,107,138,0.1)\", icon: \"โŠ˜\" },\n };\n}\n\nconst COLUMNS = [\n { key: \"queued\", label: \"Queue\", statuses: [\"pending\", \"scheduled\", \"blocked\"], icon: \"โง–\" },\n { key: \"running\", label: \"Running\", statuses: [\"running\"], icon: \"โ–ธ\" },\n { key: \"done\", label: \"Done\", statuses: [\"completed\", \"failed\", \"cancelled\"], icon: \"โ—†\" },\n];\n\nconst AGENTS = {\n claude: { label: \"Claude Code\", icon: \"โŒ˜\", color: \"#7c6aff\" },\n codex: { label: \"Codex CLI\", icon: \"โ—ˆ\", color: \"#10a37f\" },\n};\nconst DEFAULT_AGENT = \"codex\";\nconst DEFAULT_TIMEOUT_SECONDS = 12000;\n\n// โ”€โ”€โ”€ Formatted Output Component โ”€โ”€โ”€\nfunction FormattedOutput({ content, theme }) {\n if (!content) return null;\n\n // ่งฃๆžJSONๆตๆ•ฐๆฎ๏ผŒๅชๆ˜พ็คบๅ…ณ้”ฎไฟกๆฏ\n const parseStreamJSON = (text) => {\n const lines = text.split(\"\\n\");\n const parsedLines = [];\n\n lines.forEach((line) => {\n if (!line.trim()) return;\n\n try {\n const event = JSON.parse(line);\n const eventType = event.type;\n\n switch (eventType) {\n case \"user\":\n case \"assistant\": {\n const isUser = eventType === \"user\";\n const msg = event.message || {};\n const msgContent = msg.content || [];\n const prefix = isUser ? \"๐Ÿ‘ค User: \" : \"๐Ÿค– Assistant: \";\n const color = isUser ? theme.accent : theme.green;\n let textBuf = \"\";\n const flushText = () => {\n if (textBuf.trim()) {\n parsedLines.push({\n type: eventType,\n text: prefix + textBuf,\n style: { color, fontWeight: isUser ? \"bold\" : \"normal\" },\n });\n textBuf = \"\";\n }\n };\n for (const c of msgContent) {\n if (typeof c === \"string\") {\n textBuf += c;\n } else if (c && typeof c === \"object\") {\n if (c.type === \"text\") {\n textBuf += c.text || \"\";\n } else if (c.type === \"image\") {\n flushText();\n const src =\n c.source && c.source.type === \"base64\"\n ? `data:${c.source.media_type || \"image/jpeg\"};base64,${c.source.data}`\n : null;\n if (src) parsedLines.push({ type: \"image\", src });\n } else if (c.type === \"tool_use\") {\n flushText();\n const rows = buildTraceRows(\n \"tool_call\",\n {\n id: c.id,\n name: c.name,\n input: c.input,\n },\n \"\",\n );\n parsedLines.push({\n type: \"tool_call\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.cyan, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (c.type === \"tool_result\") {\n flushText();\n const rows = buildTraceRows(\n \"tool_result\",\n {\n tool_use_id: c.tool_use_id,\n content: Array.isArray(c.content)\n ? c.content\n .map((part) =>\n part && part.type === \"text\" ? part.text || \"\" : JSON.stringify(part),\n )\n .join(\"\")\n : c.content,\n is_error: c.is_error,\n },\n \"\",\n );\n parsedLines.push({\n type: \"tool_result\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: {\n color: c.is_error ? theme.red : theme.blue,\n fontSize: \"11px\",\n fontFamily: \"monospace\",\n },\n });\n }\n }\n }\n flushText();\n break;\n }\n\n case \"item.completed\": {\n const item = event.item || {};\n if (item.type === \"command_execution\") {\n const rows = buildTraceRows(\n \"command_execution\",\n {\n command: item.command,\n output: item.aggregated_output,\n exit_code: item.exit_code,\n status: item.status,\n },\n \"\",\n );\n parsedLines.push({\n type: \"command_execution\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.orange, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (item.type === \"mcp_tool_call\" || item.type === \"collab_tool_call\") {\n const rows = buildTraceRows(\n \"tool_call\",\n {\n server: item.server,\n name: item.tool || item.name,\n input: item.arguments || item.input,\n result: item.result,\n status: item.status,\n error: item.error,\n },\n \"\",\n );\n parsedLines.push({\n type: \"tool_call\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.cyan, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (item.type === \"web_search\") {\n const rows = buildTraceRows(\"web_search\", item, \"\");\n parsedLines.push({\n type: \"web_search\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.cyan, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (item.type === \"file_change\") {\n const rows = buildTraceRows(\"file_change\", item, \"\");\n parsedLines.push({\n type: \"file_change\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.accent, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n }\n break;\n }\n\n case \"result\":\n // ๆœ€็ปˆ็ป“ๆžœ\n if (event.result) {\n parsedLines.push({\n type: \"result\",\n text: `โœ… Result: ${event.result}`,\n style: { color: theme.green, fontWeight: \"bold\" },\n });\n }\n break;\n\n case \"error\":\n // ้”™่ฏฏไฟกๆฏ\n parsedLines.push({\n type: \"error\",\n text: `โŒ Error: ${event.error || \"Unknown error\"}`,\n style: { color: theme.red, fontWeight: \"bold\" },\n });\n break;\n\n default:\n // ๅ…ถไป–ไบ‹ไปถ็ฑปๅž‹ - ๆ˜พ็คบๆ›ดๅคšไฟกๆฏ\n if (eventType) {\n let displayText = `[${eventType}]`;\n // ๅฐ่ฏ•ๆ˜พ็คบไบ‹ไปถไธญ็š„ๅ…ณ้”ฎไฟกๆฏ\n if (event.message) {\n const msg = event.message;\n if (msg.content && Array.isArray(msg.content)) {\n const textContent = msg.content\n .filter(\n (c) =>\n typeof c === \"string\" || (c && typeof c === \"object\" && c.type === \"text\"),\n )\n .map((c) => (typeof c === \"string\" ? c : c.text || \"\"))\n .join(\"\");\n if (textContent.trim()) {\n displayText = textContent.slice(0, 200);\n }\n }\n } else if (event.result) {\n displayText = `Result: ${event.result.slice(0, 200)}`;\n } else if (event.error) {\n displayText = `Error: ${event.error.slice(0, 200)}`;\n }\n\n parsedLines.push({\n type: \"event\",\n text: displayText,\n style: { color: theme.textDim, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n }\n }\n } catch (_error) {\n // ๅฆ‚ๆžœไธๆ˜ฏๆœ‰ๆ•ˆ็š„JSON๏ผŒๅฏ่ƒฝๆ˜ฏๆ™ฎ้€šๆ–‡ๆœฌ่พ“ๅ‡บ\n if (line.trim() && !line.startsWith(\"{\")) {\n // ๅชๆ˜พ็คบๆœ‰ๆ„ไน‰็š„้žJSON่กŒ\n if (line.includes(\"error\") || line.includes(\"Error\")) {\n parsedLines.push({\n type: \"error\",\n text: line,\n style: { color: theme.red },\n });\n } else if (line.includes(\"success\") || line.includes(\"Success\")) {\n parsedLines.push({\n type: \"success\",\n text: line,\n style: { color: theme.green },\n });\n } else if (line.length > 10) {\n // ๅชๆ˜พ็คบ่พƒ้•ฟ็š„้žJSON่กŒ\n parsedLines.push({\n type: \"text\",\n text: line,\n style: { color: theme.textDim },\n });\n }\n }\n }\n });\n\n return parsedLines;\n };\n\n const parsedContent = parseStreamJSON(content);\n\n if (parsedContent.length === 0) {\n return (\n
\n Waiting for agent output...\n
\n );\n }\n\n return (\n
\n {parsedContent.map((item, index) =>\n item.type === \"image\" ? (\n
\n \n
\n ) : (\n \n {item.text}\n
\n ),\n )}\n \n );\n}\n\nfunction ExecutionTimeline({ events }) {\n const [expanded, setExpanded] = useState(true);\n const steps = buildExecutionSteps(events);\n\n if (steps.length === 0) {\n return (\n
\n No output events recorded โ€” events are recorded for new task runs.\n
\n );\n }\n\n return (\n \n setExpanded(!expanded)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 12,\n padding: \"10px 12px\",\n background: theme.surface,\n border: \"none\",\n borderBottom: expanded ? `1px solid ${theme.border}` : \"none\",\n color: theme.text,\n cursor: \"pointer\",\n fontFamily: \"'JetBrains Mono', monospace\",\n fontSize: 12,\n textAlign: \"left\",\n }}\n >\n \n {expanded ? \"โŒ„\" : \"โ€บ\"}\n \n Show {steps.length} {steps.length === 1 ? \"step\" : \"steps\"}\n \n \n \n {events.length} events\n \n \n\n {expanded && (\n
\n {steps.map((step, index) => (\n \n ))}\n
\n )}\n \n );\n}\n\nfunction ExecutionTimelineStep({ step, isLast }) {\n const config = getExecutionStepConfig(step.type);\n const detail = (step.detail || \"\").trim();\n const hasRows = step.rows && step.rows.length > 0;\n const hasImage = Boolean(step.imageSrc);\n const showDetail = detail && detail !== step.title && !hasRows && !hasImage;\n\n return (\n
\n
\n \n {config.icon}\n
\n {!isLast && (\n \n )}\n
\n\n
\n \n \n {step.title}\n
\n \n {formatTaskTime(step.timestamp)}\n \n \n\n \n \n {config.label}\n \n {step.count > 1 && (\n {step.count} chunks\n )}\n \n\n {hasImage && (\n \n )}\n\n {hasRows && (\n \n {step.rows.map((row, i) => (\n \n {row.label}\n \n {row.value}\n \n \n ))}\n \n )}\n\n {showDetail && (\n \n {detail}\n \n )}\n \n \n );\n}\n\nfunction getExecutionStepConfig(type) {\n switch (type) {\n case \"thinking\":\n return { label: \"Thinking\", icon: \"โŒ\", color: theme.textMuted, bg: \"rgba(107,107,138,0.08)\" };\n case \"tool_call\":\n return { label: \"Tool Call\", icon: \"โ–ฃ\", color: theme.cyan, bg: theme.cyanBg };\n case \"tool_result\":\n return { label: \"Tool Result\", icon: \"โ†ต\", color: theme.blue, bg: theme.blueBg };\n case \"command_execution\":\n return { label: \"Command\", icon: \"$\", color: theme.orange, bg: theme.orangeBg };\n case \"file_change\":\n return { label: \"File\", icon: \"โ—‡\", color: theme.accent, bg: theme.accentGlow };\n case \"generated_image\":\n return { label: \"Image\", icon: \"โ–ก\", color: theme.accent, bg: theme.accentGlow };\n case \"image_content\":\n return { label: \"Image\", icon: \"โ–ก\", color: theme.accent, bg: theme.accentGlow };\n case \"web_search\":\n return { label: \"Search\", icon: \"โŒ•\", color: theme.cyan, bg: theme.cyanBg };\n case \"result\":\n return { label: \"Result\", icon: \"โœ“\", color: theme.green, bg: theme.greenBg };\n case \"error\":\n return { label: \"Error\", icon: \"!\", color: theme.red, bg: theme.redBg };\n case \"user\":\n return { label: \"User\", icon: \"U\", color: theme.accent, bg: theme.accentGlow };\n case \"assistant\":\n return { label: \"Assistant\", icon: \"AI\", color: theme.green, bg: theme.greenBg };\n default:\n return { label: \"Event\", icon: \"โ€ข\", color: theme.textMuted, bg: \"rgba(107,107,138,0.08)\" };\n }\n}\n\nfunction formatTraceValue(value) {\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"string\") return value;\n return JSON.stringify(value, null, 2);\n}\n\nfunction buildTraceRows(eventType, payload, rawContent) {\n const row = (label, value) => {\n const formatted = formatTraceValue(value);\n return formatted === \"\" ? null : { label, value: formatted };\n };\n const compact = (rows) => rows.filter(Boolean);\n\n if (eventType === \"tool_call\") {\n const name = payload.server\n ? `${payload.server}.${payload.name || payload.tool || \"unknown\"}`\n : payload.name || payload.tool || \"unknown\";\n return compact([\n row(\"Tool\", name),\n row(\"Input\", payload.input || payload.arguments),\n row(\"Result\", payload.result),\n row(\"Status\", payload.status),\n row(\"Error\", payload.error),\n ]);\n }\n\n if (eventType === \"tool_result\") {\n return compact([\n row(payload.is_error ? \"Tool Error\" : \"Tool Result\", payload.tool_use_id || \"result\"),\n row(\"Content\", payload.content),\n ]);\n }\n\n if (eventType === \"command_execution\") {\n return compact([\n row(\"Command\", payload.command),\n row(\"Output\", payload.output),\n row(\"Exit\", payload.exit_code),\n row(\"Status\", payload.status),\n ]);\n }\n\n if (eventType === \"file_change\") {\n const changes = Array.isArray(payload.changes)\n ? payload.changes\n .map((change) => {\n if (!change || typeof change !== \"object\") return formatTraceValue(change);\n const kind = change.kind || change.type || \"changed\";\n const path = change.path || change.file || \"\";\n return path ? `${kind}: ${path}` : kind;\n })\n .join(\"\\n\")\n : payload.changes;\n return compact([row(\"Changes\", changes), row(\"Status\", payload.status)]);\n }\n\n if (eventType === \"web_search\") {\n return compact([\n row(\"Query\", payload.query),\n row(\"Action\", payload.action),\n row(\"Status\", payload.status),\n ]);\n }\n\n return [{ label: eventType, value: rawContent }];\n}\n\n// โ”€โ”€โ”€ CSRF token โ”€โ”€โ”€\n// Fetched once at startup; reused for all state-changing requests.\nlet _csrfTokenPromise = null;\nfunction getCsrfToken() {\n if (!_csrfTokenPromise) {\n _csrfTokenPromise = fetch(`${API}/csrf-token`)\n .then((r) => r.json())\n .then((d) => d.csrf_token || \"\")\n .catch(() => \"\");\n }\n return _csrfTokenPromise;\n}\n\nasync function csrfHeaders(extra = {}) {\n const token = await getCsrfToken();\n return { \"Content-Type\": \"application/json\", \"X-CSRF-Token\": token, ...extra };\n}\n\n// โ”€โ”€โ”€ API helpers โ”€โ”€โ”€\nasync function fetchTasks() {\n const res = await fetch(`${API}/tasks`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function fetchHeartbeats() {\n const res = await fetch(`${API}/heartbeats`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function createTask(data) {\n const res = await fetch(`${API}/tasks`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n return res.json();\n}\n\nasync function fetchSkillPatterns() {\n const res = await fetch(`${API}/skill-patterns`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function triggerSkillSweep(agent?: string) {\n const res = await fetch(`${API}/skills/sweep`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(agent ? { agent } : {}),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function triggerSkillDraft(id, agent?: string) {\n const res = await fetch(`${API}/skill-patterns/${id}/draft`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(agent ? { agent } : {}),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function approveSkill(id, data) {\n const res = await fetch(`${API}/skill-patterns/${id}/approve`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function dismissSkillPattern(id) {\n const res = await fetch(`${API}/skill-patterns/${id}/dismiss`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: \"{}\",\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function fetchSkills() {\n const res = await fetch(`${API}/skills`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function setSkillEnabledApi(id, enabled) {\n const res = await fetch(`${API}/skills/${id}`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ enabled }),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function deleteSkillApi(id) {\n const res = await fetch(`${API}/skills/${id}`, {\n method: \"DELETE\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function createHeartbeat(data) {\n const res = await fetch(`${API}/heartbeats`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function updateHeartbeat(id, data) {\n const res = await fetch(`${API}/heartbeats/${id}`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function deleteHeartbeat(id) {\n const res = await fetch(`${API}/heartbeats/${id}`, {\n method: \"DELETE\",\n headers: await csrfHeaders(),\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n}\n\nasync function runHeartbeatNow(id) {\n const res = await fetch(`${API}/heartbeats/${id}/run-now`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function pauseHeartbeat(id) {\n const res = await fetch(`${API}/heartbeats/${id}/pause`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function resumeHeartbeatApi(id) {\n const res = await fetch(`${API}/heartbeats/${id}/resume`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function fetchHeartbeatTicks(id) {\n const res = await fetch(`${API}/heartbeats/${id}/ticks?limit=20`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n const payload = await res.json();\n return payload.ticks || [];\n}\n\nasync function fetchHeartbeatTickOutput(heartbeatId, tickId) {\n const res = await fetch(`${API}/heartbeats/${heartbeatId}/ticks/${tickId}/output`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function cancelTask(id) {\n await fetch(`${API}/tasks/${id}/cancel`, { method: \"POST\", headers: await csrfHeaders() });\n}\n\nasync function retryTask(id) {\n await fetch(`${API}/tasks/${id}/retry`, { method: \"POST\", headers: await csrfHeaders() });\n}\n\nasync function deleteTask(id) {\n await fetch(`${API}/tasks/${id}`, { method: \"DELETE\", headers: await csrfHeaders() });\n}\n\nasync function updateTask(id, data) {\n const res = await fetch(`${API}/tasks/${id}`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw new Error(err.error || `HTTP ${res.status}`);\n }\n return res.json();\n}\n\nasync function respondToTask(id, answer) {\n await fetch(`${API}/tasks/${id}/respond`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ answer }),\n });\n}\n\nasync function resumeTask(id, message) {\n const res = await fetch(`${API}/tasks/${id}/resume`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ message }),\n });\n return res.json();\n}\n\nasync function fetchTaskMessages(id) {\n try {\n const res = await fetch(`${API}/tasks/${id}/messages`);\n return res.ok ? await res.json() : [];\n } catch {\n return [];\n }\n}\n\nasync function fetchTaskEvents(id) {\n try {\n const res = await fetch(`${API}/tasks/${id}/events?limit=1000`);\n if (res.ok) {\n const data = await res.json();\n return data.events || [];\n }\n return [];\n } catch {\n return [];\n }\n}\n\nasync function fetchSettings() {\n try {\n const res = await fetch(`${API}/settings`);\n return res.ok ? await res.json() : {};\n } catch {\n return {};\n }\n}\n\nasync function updateSettings(data) {\n await fetch(`${API}/settings`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n}\n\nasync function fetchFeishuSettings() {\n try {\n const res = await fetch(`${API}/feishu/settings`);\n return res.ok ? await res.json() : {};\n } catch {\n return {};\n }\n}\n\nasync function updateFeishuSettings(data) {\n await fetch(`${API}/feishu/settings`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n}\n\nasync function fetchChannelsStatus() {\n try {\n const res = await fetch(`${API}/channels/status`);\n return res.ok ? await res.json() : {};\n } catch {\n return {};\n }\n}\n\nasync function updateChannelsSettings(data) {\n await fetch(`${API}/channels/settings`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n}\n\nasync function runWeixinAction(action) {\n const res = await fetch(`${API}/channels/weixin/action`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ action }),\n });\n if (!res.ok) {\n const data = await res.json().catch(() => ({}));\n throw new Error(data.error || `HTTP ${res.status}`);\n }\n}\n\n// โ”€โ”€โ”€ Components โ”€โ”€โ”€\n\nfunction Tooltip({ text, children }) {\n const [visible, setVisible] = useState(false);\n return (\n setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n >\n {children}\n {visible && (\n \n {text}\n \n )}\n \n );\n}\n\nfunction Badge({ status }) {\n const cfg = getStatusConfig()[status] || getStatusConfig().pending;\n return (\n \n {cfg.icon}\n {cfg.label}\n \n );\n}\n\nfunction Tag({ children }) {\n return (\n \n {children}\n \n );\n}\n\nfunction AgentBadge({ agent }) {\n const cfg = AGENTS[agent] || AGENTS.claude;\n return (\n \n {cfg.icon}\n {cfg.label}\n \n );\n}\n\nfunction TaskCard({ task, onAction, onViewDetail }) {\n const [hovered, setHovered] = useState(false);\n const cfg = getStatusConfig()[task.status] || getStatusConfig().pending;\n const tags = task.tags ? task.tags.split(\",\").filter(Boolean) : [];\n\n return (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onClick={() => onViewDetail(task)}\n style={{\n background: hovered ? theme.surfaceHover : theme.surface,\n border: `1px solid ${hovered ? theme.borderActive : theme.border}`,\n borderLeft: `3px solid ${cfg.color}`,\n borderRadius: 10,\n padding: \"14px 16px\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n transform: hovered ? \"translateY(-1px)\" : \"none\",\n boxShadow: hovered ? `0 4px 20px rgba(0,0,0,0.3)` : \"none\",\n }}\n >\n \n \n {task.title}\n \n \n \n\n \n {task.prompt}\n \n\n
\n
\n \n {task.schedule_type === \"delayed\" && โณ {task.delay_seconds}s}\n {task.schedule_type === \"scheduled_at\" && task.next_run_at && (\n ๐Ÿ“… {formatTaskDateTime(task.next_run_at)}\n )}\n {task.schedule_type === \"cron\" && โฒ {task.cron_expr}}\n {tags.map((t, i) => (\n {t.trim()}\n ))}\n
\n\n
e.stopPropagation()}>\n {[\"pending\", \"scheduled\", \"blocked\"].includes(task.status) && (\n onAction(\"edit\", task.id)}\n color={theme.blue || theme.accent}\n />\n )}\n {[\"completed\", \"cancelled\", \"failed\"].includes(task.status) && (\n onAction(\"fork\", task.id)}\n color={theme.cyan || theme.accent}\n />\n )}\n {task.status === \"failed\" && (\n onAction(\"retry\", task.id)}\n color={theme.orange}\n />\n )}\n {[\"pending\", \"scheduled\", \"running\"].includes(task.status) && (\n onAction(\"cancel\", task.id)}\n color={theme.red}\n />\n )}\n onAction(\"delete\", task.id)}\n color={theme.textMuted}\n />\n
\n
\n\n {task.run_count > 0 && (\n
\n Runs: {task.run_count}\n {task.max_runs ? ` / ${task.max_runs}` : \"\"}\n {task.last_run_at && ` ยท Last: ${formatTaskTime(task.last_run_at)}`}\n
\n )}\n\n {/* DAG info */}\n {task.status === \"blocked\" && task.dependencies && task.dependencies.length > 0 && (\n
\n โŠ˜ Waiting for: {task.dependencies.map((d) => `#${d.depends_on_task_id}`).join(\", \")}\n
\n )}\n {task.dependents && task.dependents.length > 0 && task.status === \"completed\" && (\n
\n โ†’ Unlocks: {task.dependents.map((id) => `#${id}`).join(\", \")}\n
\n )}\n {task.dag_id && (\n \n dag: {task.dag_id}\n \n )}\n \n );\n}\n\nfunction ActionBtn({ label, title, onClick, color }) {\n const [hovered, setHovered] = useState(false);\n return (\n setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n background: hovered ? `${color}22` : \"transparent\",\n border: \"none\",\n color: color,\n cursor: \"pointer\",\n width: 24,\n height: 24,\n borderRadius: 6,\n fontSize: 14,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.15s\",\n }}\n >\n {label}\n \n );\n}\n\nfunction Column({ col, tasks, onAction, onViewDetail }) {\n return (\n
\n \n {col.icon}\n \n {col.label}\n \n \n {tasks.length}\n \n
\n
\n {tasks.map((t) => (\n \n ))}\n {tasks.length === 0 && (\n \n No tasks\n
\n )}\n \n \n );\n}\n\nfunction HeartbeatBadge({ enabled }) {\n return (\n \n {enabled ? \"โ—\" : \"โ—Œ\"}\n {enabled ? \"Enabled\" : \"Paused\"}\n \n );\n}\n\nfunction HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = \"create\" }: any) {\n const savedDir = localStorage.getItem(\"agentforge_working_dir\") || \"~/papers\";\n const [form, setForm] = useState(() => ({\n name: initialData?.name || \"\",\n working_dir: initialData?.working_dir || savedDir,\n schedule_type: initialData?.schedule_type || \"interval\",\n interval_seconds: initialData?.interval_seconds || 600,\n cron_expr: initialData?.cron_expr || \"\",\n check_prompt: initialData?.check_prompt || \"\",\n action_prompt_template: initialData?.action_prompt_template || \"\",\n default_agent: initialData?.default_agent || defaultAgent || DEFAULT_AGENT,\n cooldown_seconds: initialData?.cooldown_seconds || 1800,\n enabled: initialData?.enabled ?? true,\n }));\n\n const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v }));\n\n const inputStyle: CSSProperties = {\n width: \"100%\",\n padding: \"10px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 13,\n outline: \"none\",\n boxSizing: \"border-box\",\n fontFamily: \"'JetBrains Mono', 'SF Mono', monospace\",\n };\n const labelStyle = {\n fontSize: 11,\n fontWeight: 600,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 6,\n display: \"block\",\n };\n\n const handleSubmit = () => {\n localStorage.setItem(\"agentforge_working_dir\", form.working_dir);\n onSubmit({\n ...form,\n name: form.name || \"Untitled heartbeat\",\n interval_seconds:\n form.schedule_type === \"interval\" ? parseInt(form.interval_seconds) || 600 : null,\n cooldown_seconds: parseInt(form.cooldown_seconds) || 0,\n cron_expr: form.schedule_type === \"cron\" ? form.cron_expr : null,\n });\n };\n\n return (\n \n e.stopPropagation()}\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 16,\n padding: 32,\n width: 640,\n maxHeight: \"84vh\",\n overflow: \"auto\",\n boxShadow: \"0 24px 80px rgba(0,0,0,0.5)\",\n }}\n >\n \n {mode === \"edit\" ? \"Edit Heartbeat\" : \"New Heartbeat\"}\n \n
\n
\n \n set(\"name\", e.target.value)}\n placeholder=\"Repo review watcher\"\n />\n
\n
\n \n
\n set(\"working_dir\", e.target.value)}\n />\n {window.electronAPI?.selectDirectory && (\n {\n const dir = await window.electronAPI.selectDirectory();\n if (dir) set(\"working_dir\", dir);\n }}\n style={{\n padding: \"8px 14px\",\n borderRadius: 8,\n cursor: \"pointer\",\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.textMuted,\n fontSize: 12,\n fontWeight: 600,\n whiteSpace: \"nowrap\",\n }}\n >\n Browse\n \n )}\n
\n
\n
\n \n
\n {[\"interval\", \"cron\"].map((t) => (\n set(\"schedule_type\", t)}\n style={{\n flex: 1,\n padding: \"8px 12px\",\n borderRadius: 8,\n cursor: \"pointer\",\n border: `1px solid ${form.schedule_type === t ? theme.accent : theme.border}`,\n background: form.schedule_type === t ? theme.accentGlow : \"transparent\",\n color: form.schedule_type === t ? theme.accent : theme.textMuted,\n fontSize: 12,\n fontWeight: 600,\n textTransform: \"capitalize\",\n }}\n >\n {t === \"interval\" ? \"โŸณ Interval\" : \"โฒ Cron\"}\n \n ))}\n
\n
\n {form.schedule_type === \"interval\" ? (\n
\n \n set(\"interval_seconds\", e.target.value)}\n />\n
\n ) : (\n
\n \n set(\"cron_expr\", e.target.value)}\n placeholder=\"*/10 * * * *\"\n />\n
\n )}\n
\n \n set(\"check_prompt\", e.target.value)}\n placeholder=\"Check whether there are new meaningful code changes that deserve a review task. Return JSON only.\"\n />\n
\n
\n \n set(\"action_prompt_template\", e.target.value)}\n placeholder=\"Review the latest code changes and summarize bugs, regressions, and missing tests.\"\n />\n
\n
\n
\n \n set(\"default_agent\", e.target.value)}\n >\n {Object.entries(AGENTS).map(([key, cfg]) => (\n \n ))}\n \n
\n
\n \n set(\"cooldown_seconds\", e.target.value)}\n />\n
\n
\n \n set(\"enabled\", e.target.checked)}\n />\n Enabled\n \n
\n
\n \n Cancel\n \n \n {mode === \"edit\" ? \"Save\" : \"Create Heartbeat\"}\n \n
\n \n \n );\n}\n\nfunction HeartbeatCard({ heartbeat, onAction, onViewDetail }) {\n const tags = [];\n if (heartbeat.schedule_type === \"interval\" && heartbeat.interval_seconds)\n tags.push(`โŸณ ${heartbeat.interval_seconds}s`);\n if (heartbeat.schedule_type === \"cron\" && heartbeat.cron_expr)\n tags.push(`โฒ ${heartbeat.cron_expr}`);\n if (heartbeat.last_decision) tags.push(`Last: ${heartbeat.last_decision}`);\n\n return (\n onViewDetail(heartbeat)}\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 12,\n padding: \"16px 18px\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n }}\n >\n
\n
\n \n {heartbeat.name}\n
\n \n {heartbeat.check_prompt}\n
\n \n \n \n\n \n
\n \n {tags.map((tag, idx) => (\n {tag}\n ))}\n
\n
e.stopPropagation()}>\n onAction(\"run\", heartbeat.id)}\n color={theme.orange}\n />\n onAction(\"edit\", heartbeat.id)}\n color={theme.blue}\n />\n {heartbeat.enabled ? (\n onAction(\"pause\", heartbeat.id)}\n color={theme.textMuted}\n />\n ) : (\n onAction(\"resume\", heartbeat.id)}\n color={theme.green}\n />\n )}\n onAction(\"delete\", heartbeat.id)}\n color={theme.red}\n />\n
\n \n\n \n Next: {heartbeat.next_run_at ? formatTaskDateTime(heartbeat.next_run_at) : \"n/a\"}\n {\" ยท \"}\n Triggered:{\" \"}\n {heartbeat.last_triggered_at ? formatTaskDateTime(heartbeat.last_triggered_at) : \"never\"}\n \n {heartbeat.last_error && (\n
\n Last error: {heartbeat.last_error}\n
\n )}\n \n );\n}\n\nfunction HeartbeatDetailPanel({ heartbeat, ticks, onClose }) {\n const [selectedTickId, setSelectedTickId] = useState(null);\n const [tickOutput, setTickOutput] = useState(\"\");\n const [tickRunning, setTickRunning] = useState(false);\n const outputRef = useRef(null);\n\n useEffect(() => {\n setSelectedTickId(ticks[0]?.id || null);\n }, [heartbeat.id, ticks]);\n\n useEffect(() => {\n if (!selectedTickId) {\n setTickOutput(\"\");\n setTickRunning(false);\n return;\n }\n let cancelled = false;\n const load = async () => {\n try {\n const data = await fetchHeartbeatTickOutput(heartbeat.id, selectedTickId);\n if (cancelled) return;\n setTickOutput(data.output || \"\");\n setTickRunning(!!data.is_running);\n } catch {\n if (!cancelled) {\n setTickOutput(\"\");\n setTickRunning(false);\n }\n }\n };\n load();\n const interval = setInterval(load, 1000);\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [heartbeat.id, selectedTickId]);\n\n useEffect(() => {\n if (outputRef.current) {\n outputRef.current.scrollTop = outputRef.current.scrollHeight;\n }\n }, [tickOutput]);\n\n return (\n \n \n
\n \n {heartbeat.name}\n
\n
\n {heartbeat.working_dir}\n
\n \n \n ร—\n \n \n
\n
\n \n \n {heartbeat.schedule_type === \"interval\" ? (\n โŸณ {heartbeat.interval_seconds}s\n ) : (\n โฒ {heartbeat.cron_expr}\n )}\n {heartbeat.last_decision && {heartbeat.last_decision}}\n
\n
\n
\n Next run: {heartbeat.next_run_at ? formatTaskDateTime(heartbeat.next_run_at) : \"n/a\"}\n
\n
\n Last tick:{\" \"}\n {heartbeat.last_tick_at ? formatTaskDateTime(heartbeat.last_tick_at) : \"never\"}\n
\n
\n Last trigger:{\" \"}\n {heartbeat.last_triggered_at\n ? formatTaskDateTime(heartbeat.last_triggered_at)\n : \"never\"}\n
\n
Cooldown: {heartbeat.cooldown_seconds || 0}s
\n
\n
\n \n Decision Prompt\n
\n \n {heartbeat.check_prompt}\n
\n \n
\n \n Triggered Task Template\n
\n \n {heartbeat.action_prompt_template || \"No template configured\"}\n \n \n
\n \n Recent Ticks\n
\n
\n {ticks.map((tick) => {\n let payload = null;\n try {\n payload = tick.decision_payload ? JSON.parse(tick.decision_payload) : null;\n } catch {}\n return (\n \n setSelectedTickId(tick.id)}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 8,\n marginBottom: 6,\n }}\n >\n
\n {tick.decision_type || tick.status}\n
\n
\n {tick.started_at ? formatTaskDateTime(tick.started_at) : \"\"}\n
\n
\n {payload?.reason && (\n
\n {payload.reason}\n
\n )}\n {tick.error && (\n
\n {tick.error}\n
\n )}\n {tick.task_id && (\n \n Triggered task #{tick.task_id}\n \n )}\n \n );\n })}\n {ticks.length === 0 && (\n \n No ticks yet\n \n )}\n \n \n
\n \n \n Tick Log\n
\n {selectedTickId && (\n \n {tickRunning ? \"LIVE\" : \"Stored\"} ยท tick #{selectedTickId}\n \n )}\n \n \n {selectedTickId\n ? tickOutput || \"No output captured for this tick.\"\n : \"Select a tick to view its log.\"}\n \n \n \n \n );\n}\n\nfunction NewTaskModal({ onClose, onSubmit, initialData, mode = \"create\" }) {\n const savedDir = localStorage.getItem(\"agentforge_working_dir\") || \"~/papers\";\n const [form, setForm] = useState(() => {\n if (initialData) {\n return {\n title: initialData.title || \"\",\n prompt: initialData.prompt || \"\",\n working_dir: initialData.working_dir || savedDir,\n schedule_type: initialData.schedule_type || \"immediate\",\n cron_expr: initialData.cron_expr || \"\",\n delay_seconds: initialData.delay_seconds || 60,\n scheduled_at: initialData.next_run_at\n ? formatDateTimeLocalInput(initialData.next_run_at)\n : \"\",\n max_runs: initialData.max_runs || \"\",\n tags: initialData.tags || \"\",\n agent: initialData.agent || DEFAULT_AGENT,\n dag_id: initialData.dag_id || \"\",\n };\n }\n return {\n title: \"\",\n prompt: \"\",\n working_dir: savedDir,\n schedule_type: \"immediate\",\n cron_expr: \"\",\n delay_seconds: 60,\n scheduled_at: \"\",\n max_runs: \"\",\n tags: \"\",\n agent: DEFAULT_AGENT,\n dag_id: \"\",\n };\n });\n const [promptImages, setPromptImages] = useState(() => {\n if (initialData?.prompt_images && Array.isArray(initialData.prompt_images)) {\n return initialData.prompt_images.map((img) => ({\n name: img.name || \"image\",\n media_type: img.media_type || \"image/jpeg\",\n data: img.data || \"\",\n preview: img.data ? `data:${img.media_type || \"image/jpeg\"};base64,${img.data}` : \"\",\n }));\n }\n return [];\n });\n // DAG dependencies: [{task_id, inject_result, _input}] โ€” _input is the text box value\n const [depRows, setDepRows] = useState(() => {\n if (initialData?.dependencies && Array.isArray(initialData.dependencies)) {\n return initialData.dependencies.map((dep) => ({\n task_id: dep.depends_on_task_id,\n inject_result: !!dep.inject_result,\n _input: String(dep.depends_on_task_id),\n }));\n }\n return [];\n });\n const [scheduledAtError, setScheduledAtError] = useState(\"\");\n\n const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v }));\n\n const handleImageSelect = (e) => {\n const files = Array.from(e.target.files || []);\n files.forEach((file: any) => {\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataUrl = ev.target.result as string; // \"data:image/jpeg;base64,...\"\n const [meta, data] = dataUrl.split(\",\");\n const media_type = meta.match(/:(.*?);/)?.[1] || \"image/jpeg\";\n setPromptImages((prev) => [\n ...prev,\n { name: file.name, media_type, data, preview: dataUrl },\n ]);\n };\n reader.readAsDataURL(file);\n });\n e.target.value = \"\";\n };\n\n const removeImage = (idx) => setPromptImages((prev) => prev.filter((_, i) => i !== idx));\n\n const handleSubmit = () => {\n if (!form.prompt.trim()) return;\n localStorage.setItem(\"agentforge_working_dir\", form.working_dir);\n\n // Build depends_on list (only valid numeric IDs)\n const depends_on = depRows\n .filter((r) => r.task_id)\n .map((r) => ({ task_id: r.task_id, inject_result: r.inject_result }));\n\n const data: any = {\n ...form,\n title: form.title || form.prompt.slice(0, 60),\n delay_seconds: form.schedule_type === \"delayed\" ? parseInt(form.delay_seconds) || 60 : null,\n cron_expr: form.schedule_type === \"cron\" ? form.cron_expr : null,\n max_runs: form.max_runs ? parseInt(form.max_runs) : null,\n prompt_images: promptImages.map(({ name, media_type, data }) => ({ name, media_type, data })),\n depends_on: mode === \"edit\" ? depends_on : depends_on.length > 0 ? depends_on : undefined,\n dag_id: form.dag_id || undefined,\n };\n\n // Handle scheduled_at: convert datetime-local to ISO timestamp\n if (form.schedule_type === \"scheduled_at\") {\n const localDate = parseTaskDateTime(form.scheduled_at);\n const serialized = serializeDateTimeLocalInput(form.scheduled_at);\n if (!form.scheduled_at || !serialized || !localDate || isNaN(localDate.getTime())) {\n setScheduledAtError(\"Please enter a valid date and time.\");\n return;\n }\n setScheduledAtError(\"\");\n data.next_run_at = serialized;\n }\n\n onSubmit(data);\n };\n\n const inputStyle: CSSProperties = {\n width: \"100%\",\n padding: \"10px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 13,\n outline: \"none\",\n boxSizing: \"border-box\",\n fontFamily: \"'JetBrains Mono', 'SF Mono', monospace\",\n transition: \"border-color 0.2s\",\n };\n\n const labelStyle = {\n fontSize: 11,\n fontWeight: 600,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 6,\n display: \"block\",\n };\n\n return (\n \n e.stopPropagation()}\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 16,\n padding: 32,\n width: 520,\n maxHeight: \"80vh\",\n overflow: \"auto\",\n boxShadow: \"0 24px 80px rgba(0,0,0,0.5)\",\n }}\n >\n \n {mode === \"edit\" ? \"Edit Task\" : mode === \"fork\" ? \"Fork Task\" : \"New Task\"}\n \n\n
\n
\n \n set(\"title\", e.target.value)}\n />\n
\n\n
\n \n set(\"prompt\", e.target.value)}\n />\n
\n\n
\n \n \n {promptImages.map((img, idx) => (\n
\n \n removeImage(idx)}\n style={{\n position: \"absolute\",\n top: -6,\n right: -6,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n border: \"none\",\n background: theme.red || \"#e74c3c\",\n color: \"#fff\",\n fontSize: 11,\n cursor: \"pointer\",\n lineHeight: \"18px\",\n padding: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n ร—\n \n
\n ))}\n \n +\n \n \n
\n {promptImages.length > 0 && (\n
\n {promptImages.length} image{promptImages.length > 1 ? \"s\" : \"\"} attached\n
\n )}\n
\n\n
\n \n
\n set(\"working_dir\", e.target.value)}\n />\n {window.electronAPI?.selectDirectory && (\n {\n const dir = await window.electronAPI.selectDirectory();\n if (dir) set(\"working_dir\", dir);\n }}\n style={{\n padding: \"8px 14px\",\n borderRadius: 8,\n cursor: \"pointer\",\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.textMuted,\n fontSize: 12,\n fontWeight: 600,\n whiteSpace: \"nowrap\",\n transition: \"all 0.15s\",\n }}\n >\n Browse\n \n )}\n
\n
\n\n
\n \n
\n {[\"immediate\", \"delayed\", \"scheduled_at\", \"cron\"].map((t) => (\n set(\"schedule_type\", t)}\n style={{\n flex: 1,\n padding: \"8px 12px\",\n borderRadius: 8,\n cursor: \"pointer\",\n border: `1px solid ${form.schedule_type === t ? theme.accent : theme.border}`,\n background: form.schedule_type === t ? theme.accentGlow : \"transparent\",\n color: form.schedule_type === t ? theme.accent : theme.textMuted,\n fontSize: 12,\n fontWeight: 600,\n textTransform: \"capitalize\",\n transition: \"all 0.15s\",\n minWidth: 100,\n }}\n >\n {t === \"immediate\"\n ? \"โšก Immediate\"\n : t === \"delayed\"\n ? \"โณ Delayed\"\n : t === \"scheduled_at\"\n ? \"๐Ÿ“… At Time\"\n : \"โฒ Cron\"}\n \n ))}\n
\n
\n\n {form.schedule_type === \"delayed\" && (\n
\n \n set(\"delay_seconds\", e.target.value)}\n />\n
\n )}\n\n {form.schedule_type === \"scheduled_at\" && (\n
\n \n {\n set(\"scheduled_at\", e.target.value);\n setScheduledAtError(\"\");\n }}\n />\n {scheduledAtError && (\n
\n {scheduledAtError}\n
\n )}\n
\n Select a specific date and time to execute this task once\n
\n
\n )}\n\n {form.schedule_type === \"cron\" && (\n <>\n
\n \n set(\"cron_expr\", e.target.value)}\n />\n
\n e.g. \"0 9 * * *\" = daily 9am, \"*/30 * * * *\" = every 30 min\n
\n
\n
\n \n set(\"max_runs\", e.target.value)}\n />\n
\n \n )}\n\n
\n \n set(\"tags\", e.target.value)}\n />\n
\n\n {/* โ”€โ”€ DAG Dependencies โ”€โ”€ */}\n
\n \n
\n This task will be blocked until all upstream tasks complete.\n
\n {depRows.map((row, idx) => (\n \n {\n const val = e.target.value;\n const parsed = parseInt(val);\n setDepRows((prev) =>\n prev.map((r, i) =>\n i === idx\n ? { ...r, _input: val, task_id: isNaN(parsed) ? null : parsed }\n : r,\n ),\n );\n }}\n style={{ ...inputStyle, width: 100, flex: \"none\" }}\n />\n \n \n setDepRows((prev) =>\n prev.map((r, i) =>\n i === idx ? { ...r, inject_result: e.target.checked } : r,\n ),\n )\n }\n style={{ accentColor: theme.accent }}\n />\n Inject result into prompt\n \n setDepRows((prev) => prev.filter((_, i) => i !== idx))}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.red,\n cursor: \"pointer\",\n fontSize: 16,\n padding: \"0 4px\",\n }}\n >\n ร—\n \n
\n ))}\n \n setDepRows((prev) => [...prev, { task_id: null, inject_result: false, _input: \"\" }])\n }\n style={{\n padding: \"5px 12px\",\n borderRadius: 6,\n border: `1px dashed ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 600,\n }}\n >\n + Add dependency\n \n \n\n
\n \n set(\"dag_id\", e.target.value)}\n />\n
\n Group tasks into a named workflow\n
\n
\n\n
\n \n set(\"agent\", e.target.value)}\n >\n \n \n \n
\n \n\n
\n \n Cancel\n \n \n {mode === \"edit\" ? \"Save Changes\" : mode === \"fork\" ? \"Create Fork\" : \"Create Task\"}\n \n
\n \n \n );\n}\n\nfunction DetailPanel({ task, onClose, onResume }: any) {\n // `task` is always truthy here โ€” the only caller renders this inside\n // `{detail && }`. Hooks must stay\n // unconditional, so do not early-return before them.\n const [liveOutput, setLiveOutput] = useState(\"\");\n const [resumeText, setResumeText] = useState(\"\");\n const [resumeError, setResumeError] = useState(\"\");\n const [resumeSent, setResumeSent] = useState(false);\n const [messages, setMessages] = useState([]);\n const [events, setEvents] = useState([]);\n const [showMessages, setShowMessages] = useState(false);\n const [showEvents, setShowEvents] = useState(false);\n const [showLiveOutput, setShowLiveOutput] = useState(true);\n const liveOutputRef = useRef(null);\n const messagesRef = useRef(null);\n const eventsRef = useRef(null);\n\n useEffect(() => {\n if (task.status !== \"running\") {\n setLiveOutput(\"\");\n return;\n }\n let cancelled = false;\n let lastOutputLength = 0;\n const poll = async () => {\n try {\n const res = await fetch(`${API}/tasks/${task.id}/output`);\n if (res.ok && !cancelled) {\n const data = await res.json();\n const currentOutput = data.output || \"\";\n // ๅขž้‡ๆ›ดๆ–ฐ๏ผšๅชๆทปๅŠ ๆ–ฐๅ†…ๅฎน\n if (currentOutput.length > lastOutputLength) {\n const newContent = currentOutput.slice(lastOutputLength);\n setLiveOutput((prev) => prev + newContent);\n lastOutputLength = currentOutput.length;\n }\n }\n } catch {}\n };\n poll();\n const interval = setInterval(poll, 1000); // ็ผฉ็Ÿญ่ฝฎ่ฏข้—ด้š”ๅˆฐ1็ง’\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [task.id, task.status]);\n\n useEffect(() => {\n if (liveOutputRef.current) {\n liveOutputRef.current.scrollTop = liveOutputRef.current.scrollHeight;\n }\n }, [liveOutput]);\n\n useEffect(() => {\n if (showMessages) {\n fetchTaskMessages(task.id).then(setMessages);\n }\n }, [task.id, showMessages]);\n\n useEffect(() => {\n if (!showEvents) return;\n let cancelled = false;\n const load = async () => {\n const nextEvents = await fetchTaskEvents(task.id);\n if (!cancelled) setEvents(nextEvents);\n };\n load();\n if (task.status !== \"running\") {\n return () => {\n cancelled = true;\n };\n }\n const interval = setInterval(load, 1000);\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [task.id, task.status, showEvents]);\n\n useEffect(() => {\n if (messagesRef.current) {\n messagesRef.current.scrollTop = messagesRef.current.scrollHeight;\n }\n }, [messages]);\n\n const handleResume = async () => {\n if (!resumeText.trim()) return;\n setResumeError(\"\");\n const result = await resumeTask(task.id, resumeText.trim());\n if (result.error) {\n setResumeError(result.error);\n } else {\n setResumeText(\"\");\n setResumeSent(true);\n setTimeout(() => setResumeSent(false), 3000);\n onResume();\n }\n };\n\n return (\n \n \n \n \n ร—\n \n \n\n \n {task.title}\n \n\n \n ID: {task.id} ยท Created: {formatTaskDateTime(task.created_at)}\n \n\n
\n \n {task.prompt}\n \n {task.prompt_images && task.prompt_images.length > 0 && (\n
\n \n Attached Images ({task.prompt_images.length})\n
\n
\n {task.prompt_images.map((img, i) => (\n \n ))}\n
\n \n )}\n
\n\n
\n \n \n \n {task.cron_expr && }\n {task.delay_seconds && }\n {task.next_run_at && (\n \n )}\n \n {task.dag_id && }\n
\n\n {/* DAG dependency info */}\n {task.dependencies && task.dependencies.length > 0 && (\n
\n {task.dependencies.map((dep) => (\n \n \n #{dep.depends_on_task_id}\n {dep.depends_on_title ? ` โ€” ${dep.depends_on_title}` : \"\"}\n \n
\n {dep.inject_result ? (\n โ†ณ inject\n ) : null}\n \n {dep.depends_on_status}\n \n
\n \n ))}\n
\n )}\n\n {task.dependents && task.dependents.length > 0 && (\n
\n
\n {task.dependents.map((id) => `#${id}`).join(\", \")}\n
\n
\n )}\n\n {task.status === \"running\" && (\n \n Live Output\n \n \n live\n \n \n }\n >\n \n {/* ๅทฅๅ…ทๆ  */}\n \n
\n setShowLiveOutput(!showLiveOutput)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 11,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n }}\n >\n {showLiveOutput ? \"โ–ผ\" : \"โ–ถ\"} {showLiveOutput ? \"Hide\" : \"Show\"}\n \n \n {liveOutput.length.toLocaleString()} chars\n \n
\n
\n {\n navigator.clipboard.writeText(liveOutput);\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 11,\n cursor: \"pointer\",\n padding: \"4px 8px\",\n borderRadius: 4,\n fontFamily: \"'JetBrains Mono', monospace\",\n }}\n >\n ๐Ÿ“‹ Copy\n \n setLiveOutput(\"\")}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 11,\n cursor: \"pointer\",\n padding: \"4px 8px\",\n borderRadius: 4,\n fontFamily: \"'JetBrains Mono', monospace\",\n }}\n >\n ๐Ÿ—‘๏ธ Clear\n \n
\n \n\n {/* ่พ“ๅ‡บๅ†…ๅฎนๅŒบๅŸŸ */}\n {showLiveOutput && (\n \n \n {liveOutput ? (\n \n ) : (\n \n Waiting for agent output...\n \n )}\n \n \n )}\n \n \n )}\n\n {task.result && (\n
\n \n {task.result}\n \n
\n )}\n\n {task.error && (\n
\n \n {task.error}\n \n
\n )}\n\n {/* Output History Tabs */}\n
\n
\n {\n setShowMessages(!showMessages);\n setShowEvents(false);\n }}\n style={{\n flex: 1,\n padding: \"8px 12px\",\n borderRadius: 8,\n background: showMessages ? theme.accentGlow : theme.surface,\n color: showMessages ? theme.accent : theme.textMuted,\n fontSize: 11,\n fontWeight: 600,\n cursor: \"pointer\",\n border: `1px solid ${showMessages ? theme.accent : theme.border}`,\n transition: \"all 0.15s\",\n }}\n >\n Conversation\n \n {\n setShowEvents(!showEvents);\n setShowMessages(false);\n }}\n style={{\n flex: 1,\n padding: \"8px 12px\",\n borderRadius: 8,\n background: showEvents ? theme.accentGlow : theme.surface,\n color: showEvents ? theme.accent : theme.textMuted,\n fontSize: 11,\n fontWeight: 600,\n cursor: \"pointer\",\n border: `1px solid ${showEvents ? theme.accent : theme.border}`,\n transition: \"all 0.15s\",\n }}\n >\n Execution Events\n \n
\n\n {/* Conversation History */}\n {showMessages && (\n \n {messages.length === 0 ? (\n \n No conversation data โ€” only tasks run after this feature was added have logs.\n
\n ) : (\n messages.map((msg, i) => (\n \n \n {msg.role}\n \n \n {msg.text}\n \n \n ))\n )}\n \n )}\n\n {/* Execution Events History */}\n {showEvents && (\n
\n \n
\n )}\n \n\n {/* Resume completed/failed session */}\n {[\"completed\", \"failed\"].includes(task.status) && task.session_id && (\n
\n \n Session: {task.session_id}\n \n setResumeText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && (e.metaKey || e.ctrlKey)) handleResume();\n }}\n style={{\n width: \"100%\",\n padding: \"10px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 13,\n outline: \"none\",\n boxSizing: \"border-box\",\n fontFamily: \"'JetBrains Mono', 'SF Mono', monospace\",\n resize: \"vertical\",\n minHeight: 80,\n }}\n />\n {resumeError && (\n
{resumeError}
\n )}\n {resumeSent && (\n
\n โœจ ๅทฒๅ‘้€๏ผไปปๅŠกๆญฃๅœจ้‡ๆ–ฐๅ”ค้†’๏ผŒ่ฏท็จๅ€™~\n
\n )}\n \n โ†ฉ Resume (โŒ˜โ†ต)\n \n
\n )}\n \n );\n}\n\nfunction Section({ title, children }) {\n return (\n
\n \n {title}\n
\n {children}\n \n );\n}\n\nfunction InfoRow({ label, value }) {\n return (\n \n {label}\n {value}\n \n );\n}\n\nfunction SettingsModal({\n onClose,\n timeout: initialTimeout,\n defaultAgent: initialDefaultAgent,\n onSave,\n feishu: initialFeishu,\n onFeishuSave,\n channelsStatus: initialChannelsStatus,\n onChannelsSave,\n}) {\n const [tab, setTab] = useState(\"general\");\n const [timeout, setTimeout] = useState(initialTimeout ?? DEFAULT_TIMEOUT_SECONDS);\n const [defaultAgent, setDefaultAgent] = useState(initialDefaultAgent ?? DEFAULT_AGENT);\n const [skillEnabled, setSkillEnabled] = useState(false);\n const [skillSweepAgent, setSkillSweepAgent] = useState(DEFAULT_AGENT);\n const [skillSweepCron, setSkillSweepCron] = useState(\"0 3 * * *\");\n const [feishu, setFeishu] = useState({\n feishu_app_id: \"\",\n feishu_app_secret: \"\",\n feishu_default_chat_id: \"\",\n feishu_default_working_dir: \"~\",\n feishu_enabled: \"false\",\n ...initialFeishu,\n });\n const [feishuSaving, setFeishuSaving] = useState(false);\n const [feishuMsg, setFeishuMsg] = useState(null); // {ok, text}\n const [channels, setChannels] = useState(createInitialChannelsState(initialChannelsStatus));\n const [channelsSaving, setChannelsSaving] = useState(false);\n const [channelsMsg, setChannelsMsg] = useState(null);\n const [weixinQrSrc, setWeixinQrSrc] = useState(\"\");\n const [weixinActionBusy, setWeixinActionBusy] = useState(false);\n const [collapsedChannels, setCollapsedChannels] = useState({\n telegram: true,\n slack: true,\n weixin: true,\n });\n\n // Refresh all channel settings when the modal opens so bot-side /dir changes are visible\n useEffect(() => {\n let cancelled = false;\n const refreshChannels = async (preserveUserEdits = true) => {\n const status = await fetchChannelsStatus();\n if (!cancelled) {\n setChannels((c) => {\n return mergeChannelsStatus(c, status, {\n preserveEditableFields: preserveUserEdits,\n });\n });\n }\n };\n refreshChannels(false); // initial load: full merge to populate fields\n const intervalId = setInterval(refreshChannels, 2000); // polling: preserve edits\n fetchFeishuSettings().then((s) => {\n if (s && Object.keys(s).length) setFeishu((f) => ({ ...f, ...s }));\n });\n fetchSettings().then((s) => {\n if (s && typeof s === \"object\") {\n if (typeof s.skill_library_enabled === \"boolean\") setSkillEnabled(s.skill_library_enabled);\n if (s.skill_sweep_agent) setSkillSweepAgent(s.skill_sweep_agent);\n if (s.skill_sweep_cron) setSkillSweepCron(s.skill_sweep_cron);\n }\n });\n return () => {\n cancelled = true;\n clearInterval(intervalId);\n };\n }, []);\n\n useEffect(() => {\n let cancelled = false;\n const qrValue = channels.weixin?.qr_code_url || \"\";\n if (!qrValue) {\n setWeixinQrSrc(\"\");\n return () => {\n cancelled = true;\n };\n }\n\n if (isWeixinQrImageSource(qrValue)) {\n setWeixinQrSrc(qrValue);\n return () => {\n cancelled = true;\n };\n }\n\n QRCode.toDataURL(qrValue, {\n errorCorrectionLevel: \"M\",\n margin: 2,\n width: 440,\n })\n .then((dataUrl) => {\n if (!cancelled) setWeixinQrSrc(dataUrl);\n })\n .catch((error) => {\n console.error(\"Failed to generate Weixin QR code\", error);\n if (!cancelled) setWeixinQrSrc(\"\");\n });\n\n return () => {\n cancelled = true;\n };\n }, [channels.weixin?.qr_code_url]);\n\n const handleWeixinAction = async (action) => {\n setWeixinActionBusy(true);\n setChannelsMsg(null);\n try {\n await runWeixinAction(action);\n const updated = await fetchChannelsStatus();\n setChannels((c) => mergeChannelsStatus(c, updated));\n if (onChannelsSave) onChannelsSave(updated);\n setChannelsMsg({\n ok: true,\n text: action === \"logout\" ? \"Wechat logged out.\" : \"Wechat login restarted.\",\n });\n } catch (e) {\n setChannelsMsg({ ok: false, text: String(e) });\n } finally {\n setWeixinActionBusy(false);\n }\n };\n\n const handleSaveGeneral = async () => {\n await updateSettings({\n timeout: parseInt(timeout) || DEFAULT_TIMEOUT_SECONDS,\n default_agent: defaultAgent,\n skill_library_enabled: skillEnabled ? \"1\" : \"0\",\n skill_sweep_agent: skillSweepAgent,\n skill_sweep_cron: skillSweepCron,\n });\n onSave(parseInt(timeout) || DEFAULT_TIMEOUT_SECONDS, defaultAgent);\n onClose();\n };\n\n const handleSaveFeishu = async () => {\n setFeishuSaving(true);\n setFeishuMsg(null);\n try {\n await updateFeishuSettings(feishu);\n setFeishuMsg({ ok: true, text: \"Saved. Bridge restarted.\" });\n // Reload settings after save\n if (onFeishuSave) {\n const updated = await fetchFeishuSettings();\n onFeishuSave(updated);\n }\n } catch (e) {\n setFeishuMsg({ ok: false, text: String(e) });\n } finally {\n setFeishuSaving(false);\n }\n };\n\n const handleSaveChannels = async () => {\n setChannelsSaving(true);\n setChannelsMsg(null);\n try {\n await updateChannelsSettings(buildChannelsSavePayload(channels));\n // Reload channel status after save to reflect new running state\n const updated = await fetchChannelsStatus();\n setChannels((c) => mergeChannelsStatus(c, updated));\n if (onChannelsSave) onChannelsSave(updated);\n setChannelsMsg({ ok: true, text: \"Saved. Channels restarted.\" });\n } catch (e) {\n setChannelsMsg({ ok: false, text: String(e) });\n } finally {\n setChannelsSaving(false);\n }\n };\n\n const fieldStyle: CSSProperties = {\n width: \"100%\",\n padding: \"10px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 13,\n outline: \"none\",\n boxSizing: \"border-box\",\n fontFamily: \"'JetBrains Mono', 'SF Mono', monospace\",\n };\n const labelStyle = {\n fontSize: 11,\n fontWeight: 600,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 8,\n display: \"block\",\n };\n const hintStyle = { fontSize: 10, color: theme.textDim, marginTop: 4 };\n\n const tabs = [\"general\", \"channels\", \"feishu\"];\n const tabLabel = { general: \"General\", channels: \"Channels\", feishu: \"Feishu / Lark\" };\n\n return (\n \n e.stopPropagation()}\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 16,\n padding: 32,\n width: 480,\n maxHeight: \"85vh\",\n overflowY: \"auto\",\n boxShadow: \"0 24px 80px rgba(0,0,0,0.5)\",\n }}\n >\n \n Settings\n \n\n {/* Tab bar */}\n \n {tabs.map((t) => (\n setTab(t)}\n style={{\n padding: \"7px 16px\",\n borderRadius: \"8px 8px 0 0\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n background: tab === t ? theme.bg : \"transparent\",\n color: tab === t ? theme.text : theme.textMuted,\n borderBottom: tab === t ? `2px solid ${theme.accent}` : \"2px solid transparent\",\n marginBottom: -1,\n }}\n >\n {tabLabel[t]}\n \n ))}\n \n\n {/* โ”€โ”€ General tab โ”€โ”€ */}\n {tab === \"general\" && (\n <>\n
\n \n setTimeout(e.target.value)}\n style={fieldStyle}\n />\n
\n Default: 12000s (200 min). Max time before a running task is killed.\n
\n
\n
\n \n setDefaultAgent(e.target.value)}\n style={fieldStyle}\n >\n \n \n \n
Agent used for new tasks unless overridden per-task.
\n
\n\n {/* โ”€โ”€ Skill Library โ”€โ”€ */}\n \n \n setSkillEnabled(e.target.checked)}\n style={{ width: 16, height: 16, cursor: \"pointer\" }}\n />\n Skill Library ่‡ชๅŠจๆ‰ซๆ\n \n
\n ๅฎšๆ—ถ่ฎฉ agent ๆ‰ซๆๅทฒๅฎŒๆˆไปปๅŠกใ€ๆฃ€ๆต‹ๅคๅ‘ๆจกๅผ๏ผˆๆถˆ่€— token๏ผŒ้ป˜่ฎคๅ…ณ้—ญ๏ผ‰ใ€‚\n ๆ‰‹ๅŠจใ€Œๆ‰ซไธ€้ใ€ๆŒ‰้’ฎไธๅ—ๆญคๅผ€ๅ…ณๅฝฑๅ“ใ€‚\n
\n \n {skillEnabled && (\n <>\n
\n \n setSkillSweepAgent(e.target.value)}\n style={fieldStyle}\n >\n \n \n \n
่ฟ่กŒ sweep ็š„ agentใ€‚
\n
\n
\n \n setSkillSweepCron(e.target.value)}\n placeholder=\"0 3 * * *\"\n style={{ ...fieldStyle, fontFamily: \"monospace\" }}\n />\n
้ป˜่ฎคๆฏๆ—ฅๅ‡Œๆ™จ 3 ็‚นใ€‚ๅขž้‡ๆ‰ซๆ๏ผŒๅช็œ‹ไธŠๆฌกไปฅๆฅ็š„ๆ–ฐไปปๅŠกใ€‚
\n
\n \n )}\n\n
\n \n Cancel\n \n \n Save\n \n
\n \n )}\n\n {/* โ”€โ”€ Channels tab โ”€โ”€ */}\n {tab === \"channels\" && (\n <>\n {/* โ”€โ”€ Telegram โ”€โ”€ */}\n {(() => {\n const ch = channels.telegram;\n const collapsed = collapsedChannels.telegram;\n const statusDot = ch.running\n ? { bg: theme.green, label: \"Connected\" }\n : ch.configured\n ? { bg: theme.yellow || \"#f59e0b\", label: \"Configured (not running)\" }\n : { bg: theme.textDim, label: \"Not configured\" };\n return (\n \n {/* Header row - clickable to collapse */}\n setCollapsedChannels((c) => ({ ...c, telegram: !c.telegram }))}\n >\n
\n \n {\"โ–ผ\"}\n \n \n \n \n \n \n \n Telegram\n \n
\n \n \n {statusDot.label}\n \n
\n
\n {\n e.stopPropagation();\n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, enabled: !c.telegram.enabled },\n }));\n }}\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: ch.enabled ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n \n \n \n\n {/* Collapsible body */}\n {!collapsed && (\n
\n
\n \n \n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, bot_token: e.target.value },\n }))\n }\n placeholder=\"123456:ABC-DEF...\"\n style={fieldStyle}\n />\n
Token from @BotFather
\n
\n\n
\n \n \n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, allowed_users: e.target.value },\n }))\n }\n placeholder=\"123456789,987654321 (optional)\"\n style={fieldStyle}\n />\n
\n Comma-separated numeric Telegram user IDs. Leave empty to allow all.\n
\n
\n\n
\n \n \n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, default_working_dir: e.target.value },\n }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n
\n Working directory for tasks created via the Telegram bot.\n
\n
\n\n
\n \n \n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, default_chat_id: e.target.value },\n }))\n }\n placeholder=\"-1001234567890 or 123456789\"\n style={fieldStyle}\n />\n
\n Fallback chat for notifications from UI-created tasks (group or user chat\n ID).\n
\n
\n\n \n
Bot commands:
\n {[\n \"/newtask | <prompt>\",\n \"/list\",\n \"/status <id>\",\n \"/cancel <id>\",\n ].map((cmd) => (\n <div key={cmd}>\n <span style={{ color: theme.cyan }}>{cmd}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })()}\n\n {/* โ”€โ”€ Slack โ”€โ”€ */}\n {(() => {\n const ch = channels.slack;\n const collapsed = collapsedChannels.slack;\n const statusDot = ch.running\n ? { bg: theme.green, label: \"Connected\" }\n : ch.configured\n ? { bg: theme.yellow || \"#f59e0b\", label: \"Configured (not running)\" }\n : { bg: theme.textDim, label: \"Not configured\" };\n return (\n <div\n style={{\n marginBottom: 16,\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n overflow: \"hidden\",\n }}\n >\n {/* Header row - clickable to collapse */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n cursor: \"pointer\",\n userSelect: \"none\",\n }}\n onClick={() => setCollapsedChannels((c) => ({ ...c, slack: !c.slack }))}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span\n style={{\n fontSize: 10,\n color: theme.textMuted,\n transition: \"transform 0.2s\",\n transform: collapsed ? \"rotate(-90deg)\" : \"rotate(0deg)\",\n display: \"inline-block\",\n }}\n >\n {\"โ–ผ\"}\n </span>\n <span\n style={{\n display: \"inline-flex\",\n width: 22,\n height: 22,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n }}\n >\n <svg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" aria-hidden=\"true\">\n <path\n fill=\"#36C5F0\"\n d=\"M10.1 3.2A2.2 2.2 0 0 1 12.2 1h.7v5.1h-2.8V3.2Z\"\n />\n <path\n fill=\"#2EB67D\"\n d=\"M20.8 10.1A2.2 2.2 0 0 1 23 12.2v.7h-5.1v-2.8h2.9Z\"\n />\n <path\n fill=\"#ECB22E\"\n d=\"M13.9 20.8A2.2 2.2 0 0 1 11.8 23h-.7v-5.1h2.8v2.9Z\"\n />\n <path\n fill=\"#E01E5A\"\n d=\"M3.2 13.9A2.2 2.2 0 0 1 1 11.8v-.7h5.1v2.8H3.2Z\"\n />\n <path\n fill=\"#36C5F0\"\n d=\"M13.2 4.3a2.7 2.7 0 1 1 5.4 0 2.7 2.7 0 0 1-5.4 0Z\"\n />\n <path\n fill=\"#2EB67D\"\n d=\"M16.9 13.2a2.7 2.7 0 1 1 0 5.4 2.7 2.7 0 0 1 0-5.4Z\"\n />\n <path\n fill=\"#ECB22E\"\n d=\"M5.4 16.9a2.7 2.7 0 1 1 5.4 0 2.7 2.7 0 0 1-5.4 0Z\"\n />\n <path\n fill=\"#E01E5A\"\n d=\"M4.3 5.4a2.7 2.7 0 1 1 0 5.4 2.7 2.7 0 0 1 0-5.4Z\"\n />\n </svg>\n </span>\n <span style={{ fontWeight: 700, fontSize: 14, color: theme.text }}>\n Slack\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6, marginLeft: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: statusDot.bg,\n display: \"inline-block\",\n boxShadow: ch.running ? `0 0 6px ${statusDot.bg}` : \"none\",\n }}\n />\n <span style={{ fontSize: 11, color: theme.textMuted }}>\n {statusDot.label}\n </span>\n </div>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, enabled: !c.slack.enabled },\n }));\n }}\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: ch.enabled ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: ch.enabled ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n {/* Collapsible body */}\n {!collapsed && (\n <div style={{ padding: \"0 16px 16px\" }}>\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Bot Token</label>\n <input\n type=\"password\"\n value={ch.bot_token}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, bot_token: e.target.value },\n }))\n }\n placeholder=\"xoxb-...\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Bot token from OAuth & Permissions</div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>App Token</label>\n <input\n type=\"password\"\n value={ch.app_token}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, app_token: e.target.value },\n }))\n }\n placeholder=\"xapp-...\"\n style={fieldStyle}\n />\n <div style={hintStyle}>App-level token for Socket Mode</div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={ch.default_working_dir}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, default_working_dir: e.target.value },\n }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Working directory for tasks created via the Slack bot.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default DM User</label>\n <input\n value={ch.default_user}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, default_user: e.target.value },\n }))\n }\n placeholder=\"U0123456789\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Slack user ID to DM when tasks have no origin thread (e.g. subtasks\n created via API). Find your ID in Slack profile โ†’ โ‹ฏ โ†’ Copy member ID.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Notification Channel</label>\n <input\n value={ch.default_channel}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, default_channel: e.target.value },\n }))\n }\n placeholder=\"#general or C0123456789\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Optional. Fallback channel if Default DM User is not set.\n </div>\n </div>\n\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 4 }}>Bot commands:</div>\n {[\n \"newtask <title> | <prompt>\",\n \"list\",\n \"status <id>\",\n \"cancel <id>\",\n \"help\",\n ].map((cmd) => (\n <div key={cmd}>\n <span style={{ color: theme.cyan }}>{cmd}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })()}\n\n {/* โ”€โ”€ Weixin โ”€โ”€ */}\n {(() => {\n const ch = channels.weixin;\n const collapsed = collapsedChannels.weixin;\n const statusLabelMap = {\n idle: \"Idle\",\n waiting_for_scan: \"Waiting for scan\",\n scanned: \"Scanned on phone\",\n connected: \"Connected\",\n error: \"Error\",\n };\n const statusDot = ch.running\n ? { bg: theme.green, label: statusLabelMap[ch.login_status] || \"Connected\" }\n : ch.login_status === \"waiting_for_scan\" || ch.login_status === \"scanned\"\n ? { bg: theme.orange || \"#f59e0b\", label: statusLabelMap[ch.login_status] }\n : ch.login_status === \"error\"\n ? { bg: theme.red, label: \"Error\" }\n : ch.configured\n ? { bg: theme.yellow || \"#f59e0b\", label: \"Configured\" }\n : { bg: theme.textDim, label: \"Login required\" };\n return (\n <div\n style={{\n marginBottom: 16,\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n cursor: \"pointer\",\n userSelect: \"none\",\n }}\n onClick={() => setCollapsedChannels((c) => ({ ...c, weixin: !c.weixin }))}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span\n style={{\n fontSize: 10,\n color: theme.textMuted,\n transition: \"transform 0.2s\",\n transform: collapsed ? \"rotate(-90deg)\" : \"rotate(0deg)\",\n display: \"inline-block\",\n }}\n >\n {\"โ–ผ\"}\n </span>\n <span\n style={{\n display: \"inline-flex\",\n width: 22,\n height: 22,\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#07C160\",\n flexShrink: 0,\n }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"22\"\n height=\"22\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n >\n <path d=\"M9.2 4.2c-4 0-7.2 2.6-7.2 5.9 0 1.9 1.1 3.6 2.9 4.7l-.9 2.5 2.9-1.5c.7.1 1.4.2 2.2.2 4 0 7.2-2.6 7.2-5.9S13.2 4.2 9.2 4.2Zm-2.7 4.8a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8Zm5.4 0a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8Z\" />\n <path\n d=\"M16.8 9.1c-3 0-5.5 2-5.5 4.5 0 2.5 2.4 4.5 5.5 4.5.6 0 1.2-.1 1.8-.2l2.4 1.2-.7-2c1.5-.8 2.5-2.1 2.5-3.6 0-2.5-2.4-4.4-5.5-4.4Zm-1.9 4a.7.7 0 1 1 0-1.4.7.7 0 0 1 0 1.4Zm3.8 0a.7.7 0 1 1 0-1.4.7.7 0 0 1 0 1.4Z\"\n opacity=\"0.88\"\n />\n </svg>\n </span>\n <span style={{ fontWeight: 700, fontSize: 14, color: theme.text }}>\n Wechat\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6, marginLeft: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: statusDot.bg,\n display: \"inline-block\",\n boxShadow: ch.running ? `0 0 6px ${statusDot.bg}` : \"none\",\n }}\n />\n <span style={{ fontSize: 11, color: theme.textMuted }}>\n {statusDot.label}\n </span>\n </div>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, enabled: !c.weixin.enabled },\n }));\n }}\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: ch.enabled ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: ch.enabled ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n {!collapsed && (\n <div style={{ padding: \"0 16px 16px\" }}>\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={ch.default_working_dir}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, default_working_dir: e.target.value },\n }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Working directory for tasks created from incoming Weixin messages.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Base URL</label>\n <input\n value={ch.base_url}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, base_url: e.target.value },\n }))\n }\n placeholder=\"https://ilinkai.weixin.qq.com\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Gateway API base URL used for QR login, long-polling, and sendmessage.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Account ID</label>\n <input\n value={ch.account_id}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, account_id: e.target.value },\n }))\n }\n placeholder=\"Optional fixed account id\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Optional. Leave empty to let the bridge adopt the account id returned by\n QR login.\n </div>\n </div>\n\n <div style={{ display: \"flex\", gap: 8, marginBottom: 12 }}>\n <button\n onClick={() => handleWeixinAction(\"reconnect\")}\n disabled={weixinActionBusy}\n style={{\n padding: \"9px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n color: theme.text,\n cursor: weixinActionBusy ? \"not-allowed\" : \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n opacity: weixinActionBusy ? 0.6 : 1,\n }}\n >\n Reconnect\n </button>\n <button\n onClick={() => handleWeixinAction(\"logout\")}\n disabled={weixinActionBusy}\n style={{\n padding: \"9px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.red}`,\n background: theme.redBg,\n color: theme.red,\n cursor: weixinActionBusy ? \"not-allowed\" : \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n opacity: weixinActionBusy ? 0.6 : 1,\n }}\n >\n Logout\n </button>\n </div>\n\n {(ch.qr_code_url ||\n ch.login_status === \"waiting_for_scan\" ||\n ch.login_status === \"scanned\" ||\n ch.last_error) && (\n <div\n style={{\n marginBottom: 12,\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n padding: 12,\n }}\n >\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n color: theme.text,\n marginBottom: 8,\n }}\n >\n Weixin Login Status\n </div>\n <div\n style={{\n fontSize: 11,\n color: theme.textMuted,\n marginBottom: ch.qr_code_url ? 10 : 0,\n }}\n >\n {statusLabelMap[ch.login_status] || \"Idle\"}\n {ch.user_id ? ` ยท ${ch.user_id}` : \"\"}\n </div>\n {ch.account_id && (\n <div style={{ fontSize: 11, color: theme.textMuted, marginBottom: 10 }}>\n Account ID: {ch.account_id}\n </div>\n )}\n {weixinQrSrc && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <img\n src={weixinQrSrc}\n alt=\"Weixin QR code\"\n style={{\n width: 220,\n height: 220,\n objectFit: \"contain\",\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: \"#fff\",\n }}\n />\n <div style={hintStyle}>\n Open Weixin on your phone and scan this QR code. The status updates\n automatically.\n </div>\n </div>\n )}\n {ch.last_error && (\n <div style={{ marginTop: 10, fontSize: 11, color: theme.red }}>\n {ch.last_error}\n </div>\n )}\n </div>\n )}\n\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 4 }}>Notes:</div>\n {[\n \"Enabling Weixin starts the local bridge process\",\n \"First launch without a saved session will trigger QR login\",\n \"Reply to a result message to resume the same task session\",\n ].map((note) => (\n <div key={note}>\n <span style={{ color: theme.cyan }}>{note}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })()}\n\n {channelsMsg && (\n <div\n style={{\n padding: \"8px 12px\",\n borderRadius: 8,\n marginBottom: 16,\n fontSize: 12,\n background: channelsMsg.ok ? theme.greenBg : theme.redBg,\n color: channelsMsg.ok ? theme.green : theme.red,\n border: `1px solid ${channelsMsg.ok ? theme.green : theme.red}`,\n }}\n >\n {channelsMsg.text}\n </div>\n )}\n\n <div style={{ display: \"flex\", gap: 10, justifyContent: \"flex-end\" }}>\n <button\n onClick={onClose}\n style={{\n padding: \"10px 20px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n }}\n >\n Close\n </button>\n <button\n onClick={handleSaveChannels}\n disabled={channelsSaving}\n style={{\n padding: \"10px 24px\",\n borderRadius: 8,\n border: \"none\",\n background: channelsSaving ? theme.border : theme.accent,\n color: channelsSaving ? theme.textMuted : \"#fff\",\n cursor: channelsSaving ? \"not-allowed\" : \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n boxShadow: channelsSaving ? \"none\" : `0 0 20px ${theme.accentGlow}`,\n }}\n >\n {channelsSaving ? \"Savingโ€ฆ\" : \"Save\"}\n </button>\n </div>\n </>\n )}\n\n {/* โ”€โ”€ Feishu tab โ”€โ”€ */}\n {tab === \"feishu\" && (\n <>\n {/* Enable toggle */}\n <div\n style={{\n marginBottom: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div>\n <div style={{ fontSize: 13, fontWeight: 600, color: theme.text }}>\n Enable Feishu Bot\n </div>\n <div style={{ fontSize: 11, color: theme.textMuted, marginTop: 2 }}>\n WebSocket long-connection, no public IP required\n </div>\n </div>\n <button\n onClick={() =>\n setFeishu((f) => ({\n ...f,\n feishu_enabled: f.feishu_enabled === \"true\" ? \"false\" : \"true\",\n }))\n }\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: feishu.feishu_enabled === \"true\" ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: feishu.feishu_enabled === \"true\" ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16, marginBottom: 20 }}>\n <div>\n <label style={labelStyle}>App ID</label>\n <input\n value={feishu.feishu_app_id}\n onChange={(e) => setFeishu((f) => ({ ...f, feishu_app_id: e.target.value }))}\n placeholder=\"cli_xxxxxxxxxxxxxxxx\"\n style={fieldStyle}\n />\n </div>\n <div>\n <label style={labelStyle}>App Secret</label>\n <input\n type=\"password\"\n value={feishu.feishu_app_secret}\n onChange={(e) => setFeishu((f) => ({ ...f, feishu_app_secret: e.target.value }))}\n placeholder=\"โ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ข\"\n style={fieldStyle}\n />\n </div>\n <div>\n <label style={labelStyle}>Default Chat ID</label>\n <input\n value={feishu.feishu_default_chat_id}\n onChange={(e) =>\n setFeishu((f) => ({ ...f, feishu_default_chat_id: e.target.value }))\n }\n placeholder=\"oc_xxxxxxxx (group) or ou_xxxxxxxx (DM)\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Task completion notifications will be sent here.</div>\n </div>\n <div>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={feishu.feishu_default_working_dir}\n onChange={(e) =>\n setFeishu((f) => ({ ...f, feishu_default_working_dir: e.target.value }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Working directory for tasks created via the bot.</div>\n </div>\n </div>\n\n {/* Bot commands cheatsheet */}\n <div\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: \"12px 14px\",\n marginBottom: 20,\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 6, fontFamily: \"inherit\" }}>\n Bot commands:\n </div>\n <div>\n <span style={{ color: theme.cyan }}><any text></span> โ€” create a new task\n </div>\n <div>\n <span style={{ color: theme.cyan }}>/resume <id> <msg></span> โ€” resume a\n task session\n </div>\n <div>\n <span style={{ color: theme.cyan }}>/status <id></span> โ€” query task status\n </div>\n </div>\n\n {feishuMsg && (\n <div\n style={{\n padding: \"8px 12px\",\n borderRadius: 8,\n marginBottom: 16,\n fontSize: 12,\n background: feishuMsg.ok ? theme.greenBg : theme.redBg,\n color: feishuMsg.ok ? theme.green : theme.red,\n border: `1px solid ${feishuMsg.ok ? theme.green : theme.red}`,\n }}\n >\n {feishuMsg.text}\n </div>\n )}\n\n <div style={{ display: \"flex\", gap: 10, justifyContent: \"flex-end\" }}>\n <button\n onClick={onClose}\n style={{\n padding: \"10px 20px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n }}\n >\n Close\n </button>\n <button\n onClick={handleSaveFeishu}\n disabled={feishuSaving}\n style={{\n padding: \"10px 24px\",\n borderRadius: 8,\n border: \"none\",\n background: feishuSaving ? theme.border : theme.accent,\n color: feishuSaving ? theme.textMuted : \"#fff\",\n cursor: feishuSaving ? \"not-allowed\" : \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n boxShadow: feishuSaving ? \"none\" : `0 0 20px ${theme.accentGlow}`,\n }}\n >\n {feishuSaving ? \"Savingโ€ฆ\" : \"Save & Apply\"}\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n\n// โ”€โ”€โ”€ App โ”€โ”€โ”€\n\nfunction parseSkillFrontmatter(body) {\n const m = (body || \"\").match(/^---\\s*\\n([\\s\\S]*?)\\n---/);\n if (!m) return { name: \"\", description: \"\" };\n const out = { name: \"\", description: \"\" };\n for (const line of m[1].split(\"\\n\")) {\n const i = line.indexOf(\":\");\n if (i === -1) continue;\n const k = line.slice(0, i).trim().toLowerCase();\n const v = line.slice(i + 1).trim();\n if (k === \"name\" && !out.name) out.name = v;\n if (k === \"description\" && !out.description) out.description = v;\n }\n return out;\n}\n\nfunction SkillKindBadge({ kind }) {\n const isPitfall = kind === \"pitfall\";\n return (\n <span\n style={{\n fontSize: 10,\n fontWeight: 700,\n padding: \"2px 7px\",\n borderRadius: 6,\n letterSpacing: 0.4,\n background: isPitfall ? \"rgba(239,68,68,0.15)\" : \"rgba(34,197,94,0.15)\",\n color: isPitfall ? theme.red : theme.green,\n }}\n >\n {isPitfall ? \"PITFALL\" : \"RECIPE\"}\n </span>\n );\n}\n\nfunction SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) {\n let taskIds = [];\n try {\n taskIds = JSON.parse(p.contributing_task_ids || \"[]\");\n } catch {\n /* ignore */\n }\n const taskCount = taskIds.length;\n const ready = p.recurrence_count >= 3 && taskCount >= 2;\n const draftStatus = p.draft_status;\n const [expanded, setExpanded] = useState(false);\n const [body, setBody] = useState(p.draft_body || \"\");\n // The full SKILL.md is the single source of truth (name + description live in\n // its frontmatter). Sync the buffer when a fresh draft arrives.\n useEffect(() => {\n if (draftStatus === \"ready\") setBody(p.draft_body || \"\");\n }, [draftStatus, p.draft_body]);\n\n const borderColor =\n p.status === \"promoted\" ? theme.green : p.status === \"candidate\" ? theme.accent : theme.border;\n const muted = p.status === \"dismissed\";\n\n const btn = (bg, color) => ({\n padding: \"6px 14px\",\n borderRadius: 7,\n border: bg === \"transparent\" ? `1px solid ${theme.border}` : \"none\",\n background: bg,\n color,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n });\n\n return (\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${borderColor}`,\n borderRadius: 12,\n padding: 16,\n opacity: muted ? 0.5 : 1,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 8 }}>\n <SkillKindBadge kind={p.kind} />\n <span style={{ fontFamily: \"monospace\", fontSize: 12, color: theme.text, fontWeight: 700 }}>\n {p.pattern_key}\n </span>\n </div>\n <div style={{ color: theme.textMuted, fontSize: 13, marginBottom: 10 }}>\n {p.summary || \"โ€”\"}\n </div>\n <div\n style={{\n display: \"flex\",\n gap: 12,\n fontSize: 11,\n color: theme.textDim,\n marginBottom: 10,\n alignItems: \"center\",\n }}\n >\n <span>ๅคๅ‘ {p.recurrence_count}ร—</span>\n <span>{taskCount} ไธชไปปๅŠก</span>\n <span>{p.status}</span>\n {ready && p.status !== \"promoted\" && (\n <span style={{ color: theme.accent, fontWeight: 700 }}>โœ“ ่พพๆ ‡</span>\n )}\n <button\n onClick={() => setExpanded((v) => !v)}\n style={{\n marginLeft: \"auto\",\n background: \"transparent\",\n border: \"none\",\n color: theme.accent,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n }}\n >\n {expanded ? \"ๆ”ถ่ตท โ–ฒ\" : \"่ฏฆๆƒ… โ–ผ\"}\n </button>\n </div>\n\n {expanded && (\n <div\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: 10,\n marginBottom: 10,\n fontSize: 11,\n color: theme.textMuted,\n }}\n >\n <div style={{ marginBottom: 6 }}>\n <span style={{ color: theme.textDim }}>้ฆ–ๆฌก </span>\n {(p.first_seen || \"\").replace(\"T\", \" \").slice(0, 19) || \"โ€”\"}\n <span style={{ color: theme.textDim }}>ใ€€ๆœ€่ฟ‘ </span>\n {(p.last_seen || \"\").replace(\"T\", \" \").slice(0, 19) || \"โ€”\"}\n </div>\n <div style={{ color: theme.textDim, marginBottom: 4 }}>่ดก็Œฎ็š„ไปปๅŠก๏ผˆ{taskCount}๏ผ‰๏ผš</div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {taskIds.length === 0 && <span style={{ color: theme.textDim }}>โ€”</span>}\n {taskIds.map((tid) => {\n const t = (tasks || []).find((x) => x.id === tid);\n return (\n <span key={tid} style={{ fontFamily: \"monospace\" }}>\n #{tid} {t ? t.title : <span style={{ color: theme.textDim }}>(ๅทฒๅˆ ้™ค)</span>}\n </span>\n );\n })}\n </div>\n </div>\n )}\n\n {draftStatus === \"ready\" && p.draft_worthy !== null && p.draft_worthy !== undefined && (\n <div\n style={{\n fontSize: 11,\n padding: \"7px 10px\",\n borderRadius: 7,\n marginBottom: 8,\n background: p.draft_worthy ? \"rgba(34,197,94,0.12)\" : \"rgba(245,158,11,0.14)\",\n color: p.draft_worthy ? theme.green : \"#f59e0b\",\n border: `1px solid ${p.draft_worthy ? \"rgba(34,197,94,0.3)\" : \"rgba(245,158,11,0.35)\"}`,\n }}\n >\n {p.draft_worthy ? \"โœ“ agent ๅปบ่ฎฎๆฒ‰ๆท€\" : \"โš  agent ่ฎคไธบไปทๅ€ผๆœ‰้™๏ผˆๅฏไปๆ‰นๅ‡†ๆˆ–้ฉณๅ›ž๏ผ‰\"}\n {p.draft_worthiness_reason ? `๏ผš${p.draft_worthiness_reason}` : \"\"}\n </div>\n )}\n\n {p.status === \"promoted\" && (\n <div style={{ fontSize: 12, color: theme.green, fontWeight: 700 }}>โœ“ ๅทฒๆฒ‰ๆท€ไธบ Skill</div>\n )}\n\n {(p.status === \"candidate\" || p.status === \"tracking\") &&\n draftStatus !== \"ready\" &&\n draftStatus !== \"drafting\" && (\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\", flexWrap: \"wrap\" }}>\n <button onClick={() => onDraft(p.id)} style={btn(theme.accent, \"#fff\")}>\n {draftStatus === \"error\" ? \"้‡่ฏ•่’ธ้ฆ\" : \"่’ธ้ฆๆˆ Skill\"}\n </button>\n <button onClick={() => onDismiss(p.id)} style={btn(\"transparent\", theme.textMuted)}>\n ้ฉณๅ›ž\n </button>\n {p.status === \"tracking\" && (\n <span style={{ color: theme.textDim, fontSize: 11 }}>\n ๆœช่พพ่‡ชๅŠจ้˜ˆๅ€ผ๏ผŒๅฏๆ‰‹ๅŠจ่’ธ้ฆ๏ผˆagent ไผšๅˆคๆ–ญๆ˜ฏๅฆๅ€ผๅพ—๏ผ‰\n </span>\n )}\n {draftStatus === \"error\" && (\n <span style={{ color: theme.red, fontSize: 11 }}>่’ธ้ฆๅคฑ่ดฅ๏ผš{p.draft_error}</span>\n )}\n </div>\n )}\n\n {draftStatus === \"drafting\" && (\n <div style={{ fontSize: 12, color: theme.textMuted }}>่’ธ้ฆไธญโ€ฆ</div>\n )}\n\n {draftStatus === \"ready\" &&\n (() => {\n const fm = parseSkillFrontmatter(body);\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {/* preview header */}\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 8, flexWrap: \"wrap\" }}>\n <span\n style={{\n fontFamily: \"ui-monospace, Menlo, monospace\",\n fontSize: 12,\n fontWeight: 800,\n color: theme.accent,\n background: theme.accentGlow,\n padding: \"3px 9px\",\n borderRadius: 6,\n }}\n >\n {fm.name || \"(ๆ—  name)\"}\n </span>\n <span style={{ fontSize: 11, color: theme.textDim }}>\n โ†’ ~/.claude/skills/{fm.name || \"โ€ฆ\"}/SKILL.md\n </span>\n </div>\n {fm.description && (\n <div style={{ fontSize: 12, color: theme.textMuted, lineHeight: 1.55 }}>\n {fm.description}\n </div>\n )}\n {/* editor */}\n <div>\n <div\n style={{\n fontSize: 10.5,\n color: theme.textDim,\n marginBottom: 5,\n fontWeight: 600,\n letterSpacing: 0.3,\n }}\n >\n SKILL.md ยท ๅฏ็ผ–่พ‘๏ผˆfrontmatter ๅ†ณๅฎšๅ็งฐไธŽ่งฆๅ‘ๆ่ฟฐ๏ผ‰\n </div>\n <textarea\n value={body}\n onChange={(e) => setBody(e.target.value)}\n rows={16}\n spellCheck={false}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n padding: \"12px 14px\",\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 12,\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n lineHeight: 1.65,\n resize: \"vertical\",\n outline: \"none\",\n }}\n />\n </div>\n <div style={{ display: \"flex\", gap: 8 }}>\n <button\n onClick={() => onApprove(p.id, { body })}\n style={{ ...btn(theme.green, \"#fff\"), padding: \"8px 18px\", fontSize: 12 }}\n >\n โœ“ ๆ‰นๅ‡†ๅนถๅ†™ๅ…ฅ\n </button>\n <button\n onClick={() => onDismiss(p.id)}\n style={{\n ...btn(\"transparent\", theme.textMuted),\n padding: \"8px 18px\",\n fontSize: 12,\n }}\n >\n ้ฉณๅ›ž\n </button>\n </div>\n </div>\n );\n })()}\n </div>\n );\n}\n\nfunction SkillRegistryCard({ s, tasks, onToggle, onDelete }) {\n const [expanded, setExpanded] = useState(false);\n const [content, setContent] = useState<any>(null);\n const [loading, setLoading] = useState(false);\n\n let sourceTaskIds = [];\n try {\n sourceTaskIds = JSON.parse(s.source_task_ids || \"[]\");\n } catch {\n /* ignore */\n }\n\n const toggleDetail = async () => {\n const next = !expanded;\n setExpanded(next);\n if (next && content === null) {\n setLoading(true);\n try {\n const res = await fetch(`${API}/skills/${s.id}/content`);\n const d = await res.json();\n setContent(d.content ?? \"\");\n } catch (e) {\n setContent(`(ๅŠ ่ฝฝๅคฑ่ดฅ๏ผš${e.message})`);\n } finally {\n setLoading(false);\n }\n }\n };\n\n return (\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 12,\n padding: 14,\n opacity: s.enabled ? 1 : 0.55,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 6 }}>\n <SkillKindBadge kind={s.kind} />\n <span style={{ fontFamily: \"monospace\", fontSize: 12, color: theme.text, fontWeight: 700 }}>\n {s.name}\n </span>\n <button\n onClick={toggleDetail}\n style={{\n marginLeft: \"auto\",\n background: \"transparent\",\n border: \"none\",\n color: theme.accent,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n }}\n >\n {expanded ? \"ๆ”ถ่ตท โ–ฒ\" : \"ๆŸฅ็œ‹ SKILL.md โ–ผ\"}\n </button>\n </div>\n <div style={{ color: theme.textMuted, fontSize: 12, marginBottom: 10, lineHeight: 1.5 }}>\n {s.description || \"โ€”\"}\n </div>\n\n {expanded && (\n <div style={{ marginBottom: 10 }}>\n <div style={{ fontSize: 11, color: theme.textDim, marginBottom: 6 }}>\n <span style={{ fontFamily: \"monospace\" }}>{s.path}</span>\n {s.source_pattern_key && <span>ใ€€ๆฅๆบ pattern๏ผš{s.source_pattern_key}</span>}\n {sourceTaskIds.length > 0 && (\n <span>\n ใ€€ๆฅๆบไปปๅŠก๏ผš\n {sourceTaskIds\n .map((tid) => {\n const t = (tasks || []).find((x) => x.id === tid);\n return `#${tid}${t ? \"๏ผˆ\" + t.title + \"๏ผ‰\" : \"\"}`;\n })\n .join(\"ใ€\")}\n </span>\n )}\n </div>\n <pre\n style={{\n margin: 0,\n padding: \"12px 14px\",\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 12,\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n lineHeight: 1.6,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n maxHeight: 360,\n overflow: \"auto\",\n }}\n >\n {loading ? \"ๅŠ ่ฝฝไธญโ€ฆ\" : content}\n </pre>\n </div>\n )}\n\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n fontSize: 11,\n color: theme.textDim,\n cursor: \"pointer\",\n }}\n >\n <input\n type=\"checkbox\"\n checked={!!s.enabled}\n onChange={(e) => onToggle(s.id, e.target.checked)}\n style={{ cursor: \"pointer\" }}\n />\n {s.enabled ? \"ๅทฒๅฏ็”จ๏ผˆclaude/codex ๅŠ ่ฝฝไธญ๏ผ‰\" : \"ๅทฒๅœ็”จ๏ผˆsymlink ๅทฒๆ‘˜้™ค๏ผ‰\"}\n </label>\n <button\n onClick={() => onDelete(s.id)}\n style={{\n marginLeft: \"auto\",\n padding: \"4px 10px\",\n borderRadius: 6,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.red,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n }}\n >\n ๅˆ ้™ค\n </button>\n </div>\n </div>\n );\n}\n\nfunction SkillsView({\n skillData,\n skills,\n tasks,\n onSweep,\n onDraft,\n onApprove,\n onDismiss,\n onToggleSkill,\n onDeleteSkill,\n}) {\n // Only recurrence >= 2 is worth surfacing; single-occurrence rows are noise.\n // (The backend still tracks them so the count can accumulate across sweeps.)\n const patterns = (skillData.patterns || []).filter((p) => p.recurrence_count >= 2);\n const sweep = skillData.sweep || {};\n const running = sweep.running;\n const last = sweep.last;\n let lastNote = null;\n if (last) {\n lastNote = last.error\n ? `ไธŠๆฌกๆ‰ซๆๅคฑ่ดฅ๏ผš${last.error}`\n : last.scanned === 0\n ? `ไธŠๆฌกๆ‰ซๆ๏ผšๆฒกๆœ‰ๅทฒๅฎŒๆˆ็š„ไปปๅŠกๅฏๅˆ†ๆž๏ผˆagent ${last.agent}๏ผ‰`\n : `ไธŠๆฌกๆ‰ซๆ๏ผšๅˆ†ๆž ${last.scanned} ไธชไปปๅŠกใ€ๆ–ฐๅขž ${last.new ?? 0} ๆฌกๅคๅ‘ใ€ๅ€™้€‰ ${last.candidates ?? 0}๏ผˆagent ${last.agent}๏ผ‰`;\n }\n const [showRegistry, setShowRegistry] = useState(true);\n const [showPatterns, setShowPatterns] = useState(true);\n\n const sectionHeader = (label, count, open, toggle) => (\n <button\n onClick={toggle}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"100%\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: theme.text,\n fontSize: 13,\n fontWeight: 700,\n padding: 0,\n marginBottom: 10,\n }}\n >\n <span style={{ color: theme.textDim, fontSize: 11 }}>{open ? \"โ–ผ\" : \"โ–ถ\"}</span>\n {label}\n <span style={{ color: theme.textDim, fontWeight: 600 }}>๏ผˆ{count}๏ผ‰</span>\n </button>\n );\n\n return (\n <div style={{ padding: 28, minHeight: \"calc(100vh - 72px)\" }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: 16,\n gap: 12,\n }}\n >\n <div style={{ color: theme.textMuted, fontSize: 12 }}>\n ่ทจไปปๅŠกๅคๅ‘ๆจกๅผ่ดฆๆœฌ ยท ๅคๅ‘ โ‰ฅ2 ๅณๅฏๆ‰‹ๅŠจ่’ธ้ฆไธบ Skill๏ผˆ่พพ โ‰ฅ3 ไธ”่ทจ โ‰ฅ2 ไปปๅŠก่‡ชๅŠจๆ ‡่ฎฐๅ€™้€‰๏ผ‰\n {lastNote && <span style={{ marginLeft: 10, color: theme.textDim }}>ยท {lastNote}</span>}\n </div>\n <button\n onClick={onSweep}\n disabled={running}\n style={{\n padding: \"8px 18px\",\n borderRadius: 8,\n border: \"none\",\n background: running ? theme.border : theme.accent,\n color: \"#fff\",\n cursor: running ? \"default\" : \"pointer\",\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 0.3,\n whiteSpace: \"nowrap\",\n boxShadow: running ? \"none\" : `0 0 24px ${theme.accentGlow}`,\n }}\n >\n {running ? \"ๆ‰ซๆไธญโ€ฆ\" : \"ๆ‰ซไธ€้\"}\n </button>\n </div>\n\n {(skills || []).length > 0 && (\n <div style={{ marginBottom: 26 }}>\n {sectionHeader(\"ๅทฒๆฒ‰ๆท€ Skills\", skills.length, showRegistry, () =>\n setShowRegistry((v) => !v),\n )}\n {showRegistry && (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(360px, 1fr))\",\n gap: 12,\n }}\n >\n {skills.map((s) => (\n <SkillRegistryCard\n key={s.id}\n s={s}\n tasks={tasks}\n onToggle={onToggleSkill}\n onDelete={onDeleteSkill}\n />\n ))}\n </div>\n )}\n </div>\n )}\n\n {sectionHeader(\"ๆฃ€ๆต‹ๅˆฐ็š„ๆจกๅผ\", patterns.length, showPatterns, () =>\n setShowPatterns((v) => !v),\n )}\n {showPatterns &&\n (patterns.length === 0 ? (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 12,\n padding: 32,\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n }}\n >\n ่ฟ˜ๆฒกๆœ‰ๅคๅ‘ โ‰ฅ2 ็š„ๆจกๅผ โ€” ็‚นใ€Œๆ‰ซไธ€้ใ€่ฎฉ agent ๅˆ†ๆžๆœ€่ฟ‘ๅฎŒๆˆ็š„ไปปๅŠก๏ผˆๅคๅ‘ 1 ๆฌก็š„ๆš‚ไธๅฑ•็คบ๏ผ‰\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(360px, 1fr))\",\n gap: 14,\n }}\n >\n {patterns.map((p) => (\n <SkillPatternCard\n key={p.id}\n p={p}\n tasks={tasks}\n onDraft={onDraft}\n onApprove={onApprove}\n onDismiss={onDismiss}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nexport default function App() {\n const [tasks, setTasks] = useState<any[]>([]);\n const [heartbeats, setHeartbeats] = useState<any[]>([]);\n const [heartbeatTicks, setHeartbeatTicks] = useState<any[]>([]);\n const [skillData, setSkillData] = useState({\n patterns: [],\n sweep: { running: false, last: null },\n });\n const [skills, setSkills] = useState<any[]>([]);\n const [activeView, setActiveView] = useState(\"tasks\");\n const [showNew, setShowNew] = useState(false);\n const [showNewHeartbeat, setShowNewHeartbeat] = useState(false);\n const [showSettings, setShowSettings] = useState(false);\n const [detail, setDetail] = useState<any>(null);\n const [heartbeatDetail, setHeartbeatDetail] = useState<any>(null);\n const [connected, setConnected] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [taskTimeout, setTaskTimeout] = useState(DEFAULT_TIMEOUT_SECONDS);\n const [defaultAgent, setDefaultAgent] = useState(DEFAULT_AGENT);\n const [feishuSettings, setFeishuSettings] = useState<any>({});\n const [channelsStatus, setChannelsStatus] = useState<any>({});\n const [backendReady, setBackendReady] = useState(false);\n const [backendError, setBackendError] = useState<any>(null);\n const [apiError, setApiError] = useState<any>(null);\n const [editingTask, setEditingTask] = useState<any>(null);\n const [forkingTask, setForkingTask] = useState<any>(null);\n const [editingHeartbeat, setEditingHeartbeat] = useState<any>(null);\n\n // โ”€โ”€โ”€ Color mode โ”€โ”€โ”€\n const [colorMode, setColorMode] = useState(() => localStorage.getItem(\"colorMode\") || \"system\");\n const [systemDark, setSystemDark] = useState(\n () => window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n );\n const resolvedMode = colorMode === \"system\" ? (systemDark ? \"dark\" : \"light\") : colorMode;\n theme = THEMES[resolvedMode];\n\n useEffect(() => {\n localStorage.setItem(\"colorMode\", colorMode);\n document.body.style.background = THEMES[resolvedMode].bg;\n }, [colorMode, resolvedMode]);\n\n useEffect(() => {\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e) => setSystemDark(e.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, []);\n\n useEffect(() => {\n let cancelled = false;\n const deadline = Date.now() + 20000;\n const probe = async () => {\n try {\n const res = await fetch(`${API}/health`, { signal: AbortSignal.timeout(800) });\n if (res.ok) {\n if (!cancelled) setBackendReady(true);\n return;\n }\n } catch {\n /* not ready yet */\n }\n if (cancelled) return;\n if (Date.now() >= deadline) {\n setBackendError(\"Backend did not start within 20 seconds.\");\n return;\n }\n setTimeout(probe, 300);\n };\n probe();\n return () => {\n cancelled = true;\n };\n }, []);\n\n const poll = useCallback(async () => {\n try {\n const [taskData, heartbeatData, skillRes, skillsRes] = await Promise.all([\n fetchTasks(),\n fetchHeartbeats(),\n fetchSkillPatterns(),\n fetchSkills(),\n ]);\n setTasks(taskData);\n setHeartbeats(heartbeatData);\n setSkillData(skillRes);\n setSkills(skillsRes.skills || []);\n setConnected(true);\n setApiError(null);\n } catch (err) {\n setConnected(false);\n setApiError(`Failed to fetch tasks: ${err.message}`);\n }\n }, []);\n\n useEffect(() => {\n if (!backendReady) return;\n poll();\n const interval = setInterval(poll, 3000);\n return () => clearInterval(interval);\n }, [poll, backendReady]);\n\n useEffect(() => {\n if (!backendReady) return;\n fetchSettings().then((s) => {\n if (s.timeout) setTaskTimeout(s.timeout);\n if (s.default_agent) setDefaultAgent(s.default_agent);\n });\n fetchFeishuSettings().then((s) => setFeishuSettings(s));\n fetchChannelsStatus().then((s) => setChannelsStatus(s));\n }, [backendReady]);\n\n const handleAction = async (action, id) => {\n try {\n if (action === \"cancel\") await cancelTask(id);\n else if (action === \"retry\") await retryTask(id);\n else if (action === \"delete\") {\n await deleteTask(id);\n if (detail?.id === id) setDetail(null);\n } else if (action === \"edit\") {\n const task = tasks.find((t) => t.id === id);\n if (task) setEditingTask(task);\n return;\n } else if (action === \"fork\") {\n const task = tasks.find((t) => t.id === id);\n if (task) setForkingTask(task);\n return;\n }\n poll();\n } catch (e) {\n setApiError(`${action} failed: ${e.message}`);\n }\n };\n\n const handleHeartbeatAction = async (action, id) => {\n try {\n if (action === \"run\") {\n await runHeartbeatNow(id);\n } else if (action === \"pause\") {\n await pauseHeartbeat(id);\n } else if (action === \"resume\") {\n await resumeHeartbeatApi(id);\n } else if (action === \"delete\") {\n await deleteHeartbeat(id);\n if (heartbeatDetail?.id === id) {\n setHeartbeatDetail(null);\n setHeartbeatTicks([]);\n }\n } else if (action === \"edit\") {\n const heartbeat = heartbeats.find((h) => h.id === id);\n if (heartbeat) setEditingHeartbeat(heartbeat);\n return;\n }\n poll();\n if (heartbeatDetail?.id === id && action !== \"delete\") {\n const [updatedHeartbeat, ticks] = await Promise.all([\n fetch(`${API}/heartbeats/${id}`).then((r) => r.json()),\n fetchHeartbeatTicks(id),\n ]);\n setHeartbeatDetail(updatedHeartbeat);\n setHeartbeatTicks(ticks);\n }\n } catch (e) {\n setApiError(`Heartbeat ${action} failed: ${e.message}`);\n }\n };\n\n const handleSweep = async () => {\n try {\n await triggerSkillSweep();\n // Optimistically reflect the running state; poll picks up the real status.\n setSkillData((prev) => ({ ...prev, sweep: { ...prev.sweep, running: true } }));\n setTimeout(poll, 1500);\n } catch (e) {\n setApiError(`Sweep failed: ${e.message}`);\n }\n };\n\n const handleSkillDraft = async (id) => {\n try {\n await triggerSkillDraft(id);\n setTimeout(poll, 1500);\n } catch (e) {\n setApiError(`Distill failed: ${e.message}`);\n }\n };\n\n const handleSkillApprove = async (id, data) => {\n try {\n await approveSkill(id, data);\n poll();\n } catch (e) {\n setApiError(`Approve failed: ${e.message}`);\n }\n };\n\n const handleSkillDismiss = async (id) => {\n try {\n await dismissSkillPattern(id);\n poll();\n } catch (e) {\n setApiError(`Dismiss failed: ${e.message}`);\n }\n };\n\n const handleSkillToggle = async (id, enabled) => {\n try {\n await setSkillEnabledApi(id, enabled);\n poll();\n } catch (e) {\n setApiError(`Toggle skill failed: ${e.message}`);\n }\n };\n\n const handleSkillDelete = async (id) => {\n try {\n await deleteSkillApi(id);\n poll();\n } catch (e) {\n setApiError(`Delete skill failed: ${e.message}`);\n }\n };\n\n const handleCreate = async (data) => {\n try {\n await createTask(data);\n setShowNew(false);\n poll();\n } catch (e) {\n setApiError(`Create task failed: ${e.message}`);\n }\n };\n\n const handleEdit = async (data) => {\n try {\n await updateTask(editingTask.id, data);\n setEditingTask(null);\n poll();\n } catch (e) {\n setApiError(`Edit task failed: ${e.message}`);\n }\n };\n\n const handleFork = async (data) => {\n try {\n await createTask(data);\n setForkingTask(null);\n poll();\n } catch (e) {\n setApiError(`Fork task failed: ${e.message}`);\n }\n };\n\n const handleRespond = async (id, answer) => {\n try {\n await respondToTask(id, answer);\n poll();\n } catch (e) {\n setApiError(`Respond failed: ${e.message}`);\n }\n };\n\n const handleResume = () => {\n poll();\n };\n\n const handleCreateHeartbeat = async (data) => {\n try {\n await createHeartbeat(data);\n setShowNewHeartbeat(false);\n poll();\n } catch (e) {\n setApiError(`Create heartbeat failed: ${e.message}`);\n }\n };\n\n const handleEditHeartbeat = async (data) => {\n try {\n await updateHeartbeat(editingHeartbeat.id, data);\n setEditingHeartbeat(null);\n poll();\n } catch (e) {\n setApiError(`Edit heartbeat failed: ${e.message}`);\n }\n };\n\n const openHeartbeatDetail = async (heartbeat) => {\n setHeartbeatDetail(heartbeat);\n try {\n const ticks = await fetchHeartbeatTicks(heartbeat.id);\n setHeartbeatTicks(ticks);\n } catch (e) {\n setApiError(`Failed to fetch heartbeat ticks: ${e.message}`);\n setHeartbeatTicks([]);\n }\n };\n\n const filtered = filter\n ? tasks.filter(\n (t) =>\n t.title.toLowerCase().includes(filter.toLowerCase()) ||\n t.tags?.toLowerCase().includes(filter.toLowerCase()),\n )\n : tasks;\n\n const runningCount = tasks.filter((t) => t.status === \"running\").length;\n const scheduledCount = tasks.filter((t) => t.status === \"scheduled\").length;\n const enabledHeartbeatCount = heartbeats.filter((h) => h.enabled).length;\n\n if (backendError) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100vh\",\n background: theme.bg,\n color: theme.red,\n gap: 12,\n fontFamily: \"inherit\",\n }}\n >\n <div style={{ fontSize: 32 }}>โœ•</div>\n <div style={{ fontSize: 15, fontWeight: 600 }}>Backend failed to start</div>\n <div style={{ fontSize: 12, color: theme.textMuted, maxWidth: 400, textAlign: \"center\" }}>\n {backendError}\n </div>\n </div>\n );\n }\n\n if (!backendReady) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100vh\",\n background: theme.bg,\n color: theme.textMuted,\n gap: 16,\n fontFamily: \"inherit\",\n }}\n >\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: \"50%\",\n border: `3px solid ${theme.border}`,\n borderTopColor: theme.accent,\n animation: \"spin 0.8s linear infinite\",\n }}\n />\n <div style={{ fontSize: 13 }}>Starting backendโ€ฆ</div>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n );\n }\n\n return (\n <div\n style={{\n minHeight: \"100vh\",\n background: theme.bg,\n color: theme.text,\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n >\n <style>{`@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} }`}</style>\n {/* API error toast */}\n {apiError && (\n <div\n style={{\n position: \"fixed\",\n bottom: 24,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n zIndex: 9999,\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n background: theme.surface,\n border: `1px solid ${theme.red}`,\n borderRadius: 8,\n padding: \"10px 16px\",\n boxShadow: `0 4px 24px rgba(0,0,0,0.5)`,\n color: theme.red,\n fontSize: 12,\n fontWeight: 500,\n maxWidth: 480,\n }}\n >\n <span style={{ flexShrink: 0 }}>โœ•</span>\n <span style={{ flex: 1 }}>{apiError}</span>\n <button\n onClick={() => setApiError(null)}\n style={{\n background: \"none\",\n border: \"none\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 14,\n lineHeight: 1,\n padding: \"0 0 0 8px\",\n flexShrink: 0,\n }}\n title=\"Dismiss\"\n >\n ร—\n </button>\n </div>\n )}\n {/* Header */}\n <div\n style={{\n borderBottom: `1px solid ${theme.border}`,\n padding: \"16px 28px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n backdropFilter: \"blur(10px)\",\n position: \"sticky\",\n top: 0,\n zIndex: 100,\n background: `${theme.bg}ee`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 14 }}>\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: 8,\n background: `linear-gradient(135deg, ${theme.accent}, #a855f7)`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: 16,\n fontWeight: 800,\n color: \"#fff\",\n }}\n >\n โŒ˜\n </div>\n <div>\n <div\n style={{\n fontSize: 15,\n fontWeight: 700,\n fontFamily: \"'JetBrains Mono', monospace\",\n letterSpacing: -0.3,\n }}\n >\n AgentForge\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, marginTop: 1 }}>\n {connected ? (\n <span style={{ color: theme.green }}>โ— Connected</span>\n ) : (\n <span style={{ color: theme.red }}>โ— Disconnected โ€” run `bun taskboard.ts`</span>\n )}\n {connected &&\n ` ยท ${runningCount} running ยท ${scheduledCount} scheduled ยท ${enabledHeartbeatCount} heartbeats`}\n </div>\n </div>\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <div\n style={{\n display: \"flex\",\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 10,\n padding: 4,\n gap: 4,\n }}\n >\n {[\n { key: \"tasks\", label: \"Tasks\" },\n { key: \"heartbeats\", label: \"Heartbeats\" },\n { key: \"skills\", label: \"Skills\" },\n ].map((tab) => (\n <button\n key={tab.key}\n onClick={() => setActiveView(tab.key)}\n style={{\n padding: \"6px 10px\",\n borderRadius: 8,\n border: \"none\",\n background: activeView === tab.key ? theme.accentGlow : \"transparent\",\n color: activeView === tab.key ? theme.accent : theme.textMuted,\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 700,\n }}\n >\n {tab.label}\n </button>\n ))}\n </div>\n <input\n placeholder={activeView === \"tasks\" ? \"Filter tasks...\" : \"Filter heartbeats...\"}\n value={filter}\n onChange={(e) => setFilter(e.target.value)}\n style={{\n padding: \"8px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n color: theme.text,\n fontSize: 12,\n outline: \"none\",\n width: 180,\n }}\n />\n {/* Color mode toggle */}\n {(() => {\n const cycle = { system: \"light\", light: \"dark\", dark: \"system\" };\n const icons = { system: \"โŠ™\", light: \"โ˜€\", dark: \"โ˜พ\" };\n const labels = { system: \"System theme\", light: \"Light mode\", dark: \"Dark mode\" };\n return (\n <Tooltip text={labels[colorMode]}>\n <button\n onClick={() => setColorMode(cycle[colorMode])}\n style={{\n padding: \"8px 10px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 15,\n display: \"flex\",\n alignItems: \"center\",\n transition: \"all 0.15s\",\n }}\n >\n {icons[colorMode]}\n </button>\n </Tooltip>\n );\n })()}\n <Tooltip text=\"Settings\">\n <button\n onClick={() => setShowSettings(true)}\n style={{\n padding: \"8px 12px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 15,\n display: \"flex\",\n alignItems: \"center\",\n transition: \"all 0.15s\",\n }}\n >\n โš™\n </button>\n </Tooltip>\n {activeView !== \"skills\" && (\n <button\n onClick={() =>\n activeView === \"tasks\" ? setShowNew(true) : setShowNewHeartbeat(true)\n }\n style={{\n padding: \"8px 18px\",\n borderRadius: 8,\n border: \"none\",\n background: theme.accent,\n color: \"#fff\",\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 0.3,\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n boxShadow: `0 0 24px ${theme.accentGlow}`,\n transition: \"transform 0.15s\",\n }}\n >\n {activeView === \"tasks\" ? \"+ New Task\" : \"+ New Heartbeat\"}\n </button>\n )}\n </div>\n </div>\n\n {activeView === \"tasks\" ? (\n <div\n style={{\n display: \"flex\",\n gap: 20,\n padding: 28,\n minHeight: \"calc(100vh - 72px)\",\n }}\n >\n {COLUMNS.map((col) => (\n <Column\n key={col.key}\n col={col}\n tasks={filtered.filter((t) => col.statuses.includes(t.status))}\n onAction={handleAction}\n onViewDetail={setDetail}\n />\n ))}\n </div>\n ) : activeView === \"heartbeats\" ? (\n <div style={{ padding: 28, minHeight: \"calc(100vh - 72px)\" }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(360px, 1fr))\",\n gap: 14,\n }}\n >\n {(filter\n ? heartbeats.filter(\n (h) =>\n h.name.toLowerCase().includes(filter.toLowerCase()) ||\n h.check_prompt.toLowerCase().includes(filter.toLowerCase()),\n )\n : heartbeats\n ).map((h) => (\n <HeartbeatCard\n key={h.id}\n heartbeat={h}\n onAction={handleHeartbeatAction}\n onViewDetail={openHeartbeatDetail}\n />\n ))}\n {heartbeats.length === 0 && (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 12,\n padding: 32,\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n gridColumn: \"1 / -1\",\n }}\n >\n No heartbeats yet\n </div>\n )}\n </div>\n </div>\n ) : (\n <SkillsView\n skillData={skillData}\n skills={skills}\n tasks={tasks}\n onSweep={handleSweep}\n onDraft={handleSkillDraft}\n onApprove={handleSkillApprove}\n onDismiss={handleSkillDismiss}\n onToggleSkill={handleSkillToggle}\n onDeleteSkill={handleSkillDelete}\n />\n )}\n\n {/* Modals */}\n {showNew && (\n <NewTaskModal\n onClose={() => setShowNew(false)}\n onSubmit={handleCreate}\n initialData={{ agent: defaultAgent }}\n />\n )}\n {showNewHeartbeat && (\n <HeartbeatModal\n onClose={() => setShowNewHeartbeat(false)}\n onSubmit={handleCreateHeartbeat}\n defaultAgent={defaultAgent}\n />\n )}\n {editingTask && (\n <NewTaskModal\n onClose={() => setEditingTask(null)}\n onSubmit={handleEdit}\n initialData={editingTask}\n mode=\"edit\"\n />\n )}\n {editingHeartbeat && (\n <HeartbeatModal\n onClose={() => setEditingHeartbeat(null)}\n onSubmit={handleEditHeartbeat}\n initialData={editingHeartbeat}\n defaultAgent={defaultAgent}\n mode=\"edit\"\n />\n )}\n {forkingTask && (\n <NewTaskModal\n onClose={() => setForkingTask(null)}\n onSubmit={handleFork}\n initialData={forkingTask}\n mode=\"fork\"\n />\n )}\n {showSettings && (\n <SettingsModal\n onClose={() => setShowSettings(false)}\n timeout={taskTimeout}\n defaultAgent={defaultAgent}\n onSave={(timeout, agent) => {\n setTaskTimeout(timeout);\n if (agent) setDefaultAgent(agent);\n }}\n feishu={feishuSettings}\n onFeishuSave={(updated) => setFeishuSettings(updated)}\n channelsStatus={channelsStatus}\n onChannelsSave={(updated) => setChannelsStatus(updated)}\n />\n )}\n {detail && (\n <DetailPanel\n task={tasks.find((t) => t.id === detail.id) || detail}\n onClose={() => setDetail(null)}\n onRespond={handleRespond}\n onResume={handleResume}\n />\n )}\n {heartbeatDetail && (\n <HeartbeatDetailPanel\n heartbeat={heartbeats.find((h) => h.id === heartbeatDetail.id) || heartbeatDetail}\n ticks={heartbeatTicks}\n onClose={() => {\n setHeartbeatDetail(null);\n setHeartbeatTicks([]);\n }}\n />\n )}\n\n {/* Startup guide when no tasks */}\n {connected && activeView === \"tasks\" && tasks.length === 0 && (\n <div\n style={{\n position: \"fixed\",\n bottom: 28,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 12,\n padding: \"16px 24px\",\n maxWidth: 500,\n boxShadow: \"0 8px 32px rgba(0,0,0,0.3)\",\n }}\n >\n <div style={{ fontSize: 13, color: theme.text, fontWeight: 600, marginBottom: 6 }}>\n Ready to go! Click \"+ New Task\" to create your first task.\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, lineHeight: 1.6 }}>\n Tasks are dispatched to Claude Code in your specified working directory. Set cron\n schedules for recurring tasks, or delay execution.\n </div>\n </div>\n )}\n {connected && activeView === \"heartbeats\" && heartbeats.length === 0 && (\n <div\n style={{\n position: \"fixed\",\n bottom: 28,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 12,\n padding: \"16px 24px\",\n maxWidth: 560,\n boxShadow: \"0 8px 32px rgba(0,0,0,0.3)\",\n }}\n >\n <div style={{ fontSize: 13, color: theme.text, fontWeight: 600, marginBottom: 6 }}>\n Heartbeats let AgentForge check first and only create work when needed.\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, lineHeight: 1.6 }}>\n Create one to run a stateless agent decision tick on an interval or cron schedule, then\n trigger a real task only when the signal is actionable.\n </div>\n </div>\n )}\n\n {!connected && (\n <div\n style={{\n position: \"fixed\",\n bottom: 28,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n background: theme.redBg,\n border: `1px solid rgba(248,113,113,0.2)`,\n borderRadius: 12,\n padding: \"16px 24px\",\n maxWidth: 520,\n }}\n >\n <div style={{ fontSize: 13, color: theme.red, fontWeight: 600, marginBottom: 4 }}>\n Backend not running\n </div>\n <code style={{ fontSize: 11, color: theme.text, lineHeight: 1.8, display: \"block\" }}>\n cd backend\n <br />\n bun taskboard.ts\n </code>\n </div>\n )}\n </div>\n );\n}\n\n// CSSๅŠจ็”ปๅฎšไน‰\nconst styles = `\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .live-output-line {\n transition: color 0.2s ease;\n }\n\n .live-output-line.error {\n color: ${theme.red};\n }\n\n .live-output-line.success {\n color: ${theme.green};\n }\n\n .live-output-line.warning {\n color: ${theme.orange};\n }\n\n .live-output-line.info {\n color: ${theme.blue};\n }\n\n .live-output-line.command {\n color: ${theme.cyan};\n font-weight: bold;\n }\n\n .live-output-line.path {\n color: ${theme.accent};\n }\n`;\n\n// ๆณจๅ…ฅๆ ทๅผ\nif (typeof document !== \"undefined\" && !document.querySelector(\"#live-output-styles\")) {\n const styleEl = document.createElement(\"style\");\n styleEl.id = \"live-output-styles\";\n styleEl.textContent = styles;\n document.head.appendChild(styleEl);\n}\n", + "import { useState, useEffect, useCallback, useRef, type CSSProperties } from \"react\";\nimport {\n CheckCircle2,\n GitFork,\n HeartPulse,\n Inbox,\n KanbanSquare,\n MonitorCog,\n Moon,\n Pause,\n Pencil,\n Play,\n Plus,\n Radar,\n RotateCcw,\n Search,\n Settings,\n Sparkles,\n Square,\n Sun,\n Trash2,\n type LucideIcon,\n} from \"lucide-react\";\nimport QRCode from \"qrcode\";\nimport {\n formatDateTimeLocalInput,\n formatTaskDateTime,\n formatTaskTime,\n parseTaskDateTime,\n serializeDateTimeLocalInput,\n} from \"./dateTime.ts\";\nimport {\n buildChannelsSavePayload,\n createInitialChannelsState,\n isWeixinQrImageSource,\n mergeChannelsStatus,\n} from \"./channelsSettings.ts\";\nimport { buildExecutionSteps } from \"./traceSteps.ts\";\n\nconst API = \"http://127.0.0.1:9712/api\";\n\n// โ”€โ”€โ”€ Theme โ”€โ”€โ”€\nconst THEMES: Record<string, Record<string, string>> = {\n dark: {\n bg: \"#0d0e10\",\n surface: \"#17181c\",\n surfaceHover: \"#1c1d22\",\n panel: \"#111216\",\n panelRaised: \"#18191e\",\n field: \"#101115\",\n border: \"rgba(255, 255, 255, 0.085)\",\n borderActive: \"rgba(94, 106, 210, 0.48)\",\n text: \"#f4f4f5\",\n textMuted: \"#a6a8b0\",\n textDim: \"#70737c\",\n accent: \"#5e6ad2\",\n accentGlow: \"rgba(94, 106, 210, 0.18)\",\n green: \"#4cb782\",\n greenBg: \"rgba(76, 183, 130, 0.12)\",\n orange: \"#d99a45\",\n orangeBg: \"rgba(217, 154, 69, 0.13)\",\n red: \"#e06c75\",\n redBg: \"rgba(224, 108, 117, 0.13)\",\n blue: \"#6aa6f8\",\n blueBg: \"rgba(106, 166, 248, 0.12)\",\n cyan: \"#64b5d9\",\n cyanBg: \"rgba(100, 181, 217, 0.12)\",\n yellow: \"#d8b84e\",\n headerBg: \"rgba(13, 14, 16, 0.9)\",\n headerBorder: \"rgba(255, 255, 255, 0.08)\",\n boardBg: \"linear-gradient(180deg, #101114 0%, #0d0e10 48%, #0b0c0e 100%)\",\n columnBg: \"rgba(18, 19, 23, 0.72)\",\n columnHeader: \"#f4f4f5\",\n shadow: \"0 22px 54px rgba(0, 0, 0, 0.34)\",\n shadowSoft: \"0 10px 28px rgba(0, 0, 0, 0.2)\",\n brandStart: \"#f2f3f5\",\n brandEnd: \"#bfc4cf\",\n brandInk: \"#ffffff\",\n },\n light: {\n bg: \"#f7f8fa\",\n surface: \"#ffffff\",\n surfaceHover: \"#fafbfc\",\n panel: \"#f1f2f5\",\n panelRaised: \"#ffffff\",\n field: \"#f3f4f7\",\n border: \"rgba(31, 35, 40, 0.12)\",\n borderActive: \"rgba(94, 106, 210, 0.44)\",\n text: \"#1f2328\",\n textMuted: \"#636a75\",\n textDim: \"#8a919d\",\n accent: \"#5e6ad2\",\n accentGlow: \"rgba(94, 106, 210, 0.13)\",\n green: \"#2f9f6a\",\n greenBg: \"rgba(47, 159, 106, 0.1)\",\n orange: \"#b97722\",\n orangeBg: \"rgba(185, 119, 34, 0.11)\",\n red: \"#d14d57\",\n redBg: \"rgba(209, 77, 87, 0.1)\",\n blue: \"#3978d8\",\n blueBg: \"rgba(57, 120, 216, 0.1)\",\n cyan: \"#2f8fb7\",\n cyanBg: \"rgba(47, 143, 183, 0.1)\",\n yellow: \"#a98b19\",\n headerBg: \"rgba(247, 248, 250, 0.9)\",\n headerBorder: \"rgba(31, 35, 40, 0.1)\",\n boardBg: \"linear-gradient(180deg, #fbfbfc 0%, #f7f8fa 48%, #eef0f4 100%)\",\n columnBg: \"rgba(255, 255, 255, 0.78)\",\n columnHeader: \"#1f2328\",\n shadow: \"0 18px 42px rgba(31, 35, 40, 0.12)\",\n shadowSoft: \"0 8px 22px rgba(31, 35, 40, 0.08)\",\n brandStart: \"#ffffff\",\n brandEnd: \"#d9dde7\",\n brandInk: \"#ffffff\",\n },\n};\n\n// Mutable module-level theme reference โ€” updated before each App render\nlet theme = THEMES.dark;\nconst APP_FONT_STACK =\n \"'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif\";\nconst DISPLAY_FONT_STACK =\n \"'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif\";\nconst MONO_FONT_STACK = \"'SF Mono', 'JetBrains Mono', ui-monospace, Menlo, monospace\";\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction getStatusConfig() {\n return {\n pending: { label: \"Pending\", color: theme.orange, bg: theme.orangeBg },\n scheduled: { label: \"Scheduled\", color: theme.cyan, bg: theme.cyanBg },\n running: { label: \"Running\", color: theme.blue, bg: theme.blueBg },\n completed: { label: \"Completed\", color: theme.green, bg: theme.greenBg },\n failed: { label: \"Failed\", color: theme.red, bg: theme.redBg },\n cancelled: {\n label: \"Cancelled\",\n color: theme.textMuted,\n bg: \"rgba(107,107,138,0.08)\",\n },\n blocked: { label: \"Blocked\", color: theme.textMuted, bg: \"rgba(107,107,138,0.1)\" },\n };\n}\n\nconst COLUMNS = [\n {\n key: \"queued\",\n label: \"Queue\",\n hint: \"ready, delayed, or blocked\",\n statuses: [\"pending\", \"scheduled\", \"blocked\"],\n icon: Inbox,\n tone: \"orange\",\n },\n {\n key: \"running\",\n label: \"Running\",\n hint: \"live agent sessions\",\n statuses: [\"running\"],\n icon: Play,\n tone: \"blue\",\n },\n {\n key: \"done\",\n label: \"Done\",\n hint: \"completed, failed, cancelled\",\n statuses: [\"completed\", \"failed\", \"cancelled\"],\n icon: CheckCircle2,\n tone: \"green\",\n },\n];\n\nconst AGENTS = {\n claude: { label: \"Claude Code\", icon: \"C\", color: \"#ff9f0a\" },\n codex: { label: \"Codex CLI\", icon: \"X\", color: \"#00c7be\" },\n};\nconst DEFAULT_AGENT = \"codex\";\nconst DEFAULT_TIMEOUT_SECONDS = 12000;\n\n// โ”€โ”€โ”€ Formatted Output Component โ”€โ”€โ”€\nfunction FormattedOutput({ content, theme }) {\n if (!content) return null;\n\n // Parse the JSON stream and render only the useful signal.\n const parseStreamJSON = (text) => {\n const lines = text.split(\"\\n\");\n const parsedLines = [];\n\n lines.forEach((line) => {\n if (!line.trim()) return;\n\n try {\n const event = JSON.parse(line);\n const eventType = event.type;\n\n switch (eventType) {\n case \"user\":\n case \"assistant\": {\n const isUser = eventType === \"user\";\n const msg = event.message || {};\n const msgContent = msg.content || [];\n const prefix = isUser ? \"๐Ÿ‘ค User: \" : \"๐Ÿค– Assistant: \";\n const color = isUser ? theme.accent : theme.green;\n let textBuf = \"\";\n const flushText = () => {\n if (textBuf.trim()) {\n parsedLines.push({\n type: eventType,\n text: prefix + textBuf,\n style: { color, fontWeight: isUser ? \"bold\" : \"normal\" },\n });\n textBuf = \"\";\n }\n };\n for (const c of msgContent) {\n if (typeof c === \"string\") {\n textBuf += c;\n } else if (c && typeof c === \"object\") {\n if (c.type === \"text\") {\n textBuf += c.text || \"\";\n } else if (c.type === \"image\") {\n flushText();\n const src =\n c.source && c.source.type === \"base64\"\n ? `data:${c.source.media_type || \"image/jpeg\"};base64,${c.source.data}`\n : null;\n if (src) parsedLines.push({ type: \"image\", src });\n } else if (c.type === \"tool_use\") {\n flushText();\n const rows = buildTraceRows(\n \"tool_call\",\n {\n id: c.id,\n name: c.name,\n input: c.input,\n },\n \"\",\n );\n parsedLines.push({\n type: \"tool_call\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.cyan, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (c.type === \"tool_result\") {\n flushText();\n const rows = buildTraceRows(\n \"tool_result\",\n {\n tool_use_id: c.tool_use_id,\n content: Array.isArray(c.content)\n ? c.content\n .map((part) =>\n part && part.type === \"text\" ? part.text || \"\" : JSON.stringify(part),\n )\n .join(\"\")\n : c.content,\n is_error: c.is_error,\n },\n \"\",\n );\n parsedLines.push({\n type: \"tool_result\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: {\n color: c.is_error ? theme.red : theme.blue,\n fontSize: \"11px\",\n fontFamily: \"monospace\",\n },\n });\n }\n }\n }\n flushText();\n break;\n }\n\n case \"item.completed\": {\n const item = event.item || {};\n if (item.type === \"command_execution\") {\n const rows = buildTraceRows(\n \"command_execution\",\n {\n command: item.command,\n output: item.aggregated_output,\n exit_code: item.exit_code,\n status: item.status,\n },\n \"\",\n );\n parsedLines.push({\n type: \"command_execution\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.orange, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (item.type === \"mcp_tool_call\" || item.type === \"collab_tool_call\") {\n const rows = buildTraceRows(\n \"tool_call\",\n {\n server: item.server,\n name: item.tool || item.name,\n input: item.arguments || item.input,\n result: item.result,\n status: item.status,\n error: item.error,\n },\n \"\",\n );\n parsedLines.push({\n type: \"tool_call\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.cyan, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (item.type === \"web_search\") {\n const rows = buildTraceRows(\"web_search\", item, \"\");\n parsedLines.push({\n type: \"web_search\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.cyan, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n } else if (item.type === \"file_change\") {\n const rows = buildTraceRows(\"file_change\", item, \"\");\n parsedLines.push({\n type: \"file_change\",\n text: rows.map((row) => `${row.label}: ${row.value}`).join(\"\\n\"),\n style: { color: theme.accent, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n }\n break;\n }\n\n case \"result\":\n // Final result.\n if (event.result) {\n parsedLines.push({\n type: \"result\",\n text: `โœ… Result: ${event.result}`,\n style: { color: theme.green, fontWeight: \"bold\" },\n });\n }\n break;\n\n case \"error\":\n // Error details.\n parsedLines.push({\n type: \"error\",\n text: `โŒ Error: ${event.error || \"Unknown error\"}`,\n style: { color: theme.red, fontWeight: \"bold\" },\n });\n break;\n\n default:\n // Other event types: surface compact context.\n if (eventType) {\n let displayText = `[${eventType}]`;\n // Try to render the key event fields.\n if (event.message) {\n const msg = event.message;\n if (msg.content && Array.isArray(msg.content)) {\n const textContent = msg.content\n .filter(\n (c) =>\n typeof c === \"string\" || (c && typeof c === \"object\" && c.type === \"text\"),\n )\n .map((c) => (typeof c === \"string\" ? c : c.text || \"\"))\n .join(\"\");\n if (textContent.trim()) {\n displayText = textContent.slice(0, 200);\n }\n }\n } else if (event.result) {\n displayText = `Result: ${event.result.slice(0, 200)}`;\n } else if (event.error) {\n displayText = `Error: ${event.error.slice(0, 200)}`;\n }\n\n parsedLines.push({\n type: \"event\",\n text: displayText,\n style: { color: theme.textDim, fontSize: \"11px\", fontFamily: \"monospace\" },\n });\n }\n }\n } catch (_error) {\n // If it is not valid JSON, it may be plain text output.\n if (line.trim() && !line.startsWith(\"{\")) {\n // Only render meaningful non-JSON lines.\n if (line.includes(\"error\") || line.includes(\"Error\")) {\n parsedLines.push({\n type: \"error\",\n text: line,\n style: { color: theme.red },\n });\n } else if (line.includes(\"success\") || line.includes(\"Success\")) {\n parsedLines.push({\n type: \"success\",\n text: line,\n style: { color: theme.green },\n });\n } else if (line.length > 10) {\n // Only render longer non-JSON lines.\n parsedLines.push({\n type: \"text\",\n text: line,\n style: { color: theme.textDim },\n });\n }\n }\n }\n });\n\n return parsedLines;\n };\n\n const parsedContent = parseStreamJSON(content);\n\n if (parsedContent.length === 0) {\n return (\n <div style={{ color: theme.textDim, fontStyle: \"italic\", fontSize: \"12px\" }}>\n Waiting for agent output...\n </div>\n );\n }\n\n return (\n <div style={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: \"12px\", lineHeight: \"1.6\" }}>\n {parsedContent.map((item, index) =>\n item.type === \"image\" ? (\n <div key={index} style={{ margin: \"6px 0\" }}>\n <img\n src={item.src}\n alt=\"output image\"\n style={{ maxWidth: \"100%\", borderRadius: \"4px\", display: \"block\" }}\n />\n </div>\n ) : (\n <div\n key={index}\n style={{\n ...item.style,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n marginBottom: \"2px\",\n padding: \"2px 0\",\n }}\n >\n {item.text}\n </div>\n ),\n )}\n </div>\n );\n}\n\nfunction ExecutionTimeline({ events }) {\n const [expanded, setExpanded] = useState(true);\n const steps = buildExecutionSteps(events);\n\n if (steps.length === 0) {\n return (\n <div style={{ fontSize: 12, color: theme.textDim, padding: \"12px 0\", textAlign: \"center\" }}>\n No output events recorded โ€” events are recorded for new task runs.\n </div>\n );\n }\n\n return (\n <div\n style={{\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n overflow: \"hidden\",\n background: theme.bg,\n }}\n >\n <button\n onClick={() => setExpanded(!expanded)}\n style={{\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 12,\n padding: \"10px 12px\",\n background: theme.surface,\n border: \"none\",\n borderBottom: expanded ? `1px solid ${theme.border}` : \"none\",\n color: theme.text,\n cursor: \"pointer\",\n fontFamily: \"'JetBrains Mono', monospace\",\n fontSize: 12,\n textAlign: \"left\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: 8, minWidth: 0 }}>\n <span style={{ color: theme.textMuted }}>{expanded ? \"โŒ„\" : \"โ€บ\"}</span>\n <span>\n Show {steps.length} {steps.length === 1 ? \"step\" : \"steps\"}\n </span>\n </span>\n <span style={{ color: theme.textDim, fontSize: 10, whiteSpace: \"nowrap\" }}>\n {events.length} events\n </span>\n </button>\n\n {expanded && (\n <div style={{ padding: \"12px 12px 14px\" }}>\n {steps.map((step, index) => (\n <ExecutionTimelineStep\n key={`${step.id}-${step.number}`}\n step={step}\n isLast={index === steps.length - 1}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction ExecutionTimelineStep({ step, isLast }) {\n const config = getExecutionStepConfig(step.type);\n const detail = (step.detail || \"\").trim();\n const hasRows = step.rows && step.rows.length > 0;\n const hasImage = Boolean(step.imageSrc);\n const showDetail = detail && detail !== step.title && !hasRows && !hasImage;\n\n return (\n <div style={{ display: \"grid\", gridTemplateColumns: \"28px 1fr\", columnGap: 10 }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\" }}>\n <div\n style={{\n width: 20,\n height: 20,\n borderRadius: 6,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: config.bg,\n border: `1px solid ${config.color}55`,\n color: config.color,\n fontSize: 10,\n fontWeight: 800,\n lineHeight: 1,\n }}\n >\n {config.icon}\n </div>\n {!isLast && (\n <div\n style={{ width: 1, flex: 1, minHeight: 16, background: theme.border, marginTop: 4 }}\n />\n )}\n </div>\n\n <div style={{ paddingBottom: isLast ? 0 : 14, minWidth: 0 }}>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 10,\n alignItems: \"baseline\",\n }}\n >\n <div\n style={{\n color: theme.text,\n fontSize: 12,\n lineHeight: 1.55,\n wordBreak: \"break-word\",\n minWidth: 0,\n }}\n >\n {step.title}\n </div>\n <div\n style={{\n color: theme.textDim,\n fontSize: 9,\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n fontFamily: \"'JetBrains Mono', monospace\",\n }}\n >\n {formatTaskTime(step.timestamp)}\n </div>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n marginTop: 3,\n marginBottom: hasRows || showDetail ? 7 : 0,\n }}\n >\n <span\n style={{\n color: config.color,\n fontSize: 10,\n fontWeight: 700,\n textTransform: \"uppercase\",\n letterSpacing: 0,\n }}\n >\n {config.label}\n </span>\n {step.count > 1 && (\n <span style={{ color: theme.textDim, fontSize: 10 }}>{step.count} chunks</span>\n )}\n </div>\n\n {hasImage && (\n <img\n src={step.imageSrc}\n alt=\"image output\"\n style={{\n maxWidth: \"100%\",\n borderRadius: 6,\n display: \"block\",\n marginTop: 7,\n border: `1px solid ${theme.border}`,\n }}\n />\n )}\n\n {hasRows && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 5,\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"8px 10px\",\n maxHeight: 220,\n overflow: \"auto\",\n }}\n >\n {step.rows.map((row, i) => (\n <div\n key={i}\n style={{ display: \"grid\", gridTemplateColumns: \"72px 1fr\", gap: 8, minWidth: 0 }}\n >\n <span style={{ color: theme.textMuted, fontWeight: 700 }}>{row.label}</span>\n <span\n style={{ whiteSpace: \"pre-wrap\", wordBreak: \"break-word\", color: theme.text }}\n >\n {row.value}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {showDetail && (\n <pre\n style={{\n margin: 0,\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"8px 10px\",\n color: theme.textMuted,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n fontFamily: \"'JetBrains Mono', monospace\",\n fontSize: 11,\n lineHeight: 1.5,\n maxHeight: 220,\n overflow: \"auto\",\n }}\n >\n {detail}\n </pre>\n )}\n </div>\n </div>\n );\n}\n\nfunction getExecutionStepConfig(type) {\n switch (type) {\n case \"thinking\":\n return { label: \"Thinking\", icon: \"โŒ\", color: theme.textMuted, bg: \"rgba(107,107,138,0.08)\" };\n case \"tool_call\":\n return { label: \"Tool Call\", icon: \"โ–ฃ\", color: theme.cyan, bg: theme.cyanBg };\n case \"tool_result\":\n return { label: \"Tool Result\", icon: \"โ†ต\", color: theme.blue, bg: theme.blueBg };\n case \"command_execution\":\n return { label: \"Command\", icon: \"$\", color: theme.orange, bg: theme.orangeBg };\n case \"file_change\":\n return { label: \"File\", icon: \"โ—‡\", color: theme.accent, bg: theme.accentGlow };\n case \"generated_image\":\n return { label: \"Image\", icon: \"โ–ก\", color: theme.accent, bg: theme.accentGlow };\n case \"image_content\":\n return { label: \"Image\", icon: \"โ–ก\", color: theme.accent, bg: theme.accentGlow };\n case \"web_search\":\n return { label: \"Search\", icon: \"โŒ•\", color: theme.cyan, bg: theme.cyanBg };\n case \"result\":\n return { label: \"Result\", icon: \"โœ“\", color: theme.green, bg: theme.greenBg };\n case \"error\":\n return { label: \"Error\", icon: \"!\", color: theme.red, bg: theme.redBg };\n case \"user\":\n return { label: \"User\", icon: \"U\", color: theme.accent, bg: theme.accentGlow };\n case \"assistant\":\n return { label: \"Assistant\", icon: \"AI\", color: theme.green, bg: theme.greenBg };\n default:\n return { label: \"Event\", icon: \"โ€ข\", color: theme.textMuted, bg: \"rgba(107,107,138,0.08)\" };\n }\n}\n\nfunction formatTraceValue(value) {\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"string\") return value;\n return JSON.stringify(value, null, 2);\n}\n\nfunction buildTraceRows(eventType, payload, rawContent) {\n const row = (label, value) => {\n const formatted = formatTraceValue(value);\n return formatted === \"\" ? null : { label, value: formatted };\n };\n const compact = (rows) => rows.filter(Boolean);\n\n if (eventType === \"tool_call\") {\n const name = payload.server\n ? `${payload.server}.${payload.name || payload.tool || \"unknown\"}`\n : payload.name || payload.tool || \"unknown\";\n return compact([\n row(\"Tool\", name),\n row(\"Input\", payload.input || payload.arguments),\n row(\"Result\", payload.result),\n row(\"Status\", payload.status),\n row(\"Error\", payload.error),\n ]);\n }\n\n if (eventType === \"tool_result\") {\n return compact([\n row(payload.is_error ? \"Tool Error\" : \"Tool Result\", payload.tool_use_id || \"result\"),\n row(\"Content\", payload.content),\n ]);\n }\n\n if (eventType === \"command_execution\") {\n return compact([\n row(\"Command\", payload.command),\n row(\"Output\", payload.output),\n row(\"Exit\", payload.exit_code),\n row(\"Status\", payload.status),\n ]);\n }\n\n if (eventType === \"file_change\") {\n const changes = Array.isArray(payload.changes)\n ? payload.changes\n .map((change) => {\n if (!change || typeof change !== \"object\") return formatTraceValue(change);\n const kind = change.kind || change.type || \"changed\";\n const path = change.path || change.file || \"\";\n return path ? `${kind}: ${path}` : kind;\n })\n .join(\"\\n\")\n : payload.changes;\n return compact([row(\"Changes\", changes), row(\"Status\", payload.status)]);\n }\n\n if (eventType === \"web_search\") {\n return compact([\n row(\"Query\", payload.query),\n row(\"Action\", payload.action),\n row(\"Status\", payload.status),\n ]);\n }\n\n return [{ label: eventType, value: rawContent }];\n}\n\n// โ”€โ”€โ”€ CSRF token โ”€โ”€โ”€\n// Fetched once at startup; reused for all state-changing requests.\nlet _csrfTokenPromise = null;\nfunction getCsrfToken() {\n if (!_csrfTokenPromise) {\n _csrfTokenPromise = fetch(`${API}/csrf-token`)\n .then((r) => r.json())\n .then((d) => d.csrf_token || \"\")\n .catch(() => \"\");\n }\n return _csrfTokenPromise;\n}\n\nasync function csrfHeaders(extra = {}) {\n const token = await getCsrfToken();\n return { \"Content-Type\": \"application/json\", \"X-CSRF-Token\": token, ...extra };\n}\n\nasync function fetchWithTimeout(\n input: RequestInfo | URL,\n timeoutMs: number,\n init: RequestInit = {},\n) {\n if (typeof AbortController === \"undefined\") {\n let timeout = 0;\n const timeoutPromise = new Promise<Response>((_, reject) => {\n timeout = window.setTimeout(() => reject(new Error(\"Request timed out\")), timeoutMs);\n });\n try {\n return await Promise.race([fetch(input, init), timeoutPromise]);\n } finally {\n window.clearTimeout(timeout);\n }\n }\n\n const controller = new AbortController();\n const timeout = window.setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(input, { ...init, signal: controller.signal });\n } finally {\n window.clearTimeout(timeout);\n }\n}\n\n// โ”€โ”€โ”€ API helpers โ”€โ”€โ”€\nasync function fetchTasks() {\n const res = await fetch(`${API}/tasks`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function fetchHeartbeats() {\n const res = await fetch(`${API}/heartbeats`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function createTask(data) {\n const res = await fetch(`${API}/tasks`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n return res.json();\n}\n\nasync function fetchSkillPatterns() {\n const res = await fetch(`${API}/skill-patterns`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function triggerSkillSweep(agent?: string) {\n const res = await fetch(`${API}/skills/sweep`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(agent ? { agent } : {}),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function triggerSkillDraft(id, agent?: string) {\n const res = await fetch(`${API}/skill-patterns/${id}/draft`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(agent ? { agent } : {}),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function approveSkill(id, data) {\n const res = await fetch(`${API}/skill-patterns/${id}/approve`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function dismissSkillPattern(id) {\n const res = await fetch(`${API}/skill-patterns/${id}/dismiss`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: \"{}\",\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function fetchSkills() {\n const res = await fetch(`${API}/skills`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function setSkillEnabledApi(id, enabled) {\n const res = await fetch(`${API}/skills/${id}`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ enabled }),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function deleteSkillApi(id) {\n const res = await fetch(`${API}/skills/${id}`, {\n method: \"DELETE\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function createHeartbeat(data) {\n const res = await fetch(`${API}/heartbeats`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function updateHeartbeat(id, data) {\n const res = await fetch(`${API}/heartbeats/${id}`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function deleteHeartbeat(id) {\n const res = await fetch(`${API}/heartbeats/${id}`, {\n method: \"DELETE\",\n headers: await csrfHeaders(),\n });\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n}\n\nasync function runHeartbeatNow(id) {\n const res = await fetch(`${API}/heartbeats/${id}/run-now`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function pauseHeartbeat(id) {\n const res = await fetch(`${API}/heartbeats/${id}/pause`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function resumeHeartbeatApi(id) {\n const res = await fetch(`${API}/heartbeats/${id}/resume`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n });\n const payload = await res.json().catch(() => ({}));\n if (!res.ok) throw new Error(payload.error || `HTTP ${res.status}`);\n return payload;\n}\n\nasync function fetchHeartbeatTicks(id) {\n const res = await fetch(`${API}/heartbeats/${id}/ticks?limit=20`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n const payload = await res.json();\n return payload.ticks || [];\n}\n\nasync function fetchHeartbeatTickOutput(heartbeatId, tickId) {\n const res = await fetch(`${API}/heartbeats/${heartbeatId}/ticks/${tickId}/output`);\n if (!res.ok) throw new Error(`HTTP ${res.status}`);\n return res.json();\n}\n\nasync function cancelTask(id) {\n await fetch(`${API}/tasks/${id}/cancel`, { method: \"POST\", headers: await csrfHeaders() });\n}\n\nasync function retryTask(id) {\n await fetch(`${API}/tasks/${id}/retry`, { method: \"POST\", headers: await csrfHeaders() });\n}\n\nasync function deleteTask(id) {\n await fetch(`${API}/tasks/${id}`, { method: \"DELETE\", headers: await csrfHeaders() });\n}\n\nasync function updateTask(id, data) {\n const res = await fetch(`${API}/tasks/${id}`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n if (!res.ok) {\n const err = await res.json().catch(() => ({}));\n throw new Error(err.error || `HTTP ${res.status}`);\n }\n return res.json();\n}\n\nasync function respondToTask(id, answer) {\n await fetch(`${API}/tasks/${id}/respond`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ answer }),\n });\n}\n\nasync function resumeTask(id, message) {\n const res = await fetch(`${API}/tasks/${id}/resume`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ message }),\n });\n return res.json();\n}\n\nasync function fetchTaskMessages(id) {\n try {\n const res = await fetch(`${API}/tasks/${id}/messages`);\n return res.ok ? await res.json() : [];\n } catch {\n return [];\n }\n}\n\nasync function fetchTaskEvents(id) {\n try {\n const res = await fetch(`${API}/tasks/${id}/events?limit=1000`);\n if (res.ok) {\n const data = await res.json();\n return data.events || [];\n }\n return [];\n } catch {\n return [];\n }\n}\n\nasync function fetchSettings() {\n try {\n const res = await fetch(`${API}/settings`);\n return res.ok ? await res.json() : {};\n } catch {\n return {};\n }\n}\n\nasync function updateSettings(data) {\n await fetch(`${API}/settings`, {\n method: \"PUT\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n}\n\nasync function fetchFeishuSettings() {\n try {\n const res = await fetch(`${API}/feishu/settings`);\n return res.ok ? await res.json() : {};\n } catch {\n return {};\n }\n}\n\nasync function updateFeishuSettings(data) {\n await fetch(`${API}/feishu/settings`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n}\n\nasync function fetchChannelsStatus() {\n try {\n const res = await fetch(`${API}/channels/status`);\n return res.ok ? await res.json() : {};\n } catch {\n return {};\n }\n}\n\nasync function updateChannelsSettings(data) {\n await fetch(`${API}/channels/settings`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify(data),\n });\n}\n\nasync function runWeixinAction(action) {\n const res = await fetch(`${API}/channels/weixin/action`, {\n method: \"POST\",\n headers: await csrfHeaders(),\n body: JSON.stringify({ action }),\n });\n if (!res.ok) {\n const data = await res.json().catch(() => ({}));\n throw new Error(data.error || `HTTP ${res.status}`);\n }\n}\n\n// โ”€โ”€โ”€ Components โ”€โ”€โ”€\n\nfunction Tooltip({ text, children }) {\n const [visible, setVisible] = useState(false);\n const [position, setPosition] = useState<{\n arrowLeft: number;\n left: number;\n top: number;\n placement: \"top\" | \"bottom\";\n } | null>(null);\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const tooltipRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!visible) return;\n\n const updatePosition = () => {\n const trigger = triggerRef.current;\n const tooltip = tooltipRef.current;\n if (!trigger || !tooltip) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const tooltipRect = tooltip.getBoundingClientRect();\n const gap = 8;\n const margin = 8;\n const topCandidate = triggerRect.top - tooltipRect.height - gap;\n const placement = topCandidate < margin ? \"bottom\" : \"top\";\n const top = placement === \"top\" ? topCandidate : triggerRect.bottom + gap;\n const centeredLeft = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n const maxLeft = window.innerWidth - tooltipRect.width - margin;\n const left = clamp(centeredLeft, margin, Math.max(margin, maxLeft));\n\n setPosition({\n arrowLeft: clamp(\n triggerRect.left + triggerRect.width / 2 - left,\n 10,\n tooltipRect.width - 10,\n ),\n left,\n top,\n placement,\n });\n };\n\n const frame = requestAnimationFrame(updatePosition);\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n cancelAnimationFrame(frame);\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [visible, text]);\n\n return (\n <div\n ref={triggerRef}\n style={{ position: \"relative\", display: \"inline-flex\" }}\n onMouseEnter={() => {\n setPosition(null);\n setVisible(true);\n }}\n onMouseLeave={() => setVisible(false)}\n onFocus={() => {\n setPosition(null);\n setVisible(true);\n }}\n onBlur={() => setVisible(false)}\n >\n {children}\n {visible && (\n <div\n ref={tooltipRef}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n opacity: position ? 1 : 0,\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n color: theme.textMuted,\n fontSize: 11,\n padding: \"5px 8px\",\n borderRadius: 8,\n whiteSpace: \"nowrap\",\n pointerEvents: \"none\",\n boxShadow: theme.shadowSoft,\n zIndex: 9999,\n transition: \"opacity 0.12s ease\",\n }}\n >\n {text}\n <span\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: position?.arrowLeft ?? \"50%\",\n [position?.placement === \"bottom\" ? \"top\" : \"bottom\"]: -4,\n width: 7,\n height: 7,\n background: theme.surface,\n borderLeft: `1px solid ${theme.border}`,\n borderTop: `1px solid ${theme.border}`,\n transform:\n position?.placement === \"bottom\"\n ? \"translateX(-50%) rotate(45deg)\"\n : \"translateX(-50%) rotate(225deg)\",\n }}\n />\n </div>\n )}\n </div>\n );\n}\n\nfunction BrandMark({ size = 40 }) {\n return (\n <div\n style={{\n width: size,\n height: size,\n borderRadius: 8,\n display: \"grid\",\n placeItems: \"center\",\n background: `linear-gradient(180deg, ${theme.brandStart}, ${theme.brandEnd})`,\n border: `1px solid ${theme.border}`,\n position: \"relative\",\n overflow: \"hidden\",\n flexShrink: 0,\n }}\n >\n <img\n src=\"./assets/agentforge.png\"\n alt=\"AgentForge\"\n style={{ width: size, height: size, display: \"block\" }}\n />\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n inset: 1,\n borderRadius: 7,\n border: \"1px solid rgba(255,255,255,0.14)\",\n pointerEvents: \"none\",\n }}\n />\n </div>\n );\n}\n\nfunction IconGlyph({\n icon: Icon,\n size = 15,\n strokeWidth = 2.35,\n style,\n}: {\n icon: LucideIcon;\n size?: number;\n strokeWidth?: number;\n style?: CSSProperties;\n}) {\n return (\n <Icon\n aria-hidden=\"true\"\n size={size}\n strokeWidth={strokeWidth}\n style={{ display: \"block\", flexShrink: 0, ...style }}\n />\n );\n}\n\nfunction IconWell({\n icon,\n color = theme.accent,\n background = theme.field,\n size = 28,\n iconSize = 15,\n active = false,\n}: {\n icon: LucideIcon;\n color?: string;\n background?: string;\n size?: number;\n iconSize?: number;\n active?: boolean;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n style={{\n width: size,\n height: size,\n borderRadius: 7,\n display: \"grid\",\n placeItems: \"center\",\n background: active ? theme.accentGlow : background,\n border: `1px solid ${active ? theme.borderActive : theme.border}`,\n color,\n flexShrink: 0,\n }}\n >\n <IconGlyph icon={icon} size={iconSize} />\n </span>\n );\n}\n\nfunction HeaderButton({ children, onClick, title, active = false }) {\n return (\n <Tooltip text={title}>\n <button\n onClick={onClick}\n aria-label={title}\n style={{\n width: 32,\n height: 32,\n borderRadius: 6,\n border: `1px solid ${active ? theme.accent : theme.border}`,\n background: active ? theme.accentGlow : theme.surface,\n color: active ? theme.accent : theme.textMuted,\n cursor: \"pointer\",\n fontSize: 15,\n display: \"grid\",\n placeItems: \"center\",\n boxShadow: active ? `0 0 0 2px ${theme.accentGlow}` : \"none\",\n transition: \"background 0.15s ease, color 0.15s ease, border-color 0.15s ease\",\n }}\n >\n {children}\n </button>\n </Tooltip>\n );\n}\n\nfunction StatusPill({ connected, label, tone = theme.green, background = theme.greenBg }) {\n const activeTone = connected ? tone : theme.red;\n const activeBackground = connected ? background : theme.redBg;\n\n return (\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 7,\n color: activeTone,\n background: connected ? background : activeBackground,\n border: `1px solid ${connected ? `${activeTone}40` : `${theme.red}55`}`,\n borderRadius: 999,\n padding: \"4px 9px\",\n fontSize: 11,\n fontWeight: 650,\n fontFamily: MONO_FONT_STACK,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n width: 7,\n height: 7,\n borderRadius: \"50%\",\n background: activeTone,\n }}\n />\n {connected ? label : \"offline\"}\n </div>\n );\n}\n\nfunction MetricTile({ label, value, tone = theme.text }) {\n return (\n <div\n style={{\n minWidth: 84,\n padding: \"8px 10px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n }}\n >\n <div style={{ color: theme.textDim, fontSize: 11, fontWeight: 600 }}>{label}</div>\n <div\n style={{\n color: tone,\n fontSize: 18,\n fontWeight: 720,\n lineHeight: 1.1,\n marginTop: 2,\n fontFamily: DISPLAY_FONT_STACK,\n }}\n >\n {value}\n </div>\n </div>\n );\n}\n\nfunction Badge({ status }) {\n const cfg = getStatusConfig()[status] || getStatusConfig().pending;\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n padding: \"3px 7px\",\n borderRadius: 999,\n fontSize: 11,\n fontWeight: 650,\n color: cfg.color,\n background: cfg.bg,\n border: `1px solid ${cfg.color}33`,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n background: cfg.color,\n }}\n />\n {cfg.label}\n </span>\n );\n}\n\nfunction Tag({ children }) {\n return (\n <span\n style={{\n padding: \"3px 7px\",\n borderRadius: 4,\n fontSize: 10,\n fontWeight: 650,\n background: theme.field,\n color: theme.textMuted,\n border: `1px solid ${theme.border}`,\n }}\n >\n {children}\n </span>\n );\n}\n\nfunction AgentBadge({ agent }) {\n const cfg = AGENTS[agent] || AGENTS.claude;\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 6,\n padding: \"3px 8px\",\n borderRadius: 4,\n fontSize: 10,\n fontWeight: 650,\n color: cfg.color,\n background: `${cfg.color}18`,\n border: `1px solid ${cfg.color}2f`,\n }}\n >\n <span\n style={{\n width: 14,\n height: 14,\n borderRadius: 4,\n display: \"grid\",\n placeItems: \"center\",\n color: theme.brandInk,\n background: cfg.color,\n fontSize: 9,\n fontWeight: 700,\n lineHeight: 1,\n fontFamily: MONO_FONT_STACK,\n }}\n >\n {cfg.icon}\n </span>\n {cfg.label}\n </span>\n );\n}\n\nfunction uiField(overrides: CSSProperties = {}): CSSProperties {\n return {\n width: \"100%\",\n padding: \"9px 11px\",\n borderRadius: 6,\n border: `1px solid ${theme.border}`,\n background: theme.field,\n color: theme.text,\n fontSize: 13,\n outline: \"none\",\n boxSizing: \"border-box\",\n fontFamily: APP_FONT_STACK,\n transition: \"border-color 0.15s ease, background 0.15s ease\",\n ...overrides,\n };\n}\n\nfunction uiLabel(): CSSProperties {\n return {\n fontSize: 11,\n fontWeight: 650,\n color: theme.textMuted,\n letterSpacing: 0,\n marginBottom: 6,\n display: \"block\",\n };\n}\n\nfunction modalOverlay(): CSSProperties {\n return {\n position: \"fixed\",\n inset: 0,\n background: \"rgba(0, 0, 0, 0.58)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 1000,\n backdropFilter: \"blur(6px)\",\n padding: 20,\n };\n}\n\nfunction modalPanel(width: number, maxHeight = \"84vh\"): CSSProperties {\n return {\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 10,\n padding: 24,\n width,\n maxWidth: \"calc(100vw - 40px)\",\n maxHeight,\n overflow: \"auto\",\n boxShadow: theme.shadow,\n };\n}\n\nfunction modalTitle(): CSSProperties {\n return {\n margin: \"0 0 18px\",\n fontSize: 16,\n fontWeight: 720,\n color: theme.text,\n fontFamily: DISPLAY_FONT_STACK,\n };\n}\n\nfunction secondaryButton(): CSSProperties {\n return {\n padding: \"8px 14px\",\n borderRadius: 6,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 650,\n };\n}\n\nfunction primaryButton(): CSSProperties {\n return {\n padding: \"8px 15px\",\n borderRadius: 6,\n border: `1px solid ${theme.accent}`,\n background: theme.accent,\n color: theme.brandInk,\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 680,\n };\n}\n\nfunction segmentedButton(active: boolean): CSSProperties {\n return {\n flex: 1,\n padding: \"7px 10px\",\n borderRadius: 6,\n cursor: \"pointer\",\n border: `1px solid ${active ? theme.borderActive : theme.border}`,\n background: active ? theme.accentGlow : theme.surface,\n color: active ? theme.text : theme.textMuted,\n fontSize: 12,\n fontWeight: 650,\n minWidth: 96,\n transition: \"background 0.15s ease, border-color 0.15s ease, color 0.15s ease\",\n };\n}\n\nfunction TaskCard({ task, onAction, onViewDetail }) {\n const [hovered, setHovered] = useState(false);\n const tags = task.tags ? task.tags.split(\",\").filter(Boolean) : [];\n\n return (\n <div\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n onClick={() => onViewDetail(task)}\n style={{\n background: hovered ? theme.surfaceHover : theme.surface,\n border: `1px solid ${hovered ? theme.borderActive : theme.border}`,\n borderRadius: 8,\n cursor: \"pointer\",\n overflow: \"hidden\",\n transition:\n \"transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease\",\n transform: hovered ? \"translateY(-1px)\" : \"none\",\n boxShadow: hovered ? \"0 8px 24px rgba(0,0,0,0.14)\" : \"none\",\n }}\n >\n <div\n style={{\n padding: \"12px 13px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 9,\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 10,\n }}\n >\n <span\n style={{\n color: theme.textDim,\n fontFamily: MONO_FONT_STACK,\n fontSize: 10,\n fontWeight: 800,\n }}\n >\n #{task.id}\n </span>\n <Badge status={task.status} />\n </div>\n\n <div\n style={{\n fontSize: 13.5,\n fontWeight: 680,\n color: theme.text,\n lineHeight: 1.35,\n fontFamily: DISPLAY_FONT_STACK,\n }}\n >\n {task.title || \"Untitled task\"}\n </div>\n\n <div\n style={{\n fontSize: 12,\n color: theme.textMuted,\n lineHeight: 1.45,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n WebkitLineClamp: 2,\n WebkitBoxOrient: \"vertical\",\n }}\n >\n {task.prompt || \"No prompt saved for this task.\"}\n </div>\n\n <div style={{ display: \"flex\", gap: 5, flexWrap: \"wrap\" }}>\n <AgentBadge agent={task.agent} />\n {task.schedule_type === \"delayed\" && <Tag>delay {task.delay_seconds}s</Tag>}\n {task.schedule_type === \"scheduled_at\" && task.next_run_at && (\n <Tag>at {formatTaskDateTime(task.next_run_at)}</Tag>\n )}\n {task.schedule_type === \"cron\" && <Tag>cron {task.cron_expr}</Tag>}\n {task.run_count > 0 && (\n <Tag>\n runs {task.run_count}\n {task.max_runs ? `/${task.max_runs}` : \"\"}\n </Tag>\n )}\n {tags.slice(0, 4).map((t, i) => (\n <Tag key={i}>{t.trim()}</Tag>\n ))}\n </div>\n\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n gap: 10,\n borderTop: `1px solid ${theme.border}`,\n paddingTop: 9,\n }}\n >\n <div style={{ fontSize: 10, color: theme.textDim, fontFamily: MONO_FONT_STACK }}>\n {task.last_run_at ? `last ${formatTaskTime(task.last_run_at)}` : \"not run yet\"}\n </div>\n\n <div\n style={{ display: \"flex\", gap: 4, opacity: hovered ? 1 : 0.7 }}\n onClick={(e) => e.stopPropagation()}\n >\n {[\"pending\", \"scheduled\", \"blocked\"].includes(task.status) && (\n <ActionBtn\n icon={Pencil}\n title=\"Edit\"\n onClick={() => onAction(\"edit\", task.id)}\n color={theme.blue || theme.accent}\n />\n )}\n {[\"completed\", \"cancelled\", \"failed\"].includes(task.status) && (\n <ActionBtn\n icon={GitFork}\n title=\"Fork\"\n onClick={() => onAction(\"fork\", task.id)}\n color={theme.cyan || theme.accent}\n />\n )}\n {task.status === \"failed\" && (\n <ActionBtn\n icon={RotateCcw}\n title=\"Retry\"\n onClick={() => onAction(\"retry\", task.id)}\n color={theme.orange}\n />\n )}\n {[\"pending\", \"scheduled\", \"running\"].includes(task.status) && (\n <ActionBtn\n icon={Square}\n title=\"Cancel\"\n onClick={() => onAction(\"cancel\", task.id)}\n color={theme.red}\n />\n )}\n <ActionBtn\n icon={Trash2}\n title=\"Delete\"\n onClick={() => onAction(\"delete\", task.id)}\n color={theme.textMuted}\n />\n </div>\n </div>\n\n {task.status === \"blocked\" && task.dependencies && task.dependencies.length > 0 && (\n <div style={{ fontSize: 10, color: theme.textDim, fontFamily: MONO_FONT_STACK }}>\n waiting for {task.dependencies.map((d) => `#${d.depends_on_task_id}`).join(\", \")}\n </div>\n )}\n {task.dependents && task.dependents.length > 0 && task.status === \"completed\" && (\n <div style={{ fontSize: 10, color: theme.textDim, fontFamily: MONO_FONT_STACK }}>\n unlocks {task.dependents.map((id) => `#${id}`).join(\", \")}\n </div>\n )}\n {task.dag_id && (\n <div\n style={{\n fontSize: 10,\n color: theme.accent,\n opacity: 0.72,\n fontFamily: MONO_FONT_STACK,\n }}\n >\n dag {task.dag_id}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction ActionBtn({ icon, title, onClick, color }) {\n const [hovered, setHovered] = useState(false);\n return (\n <button\n title={title}\n onClick={onClick}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n style={{\n background: hovered ? `${color}22` : theme.field,\n border: `1px solid ${hovered ? `${color}66` : theme.border}`,\n color: color,\n cursor: \"pointer\",\n width: 26,\n height: 26,\n borderRadius: 6,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.15s ease, border-color 0.15s ease\",\n }}\n >\n <IconGlyph icon={icon} size={13} strokeWidth={2.4} />\n </button>\n );\n}\n\nfunction Column({ col, tasks, onAction, onViewDetail }) {\n const iconColor = theme[col.tone] || theme.accent;\n const iconBackground = theme[`${col.tone}Bg`] || theme.field;\n\n return (\n <div\n style={{\n minWidth: 0,\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.columnBg,\n boxShadow: \"none\",\n padding: 10,\n minHeight: 420,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 12,\n marginBottom: 12,\n padding: \"2px 2px 10px\",\n borderBottom: `1px solid ${theme.border}`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 9, minWidth: 0 }}>\n <IconWell\n icon={col.icon}\n color={iconColor}\n background={iconBackground}\n size={28}\n iconSize={15}\n />\n <div style={{ minWidth: 0 }}>\n <div\n style={{\n fontSize: 13,\n fontWeight: 720,\n color: theme.columnHeader,\n fontFamily: DISPLAY_FONT_STACK,\n }}\n >\n {col.label}\n </div>\n <div style={{ fontSize: 10, color: theme.textDim, marginTop: 2 }}>{col.hint}</div>\n </div>\n </div>\n <span\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 999,\n padding: \"3px 8px\",\n fontSize: 11,\n color: theme.textMuted,\n fontWeight: 600,\n fontFamily: MONO_FONT_STACK,\n }}\n >\n {tasks.length}\n </span>\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {tasks.map((t) => (\n <TaskCard key={t.id} task={t} onAction={onAction} onViewDetail={onViewDetail} />\n ))}\n {tasks.length === 0 && (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 8,\n padding: \"28px 18px\",\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n background: theme.surface,\n }}\n >\n Clear\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction HeartbeatBadge({ enabled }) {\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 5,\n padding: \"3px 10px\",\n borderRadius: 20,\n fontSize: 11,\n fontWeight: 600,\n color: enabled ? theme.green : theme.textMuted,\n background: enabled ? theme.greenBg : \"rgba(107,107,138,0.08)\",\n letterSpacing: 0.3,\n }}\n >\n <span style={{ fontSize: 10 }}>{enabled ? \"โ—\" : \"โ—Œ\"}</span>\n {enabled ? \"Enabled\" : \"Paused\"}\n </span>\n );\n}\n\nfunction HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = \"create\" }: any) {\n const savedDir = localStorage.getItem(\"agentforge_working_dir\") || \"~/papers\";\n const [form, setForm] = useState(() => ({\n name: initialData?.name || \"\",\n working_dir: initialData?.working_dir || savedDir,\n schedule_type: initialData?.schedule_type || \"interval\",\n interval_seconds: initialData?.interval_seconds || 600,\n cron_expr: initialData?.cron_expr || \"\",\n check_prompt: initialData?.check_prompt || \"\",\n action_prompt_template: initialData?.action_prompt_template || \"\",\n default_agent: initialData?.default_agent || defaultAgent || DEFAULT_AGENT,\n cooldown_seconds: initialData?.cooldown_seconds || 1800,\n enabled: initialData?.enabled ?? true,\n }));\n\n const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v }));\n\n const inputStyle = uiField();\n const labelStyle = uiLabel();\n\n const handleSubmit = () => {\n localStorage.setItem(\"agentforge_working_dir\", form.working_dir);\n onSubmit({\n ...form,\n name: form.name || \"Untitled heartbeat\",\n interval_seconds:\n form.schedule_type === \"interval\" ? parseInt(form.interval_seconds) || 600 : null,\n cooldown_seconds: parseInt(form.cooldown_seconds) || 0,\n cron_expr: form.schedule_type === \"cron\" ? form.cron_expr : null,\n });\n };\n\n return (\n <div\n style={{\n ...modalOverlay(),\n }}\n onClick={onClose}\n >\n <div onClick={(e) => e.stopPropagation()} style={modalPanel(640)}>\n <h2 style={modalTitle()}>{mode === \"edit\" ? \"Edit Heartbeat\" : \"New Heartbeat\"}</h2>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div>\n <label style={labelStyle}>Name</label>\n <input\n style={inputStyle}\n value={form.name}\n onChange={(e) => set(\"name\", e.target.value)}\n placeholder=\"Repo review watcher\"\n />\n </div>\n <div>\n <label style={labelStyle}>Working Directory</label>\n <div style={{ display: \"flex\", gap: 8 }}>\n <input\n style={{ ...inputStyle, flex: 1 }}\n value={form.working_dir}\n onChange={(e) => set(\"working_dir\", e.target.value)}\n />\n {window.electronAPI?.selectDirectory && (\n <button\n onClick={async () => {\n const dir = await window.electronAPI.selectDirectory();\n if (dir) set(\"working_dir\", dir);\n }}\n style={{\n ...secondaryButton(),\n padding: \"0 13px\",\n height: 37,\n cursor: \"pointer\",\n whiteSpace: \"nowrap\",\n }}\n >\n Browse\n </button>\n )}\n </div>\n </div>\n <div>\n <label style={labelStyle}>Schedule Type</label>\n <div style={{ display: \"flex\", gap: 8 }}>\n {[\"interval\", \"cron\"].map((t) => (\n <button\n key={t}\n onClick={() => set(\"schedule_type\", t)}\n style={segmentedButton(form.schedule_type === t)}\n >\n {t === \"interval\" ? \"Interval\" : \"Cron\"}\n </button>\n ))}\n </div>\n </div>\n {form.schedule_type === \"interval\" ? (\n <div>\n <label style={labelStyle}>Interval (seconds)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={form.interval_seconds}\n onChange={(e) => set(\"interval_seconds\", e.target.value)}\n />\n </div>\n ) : (\n <div>\n <label style={labelStyle}>Cron Expression</label>\n <input\n style={inputStyle}\n value={form.cron_expr}\n onChange={(e) => set(\"cron_expr\", e.target.value)}\n placeholder=\"*/10 * * * *\"\n />\n </div>\n )}\n <div>\n <label style={labelStyle}>Decision Prompt *</label>\n <textarea\n style={{ ...inputStyle, height: 110, resize: \"vertical\" }}\n value={form.check_prompt}\n onChange={(e) => set(\"check_prompt\", e.target.value)}\n placeholder=\"Check whether there are new meaningful code changes that deserve a review task. Return JSON only.\"\n />\n </div>\n <div>\n <label style={labelStyle}>Triggered Task Prompt Template</label>\n <textarea\n style={{ ...inputStyle, height: 90, resize: \"vertical\" }}\n value={form.action_prompt_template}\n onChange={(e) => set(\"action_prompt_template\", e.target.value)}\n placeholder=\"Review the latest code changes and summarize bugs, regressions, and missing tests.\"\n />\n </div>\n <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 12 }}>\n <div>\n <label style={labelStyle}>Default Agent</label>\n <select\n style={inputStyle}\n value={form.default_agent}\n onChange={(e) => set(\"default_agent\", e.target.value)}\n >\n {Object.entries(AGENTS).map(([key, cfg]) => (\n <option key={key} value={key}>\n {cfg.label}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label style={labelStyle}>Cooldown (seconds)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={form.cooldown_seconds}\n onChange={(e) => set(\"cooldown_seconds\", e.target.value)}\n />\n </div>\n </div>\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n fontSize: 13,\n color: theme.textMuted,\n }}\n >\n <input\n type=\"checkbox\"\n checked={!!form.enabled}\n onChange={(e) => set(\"enabled\", e.target.checked)}\n />\n Enabled\n </label>\n </div>\n <div style={{ display: \"flex\", gap: 10, justifyContent: \"flex-end\", marginTop: 24 }}>\n <button onClick={onClose} style={secondaryButton()}>\n Cancel\n </button>\n <button onClick={handleSubmit} style={primaryButton()}>\n {mode === \"edit\" ? \"Save\" : \"Create Heartbeat\"}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nfunction HeartbeatCard({ heartbeat, onAction, onViewDetail }) {\n const tags = [];\n if (heartbeat.schedule_type === \"interval\" && heartbeat.interval_seconds)\n tags.push(`every ${heartbeat.interval_seconds}s`);\n if (heartbeat.schedule_type === \"cron\" && heartbeat.cron_expr)\n tags.push(`cron ${heartbeat.cron_expr}`);\n if (heartbeat.last_decision) tags.push(`Last: ${heartbeat.last_decision}`);\n\n return (\n <div\n onClick={() => onViewDetail(heartbeat)}\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: \"14px 15px\",\n cursor: \"pointer\",\n transition: \"border-color 0.16s ease, background 0.16s ease\",\n }}\n >\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: 16, marginBottom: 8 }}>\n <div style={{ flex: 1 }}>\n <div\n style={{\n fontSize: 14,\n fontWeight: 680,\n color: theme.text,\n fontFamily: DISPLAY_FONT_STACK,\n marginBottom: 6,\n }}\n >\n {heartbeat.name}\n </div>\n <div\n style={{\n fontSize: 12,\n color: theme.textMuted,\n lineHeight: 1.5,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n WebkitLineClamp: 2,\n WebkitBoxOrient: \"vertical\",\n }}\n >\n {heartbeat.check_prompt}\n </div>\n </div>\n <HeartbeatBadge enabled={heartbeat.enabled} />\n </div>\n\n <div\n style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: 12 }}\n >\n <div style={{ display: \"flex\", gap: 6, flexWrap: \"wrap\" }}>\n <AgentBadge agent={heartbeat.default_agent} />\n {tags.map((tag, idx) => (\n <Tag key={idx}>{tag}</Tag>\n ))}\n </div>\n <div style={{ display: \"flex\", gap: 4 }} onClick={(e) => e.stopPropagation()}>\n <ActionBtn\n icon={Play}\n title=\"Run now\"\n onClick={() => onAction(\"run\", heartbeat.id)}\n color={theme.orange}\n />\n <ActionBtn\n icon={Pencil}\n title=\"Edit\"\n onClick={() => onAction(\"edit\", heartbeat.id)}\n color={theme.blue}\n />\n {heartbeat.enabled ? (\n <ActionBtn\n icon={Pause}\n title=\"Pause\"\n onClick={() => onAction(\"pause\", heartbeat.id)}\n color={theme.textMuted}\n />\n ) : (\n <ActionBtn\n icon={Play}\n title=\"Resume\"\n onClick={() => onAction(\"resume\", heartbeat.id)}\n color={theme.green}\n />\n )}\n <ActionBtn\n icon={Trash2}\n title=\"Delete\"\n onClick={() => onAction(\"delete\", heartbeat.id)}\n color={theme.red}\n />\n </div>\n </div>\n\n <div\n style={{\n fontSize: 11,\n color: theme.textDim,\n marginTop: 10,\n fontFamily: \"monospace\",\n lineHeight: 1.6,\n }}\n >\n Next: {heartbeat.next_run_at ? formatTaskDateTime(heartbeat.next_run_at) : \"n/a\"}\n {\" ยท \"}\n Triggered:{\" \"}\n {heartbeat.last_triggered_at ? formatTaskDateTime(heartbeat.last_triggered_at) : \"never\"}\n </div>\n {heartbeat.last_error && (\n <div style={{ fontSize: 11, color: theme.red, marginTop: 6, lineHeight: 1.4 }}>\n Last error: {heartbeat.last_error}\n </div>\n )}\n </div>\n );\n}\n\nfunction HeartbeatDetailPanel({ heartbeat, ticks, onClose }) {\n const [selectedTickId, setSelectedTickId] = useState<any>(null);\n const [tickOutput, setTickOutput] = useState(\"\");\n const [tickRunning, setTickRunning] = useState(false);\n const outputRef = useRef<any>(null);\n\n useEffect(() => {\n setSelectedTickId(ticks[0]?.id || null);\n }, [heartbeat.id, ticks]);\n\n useEffect(() => {\n if (!selectedTickId) {\n setTickOutput(\"\");\n setTickRunning(false);\n return;\n }\n let cancelled = false;\n const load = async () => {\n try {\n const data = await fetchHeartbeatTickOutput(heartbeat.id, selectedTickId);\n if (cancelled) return;\n setTickOutput(data.output || \"\");\n setTickRunning(!!data.is_running);\n } catch {\n if (!cancelled) {\n setTickOutput(\"\");\n setTickRunning(false);\n }\n }\n };\n load();\n const interval = setInterval(load, 1000);\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [heartbeat.id, selectedTickId]);\n\n useEffect(() => {\n if (outputRef.current) {\n outputRef.current.scrollTop = outputRef.current.scrollHeight;\n }\n }, [tickOutput]);\n\n return (\n <div\n style={{\n position: \"fixed\",\n top: 0,\n right: 0,\n width: 520,\n height: \"100vh\",\n background: theme.surface,\n borderLeft: `1px solid ${theme.border}`,\n boxShadow: \"-20px 0 60px rgba(0,0,0,0.4)\",\n zIndex: 500,\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <div\n style={{\n padding: \"22px 24px\",\n borderBottom: `1px solid ${theme.border}`,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: 12,\n }}\n >\n <div>\n <div\n style={{\n fontSize: 18,\n fontWeight: 720,\n color: theme.text,\n fontFamily: DISPLAY_FONT_STACK,\n }}\n >\n {heartbeat.name}\n </div>\n <div style={{ fontSize: 12, color: theme.textMuted, marginTop: 6 }}>\n {heartbeat.working_dir}\n </div>\n </div>\n <button\n onClick={onClose}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 22,\n lineHeight: 1,\n }}\n >\n ร—\n </button>\n </div>\n <div style={{ padding: 24, overflow: \"auto\", flex: 1 }}>\n <div style={{ display: \"flex\", gap: 8, flexWrap: \"wrap\", marginBottom: 16 }}>\n <HeartbeatBadge enabled={heartbeat.enabled} />\n <AgentBadge agent={heartbeat.default_agent} />\n {heartbeat.schedule_type === \"interval\" ? (\n <Tag>every {heartbeat.interval_seconds}s</Tag>\n ) : (\n <Tag>cron {heartbeat.cron_expr}</Tag>\n )}\n {heartbeat.last_decision && <Tag>{heartbeat.last_decision}</Tag>}\n </div>\n <div style={{ fontSize: 12, color: theme.textMuted, lineHeight: 1.7, marginBottom: 18 }}>\n <div>\n Next run: {heartbeat.next_run_at ? formatTaskDateTime(heartbeat.next_run_at) : \"n/a\"}\n </div>\n <div>\n Last tick:{\" \"}\n {heartbeat.last_tick_at ? formatTaskDateTime(heartbeat.last_tick_at) : \"never\"}\n </div>\n <div>\n Last trigger:{\" \"}\n {heartbeat.last_triggered_at\n ? formatTaskDateTime(heartbeat.last_triggered_at)\n : \"never\"}\n </div>\n <div>Cooldown: {heartbeat.cooldown_seconds || 0}s</div>\n </div>\n <div style={{ marginBottom: 20 }}>\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 8,\n }}\n >\n Decision Prompt\n </div>\n <div\n style={{\n fontSize: 12,\n lineHeight: 1.7,\n color: theme.text,\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 10,\n padding: 14,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {heartbeat.check_prompt}\n </div>\n </div>\n <div style={{ marginBottom: 20 }}>\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 8,\n }}\n >\n Triggered Task Template\n </div>\n <div\n style={{\n fontSize: 12,\n lineHeight: 1.7,\n color: theme.text,\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 10,\n padding: 14,\n whiteSpace: \"pre-wrap\",\n }}\n >\n {heartbeat.action_prompt_template || \"No template configured\"}\n </div>\n </div>\n <div>\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 8,\n }}\n >\n Recent Ticks\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n {ticks.map((tick) => {\n let payload = null;\n try {\n payload = tick.decision_payload ? JSON.parse(tick.decision_payload) : null;\n } catch {}\n return (\n <div\n key={tick.id}\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 10,\n padding: 12,\n cursor: \"pointer\",\n boxShadow:\n selectedTickId === tick.id ? `0 0 0 1px ${theme.accent} inset` : \"none\",\n }}\n >\n <div\n onClick={() => setSelectedTickId(tick.id)}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 8,\n marginBottom: 6,\n }}\n >\n <div style={{ fontSize: 12, fontWeight: 600, color: theme.text }}>\n {tick.decision_type || tick.status}\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, fontFamily: \"monospace\" }}>\n {tick.started_at ? formatTaskDateTime(tick.started_at) : \"\"}\n </div>\n </div>\n {payload?.reason && (\n <div style={{ fontSize: 12, color: theme.textMuted, lineHeight: 1.5 }}>\n {payload.reason}\n </div>\n )}\n {tick.error && (\n <div style={{ fontSize: 12, color: theme.red, lineHeight: 1.5 }}>\n {tick.error}\n </div>\n )}\n {tick.task_id && (\n <div\n style={{\n fontSize: 11,\n color: theme.accent,\n marginTop: 6,\n fontFamily: \"monospace\",\n }}\n >\n Triggered task #{tick.task_id}\n </div>\n )}\n </div>\n );\n })}\n {ticks.length === 0 && (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 10,\n padding: 24,\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n }}\n >\n No ticks yet\n </div>\n )}\n </div>\n </div>\n <div style={{ marginTop: 20 }}>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 8,\n }}\n >\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n color: theme.textMuted,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n }}\n >\n Tick Log\n </div>\n {selectedTickId && (\n <div\n style={{\n fontSize: 11,\n color: tickRunning ? theme.orange : theme.textDim,\n fontFamily: \"monospace\",\n }}\n >\n {tickRunning ? \"LIVE\" : \"Stored\"} ยท tick #{selectedTickId}\n </div>\n )}\n </div>\n <div\n ref={outputRef}\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 10,\n padding: 14,\n minHeight: 180,\n maxHeight: 320,\n overflow: \"auto\",\n fontFamily: \"'JetBrains Mono', monospace\",\n fontSize: 12,\n lineHeight: 1.6,\n whiteSpace: \"pre-wrap\",\n color: theme.text,\n }}\n >\n {selectedTickId\n ? tickOutput || \"No output captured for this tick.\"\n : \"Select a tick to view its log.\"}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction NewTaskModal({ onClose, onSubmit, initialData, mode = \"create\" }) {\n const savedDir = localStorage.getItem(\"agentforge_working_dir\") || \"~/papers\";\n const [form, setForm] = useState(() => {\n if (initialData) {\n return {\n title: initialData.title || \"\",\n prompt: initialData.prompt || \"\",\n working_dir: initialData.working_dir || savedDir,\n schedule_type: initialData.schedule_type || \"immediate\",\n cron_expr: initialData.cron_expr || \"\",\n delay_seconds: initialData.delay_seconds || 60,\n scheduled_at: initialData.next_run_at\n ? formatDateTimeLocalInput(initialData.next_run_at)\n : \"\",\n max_runs: initialData.max_runs || \"\",\n tags: initialData.tags || \"\",\n agent: initialData.agent || DEFAULT_AGENT,\n dag_id: initialData.dag_id || \"\",\n };\n }\n return {\n title: \"\",\n prompt: \"\",\n working_dir: savedDir,\n schedule_type: \"immediate\",\n cron_expr: \"\",\n delay_seconds: 60,\n scheduled_at: \"\",\n max_runs: \"\",\n tags: \"\",\n agent: DEFAULT_AGENT,\n dag_id: \"\",\n };\n });\n const [promptImages, setPromptImages] = useState(() => {\n if (initialData?.prompt_images && Array.isArray(initialData.prompt_images)) {\n return initialData.prompt_images.map((img) => ({\n name: img.name || \"image\",\n media_type: img.media_type || \"image/jpeg\",\n data: img.data || \"\",\n preview: img.data ? `data:${img.media_type || \"image/jpeg\"};base64,${img.data}` : \"\",\n }));\n }\n return [];\n });\n // DAG dependencies: [{task_id, inject_result, _input}] โ€” _input is the text box value\n const [depRows, setDepRows] = useState(() => {\n if (initialData?.dependencies && Array.isArray(initialData.dependencies)) {\n return initialData.dependencies.map((dep) => ({\n task_id: dep.depends_on_task_id,\n inject_result: !!dep.inject_result,\n _input: String(dep.depends_on_task_id),\n }));\n }\n return [];\n });\n const [scheduledAtError, setScheduledAtError] = useState(\"\");\n\n const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v }));\n\n const handleImageSelect = (e) => {\n const files = Array.from(e.target.files || []);\n files.forEach((file: any) => {\n const reader = new FileReader();\n reader.onload = (ev) => {\n const dataUrl = ev.target.result as string; // \"data:image/jpeg;base64,...\"\n const [meta, data] = dataUrl.split(\",\");\n const media_type = meta.match(/:(.*?);/)?.[1] || \"image/jpeg\";\n setPromptImages((prev) => [\n ...prev,\n { name: file.name, media_type, data, preview: dataUrl },\n ]);\n };\n reader.readAsDataURL(file);\n });\n e.target.value = \"\";\n };\n\n const removeImage = (idx) => setPromptImages((prev) => prev.filter((_, i) => i !== idx));\n\n const handleSubmit = () => {\n if (!form.prompt.trim()) return;\n localStorage.setItem(\"agentforge_working_dir\", form.working_dir);\n\n // Build depends_on list (only valid numeric IDs)\n const depends_on = depRows\n .filter((r) => r.task_id)\n .map((r) => ({ task_id: r.task_id, inject_result: r.inject_result }));\n\n const data: any = {\n ...form,\n title: form.title || form.prompt.slice(0, 60),\n delay_seconds: form.schedule_type === \"delayed\" ? parseInt(form.delay_seconds) || 60 : null,\n cron_expr: form.schedule_type === \"cron\" ? form.cron_expr : null,\n max_runs: form.max_runs ? parseInt(form.max_runs) : null,\n prompt_images: promptImages.map(({ name, media_type, data }) => ({ name, media_type, data })),\n depends_on: mode === \"edit\" ? depends_on : depends_on.length > 0 ? depends_on : undefined,\n dag_id: form.dag_id || undefined,\n };\n\n // Handle scheduled_at: convert datetime-local to ISO timestamp\n if (form.schedule_type === \"scheduled_at\") {\n const localDate = parseTaskDateTime(form.scheduled_at);\n const serialized = serializeDateTimeLocalInput(form.scheduled_at);\n if (!form.scheduled_at || !serialized || !localDate || isNaN(localDate.getTime())) {\n setScheduledAtError(\"Please enter a valid date and time.\");\n return;\n }\n setScheduledAtError(\"\");\n data.next_run_at = serialized;\n }\n\n onSubmit(data);\n };\n\n const inputStyle = uiField();\n const labelStyle = uiLabel();\n\n return (\n <div\n style={{\n ...modalOverlay(),\n }}\n onClick={onClose}\n >\n <div onClick={(e) => e.stopPropagation()} style={modalPanel(520, \"82vh\")}>\n <h2 style={modalTitle()}>\n {mode === \"edit\" ? \"Edit Task\" : mode === \"fork\" ? \"Fork Task\" : \"New Task\"}\n </h2>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n <div>\n <label style={labelStyle}>Title</label>\n <input\n style={inputStyle}\n placeholder=\"Task title...\"\n value={form.title}\n onChange={(e) => set(\"title\", e.target.value)}\n />\n </div>\n\n <div>\n <label style={labelStyle}>Prompt *</label>\n <textarea\n style={{ ...inputStyle, height: 100, resize: \"vertical\" }}\n placeholder=\"The prompt to send to Claude Code...\"\n value={form.prompt}\n onChange={(e) => set(\"prompt\", e.target.value)}\n />\n </div>\n\n <div>\n <label style={labelStyle}>Images (optional)</label>\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 8,\n marginBottom: promptImages.length ? 8 : 0,\n }}\n >\n {promptImages.map((img, idx) => (\n <div key={idx} style={{ position: \"relative\", width: 72, height: 72 }}>\n <img\n src={img.preview}\n alt={img.name}\n style={{\n width: 72,\n height: 72,\n objectFit: \"cover\",\n borderRadius: 6,\n border: `1px solid ${theme.border}`,\n }}\n />\n <button\n onClick={() => removeImage(idx)}\n style={{\n position: \"absolute\",\n top: -6,\n right: -6,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n border: \"none\",\n background: theme.red || \"#e74c3c\",\n color: \"#fff\",\n fontSize: 11,\n cursor: \"pointer\",\n lineHeight: \"18px\",\n padding: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n ร—\n </button>\n </div>\n ))}\n <label\n style={{\n width: 72,\n height: 72,\n borderRadius: 6,\n border: `1px dashed ${theme.border}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n color: theme.textDim,\n fontSize: 22,\n flexShrink: 0,\n }}\n >\n +\n <input\n type=\"file\"\n accept=\"image/*\"\n multiple\n style={{ display: \"none\" }}\n onChange={handleImageSelect}\n />\n </label>\n </div>\n {promptImages.length > 0 && (\n <div style={{ fontSize: 10, color: theme.textDim }}>\n {promptImages.length} image{promptImages.length > 1 ? \"s\" : \"\"} attached\n </div>\n )}\n </div>\n\n <div>\n <label style={labelStyle}>Working Directory</label>\n <div style={{ display: \"flex\", gap: 8 }}>\n <input\n style={{ ...inputStyle, flex: 1 }}\n placeholder=\"~/papers\"\n value={form.working_dir}\n onChange={(e) => set(\"working_dir\", e.target.value)}\n />\n {window.electronAPI?.selectDirectory && (\n <button\n onClick={async () => {\n const dir = await window.electronAPI.selectDirectory();\n if (dir) set(\"working_dir\", dir);\n }}\n style={{\n ...secondaryButton(),\n padding: \"0 13px\",\n height: 37,\n cursor: \"pointer\",\n whiteSpace: \"nowrap\",\n }}\n >\n Browse\n </button>\n )}\n </div>\n </div>\n\n <div>\n <label style={labelStyle}>Schedule Type</label>\n <div style={{ display: \"flex\", gap: 8, flexWrap: \"wrap\" }}>\n {[\"immediate\", \"delayed\", \"scheduled_at\", \"cron\"].map((t) => (\n <button\n key={t}\n onClick={() => set(\"schedule_type\", t)}\n style={segmentedButton(form.schedule_type === t)}\n >\n {t === \"immediate\"\n ? \"Immediate\"\n : t === \"delayed\"\n ? \"Delayed\"\n : t === \"scheduled_at\"\n ? \"At Time\"\n : \"Cron\"}\n </button>\n ))}\n </div>\n </div>\n\n {form.schedule_type === \"delayed\" && (\n <div>\n <label style={labelStyle}>Delay (seconds)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={form.delay_seconds}\n onChange={(e) => set(\"delay_seconds\", e.target.value)}\n />\n </div>\n )}\n\n {form.schedule_type === \"scheduled_at\" && (\n <div>\n <label style={labelStyle}>Run At (Local Time)</label>\n <input\n type=\"datetime-local\"\n style={inputStyle}\n value={form.scheduled_at}\n onChange={(e) => {\n set(\"scheduled_at\", e.target.value);\n setScheduledAtError(\"\");\n }}\n />\n {scheduledAtError && (\n <div style={{ fontSize: 11, color: \"#ff5f5f\", marginTop: 4 }}>\n {scheduledAtError}\n </div>\n )}\n <div style={{ fontSize: 10, color: theme.textDim, marginTop: 4 }}>\n Select a specific date and time to execute this task once\n </div>\n </div>\n )}\n\n {form.schedule_type === \"cron\" && (\n <>\n <div>\n <label style={labelStyle}>Cron Expression</label>\n <input\n style={inputStyle}\n placeholder=\"*/30 * * * *\"\n value={form.cron_expr}\n onChange={(e) => set(\"cron_expr\", e.target.value)}\n />\n <div style={{ fontSize: 10, color: theme.textDim, marginTop: 4 }}>\n e.g. \"0 9 * * *\" = daily 9am, \"*/30 * * * *\" = every 30 min\n </div>\n </div>\n <div>\n <label style={labelStyle}>Max Runs (empty = unlimited)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={form.max_runs}\n onChange={(e) => set(\"max_runs\", e.target.value)}\n />\n </div>\n </>\n )}\n\n <div>\n <label style={labelStyle}>Tags (comma separated)</label>\n <input\n style={inputStyle}\n placeholder=\"paper, review, arxiv\"\n value={form.tags}\n onChange={(e) => set(\"tags\", e.target.value)}\n />\n </div>\n\n {/* โ”€โ”€ DAG Dependencies โ”€โ”€ */}\n <div>\n <label style={labelStyle}>Dependencies (optional)</label>\n <div style={{ fontSize: 10, color: theme.textDim, marginBottom: 8 }}>\n This task will be blocked until all upstream tasks complete.\n </div>\n {depRows.map((row, idx) => (\n <div\n key={idx}\n style={{ display: \"flex\", gap: 6, alignItems: \"center\", marginBottom: 6 }}\n >\n <input\n type=\"number\"\n placeholder=\"Task ID\"\n value={row._input || \"\"}\n onChange={(e) => {\n const val = e.target.value;\n const parsed = parseInt(val);\n setDepRows((prev) =>\n prev.map((r, i) =>\n i === idx\n ? { ...r, _input: val, task_id: isNaN(parsed) ? null : parsed }\n : r,\n ),\n );\n }}\n style={{ ...inputStyle, width: 100, flex: \"none\" }}\n />\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n fontSize: 11,\n color: theme.textMuted,\n cursor: \"pointer\",\n flex: 1,\n }}\n >\n <input\n type=\"checkbox\"\n checked={row.inject_result}\n onChange={(e) =>\n setDepRows((prev) =>\n prev.map((r, i) =>\n i === idx ? { ...r, inject_result: e.target.checked } : r,\n ),\n )\n }\n style={{ accentColor: theme.accent }}\n />\n Inject result into prompt\n </label>\n <button\n onClick={() => setDepRows((prev) => prev.filter((_, i) => i !== idx))}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.red,\n cursor: \"pointer\",\n fontSize: 16,\n padding: \"0 4px\",\n }}\n >\n ร—\n </button>\n </div>\n ))}\n <button\n onClick={() =>\n setDepRows((prev) => [...prev, { task_id: null, inject_result: false, _input: \"\" }])\n }\n style={{\n padding: \"5px 12px\",\n borderRadius: 6,\n border: `1px dashed ${theme.border}`,\n background: theme.surface,\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 650,\n }}\n >\n + Add dependency\n </button>\n </div>\n\n <div>\n <label style={labelStyle}>DAG ID (optional)</label>\n <input\n style={inputStyle}\n placeholder=\"my-pipeline\"\n value={form.dag_id}\n onChange={(e) => set(\"dag_id\", e.target.value)}\n />\n <div style={{ fontSize: 10, color: theme.textDim, marginTop: 4 }}>\n Group tasks into a named workflow\n </div>\n </div>\n\n <div>\n <label style={labelStyle}>Agent</label>\n <select\n style={inputStyle}\n value={form.agent}\n onChange={(e) => set(\"agent\", e.target.value)}\n >\n <option value=\"claude\">Claude Code (claude CLI)</option>\n <option value=\"codex\">Codex CLI (openai/codex)</option>\n </select>\n </div>\n </div>\n\n <div style={{ display: \"flex\", gap: 10, marginTop: 28, justifyContent: \"flex-end\" }}>\n <button onClick={onClose} style={secondaryButton()}>\n Cancel\n </button>\n <button onClick={handleSubmit} style={primaryButton()}>\n {mode === \"edit\" ? \"Save Changes\" : mode === \"fork\" ? \"Create Fork\" : \"Create Task\"}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nfunction DetailPanel({ task, onClose, onResume }: any) {\n // `task` is always truthy here โ€” the only caller renders this inside\n // `{detail && <DetailPanel task={... || detail} />}`. Hooks must stay\n // unconditional, so do not early-return before them.\n const [liveOutput, setLiveOutput] = useState(\"\");\n const [resumeText, setResumeText] = useState(\"\");\n const [resumeError, setResumeError] = useState(\"\");\n const [resumeSent, setResumeSent] = useState(false);\n const [messages, setMessages] = useState<any[]>([]);\n const [events, setEvents] = useState<any[]>([]);\n const [showMessages, setShowMessages] = useState(false);\n const [showEvents, setShowEvents] = useState(false);\n const [showLiveOutput, setShowLiveOutput] = useState(true);\n const liveOutputRef = useRef<any>(null);\n const messagesRef = useRef<any>(null);\n const eventsRef = useRef<any>(null);\n\n useEffect(() => {\n if (task.status !== \"running\") {\n setLiveOutput(\"\");\n return;\n }\n let cancelled = false;\n let lastOutputLength = 0;\n const poll = async () => {\n try {\n const res = await fetch(`${API}/tasks/${task.id}/output`);\n if (res.ok && !cancelled) {\n const data = await res.json();\n const currentOutput = data.output || \"\";\n // Incremental update: append only new output.\n if (currentOutput.length > lastOutputLength) {\n const newContent = currentOutput.slice(lastOutputLength);\n setLiveOutput((prev) => prev + newContent);\n lastOutputLength = currentOutput.length;\n }\n }\n } catch {}\n };\n poll();\n const interval = setInterval(poll, 1000);\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [task.id, task.status]);\n\n useEffect(() => {\n if (liveOutputRef.current) {\n liveOutputRef.current.scrollTop = liveOutputRef.current.scrollHeight;\n }\n }, [liveOutput]);\n\n useEffect(() => {\n if (showMessages) {\n fetchTaskMessages(task.id).then(setMessages);\n }\n }, [task.id, showMessages]);\n\n useEffect(() => {\n if (!showEvents) return;\n let cancelled = false;\n const load = async () => {\n const nextEvents = await fetchTaskEvents(task.id);\n if (!cancelled) setEvents(nextEvents);\n };\n load();\n if (task.status !== \"running\") {\n return () => {\n cancelled = true;\n };\n }\n const interval = setInterval(load, 1000);\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [task.id, task.status, showEvents]);\n\n useEffect(() => {\n if (messagesRef.current) {\n messagesRef.current.scrollTop = messagesRef.current.scrollHeight;\n }\n }, [messages]);\n\n const handleResume = async () => {\n if (!resumeText.trim()) return;\n setResumeError(\"\");\n const result = await resumeTask(task.id, resumeText.trim());\n if (result.error) {\n setResumeError(result.error);\n } else {\n setResumeText(\"\");\n setResumeSent(true);\n setTimeout(() => setResumeSent(false), 3000);\n onResume();\n }\n };\n\n return (\n <div\n style={{\n position: \"fixed\",\n right: 0,\n top: 0,\n bottom: 0,\n width: 480,\n background: theme.surface,\n borderLeft: `1px solid ${theme.border}`,\n zIndex: 999,\n overflow: \"auto\",\n padding: 28,\n boxShadow: \"-8px 0 40px rgba(0,0,0,0.4)\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 24,\n }}\n >\n <Badge status={task.status} />\n <button\n onClick={onClose}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 20,\n cursor: \"pointer\",\n }}\n >\n ร—\n </button>\n </div>\n\n <h2\n style={{\n fontSize: 18,\n fontWeight: 700,\n color: theme.text,\n margin: \"0 0 8px\",\n fontFamily: \"'JetBrains Mono', monospace\",\n }}\n >\n {task.title}\n </h2>\n\n <div\n style={{ fontSize: 11, color: theme.textDim, marginBottom: 24, fontFamily: \"monospace\" }}\n >\n ID: {task.id} ยท Created: {formatTaskDateTime(task.created_at)}\n </div>\n\n <Section title=\"Prompt\">\n <pre\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: 14,\n fontSize: 12,\n color: theme.text,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n margin: 0,\n fontFamily: \"'JetBrains Mono', monospace\",\n lineHeight: 1.6,\n }}\n >\n {task.prompt}\n </pre>\n {task.prompt_images && task.prompt_images.length > 0 && (\n <div style={{ marginTop: 12 }}>\n <div\n style={{\n fontSize: 10,\n color: theme.textMuted,\n fontWeight: 600,\n letterSpacing: 0.8,\n textTransform: \"uppercase\",\n marginBottom: 8,\n }}\n >\n Attached Images ({task.prompt_images.length})\n </div>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 8 }}>\n {task.prompt_images.map((img, i) => (\n <img\n key={i}\n src={`data:${img.media_type};base64,${img.data}`}\n alt={img.name || `image ${i + 1}`}\n style={{\n width: 80,\n height: 80,\n objectFit: \"cover\",\n borderRadius: 6,\n border: `1px solid ${theme.border}`,\n }}\n />\n ))}\n </div>\n </div>\n )}\n </Section>\n\n <Section title=\"Configuration\">\n <InfoRow label=\"Working Dir\" value={task.working_dir} />\n <InfoRow label=\"Agent\" value={task.agent || DEFAULT_AGENT} />\n <InfoRow label=\"Schedule\" value={task.schedule_type} />\n {task.cron_expr && <InfoRow label=\"Cron\" value={task.cron_expr} />}\n {task.delay_seconds && <InfoRow label=\"Delay\" value={`${task.delay_seconds}s`} />}\n {task.next_run_at && (\n <InfoRow label=\"Next Run\" value={formatTaskDateTime(task.next_run_at)} />\n )}\n <InfoRow\n label=\"Runs\"\n value={`${task.run_count}${task.max_runs ? ` / ${task.max_runs}` : \"\"}`}\n />\n {task.dag_id && <InfoRow label=\"DAG\" value={task.dag_id} />}\n </Section>\n\n {/* DAG dependency info */}\n {task.dependencies && task.dependencies.length > 0 && (\n <Section title=\"Upstream Dependencies\">\n {task.dependencies.map((dep) => (\n <div\n key={dep.id}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"5px 0\",\n borderBottom: `1px solid ${theme.border}`,\n fontSize: 12,\n }}\n >\n <span style={{ color: theme.text, fontFamily: \"monospace\" }}>\n #{dep.depends_on_task_id}\n {dep.depends_on_title ? ` โ€” ${dep.depends_on_title}` : \"\"}\n </span>\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\n {dep.inject_result ? (\n <span style={{ fontSize: 10, color: theme.accent }}>โ†ณ inject</span>\n ) : null}\n <span\n style={{\n fontSize: 10,\n fontWeight: 600,\n color:\n dep.depends_on_status === \"completed\"\n ? theme.green\n : dep.depends_on_status === \"failed\"\n ? theme.red\n : theme.orange,\n }}\n >\n {dep.depends_on_status}\n </span>\n </div>\n </div>\n ))}\n </Section>\n )}\n\n {task.dependents && task.dependents.length > 0 && (\n <Section title=\"Downstream Tasks\">\n <div style={{ fontSize: 12, color: theme.textMuted, fontFamily: \"monospace\" }}>\n {task.dependents.map((id) => `#${id}`).join(\", \")}\n </div>\n </Section>\n )}\n\n {task.status === \"running\" && (\n <Section\n title={\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <span>Live Output</span>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n fontSize: 10,\n color: theme.blue,\n }}\n >\n <span\n style={{\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n background: theme.blue,\n animation: \"pulse 1.2s ease-in-out infinite\",\n }}\n />\n live\n </div>\n </div>\n }\n >\n <div\n style={{\n background: theme.bg,\n border: `1px solid ${theme.borderActive}`,\n borderRadius: 8,\n overflow: \"hidden\",\n }}\n >\n {/* Toolbar */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"8px 12px\",\n background: theme.surface,\n borderBottom: `1px solid ${theme.border}`,\n fontSize: 11,\n color: theme.textMuted,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 12 }}>\n <button\n onClick={() => setShowLiveOutput(!showLiveOutput)}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 11,\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n }}\n >\n {showLiveOutput ? \"โ–ผ\" : \"โ–ถ\"} {showLiveOutput ? \"Hide\" : \"Show\"}\n </button>\n <span style={{ fontFamily: \"monospace\" }}>\n {liveOutput.length.toLocaleString()} chars\n </span>\n </div>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <button\n onClick={() => {\n navigator.clipboard.writeText(liveOutput);\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 11,\n cursor: \"pointer\",\n padding: \"4px 8px\",\n borderRadius: 4,\n fontFamily: \"'JetBrains Mono', monospace\",\n }}\n >\n ๐Ÿ“‹ Copy\n </button>\n <button\n onClick={() => setLiveOutput(\"\")}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: theme.textMuted,\n fontSize: 11,\n cursor: \"pointer\",\n padding: \"4px 8px\",\n borderRadius: 4,\n fontFamily: \"'JetBrains Mono', monospace\",\n }}\n >\n ๐Ÿ—‘๏ธ Clear\n </button>\n </div>\n </div>\n\n {/* Output content */}\n {showLiveOutput && (\n <div\n style={{\n maxHeight: 400,\n overflow: \"auto\",\n position: \"relative\",\n }}\n ref={liveOutputRef}\n >\n <pre\n style={{\n fontSize: 12,\n color: theme.text,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n margin: 0,\n padding: 14,\n fontFamily: \"'JetBrains Mono', monospace\",\n lineHeight: 1.6,\n minHeight: 60,\n }}\n >\n {liveOutput ? (\n <FormattedOutput content={liveOutput} theme={theme} />\n ) : (\n <span style={{ color: theme.textDim, fontStyle: \"italic\" }}>\n Waiting for agent output...\n </span>\n )}\n </pre>\n </div>\n )}\n </div>\n </Section>\n )}\n\n {task.result && (\n <Section title=\"Result\">\n <pre\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: 14,\n fontSize: 12,\n color: theme.green,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n margin: 0,\n fontFamily: \"'JetBrains Mono', monospace\",\n lineHeight: 1.6,\n maxHeight: 300,\n overflow: \"auto\",\n }}\n >\n {task.result}\n </pre>\n </Section>\n )}\n\n {task.error && (\n <Section title=\"Error\">\n <pre\n style={{\n background: theme.redBg,\n border: `1px solid rgba(248,113,113,0.2)`,\n borderRadius: 8,\n padding: 14,\n fontSize: 12,\n color: theme.red,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n margin: 0,\n fontFamily: \"'JetBrains Mono', monospace\",\n lineHeight: 1.6,\n }}\n >\n {task.error}\n </pre>\n </Section>\n )}\n\n {/* Output History Tabs */}\n <div style={{ marginBottom: 20 }}>\n <div style={{ display: \"flex\", gap: 8, marginBottom: 12 }}>\n <button\n onClick={() => {\n setShowMessages(!showMessages);\n setShowEvents(false);\n }}\n style={{\n flex: 1,\n padding: \"8px 12px\",\n borderRadius: 8,\n background: showMessages ? theme.accentGlow : theme.surface,\n color: showMessages ? theme.accent : theme.textMuted,\n fontSize: 11,\n fontWeight: 600,\n cursor: \"pointer\",\n border: `1px solid ${showMessages ? theme.accent : theme.border}`,\n transition: \"all 0.15s\",\n }}\n >\n Conversation\n </button>\n <button\n onClick={() => {\n setShowEvents(!showEvents);\n setShowMessages(false);\n }}\n style={{\n flex: 1,\n padding: \"8px 12px\",\n borderRadius: 8,\n background: showEvents ? theme.accentGlow : theme.surface,\n color: showEvents ? theme.accent : theme.textMuted,\n fontSize: 11,\n fontWeight: 600,\n cursor: \"pointer\",\n border: `1px solid ${showEvents ? theme.accent : theme.border}`,\n transition: \"all 0.15s\",\n }}\n >\n Execution Events\n </button>\n </div>\n\n {/* Conversation History */}\n {showMessages && (\n <div\n ref={messagesRef}\n style={{\n maxHeight: 400,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n }}\n >\n {messages.length === 0 ? (\n <div\n style={{\n fontSize: 12,\n color: theme.textDim,\n padding: \"12px 0\",\n textAlign: \"center\",\n }}\n >\n No conversation data โ€” only tasks run after this feature was added have logs.\n </div>\n ) : (\n messages.map((msg, i) => (\n <div\n key={i}\n style={{\n background: msg.role === \"user\" ? theme.accentGlow : theme.bg,\n border: `1px solid ${msg.role === \"user\" ? theme.accent + \"33\" : theme.border}`,\n borderRadius: 8,\n padding: \"10px 14px\",\n borderLeft: `3px solid ${msg.role === \"user\" ? theme.accent : theme.green}`,\n }}\n >\n <div\n style={{\n fontSize: 10,\n fontWeight: 700,\n letterSpacing: 0.8,\n color: msg.role === \"user\" ? theme.accent : theme.green,\n textTransform: \"uppercase\",\n marginBottom: 6,\n }}\n >\n {msg.role}\n </div>\n <pre\n style={{\n fontSize: 12,\n color: theme.text,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n margin: 0,\n fontFamily: \"'JetBrains Mono', monospace\",\n lineHeight: 1.6,\n maxHeight: 200,\n overflow: \"auto\",\n }}\n >\n {msg.text}\n </pre>\n </div>\n ))\n )}\n </div>\n )}\n\n {/* Execution Events History */}\n {showEvents && (\n <div ref={eventsRef} style={{ maxHeight: 520, overflow: \"auto\" }}>\n <ExecutionTimeline events={events} />\n </div>\n )}\n </div>\n\n {/* Resume completed/failed session */}\n {[\"completed\", \"failed\"].includes(task.status) && task.session_id && (\n <Section title=\"Resume Session\">\n <div\n style={{\n fontSize: 11,\n color: theme.textDim,\n marginBottom: 10,\n fontFamily: \"monospace\",\n }}\n >\n Session: {task.session_id}\n </div>\n <textarea\n placeholder=\"Send a follow-up message to continue this conversationโ€ฆ\"\n value={resumeText}\n onChange={(e) => setResumeText(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && (e.metaKey || e.ctrlKey)) handleResume();\n }}\n style={{\n width: \"100%\",\n padding: \"10px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 13,\n outline: \"none\",\n boxSizing: \"border-box\",\n fontFamily: \"'JetBrains Mono', 'SF Mono', monospace\",\n resize: \"vertical\",\n minHeight: 80,\n }}\n />\n {resumeError && (\n <div style={{ fontSize: 11, color: theme.red, marginTop: 6 }}>{resumeError}</div>\n )}\n {resumeSent && (\n <div style={{ fontSize: 12, color: theme.green, marginTop: 6 }}>\n Sent. The task is waking up again.\n </div>\n )}\n <button\n onClick={handleResume}\n style={{\n marginTop: 10,\n padding: \"8px 20px\",\n borderRadius: 8,\n border: \"none\",\n background: theme.accent,\n color: \"#fff\",\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n boxShadow: `0 0 20px ${theme.accentGlow}`,\n }}\n >\n โ†ฉ Resume (โŒ˜โ†ต)\n </button>\n </Section>\n )}\n </div>\n );\n}\n\nfunction Section({ title, children }) {\n return (\n <div style={{ marginBottom: 20 }}>\n <div\n style={{\n fontSize: 10,\n fontWeight: 700,\n color: theme.textDim,\n letterSpacing: 1.2,\n textTransform: \"uppercase\",\n marginBottom: 10,\n }}\n >\n {title}\n </div>\n {children}\n </div>\n );\n}\n\nfunction InfoRow({ label, value }) {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"6px 0\",\n borderBottom: `1px solid ${theme.border}`,\n fontSize: 12,\n }}\n >\n <span style={{ color: theme.textMuted }}>{label}</span>\n <span style={{ color: theme.text, fontFamily: \"monospace\" }}>{value}</span>\n </div>\n );\n}\n\nfunction SettingsModal({\n onClose,\n timeout: initialTimeout,\n defaultAgent: initialDefaultAgent,\n onSave,\n feishu: initialFeishu,\n onFeishuSave,\n channelsStatus: initialChannelsStatus,\n onChannelsSave,\n}) {\n const [tab, setTab] = useState(\"general\");\n const [timeout, setTimeout] = useState(initialTimeout ?? DEFAULT_TIMEOUT_SECONDS);\n const [defaultAgent, setDefaultAgent] = useState(initialDefaultAgent ?? DEFAULT_AGENT);\n const [skillEnabled, setSkillEnabled] = useState(false);\n const [skillSweepAgent, setSkillSweepAgent] = useState(DEFAULT_AGENT);\n const [skillSweepCron, setSkillSweepCron] = useState(\"0 3 * * *\");\n const [feishu, setFeishu] = useState({\n feishu_app_id: \"\",\n feishu_app_secret: \"\",\n feishu_default_chat_id: \"\",\n feishu_default_working_dir: \"~\",\n feishu_enabled: \"false\",\n ...initialFeishu,\n });\n const [feishuSaving, setFeishuSaving] = useState(false);\n const [feishuMsg, setFeishuMsg] = useState<any>(null); // {ok, text}\n const [channels, setChannels] = useState(createInitialChannelsState(initialChannelsStatus));\n const [channelsSaving, setChannelsSaving] = useState(false);\n const [channelsMsg, setChannelsMsg] = useState<any>(null);\n const [weixinQrSrc, setWeixinQrSrc] = useState(\"\");\n const [weixinActionBusy, setWeixinActionBusy] = useState(false);\n const [collapsedChannels, setCollapsedChannels] = useState({\n telegram: true,\n slack: true,\n weixin: true,\n });\n\n // Refresh all channel settings when the modal opens so bot-side /dir changes are visible\n useEffect(() => {\n let cancelled = false;\n const refreshChannels = async (preserveUserEdits = true) => {\n const status = await fetchChannelsStatus();\n if (!cancelled) {\n setChannels((c) => {\n return mergeChannelsStatus(c, status, {\n preserveEditableFields: preserveUserEdits,\n });\n });\n }\n };\n refreshChannels(false); // initial load: full merge to populate fields\n const intervalId = setInterval(refreshChannels, 2000); // polling: preserve edits\n fetchFeishuSettings().then((s) => {\n if (s && Object.keys(s).length) setFeishu((f) => ({ ...f, ...s }));\n });\n fetchSettings().then((s) => {\n if (s && typeof s === \"object\") {\n if (typeof s.skill_library_enabled === \"boolean\") setSkillEnabled(s.skill_library_enabled);\n if (s.skill_sweep_agent) setSkillSweepAgent(s.skill_sweep_agent);\n if (s.skill_sweep_cron) setSkillSweepCron(s.skill_sweep_cron);\n }\n });\n return () => {\n cancelled = true;\n clearInterval(intervalId);\n };\n }, []);\n\n useEffect(() => {\n let cancelled = false;\n const qrValue = channels.weixin?.qr_code_url || \"\";\n if (!qrValue) {\n setWeixinQrSrc(\"\");\n return () => {\n cancelled = true;\n };\n }\n\n if (isWeixinQrImageSource(qrValue)) {\n setWeixinQrSrc(qrValue);\n return () => {\n cancelled = true;\n };\n }\n\n QRCode.toDataURL(qrValue, {\n errorCorrectionLevel: \"M\",\n margin: 2,\n width: 440,\n })\n .then((dataUrl) => {\n if (!cancelled) setWeixinQrSrc(dataUrl);\n })\n .catch((error) => {\n console.error(\"Failed to generate Weixin QR code\", error);\n if (!cancelled) setWeixinQrSrc(\"\");\n });\n\n return () => {\n cancelled = true;\n };\n }, [channels.weixin?.qr_code_url]);\n\n const handleWeixinAction = async (action) => {\n setWeixinActionBusy(true);\n setChannelsMsg(null);\n try {\n await runWeixinAction(action);\n const updated = await fetchChannelsStatus();\n setChannels((c) => mergeChannelsStatus(c, updated));\n if (onChannelsSave) onChannelsSave(updated);\n setChannelsMsg({\n ok: true,\n text: action === \"logout\" ? \"Wechat logged out.\" : \"Wechat login restarted.\",\n });\n } catch (e) {\n setChannelsMsg({ ok: false, text: String(e) });\n } finally {\n setWeixinActionBusy(false);\n }\n };\n\n const handleSaveGeneral = async () => {\n await updateSettings({\n timeout: parseInt(timeout) || DEFAULT_TIMEOUT_SECONDS,\n default_agent: defaultAgent,\n skill_library_enabled: skillEnabled ? \"1\" : \"0\",\n skill_sweep_agent: skillSweepAgent,\n skill_sweep_cron: skillSweepCron,\n });\n onSave(parseInt(timeout) || DEFAULT_TIMEOUT_SECONDS, defaultAgent);\n onClose();\n };\n\n const handleSaveFeishu = async () => {\n setFeishuSaving(true);\n setFeishuMsg(null);\n try {\n await updateFeishuSettings(feishu);\n setFeishuMsg({ ok: true, text: \"Saved. Bridge restarted.\" });\n // Reload settings after save\n if (onFeishuSave) {\n const updated = await fetchFeishuSettings();\n onFeishuSave(updated);\n }\n } catch (e) {\n setFeishuMsg({ ok: false, text: String(e) });\n } finally {\n setFeishuSaving(false);\n }\n };\n\n const handleSaveChannels = async () => {\n setChannelsSaving(true);\n setChannelsMsg(null);\n try {\n await updateChannelsSettings(buildChannelsSavePayload(channels));\n // Reload channel status after save to reflect new running state\n const updated = await fetchChannelsStatus();\n setChannels((c) => mergeChannelsStatus(c, updated));\n if (onChannelsSave) onChannelsSave(updated);\n setChannelsMsg({ ok: true, text: \"Saved. Channels restarted.\" });\n } catch (e) {\n setChannelsMsg({ ok: false, text: String(e) });\n } finally {\n setChannelsSaving(false);\n }\n };\n\n const fieldStyle = uiField();\n const labelStyle = uiLabel();\n const hintStyle = { fontSize: 10, color: theme.textDim, marginTop: 4 };\n\n const tabs = [\"general\", \"channels\", \"feishu\"];\n const tabLabel = { general: \"General\", channels: \"Channels\", feishu: \"Feishu / Lark\" };\n\n return (\n <div\n style={{\n ...modalOverlay(),\n }}\n onClick={onClose}\n >\n <div onClick={(e) => e.stopPropagation()} style={modalPanel(520, \"85vh\")}>\n <h2 style={modalTitle()}>Settings</h2>\n\n {/* Tab bar */}\n <div\n style={{\n display: \"flex\",\n gap: 3,\n marginBottom: 20,\n padding: 2,\n border: `1px solid ${theme.border}`,\n borderRadius: 7,\n background: theme.field,\n }}\n >\n {tabs.map((t) => (\n <button\n key={t}\n onClick={() => setTab(t)}\n style={{\n padding: \"7px 12px\",\n borderRadius: 5,\n border: \"none\",\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 650,\n background: tab === t ? theme.surface : \"transparent\",\n color: tab === t ? theme.text : theme.textMuted,\n }}\n >\n {tabLabel[t]}\n </button>\n ))}\n </div>\n\n {/* โ”€โ”€ General tab โ”€โ”€ */}\n {tab === \"general\" && (\n <>\n <div style={{ marginBottom: 20 }}>\n <label style={labelStyle}>Task Timeout (seconds)</label>\n <input\n type=\"number\"\n min=\"10\"\n step=\"10\"\n value={timeout}\n onChange={(e) => setTimeout(e.target.value)}\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Default: 12000s (200 min). Max time before a running task is killed.\n </div>\n </div>\n <div style={{ marginBottom: 20 }}>\n <label style={labelStyle}>Default Agent</label>\n <select\n value={defaultAgent}\n onChange={(e) => setDefaultAgent(e.target.value)}\n style={fieldStyle}\n >\n <option value=\"claude\">Claude Code (claude CLI)</option>\n <option value=\"codex\">Codex CLI (openai/codex)</option>\n </select>\n <div style={hintStyle}>Agent used for new tasks unless overridden per-task.</div>\n </div>\n\n {/* โ”€โ”€ Skill Library โ”€โ”€ */}\n <div\n style={{\n marginBottom: 20,\n paddingTop: 16,\n borderTop: `1px solid ${theme.border}`,\n }}\n >\n <label\n style={{\n ...labelStyle,\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n cursor: \"pointer\",\n }}\n >\n <input\n type=\"checkbox\"\n checked={skillEnabled}\n onChange={(e) => setSkillEnabled(e.target.checked)}\n style={{ width: 16, height: 16, cursor: \"pointer\" }}\n />\n Skill Library automatic scans\n </label>\n <div style={hintStyle}>\n Run scheduled sweeps over completed tasks to detect recurring patterns. This uses\n tokens and is off by default. The manual scan button is not affected.\n </div>\n </div>\n {skillEnabled && (\n <>\n <div style={{ marginBottom: 20 }}>\n <label style={labelStyle}>Sweep Agent</label>\n <select\n value={skillSweepAgent}\n onChange={(e) => setSkillSweepAgent(e.target.value)}\n style={fieldStyle}\n >\n <option value=\"claude\">Claude Code (claude CLI)</option>\n <option value=\"codex\">Codex CLI (openai/codex)</option>\n </select>\n <div style={hintStyle}>Agent used for skill sweeps.</div>\n </div>\n <div style={{ marginBottom: 20 }}>\n <label style={labelStyle}>Sweep Cadence (cron)</label>\n <input\n value={skillSweepCron}\n onChange={(e) => setSkillSweepCron(e.target.value)}\n placeholder=\"0 3 * * *\"\n style={{ ...fieldStyle, fontFamily: \"monospace\" }}\n />\n <div style={hintStyle}>\n Default: 3 AM daily. Incremental scans only inspect tasks since the last sweep.\n </div>\n </div>\n </>\n )}\n\n <div style={{ display: \"flex\", gap: 10, justifyContent: \"flex-end\" }}>\n <button onClick={onClose} style={secondaryButton()}>\n Cancel\n </button>\n <button onClick={handleSaveGeneral} style={primaryButton()}>\n Save\n </button>\n </div>\n </>\n )}\n\n {/* โ”€โ”€ Channels tab โ”€โ”€ */}\n {tab === \"channels\" && (\n <>\n {/* โ”€โ”€ Telegram โ”€โ”€ */}\n {(() => {\n const ch = channels.telegram;\n const collapsed = collapsedChannels.telegram;\n const statusDot = ch.running\n ? { bg: theme.green, label: \"Connected\" }\n : ch.configured\n ? { bg: theme.yellow || \"#f59e0b\", label: \"Configured (not running)\" }\n : { bg: theme.textDim, label: \"Not configured\" };\n return (\n <div\n style={{\n marginBottom: 16,\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n overflow: \"hidden\",\n }}\n >\n {/* Header row - clickable to collapse */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n cursor: \"pointer\",\n userSelect: \"none\",\n }}\n onClick={() => setCollapsedChannels((c) => ({ ...c, telegram: !c.telegram }))}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span\n style={{\n fontSize: 10,\n color: theme.textMuted,\n transition: \"transform 0.2s\",\n transform: collapsed ? \"rotate(-90deg)\" : \"rotate(0deg)\",\n display: \"inline-block\",\n }}\n >\n {\"โ–ผ\"}\n </span>\n <span\n style={{\n display: \"inline-flex\",\n width: 22,\n height: 22,\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#2AABEE\",\n flexShrink: 0,\n }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"22\"\n height=\"22\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n >\n <path d=\"M21.4 4.6a1.2 1.2 0 0 0-1.24-.2L3.8 11.15c-.6.25-.57 1.12.05 1.33l4.6 1.62 1.62 4.6c.22.62 1.08.65 1.33.05l6.75-16.36a1.2 1.2 0 0 0-.2-1.24 1.18 1.18 0 0 0-1.22-.3Z\" />\n </svg>\n </span>\n <span style={{ fontWeight: 700, fontSize: 14, color: theme.text }}>\n Telegram\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6, marginLeft: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: statusDot.bg,\n display: \"inline-block\",\n boxShadow: ch.running ? `0 0 6px ${statusDot.bg}` : \"none\",\n }}\n />\n <span style={{ fontSize: 11, color: theme.textMuted }}>\n {statusDot.label}\n </span>\n </div>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, enabled: !c.telegram.enabled },\n }));\n }}\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: ch.enabled ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: ch.enabled ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n {/* Collapsible body */}\n {!collapsed && (\n <div style={{ padding: \"0 16px 16px\" }}>\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Bot Token</label>\n <input\n type=\"password\"\n value={ch.bot_token}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, bot_token: e.target.value },\n }))\n }\n placeholder=\"123456:ABC-DEF...\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Token from @BotFather</div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Allowed User IDs</label>\n <input\n value={ch.allowed_users}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, allowed_users: e.target.value },\n }))\n }\n placeholder=\"123456789,987654321 (optional)\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Comma-separated numeric Telegram user IDs. Leave empty to allow all.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={ch.default_working_dir}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, default_working_dir: e.target.value },\n }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Working directory for tasks created via the Telegram bot.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Notification Chat ID</label>\n <input\n value={ch.default_chat_id}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n telegram: { ...c.telegram, default_chat_id: e.target.value },\n }))\n }\n placeholder=\"-1001234567890 or 123456789\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Fallback chat for notifications from UI-created tasks (group or user chat\n ID).\n </div>\n </div>\n\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 4 }}>Bot commands:</div>\n {[\n \"/newtask <title> | <prompt>\",\n \"/list\",\n \"/status <id>\",\n \"/cancel <id>\",\n ].map((cmd) => (\n <div key={cmd}>\n <span style={{ color: theme.cyan }}>{cmd}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })()}\n\n {/* โ”€โ”€ Slack โ”€โ”€ */}\n {(() => {\n const ch = channels.slack;\n const collapsed = collapsedChannels.slack;\n const statusDot = ch.running\n ? { bg: theme.green, label: \"Connected\" }\n : ch.configured\n ? { bg: theme.yellow || \"#f59e0b\", label: \"Configured (not running)\" }\n : { bg: theme.textDim, label: \"Not configured\" };\n return (\n <div\n style={{\n marginBottom: 16,\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n overflow: \"hidden\",\n }}\n >\n {/* Header row - clickable to collapse */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n cursor: \"pointer\",\n userSelect: \"none\",\n }}\n onClick={() => setCollapsedChannels((c) => ({ ...c, slack: !c.slack }))}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span\n style={{\n fontSize: 10,\n color: theme.textMuted,\n transition: \"transform 0.2s\",\n transform: collapsed ? \"rotate(-90deg)\" : \"rotate(0deg)\",\n display: \"inline-block\",\n }}\n >\n {\"โ–ผ\"}\n </span>\n <span\n style={{\n display: \"inline-flex\",\n width: 22,\n height: 22,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n }}\n >\n <svg viewBox=\"0 0 24 24\" width=\"22\" height=\"22\" aria-hidden=\"true\">\n <path\n fill=\"#36C5F0\"\n d=\"M10.1 3.2A2.2 2.2 0 0 1 12.2 1h.7v5.1h-2.8V3.2Z\"\n />\n <path\n fill=\"#2EB67D\"\n d=\"M20.8 10.1A2.2 2.2 0 0 1 23 12.2v.7h-5.1v-2.8h2.9Z\"\n />\n <path\n fill=\"#ECB22E\"\n d=\"M13.9 20.8A2.2 2.2 0 0 1 11.8 23h-.7v-5.1h2.8v2.9Z\"\n />\n <path\n fill=\"#E01E5A\"\n d=\"M3.2 13.9A2.2 2.2 0 0 1 1 11.8v-.7h5.1v2.8H3.2Z\"\n />\n <path\n fill=\"#36C5F0\"\n d=\"M13.2 4.3a2.7 2.7 0 1 1 5.4 0 2.7 2.7 0 0 1-5.4 0Z\"\n />\n <path\n fill=\"#2EB67D\"\n d=\"M16.9 13.2a2.7 2.7 0 1 1 0 5.4 2.7 2.7 0 0 1 0-5.4Z\"\n />\n <path\n fill=\"#ECB22E\"\n d=\"M5.4 16.9a2.7 2.7 0 1 1 5.4 0 2.7 2.7 0 0 1-5.4 0Z\"\n />\n <path\n fill=\"#E01E5A\"\n d=\"M4.3 5.4a2.7 2.7 0 1 1 0 5.4 2.7 2.7 0 0 1 0-5.4Z\"\n />\n </svg>\n </span>\n <span style={{ fontWeight: 700, fontSize: 14, color: theme.text }}>\n Slack\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6, marginLeft: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: statusDot.bg,\n display: \"inline-block\",\n boxShadow: ch.running ? `0 0 6px ${statusDot.bg}` : \"none\",\n }}\n />\n <span style={{ fontSize: 11, color: theme.textMuted }}>\n {statusDot.label}\n </span>\n </div>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, enabled: !c.slack.enabled },\n }));\n }}\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: ch.enabled ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: ch.enabled ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n {/* Collapsible body */}\n {!collapsed && (\n <div style={{ padding: \"0 16px 16px\" }}>\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Bot Token</label>\n <input\n type=\"password\"\n value={ch.bot_token}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, bot_token: e.target.value },\n }))\n }\n placeholder=\"xoxb-...\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Bot token from OAuth & Permissions</div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>App Token</label>\n <input\n type=\"password\"\n value={ch.app_token}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, app_token: e.target.value },\n }))\n }\n placeholder=\"xapp-...\"\n style={fieldStyle}\n />\n <div style={hintStyle}>App-level token for Socket Mode</div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={ch.default_working_dir}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, default_working_dir: e.target.value },\n }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Working directory for tasks created via the Slack bot.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default DM User</label>\n <input\n value={ch.default_user}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, default_user: e.target.value },\n }))\n }\n placeholder=\"U0123456789\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Slack user ID to DM when tasks have no origin thread (e.g. subtasks\n created via API). Find your ID in Slack profile โ†’ โ‹ฏ โ†’ Copy member ID.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Notification Channel</label>\n <input\n value={ch.default_channel}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n slack: { ...c.slack, default_channel: e.target.value },\n }))\n }\n placeholder=\"#general or C0123456789\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Optional. Fallback channel if Default DM User is not set.\n </div>\n </div>\n\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 4 }}>Bot commands:</div>\n {[\n \"newtask <title> | <prompt>\",\n \"list\",\n \"status <id>\",\n \"cancel <id>\",\n \"help\",\n ].map((cmd) => (\n <div key={cmd}>\n <span style={{ color: theme.cyan }}>{cmd}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })()}\n\n {/* โ”€โ”€ Weixin โ”€โ”€ */}\n {(() => {\n const ch = channels.weixin;\n const collapsed = collapsedChannels.weixin;\n const statusLabelMap = {\n idle: \"Idle\",\n waiting_for_scan: \"Waiting for scan\",\n scanned: \"Scanned on phone\",\n connected: \"Connected\",\n error: \"Error\",\n };\n const statusDot = ch.running\n ? { bg: theme.green, label: statusLabelMap[ch.login_status] || \"Connected\" }\n : ch.login_status === \"waiting_for_scan\" || ch.login_status === \"scanned\"\n ? { bg: theme.orange || \"#f59e0b\", label: statusLabelMap[ch.login_status] }\n : ch.login_status === \"error\"\n ? { bg: theme.red, label: \"Error\" }\n : ch.configured\n ? { bg: theme.yellow || \"#f59e0b\", label: \"Configured\" }\n : { bg: theme.textDim, label: \"Login required\" };\n return (\n <div\n style={{\n marginBottom: 16,\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"12px 16px\",\n cursor: \"pointer\",\n userSelect: \"none\",\n }}\n onClick={() => setCollapsedChannels((c) => ({ ...c, weixin: !c.weixin }))}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <span\n style={{\n fontSize: 10,\n color: theme.textMuted,\n transition: \"transform 0.2s\",\n transform: collapsed ? \"rotate(-90deg)\" : \"rotate(0deg)\",\n display: \"inline-block\",\n }}\n >\n {\"โ–ผ\"}\n </span>\n <span\n style={{\n display: \"inline-flex\",\n width: 22,\n height: 22,\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#07C160\",\n flexShrink: 0,\n }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"22\"\n height=\"22\"\n aria-hidden=\"true\"\n fill=\"currentColor\"\n >\n <path d=\"M9.2 4.2c-4 0-7.2 2.6-7.2 5.9 0 1.9 1.1 3.6 2.9 4.7l-.9 2.5 2.9-1.5c.7.1 1.4.2 2.2.2 4 0 7.2-2.6 7.2-5.9S13.2 4.2 9.2 4.2Zm-2.7 4.8a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8Zm5.4 0a.9.9 0 1 1 0-1.8.9.9 0 0 1 0 1.8Z\" />\n <path\n d=\"M16.8 9.1c-3 0-5.5 2-5.5 4.5 0 2.5 2.4 4.5 5.5 4.5.6 0 1.2-.1 1.8-.2l2.4 1.2-.7-2c1.5-.8 2.5-2.1 2.5-3.6 0-2.5-2.4-4.4-5.5-4.4Zm-1.9 4a.7.7 0 1 1 0-1.4.7.7 0 0 1 0 1.4Zm3.8 0a.7.7 0 1 1 0-1.4.7.7 0 0 1 0 1.4Z\"\n opacity=\"0.88\"\n />\n </svg>\n </span>\n <span style={{ fontWeight: 700, fontSize: 14, color: theme.text }}>\n Wechat\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6, marginLeft: 8 }}>\n <span\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: statusDot.bg,\n display: \"inline-block\",\n boxShadow: ch.running ? `0 0 6px ${statusDot.bg}` : \"none\",\n }}\n />\n <span style={{ fontSize: 11, color: theme.textMuted }}>\n {statusDot.label}\n </span>\n </div>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, enabled: !c.weixin.enabled },\n }));\n }}\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: ch.enabled ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: ch.enabled ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n {!collapsed && (\n <div style={{ padding: \"0 16px 16px\" }}>\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={ch.default_working_dir}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, default_working_dir: e.target.value },\n }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Working directory for tasks created from incoming Weixin messages.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Base URL</label>\n <input\n value={ch.base_url}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, base_url: e.target.value },\n }))\n }\n placeholder=\"https://ilinkai.weixin.qq.com\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Gateway API base URL used for QR login, long-polling, and sendmessage.\n </div>\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <label style={labelStyle}>Account ID</label>\n <input\n value={ch.account_id}\n onChange={(e) =>\n setChannels((c) => ({\n ...c,\n weixin: { ...c.weixin, account_id: e.target.value },\n }))\n }\n placeholder=\"Optional fixed account id\"\n style={fieldStyle}\n />\n <div style={hintStyle}>\n Optional. Leave empty to let the bridge adopt the account id returned by\n QR login.\n </div>\n </div>\n\n <div style={{ display: \"flex\", gap: 8, marginBottom: 12 }}>\n <button\n onClick={() => handleWeixinAction(\"reconnect\")}\n disabled={weixinActionBusy}\n style={{\n padding: \"9px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n color: theme.text,\n cursor: weixinActionBusy ? \"not-allowed\" : \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n opacity: weixinActionBusy ? 0.6 : 1,\n }}\n >\n Reconnect\n </button>\n <button\n onClick={() => handleWeixinAction(\"logout\")}\n disabled={weixinActionBusy}\n style={{\n padding: \"9px 14px\",\n borderRadius: 8,\n border: `1px solid ${theme.red}`,\n background: theme.redBg,\n color: theme.red,\n cursor: weixinActionBusy ? \"not-allowed\" : \"pointer\",\n fontSize: 12,\n fontWeight: 600,\n opacity: weixinActionBusy ? 0.6 : 1,\n }}\n >\n Logout\n </button>\n </div>\n\n {(ch.qr_code_url ||\n ch.login_status === \"waiting_for_scan\" ||\n ch.login_status === \"scanned\" ||\n ch.last_error) && (\n <div\n style={{\n marginBottom: 12,\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n padding: 12,\n }}\n >\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n color: theme.text,\n marginBottom: 8,\n }}\n >\n Weixin Login Status\n </div>\n <div\n style={{\n fontSize: 11,\n color: theme.textMuted,\n marginBottom: ch.qr_code_url ? 10 : 0,\n }}\n >\n {statusLabelMap[ch.login_status] || \"Idle\"}\n {ch.user_id ? ` ยท ${ch.user_id}` : \"\"}\n </div>\n {ch.account_id && (\n <div style={{ fontSize: 11, color: theme.textMuted, marginBottom: 10 }}>\n Account ID: {ch.account_id}\n </div>\n )}\n {weixinQrSrc && (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 8 }}>\n <img\n src={weixinQrSrc}\n alt=\"Weixin QR code\"\n style={{\n width: 220,\n height: 220,\n objectFit: \"contain\",\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: \"#fff\",\n }}\n />\n <div style={hintStyle}>\n Open Weixin on your phone and scan this QR code. The status updates\n automatically.\n </div>\n </div>\n )}\n {ch.last_error && (\n <div style={{ marginTop: 10, fontSize: 11, color: theme.red }}>\n {ch.last_error}\n </div>\n )}\n </div>\n )}\n\n <div\n style={{\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 6,\n padding: \"10px 12px\",\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 4 }}>Notes:</div>\n {[\n \"Enabling Weixin starts the local bridge process\",\n \"First launch without a saved session will trigger QR login\",\n \"Reply to a result message to resume the same task session\",\n ].map((note) => (\n <div key={note}>\n <span style={{ color: theme.cyan }}>{note}</span>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n })()}\n\n {channelsMsg && (\n <div\n style={{\n padding: \"8px 12px\",\n borderRadius: 8,\n marginBottom: 16,\n fontSize: 12,\n background: channelsMsg.ok ? theme.greenBg : theme.redBg,\n color: channelsMsg.ok ? theme.green : theme.red,\n border: `1px solid ${channelsMsg.ok ? theme.green : theme.red}`,\n }}\n >\n {channelsMsg.text}\n </div>\n )}\n\n <div style={{ display: \"flex\", gap: 10, justifyContent: \"flex-end\" }}>\n <button\n onClick={onClose}\n style={{\n padding: \"10px 20px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n }}\n >\n Close\n </button>\n <button\n onClick={handleSaveChannels}\n disabled={channelsSaving}\n style={{\n padding: \"10px 24px\",\n borderRadius: 8,\n border: \"none\",\n background: channelsSaving ? theme.border : theme.accent,\n color: channelsSaving ? theme.textMuted : \"#fff\",\n cursor: channelsSaving ? \"not-allowed\" : \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n boxShadow: channelsSaving ? \"none\" : `0 0 20px ${theme.accentGlow}`,\n }}\n >\n {channelsSaving ? \"Savingโ€ฆ\" : \"Save\"}\n </button>\n </div>\n </>\n )}\n\n {/* โ”€โ”€ Feishu tab โ”€โ”€ */}\n {tab === \"feishu\" && (\n <>\n {/* Enable toggle */}\n <div\n style={{\n marginBottom: 20,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n <div>\n <div style={{ fontSize: 13, fontWeight: 600, color: theme.text }}>\n Enable Feishu Bot\n </div>\n <div style={{ fontSize: 11, color: theme.textMuted, marginTop: 2 }}>\n WebSocket long-connection, no public IP required\n </div>\n </div>\n <button\n onClick={() =>\n setFeishu((f) => ({\n ...f,\n feishu_enabled: f.feishu_enabled === \"true\" ? \"false\" : \"true\",\n }))\n }\n style={{\n width: 44,\n height: 24,\n borderRadius: 12,\n border: \"none\",\n cursor: \"pointer\",\n background: feishu.feishu_enabled === \"true\" ? theme.accent : theme.border,\n position: \"relative\",\n transition: \"background 0.2s\",\n flexShrink: 0,\n }}\n >\n <span\n style={{\n position: \"absolute\",\n top: 3,\n width: 18,\n height: 18,\n borderRadius: \"50%\",\n background: \"#fff\",\n transition: \"left 0.2s\",\n left: feishu.feishu_enabled === \"true\" ? 23 : 3,\n }}\n />\n </button>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16, marginBottom: 20 }}>\n <div>\n <label style={labelStyle}>App ID</label>\n <input\n value={feishu.feishu_app_id}\n onChange={(e) => setFeishu((f) => ({ ...f, feishu_app_id: e.target.value }))}\n placeholder=\"cli_xxxxxxxxxxxxxxxx\"\n style={fieldStyle}\n />\n </div>\n <div>\n <label style={labelStyle}>App Secret</label>\n <input\n type=\"password\"\n value={feishu.feishu_app_secret}\n onChange={(e) => setFeishu((f) => ({ ...f, feishu_app_secret: e.target.value }))}\n placeholder=\"โ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ขโ€ข\"\n style={fieldStyle}\n />\n </div>\n <div>\n <label style={labelStyle}>Default Chat ID</label>\n <input\n value={feishu.feishu_default_chat_id}\n onChange={(e) =>\n setFeishu((f) => ({ ...f, feishu_default_chat_id: e.target.value }))\n }\n placeholder=\"oc_xxxxxxxx (group) or ou_xxxxxxxx (DM)\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Task completion notifications will be sent here.</div>\n </div>\n <div>\n <label style={labelStyle}>Default Working Directory</label>\n <input\n value={feishu.feishu_default_working_dir}\n onChange={(e) =>\n setFeishu((f) => ({ ...f, feishu_default_working_dir: e.target.value }))\n }\n placeholder=\"~/my-project\"\n style={fieldStyle}\n />\n <div style={hintStyle}>Working directory for tasks created via the bot.</div>\n </div>\n </div>\n\n {/* Bot commands cheatsheet */}\n <div\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: \"12px 14px\",\n marginBottom: 20,\n fontSize: 11,\n fontFamily: \"monospace\",\n color: theme.textMuted,\n lineHeight: 1.8,\n }}\n >\n <div style={{ color: theme.textDim, marginBottom: 6, fontFamily: \"inherit\" }}>\n Bot commands:\n </div>\n <div>\n <span style={{ color: theme.cyan }}><any text></span> โ€” create a new task\n </div>\n <div>\n <span style={{ color: theme.cyan }}>/resume <id> <msg></span> โ€” resume a\n task session\n </div>\n <div>\n <span style={{ color: theme.cyan }}>/status <id></span> โ€” query task status\n </div>\n </div>\n\n {feishuMsg && (\n <div\n style={{\n padding: \"8px 12px\",\n borderRadius: 8,\n marginBottom: 16,\n fontSize: 12,\n background: feishuMsg.ok ? theme.greenBg : theme.redBg,\n color: feishuMsg.ok ? theme.green : theme.red,\n border: `1px solid ${feishuMsg.ok ? theme.green : theme.red}`,\n }}\n >\n {feishuMsg.text}\n </div>\n )}\n\n <div style={{ display: \"flex\", gap: 10, justifyContent: \"flex-end\" }}>\n <button\n onClick={onClose}\n style={{\n padding: \"10px 20px\",\n borderRadius: 8,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n }}\n >\n Close\n </button>\n <button\n onClick={handleSaveFeishu}\n disabled={feishuSaving}\n style={{\n padding: \"10px 24px\",\n borderRadius: 8,\n border: \"none\",\n background: feishuSaving ? theme.border : theme.accent,\n color: feishuSaving ? theme.textMuted : \"#fff\",\n cursor: feishuSaving ? \"not-allowed\" : \"pointer\",\n fontSize: 13,\n fontWeight: 600,\n boxShadow: feishuSaving ? \"none\" : `0 0 20px ${theme.accentGlow}`,\n }}\n >\n {feishuSaving ? \"Savingโ€ฆ\" : \"Save & Apply\"}\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n\n// โ”€โ”€โ”€ App โ”€โ”€โ”€\n\nfunction parseSkillFrontmatter(body) {\n const m = (body || \"\").match(/^---\\s*\\n([\\s\\S]*?)\\n---/);\n if (!m) return { name: \"\", description: \"\" };\n const out = { name: \"\", description: \"\" };\n for (const line of m[1].split(\"\\n\")) {\n const i = line.indexOf(\":\");\n if (i === -1) continue;\n const k = line.slice(0, i).trim().toLowerCase();\n const v = line.slice(i + 1).trim();\n if (k === \"name\" && !out.name) out.name = v;\n if (k === \"description\" && !out.description) out.description = v;\n }\n return out;\n}\n\nfunction SkillKindBadge({ kind }) {\n const isPitfall = kind === \"pitfall\";\n return (\n <span\n style={{\n fontSize: 10,\n fontWeight: 700,\n padding: \"2px 7px\",\n borderRadius: 6,\n letterSpacing: 0.4,\n background: isPitfall ? \"rgba(239,68,68,0.15)\" : \"rgba(34,197,94,0.15)\",\n color: isPitfall ? theme.red : theme.green,\n }}\n >\n {isPitfall ? \"PITFALL\" : \"RECIPE\"}\n </span>\n );\n}\n\nfunction SkillPatternCard({ p, tasks, onDraft, onApprove, onDismiss }) {\n let taskIds = [];\n try {\n taskIds = JSON.parse(p.contributing_task_ids || \"[]\");\n } catch {\n /* ignore */\n }\n const taskCount = taskIds.length;\n const ready = p.recurrence_count >= 3 && taskCount >= 2;\n const draftStatus = p.draft_status;\n const [expanded, setExpanded] = useState(false);\n const [body, setBody] = useState(p.draft_body || \"\");\n // The full SKILL.md is the single source of truth (name + description live in\n // its frontmatter). Sync the buffer when a fresh draft arrives.\n useEffect(() => {\n if (draftStatus === \"ready\") setBody(p.draft_body || \"\");\n }, [draftStatus, p.draft_body]);\n\n const borderColor =\n p.status === \"promoted\" ? theme.green : p.status === \"candidate\" ? theme.accent : theme.border;\n const muted = p.status === \"dismissed\";\n\n const btn = (bg, color) => ({\n padding: \"6px 14px\",\n borderRadius: 7,\n border: bg === \"transparent\" ? `1px solid ${theme.border}` : \"none\",\n background: bg,\n color,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n });\n\n return (\n <div\n style={{\n background: theme.columnBg,\n border: `1px solid ${borderColor}`,\n borderRadius: 8,\n padding: 16,\n boxShadow: theme.shadowSoft,\n opacity: muted ? 0.5 : 1,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 8 }}>\n <SkillKindBadge kind={p.kind} />\n <span style={{ fontFamily: \"monospace\", fontSize: 12, color: theme.text, fontWeight: 700 }}>\n {p.pattern_key}\n </span>\n </div>\n <div\n style={{\n color: theme.textMuted,\n fontSize: 13,\n marginBottom: 10,\n lineHeight: 1.5,\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 2,\n overflow: \"hidden\",\n }}\n >\n {p.summary || \"โ€”\"}\n </div>\n <div\n style={{\n display: \"flex\",\n gap: 12,\n fontSize: 11,\n color: theme.textDim,\n marginBottom: 10,\n alignItems: \"center\",\n }}\n >\n <span>Recurs {p.recurrence_count}x</span>\n <span>\n {taskCount} {taskCount === 1 ? \"task\" : \"tasks\"}\n </span>\n <span>{p.status}</span>\n {ready && p.status !== \"promoted\" && (\n <span style={{ color: theme.accent, fontWeight: 700 }}>Ready</span>\n )}\n <button\n onClick={() => setExpanded((v) => !v)}\n style={{\n marginLeft: \"auto\",\n background: \"transparent\",\n border: \"none\",\n color: theme.accent,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n }}\n >\n {expanded ? \"Hide\" : \"Details\"}\n </button>\n </div>\n\n {expanded && (\n <div\n style={{\n background: theme.bg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: 10,\n marginBottom: 10,\n fontSize: 11,\n color: theme.textMuted,\n }}\n >\n <div style={{ marginBottom: 6 }}>\n <span style={{ color: theme.textDim }}>First seen </span>\n {(p.first_seen || \"\").replace(\"T\", \" \").slice(0, 19) || \"โ€”\"}\n <span style={{ color: theme.textDim }}> ยท Last seen </span>\n {(p.last_seen || \"\").replace(\"T\", \" \").slice(0, 19) || \"โ€”\"}\n </div>\n <div style={{ color: theme.textDim, marginBottom: 4 }}>\n Contributing tasks ({taskCount}):\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n {taskIds.length === 0 && <span style={{ color: theme.textDim }}>โ€”</span>}\n {taskIds.map((tid) => {\n const t = (tasks || []).find((x) => x.id === tid);\n return (\n <span key={tid} style={{ fontFamily: \"monospace\" }}>\n #{tid} {t ? t.title : <span style={{ color: theme.textDim }}>(deleted)</span>}\n </span>\n );\n })}\n </div>\n </div>\n )}\n\n {draftStatus === \"ready\" && p.draft_worthy !== null && p.draft_worthy !== undefined && (\n <div\n style={{\n fontSize: 11,\n padding: \"7px 10px\",\n borderRadius: 7,\n marginBottom: 8,\n background: p.draft_worthy ? \"rgba(34,197,94,0.12)\" : \"rgba(245,158,11,0.14)\",\n color: p.draft_worthy ? theme.green : \"#f59e0b\",\n border: `1px solid ${p.draft_worthy ? \"rgba(34,197,94,0.3)\" : \"rgba(245,158,11,0.35)\"}`,\n }}\n >\n {p.draft_worthy\n ? \"Agent recommends turning this into a skill\"\n : \"Agent thinks this may have limited value. You can still approve or reject it.\"}\n {p.draft_worthiness_reason ? `: ${p.draft_worthiness_reason}` : \"\"}\n </div>\n )}\n\n {p.status === \"promoted\" && (\n <div style={{ fontSize: 12, color: theme.green, fontWeight: 700 }}>Promoted to Skill</div>\n )}\n\n {(p.status === \"candidate\" || p.status === \"tracking\") &&\n draftStatus !== \"ready\" &&\n draftStatus !== \"drafting\" && (\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\", flexWrap: \"wrap\" }}>\n <button onClick={() => onDraft(p.id)} style={btn(theme.accent, \"#fff\")}>\n {draftStatus === \"error\" ? \"Retry Distill\" : \"Distill Skill\"}\n </button>\n <button onClick={() => onDismiss(p.id)} style={btn(\"transparent\", theme.textMuted)}>\n Reject\n </button>\n {p.status === \"tracking\" && (\n <span style={{ color: theme.textDim, fontSize: 11 }}>\n Below the automatic threshold. You can still distill it manually.\n </span>\n )}\n {draftStatus === \"error\" && (\n <span style={{ color: theme.red, fontSize: 11 }}>\n Distill failed: {p.draft_error}\n </span>\n )}\n </div>\n )}\n\n {draftStatus === \"drafting\" && (\n <div style={{ fontSize: 12, color: theme.textMuted }}>Distillingโ€ฆ</div>\n )}\n\n {draftStatus === \"ready\" &&\n (() => {\n const fm = parseSkillFrontmatter(body);\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 10 }}>\n {/* preview header */}\n <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 8, flexWrap: \"wrap\" }}>\n <span\n style={{\n fontFamily: \"ui-monospace, Menlo, monospace\",\n fontSize: 12,\n fontWeight: 800,\n color: theme.accent,\n background: theme.accentGlow,\n padding: \"3px 9px\",\n borderRadius: 6,\n }}\n >\n {fm.name || \"(no name)\"}\n </span>\n <span style={{ fontSize: 11, color: theme.textDim }}>\n โ†’ ~/.claude/skills/{fm.name || \"โ€ฆ\"}/SKILL.md\n </span>\n </div>\n {fm.description && (\n <div style={{ fontSize: 12, color: theme.textMuted, lineHeight: 1.55 }}>\n {fm.description}\n </div>\n )}\n {/* editor */}\n <div>\n <div\n style={{\n fontSize: 10.5,\n color: theme.textDim,\n marginBottom: 5,\n fontWeight: 600,\n letterSpacing: 0.3,\n }}\n >\n SKILL.md ยท editable. Frontmatter controls the name and trigger description.\n </div>\n <textarea\n value={body}\n onChange={(e) => setBody(e.target.value)}\n rows={16}\n spellCheck={false}\n style={{\n width: \"100%\",\n boxSizing: \"border-box\",\n padding: \"12px 14px\",\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 12,\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n lineHeight: 1.65,\n resize: \"vertical\",\n outline: \"none\",\n }}\n />\n </div>\n <div style={{ display: \"flex\", gap: 8 }}>\n <button\n onClick={() => onApprove(p.id, { body })}\n style={{ ...btn(theme.green, \"#fff\"), padding: \"8px 18px\", fontSize: 12 }}\n >\n Approve and Write\n </button>\n <button\n onClick={() => onDismiss(p.id)}\n style={{\n ...btn(\"transparent\", theme.textMuted),\n padding: \"8px 18px\",\n fontSize: 12,\n }}\n >\n Reject\n </button>\n </div>\n </div>\n );\n })()}\n </div>\n );\n}\n\nfunction SkillRegistryCard({ s, tasks, onToggle, onDelete }) {\n const [expanded, setExpanded] = useState(false);\n const [content, setContent] = useState<any>(null);\n const [loading, setLoading] = useState(false);\n\n let sourceTaskIds = [];\n try {\n sourceTaskIds = JSON.parse(s.source_task_ids || \"[]\");\n } catch {\n /* ignore */\n }\n\n const toggleDetail = async () => {\n const next = !expanded;\n setExpanded(next);\n if (next && content === null) {\n setLoading(true);\n try {\n const res = await fetch(`${API}/skills/${s.id}/content`);\n const d = await res.json();\n setContent(d.content ?? \"\");\n } catch (e) {\n setContent(`(failed to load: ${e.message})`);\n } finally {\n setLoading(false);\n }\n }\n };\n\n return (\n <div\n style={{\n background: theme.columnBg,\n border: `1px solid ${theme.border}`,\n borderRadius: 8,\n padding: 14,\n boxShadow: theme.shadowSoft,\n opacity: s.enabled ? 1 : 0.55,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, marginBottom: 6 }}>\n <SkillKindBadge kind={s.kind} />\n <span style={{ fontFamily: \"monospace\", fontSize: 12, color: theme.text, fontWeight: 700 }}>\n {s.name}\n </span>\n <button\n onClick={toggleDetail}\n style={{\n marginLeft: \"auto\",\n background: \"transparent\",\n border: \"none\",\n color: theme.accent,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n }}\n >\n {expanded ? \"Hide\" : \"View SKILL.md\"}\n </button>\n </div>\n <div\n style={{\n color: theme.textMuted,\n fontSize: 12,\n marginBottom: 10,\n lineHeight: 1.5,\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 2,\n overflow: \"hidden\",\n }}\n >\n {s.description || \"โ€”\"}\n </div>\n\n {expanded && (\n <div style={{ marginBottom: 10 }}>\n <div style={{ fontSize: 11, color: theme.textDim, marginBottom: 6 }}>\n <span style={{ fontFamily: \"monospace\" }}>{s.path}</span>\n {s.source_pattern_key && <span> ยท Source pattern: {s.source_pattern_key}</span>}\n {sourceTaskIds.length > 0 && (\n <span>\n {\" \"}\n ยท Source tasks:{\" \"}\n {sourceTaskIds\n .map((tid) => {\n const t = (tasks || []).find((x) => x.id === tid);\n return `#${tid}${t ? \" (\" + t.title + \")\" : \"\"}`;\n })\n .join(\", \")}\n </span>\n )}\n </div>\n <pre\n style={{\n margin: 0,\n padding: \"12px 14px\",\n borderRadius: 10,\n border: `1px solid ${theme.border}`,\n background: theme.bg,\n color: theme.text,\n fontSize: 12,\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, monospace\",\n lineHeight: 1.6,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-word\",\n maxHeight: 360,\n overflow: \"auto\",\n }}\n >\n {loading ? \"Loadingโ€ฆ\" : content}\n </pre>\n </div>\n )}\n\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n fontSize: 11,\n color: theme.textDim,\n cursor: \"pointer\",\n }}\n >\n <input\n type=\"checkbox\"\n checked={!!s.enabled}\n onChange={(e) => onToggle(s.id, e.target.checked)}\n style={{ cursor: \"pointer\" }}\n />\n {s.enabled ? \"Enabled for Claude/Codex\" : \"Disabled (symlinks removed)\"}\n </label>\n <button\n onClick={() => onDelete(s.id)}\n style={{\n marginLeft: \"auto\",\n padding: \"4px 10px\",\n borderRadius: 6,\n border: `1px solid ${theme.border}`,\n background: \"transparent\",\n color: theme.red,\n cursor: \"pointer\",\n fontSize: 11,\n fontWeight: 700,\n }}\n >\n Delete\n </button>\n </div>\n </div>\n );\n}\n\nfunction SkillsView({\n skillData,\n skills,\n tasks,\n filter,\n onDraft,\n onApprove,\n onDismiss,\n onToggleSkill,\n onDeleteSkill,\n}) {\n // Only recurrence >= 2 is worth surfacing; single-occurrence rows are noise.\n // (The backend still tracks them so the count can accumulate across sweeps.)\n const patterns = (skillData.patterns || []).filter((p) => p.recurrence_count >= 2);\n const skillQuery = (filter || \"\").trim().toLowerCase();\n const matchesQuery = (values) => {\n if (!skillQuery) return true;\n return values.some((value) =>\n String(value ?? \"\")\n .toLowerCase()\n .includes(skillQuery),\n );\n };\n const taskTitle = (id) => (tasks || []).find((t) => t.id === id)?.title || \"\";\n const parseIds = (raw) => {\n try {\n return JSON.parse(raw || \"[]\");\n } catch {\n return [];\n }\n };\n const filteredSkills = (skills || []).filter((s) =>\n matchesQuery([\n s.name,\n s.description,\n s.kind,\n s.path,\n s.source_pattern_key,\n s.enabled ? \"enabled\" : \"disabled\",\n ...parseIds(s.source_task_ids).map(taskTitle),\n ]),\n );\n const filteredPatterns = patterns.filter((p) =>\n matchesQuery([\n p.pattern_key,\n p.summary,\n p.kind,\n p.status,\n p.draft_status,\n p.draft_error,\n p.draft_worthiness_reason,\n p.draft_body,\n ...parseIds(p.contributing_task_ids).map(taskTitle),\n ]),\n );\n const sweep = skillData.sweep || {};\n const running = sweep.running;\n const last = sweep.last;\n let lastNote = null;\n if (running) {\n lastNote = \"Sweep runningโ€ฆ\";\n } else if (last) {\n lastNote = last.error\n ? `Last sweep failed: ${last.error}`\n : last.scanned === 0\n ? `Last sweep: no completed tasks to analyze (agent ${last.agent})`\n : `Last sweep: analyzed ${last.scanned} tasks, added ${last.new ?? 0} recurrences, found ${last.candidates ?? 0} candidates (agent ${last.agent})`;\n }\n const [showRegistry, setShowRegistry] = useState(true);\n const [showPatterns, setShowPatterns] = useState(true);\n\n const sectionHeader = (label, count, open, toggle) => (\n <button\n onClick={toggle}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n width: \"auto\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: theme.text,\n fontSize: 13,\n fontWeight: 700,\n padding: 0,\n marginBottom: 10,\n }}\n >\n <span style={{ color: theme.textDim, fontSize: 11 }}>{open ? \"โ–ผ\" : \"โ–ถ\"}</span>\n {label}\n <span style={{ color: theme.textDim, fontWeight: 600 }}>({count})</span>\n </button>\n );\n\n return (\n <div style={{ padding: 20, minHeight: \"calc(100vh - 148px)\" }}>\n <div\n style={{\n marginBottom: 18,\n minHeight: 30,\n maxWidth: 920,\n }}\n >\n <div style={{ color: theme.textMuted, fontSize: 12 }}>\n Cross-task recurrence ledger. Recurrence >= 2 can be distilled manually; recurrence\n >= 3 across 2+ tasks becomes a candidate.\n {lastNote && <span style={{ marginLeft: 10, color: theme.textDim }}>ยท {lastNote}</span>}\n </div>\n </div>\n\n {(skills || []).length > 0 && (\n <div style={{ marginBottom: 26 }}>\n {sectionHeader(\n \"Installed Skills\",\n skillQuery ? `${filteredSkills.length}/${skills.length}` : skills.length,\n showRegistry,\n () => setShowRegistry((v) => !v),\n )}\n {showRegistry &&\n (filteredSkills.length === 0 ? (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 8,\n padding: 28,\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n background: theme.field,\n maxWidth: 520,\n }}\n >\n No installed skills match this search.\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(min(100%, 380px), 520px))\",\n gap: 12,\n justifyContent: \"start\",\n }}\n >\n {filteredSkills.map((s) => (\n <SkillRegistryCard\n key={s.id}\n s={s}\n tasks={tasks}\n onToggle={onToggleSkill}\n onDelete={onDeleteSkill}\n />\n ))}\n </div>\n ))}\n </div>\n )}\n\n {sectionHeader(\n \"Detected Patterns\",\n skillQuery ? `${filteredPatterns.length}/${patterns.length}` : patterns.length,\n showPatterns,\n () => setShowPatterns((v) => !v),\n )}\n {showPatterns &&\n (filteredPatterns.length === 0 ? (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 8,\n padding: 32,\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n background: theme.field,\n maxWidth: 520,\n }}\n >\n {patterns.length === 0\n ? \"No patterns with recurrence >= 2 yet. Run a scan to analyze recent completed tasks.\"\n : \"No detected patterns match this search.\"}\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(min(100%, 380px), 520px))\",\n gap: 14,\n justifyContent: \"start\",\n }}\n >\n {filteredPatterns.map((p) => (\n <SkillPatternCard\n key={p.id}\n p={p}\n tasks={tasks}\n onDraft={onDraft}\n onApprove={onApprove}\n onDismiss={onDismiss}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nexport default function App() {\n const [tasks, setTasks] = useState<any[]>([]);\n const [heartbeats, setHeartbeats] = useState<any[]>([]);\n const [heartbeatTicks, setHeartbeatTicks] = useState<any[]>([]);\n const [skillData, setSkillData] = useState({\n patterns: [],\n sweep: { running: false, last: null },\n });\n const [skills, setSkills] = useState<any[]>([]);\n const [activeView, setActiveView] = useState(\"tasks\");\n const [showNew, setShowNew] = useState(false);\n const [showNewHeartbeat, setShowNewHeartbeat] = useState(false);\n const [showSettings, setShowSettings] = useState(false);\n const [detail, setDetail] = useState<any>(null);\n const [heartbeatDetail, setHeartbeatDetail] = useState<any>(null);\n const [connected, setConnected] = useState(false);\n const [filters, setFilters] = useState({ tasks: \"\", heartbeats: \"\", skills: \"\" });\n const [taskTimeout, setTaskTimeout] = useState(DEFAULT_TIMEOUT_SECONDS);\n const [defaultAgent, setDefaultAgent] = useState(DEFAULT_AGENT);\n const [feishuSettings, setFeishuSettings] = useState<any>({});\n const [channelsStatus, setChannelsStatus] = useState<any>({});\n const [backendReady, setBackendReady] = useState(false);\n const [backendError, setBackendError] = useState<any>(null);\n const [apiError, setApiError] = useState<any>(null);\n const [editingTask, setEditingTask] = useState<any>(null);\n const [forkingTask, setForkingTask] = useState<any>(null);\n const [editingHeartbeat, setEditingHeartbeat] = useState<any>(null);\n\n // โ”€โ”€โ”€ Color mode โ”€โ”€โ”€\n const [colorMode, setColorMode] = useState(() => localStorage.getItem(\"colorMode\") || \"system\");\n const [systemDark, setSystemDark] = useState(\n () => window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n );\n const resolvedMode = colorMode === \"system\" ? (systemDark ? \"dark\" : \"light\") : colorMode;\n theme = THEMES[resolvedMode];\n\n useEffect(() => {\n localStorage.setItem(\"colorMode\", colorMode);\n document.body.style.background = THEMES[resolvedMode].bg;\n }, [colorMode, resolvedMode]);\n\n useEffect(() => {\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e) => setSystemDark(e.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, []);\n\n useEffect(() => {\n let cancelled = false;\n const deadline = Date.now() + 20000;\n const probe = async () => {\n try {\n const res = await fetchWithTimeout(`${API}/health`, 800);\n if (res.ok) {\n if (!cancelled) setBackendReady(true);\n return;\n }\n } catch {\n /* not ready yet */\n }\n if (cancelled) return;\n if (Date.now() >= deadline) {\n setBackendError(\"Backend did not start within 20 seconds.\");\n return;\n }\n setTimeout(probe, 300);\n };\n probe();\n return () => {\n cancelled = true;\n };\n }, []);\n\n const poll = useCallback(async () => {\n try {\n const [taskData, heartbeatData, skillRes, skillsRes] = await Promise.all([\n fetchTasks(),\n fetchHeartbeats(),\n fetchSkillPatterns(),\n fetchSkills(),\n ]);\n setTasks(taskData);\n setHeartbeats(heartbeatData);\n setSkillData(skillRes);\n setSkills(skillsRes.skills || []);\n setConnected(true);\n setApiError(null);\n } catch (err) {\n setConnected(false);\n setApiError(`Failed to fetch tasks: ${err.message}`);\n }\n }, []);\n\n useEffect(() => {\n if (!backendReady) return;\n poll();\n const interval = setInterval(poll, 3000);\n return () => clearInterval(interval);\n }, [poll, backendReady]);\n\n useEffect(() => {\n if (!backendReady) return;\n fetchSettings().then((s) => {\n if (s.timeout) setTaskTimeout(s.timeout);\n if (s.default_agent) setDefaultAgent(s.default_agent);\n });\n fetchFeishuSettings().then((s) => setFeishuSettings(s));\n fetchChannelsStatus().then((s) => setChannelsStatus(s));\n }, [backendReady]);\n\n const handleAction = async (action, id) => {\n try {\n if (action === \"cancel\") await cancelTask(id);\n else if (action === \"retry\") await retryTask(id);\n else if (action === \"delete\") {\n await deleteTask(id);\n if (detail?.id === id) setDetail(null);\n } else if (action === \"edit\") {\n const task = tasks.find((t) => t.id === id);\n if (task) setEditingTask(task);\n return;\n } else if (action === \"fork\") {\n const task = tasks.find((t) => t.id === id);\n if (task) setForkingTask(task);\n return;\n }\n poll();\n } catch (e) {\n setApiError(`${action} failed: ${e.message}`);\n }\n };\n\n const handleHeartbeatAction = async (action, id) => {\n try {\n if (action === \"run\") {\n await runHeartbeatNow(id);\n } else if (action === \"pause\") {\n await pauseHeartbeat(id);\n } else if (action === \"resume\") {\n await resumeHeartbeatApi(id);\n } else if (action === \"delete\") {\n await deleteHeartbeat(id);\n if (heartbeatDetail?.id === id) {\n setHeartbeatDetail(null);\n setHeartbeatTicks([]);\n }\n } else if (action === \"edit\") {\n const heartbeat = heartbeats.find((h) => h.id === id);\n if (heartbeat) setEditingHeartbeat(heartbeat);\n return;\n }\n poll();\n if (heartbeatDetail?.id === id && action !== \"delete\") {\n const [updatedHeartbeat, ticks] = await Promise.all([\n fetch(`${API}/heartbeats/${id}`).then((r) => r.json()),\n fetchHeartbeatTicks(id),\n ]);\n setHeartbeatDetail(updatedHeartbeat);\n setHeartbeatTicks(ticks);\n }\n } catch (e) {\n setApiError(`Heartbeat ${action} failed: ${e.message}`);\n }\n };\n\n const handleSweep = async () => {\n try {\n await triggerSkillSweep();\n // Optimistically reflect the running state; poll picks up the real status.\n setSkillData((prev) => ({ ...prev, sweep: { ...prev.sweep, running: true } }));\n setTimeout(poll, 1500);\n } catch (e) {\n setApiError(`Sweep failed: ${e.message}`);\n }\n };\n\n const handleSkillDraft = async (id) => {\n try {\n await triggerSkillDraft(id);\n setTimeout(poll, 1500);\n } catch (e) {\n setApiError(`Distill failed: ${e.message}`);\n }\n };\n\n const handleSkillApprove = async (id, data) => {\n try {\n await approveSkill(id, data);\n poll();\n } catch (e) {\n setApiError(`Approve failed: ${e.message}`);\n }\n };\n\n const handleSkillDismiss = async (id) => {\n try {\n await dismissSkillPattern(id);\n poll();\n } catch (e) {\n setApiError(`Dismiss failed: ${e.message}`);\n }\n };\n\n const handleSkillToggle = async (id, enabled) => {\n try {\n await setSkillEnabledApi(id, enabled);\n poll();\n } catch (e) {\n setApiError(`Toggle skill failed: ${e.message}`);\n }\n };\n\n const handleSkillDelete = async (id) => {\n try {\n await deleteSkillApi(id);\n poll();\n } catch (e) {\n setApiError(`Delete skill failed: ${e.message}`);\n }\n };\n\n const handleCreate = async (data) => {\n try {\n await createTask(data);\n setShowNew(false);\n poll();\n } catch (e) {\n setApiError(`Create task failed: ${e.message}`);\n }\n };\n\n const handleEdit = async (data) => {\n try {\n await updateTask(editingTask.id, data);\n setEditingTask(null);\n poll();\n } catch (e) {\n setApiError(`Edit task failed: ${e.message}`);\n }\n };\n\n const handleFork = async (data) => {\n try {\n await createTask(data);\n setForkingTask(null);\n poll();\n } catch (e) {\n setApiError(`Fork task failed: ${e.message}`);\n }\n };\n\n const handleRespond = async (id, answer) => {\n try {\n await respondToTask(id, answer);\n poll();\n } catch (e) {\n setApiError(`Respond failed: ${e.message}`);\n }\n };\n\n const handleResume = () => {\n poll();\n };\n\n const handleCreateHeartbeat = async (data) => {\n try {\n await createHeartbeat(data);\n setShowNewHeartbeat(false);\n poll();\n } catch (e) {\n setApiError(`Create heartbeat failed: ${e.message}`);\n }\n };\n\n const handleEditHeartbeat = async (data) => {\n try {\n await updateHeartbeat(editingHeartbeat.id, data);\n setEditingHeartbeat(null);\n poll();\n } catch (e) {\n setApiError(`Edit heartbeat failed: ${e.message}`);\n }\n };\n\n const openHeartbeatDetail = async (heartbeat) => {\n setHeartbeatDetail(heartbeat);\n try {\n const ticks = await fetchHeartbeatTicks(heartbeat.id);\n setHeartbeatTicks(ticks);\n } catch (e) {\n setApiError(`Failed to fetch heartbeat ticks: ${e.message}`);\n setHeartbeatTicks([]);\n }\n };\n\n const filter =\n activeView === \"tasks\"\n ? filters.tasks\n : activeView === \"heartbeats\"\n ? filters.heartbeats\n : filters.skills;\n const setActiveFilter = (value) => {\n setFilters((prev) =>\n activeView === \"tasks\"\n ? { ...prev, tasks: value }\n : activeView === \"heartbeats\"\n ? { ...prev, heartbeats: value }\n : { ...prev, skills: value },\n );\n };\n const searchPlaceholder =\n activeView === \"tasks\"\n ? \"Search tasks\"\n : activeView === \"heartbeats\"\n ? \"Search heartbeats\"\n : \"Search skills\";\n\n const filtered = filter\n ? tasks.filter(\n (t) =>\n t.title.toLowerCase().includes(filter.toLowerCase()) ||\n t.tags?.toLowerCase().includes(filter.toLowerCase()),\n )\n : tasks;\n\n const runningCount = tasks.filter((t) => t.status === \"running\").length;\n const queueCount = tasks.filter((t) =>\n [\"pending\", \"scheduled\", \"blocked\"].includes(t.status),\n ).length;\n const doneCount = tasks.filter((t) =>\n [\"completed\", \"failed\", \"cancelled\"].includes(t.status),\n ).length;\n const enabledHeartbeatCount = heartbeats.filter((h) => h.enabled).length;\n const pausedHeartbeatCount = Math.max(heartbeats.length - enabledHeartbeatCount, 0);\n const heartbeatIssueCount = heartbeats.filter((h) => h.last_error).length;\n const enabledSkillCount = skills.filter((s) => s.enabled).length;\n const pausedSkillCount = Math.max(skills.length - enabledSkillCount, 0);\n const skillPatternCount = (skillData.patterns || []).filter(\n (p) => p.recurrence_count >= 2,\n ).length;\n const activeSummary = {\n tasks: {\n label: `${runningCount} running / ${queueCount} queued`,\n tone: runningCount > 0 ? theme.blue : theme.green,\n background: runningCount > 0 ? theme.blueBg : theme.greenBg,\n metrics: [\n { label: \"Total\", value: tasks.length },\n { label: \"Queue\", value: queueCount, tone: theme.orange },\n { label: \"Running\", value: runningCount, tone: theme.blue },\n { label: \"Done\", value: doneCount, tone: theme.green },\n ],\n },\n heartbeats: {\n label:\n heartbeatIssueCount > 0\n ? `${enabledHeartbeatCount} enabled / ${heartbeatIssueCount} issues`\n : `${enabledHeartbeatCount} enabled / ${pausedHeartbeatCount} paused`,\n tone: heartbeatIssueCount > 0 ? theme.orange : theme.cyan,\n background: heartbeatIssueCount > 0 ? theme.orangeBg : theme.cyanBg,\n metrics: [\n { label: \"Total\", value: heartbeats.length },\n { label: \"Enabled\", value: enabledHeartbeatCount, tone: theme.green },\n { label: \"Paused\", value: pausedHeartbeatCount, tone: theme.textMuted },\n {\n label: \"Issues\",\n value: heartbeatIssueCount,\n tone: heartbeatIssueCount ? theme.orange : theme.green,\n },\n ],\n },\n skills: {\n label: `${enabledSkillCount} enabled / ${skillPatternCount} patterns`,\n tone: theme.accent,\n background: theme.accentGlow,\n metrics: [\n { label: \"Installed\", value: skills.length },\n { label: \"Enabled\", value: enabledSkillCount, tone: theme.green },\n { label: \"Paused\", value: pausedSkillCount, tone: theme.textMuted },\n { label: \"Patterns\", value: skillPatternCount, tone: theme.accent },\n ],\n },\n }[activeView];\n\n if (backendError) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100vh\",\n background: theme.bg,\n color: theme.red,\n gap: 12,\n fontFamily: \"inherit\",\n }}\n >\n <div style={{ fontSize: 32 }}>โœ•</div>\n <div style={{ fontSize: 15, fontWeight: 600 }}>Backend failed to start</div>\n <div style={{ fontSize: 12, color: theme.textMuted, maxWidth: 400, textAlign: \"center\" }}>\n {backendError}\n </div>\n </div>\n );\n }\n\n if (!backendReady) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100vh\",\n background: theme.bg,\n color: theme.textMuted,\n gap: 16,\n fontFamily: \"inherit\",\n }}\n >\n <div\n style={{\n width: 32,\n height: 32,\n borderRadius: \"50%\",\n border: `3px solid ${theme.border}`,\n borderTopColor: theme.accent,\n animation: \"spin 0.8s linear infinite\",\n }}\n />\n <div style={{ fontSize: 13 }}>Starting backendโ€ฆ</div>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n );\n }\n\n return (\n <div\n style={{\n minHeight: \"100vh\",\n background: theme.bg,\n backgroundImage: theme.boardBg,\n color: theme.text,\n fontFamily: APP_FONT_STACK,\n }}\n >\n <style>{`@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} } @keyframes deckIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }`}</style>\n {/* API error toast */}\n {apiError && (\n <div\n style={{\n position: \"fixed\",\n bottom: 24,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n zIndex: 9999,\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n background: theme.surface,\n border: `1px solid ${theme.red}`,\n borderRadius: 8,\n padding: \"10px 16px\",\n boxShadow: `0 4px 24px rgba(0,0,0,0.5)`,\n color: theme.red,\n fontSize: 12,\n fontWeight: 500,\n maxWidth: 480,\n }}\n >\n <span style={{ flexShrink: 0 }}>โœ•</span>\n <span style={{ flex: 1 }}>{apiError}</span>\n <button\n onClick={() => setApiError(null)}\n style={{\n background: \"none\",\n border: \"none\",\n color: theme.textMuted,\n cursor: \"pointer\",\n fontSize: 14,\n lineHeight: 1,\n padding: \"0 0 0 8px\",\n flexShrink: 0,\n }}\n title=\"Dismiss\"\n >\n ร—\n </button>\n </div>\n )}\n {/* Header */}\n <div\n style={{\n borderBottom: `1px solid ${theme.headerBorder}`,\n padding: \"12px 20px\",\n backdropFilter: \"blur(16px)\",\n position: \"sticky\",\n top: 0,\n zIndex: 100,\n background: theme.headerBg,\n animation: \"deckIn 0.25s ease\",\n }}\n >\n <div\n className=\"app-topbar\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 14,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 11, minWidth: 218 }}>\n <BrandMark size={34} />\n <div>\n <div\n style={{\n fontSize: 17,\n fontWeight: 780,\n fontFamily: DISPLAY_FONT_STACK,\n letterSpacing: 0,\n lineHeight: 1,\n }}\n >\n AgentForge\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, marginTop: 4, fontWeight: 650 }}>\n Agent orchestration board\n </div>\n </div>\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 10,\n minWidth: 0,\n flex: 1,\n justifyContent: \"center\",\n }}\n >\n <StatusPill\n connected={connected}\n label={activeSummary.label}\n tone={activeSummary.tone}\n background={activeSummary.background}\n />\n </div>\n\n <div className=\"app-toolbar\" style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n <div\n style={{\n display: \"flex\",\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 7,\n padding: 2,\n gap: 2,\n }}\n >\n {[\n { key: \"tasks\", label: \"Tasks\", icon: KanbanSquare },\n { key: \"heartbeats\", label: \"Heartbeats\", icon: HeartPulse },\n { key: \"skills\", label: \"Skills\", icon: Sparkles },\n ].map((tab) => (\n <button\n key={tab.key}\n onClick={() => setActiveView(tab.key)}\n style={{\n padding: \"6px 9px\",\n borderRadius: 5,\n border: \"none\",\n background: activeView === tab.key ? theme.field : \"transparent\",\n color: activeView === tab.key ? theme.text : theme.textMuted,\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 720,\n display: \"flex\",\n alignItems: \"center\",\n gap: 6,\n transition: \"background 0.15s ease, color 0.15s ease\",\n }}\n >\n <IconGlyph icon={tab.icon} size={13} strokeWidth={2.6} />\n {tab.label}\n </button>\n ))}\n </div>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"0 9px\",\n height: 32,\n borderRadius: 7,\n border: `1px solid ${theme.border}`,\n background: theme.surface,\n }}\n >\n <Search\n aria-hidden=\"true\"\n size={14}\n strokeWidth={2.4}\n style={{ color: theme.textDim, flexShrink: 0 }}\n />\n <input\n placeholder={searchPlaceholder}\n value={filter}\n onChange={(e) => setActiveFilter(e.target.value)}\n style={{\n border: \"none\",\n background: \"transparent\",\n color: theme.text,\n fontSize: 12,\n outline: \"none\",\n width: 152,\n fontFamily: APP_FONT_STACK,\n }}\n />\n </div>\n\n {(() => {\n const cycle = { system: \"light\", light: \"dark\", dark: \"system\" };\n const icons = { system: MonitorCog, light: Sun, dark: Moon };\n const labels = { system: \"System theme\", light: \"Light mode\", dark: \"Dark mode\" };\n const ThemeIcon = icons[colorMode];\n return (\n <HeaderButton\n title={labels[colorMode]}\n onClick={() => setColorMode(cycle[colorMode])}\n active={colorMode !== \"system\"}\n >\n <IconGlyph icon={ThemeIcon} size={15} />\n </HeaderButton>\n );\n })()}\n\n <HeaderButton title=\"Settings\" onClick={() => setShowSettings(true)}>\n <IconGlyph icon={Settings} size={15} />\n </HeaderButton>\n\n {activeView === \"skills\" ? (\n <button\n onClick={handleSweep}\n disabled={!!skillData.sweep?.running}\n style={{\n height: 32,\n padding: \"0 12px\",\n borderRadius: 6,\n border: `1px solid ${skillData.sweep?.running ? theme.border : theme.accent}`,\n background: skillData.sweep?.running ? theme.field : theme.accent,\n color: skillData.sweep?.running ? theme.textMuted : theme.brandInk,\n cursor: skillData.sweep?.running ? \"default\" : \"pointer\",\n fontSize: 12,\n fontWeight: 720,\n display: \"flex\",\n alignItems: \"center\",\n gap: 7,\n transition: \"transform 0.15s ease, box-shadow 0.15s ease\",\n }}\n >\n <IconGlyph icon={Radar} size={15} strokeWidth={2.8} />\n {skillData.sweep?.running ? \"Scanning\" : \"Run Scan\"}\n </button>\n ) : (\n <button\n onClick={() =>\n activeView === \"tasks\" ? setShowNew(true) : setShowNewHeartbeat(true)\n }\n style={{\n height: 32,\n padding: \"0 12px\",\n borderRadius: 6,\n border: `1px solid ${theme.accent}`,\n background: theme.accent,\n color: theme.brandInk,\n cursor: \"pointer\",\n fontSize: 12,\n fontWeight: 720,\n display: \"flex\",\n alignItems: \"center\",\n gap: 7,\n transition: \"transform 0.15s ease, box-shadow 0.15s ease\",\n }}\n >\n <IconGlyph icon={Plus} size={15} strokeWidth={2.8} />\n {activeView === \"tasks\" ? \"New Task\" : \"New Heartbeat\"}\n </button>\n )}\n </div>\n </div>\n\n <div style={{ display: \"flex\", gap: 8, marginTop: 10, overflowX: \"auto\" }}>\n {activeSummary.metrics.map((metric) => (\n <MetricTile\n key={metric.label}\n label={metric.label}\n value={metric.value}\n tone={metric.tone}\n />\n ))}\n </div>\n </div>\n\n {activeView === \"tasks\" ? (\n <div\n style={{\n padding: \"20px\",\n minHeight: \"calc(100vh - 148px)\",\n }}\n >\n <div\n className=\"board-grid\"\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, minmax(0, 1fr))\",\n gap: 12,\n alignItems: \"start\",\n }}\n >\n {COLUMNS.map((col) => (\n <Column\n key={col.key}\n col={col}\n tasks={filtered.filter((t) => col.statuses.includes(t.status))}\n onAction={handleAction}\n onViewDetail={setDetail}\n />\n ))}\n </div>\n </div>\n ) : activeView === \"heartbeats\" ? (\n <div style={{ padding: 20, minHeight: \"calc(100vh - 148px)\" }}>\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(360px, 1fr))\",\n gap: 12,\n }}\n >\n {(filter\n ? heartbeats.filter(\n (h) =>\n h.name.toLowerCase().includes(filter.toLowerCase()) ||\n h.check_prompt.toLowerCase().includes(filter.toLowerCase()),\n )\n : heartbeats\n ).map((h) => (\n <HeartbeatCard\n key={h.id}\n heartbeat={h}\n onAction={handleHeartbeatAction}\n onViewDetail={openHeartbeatDetail}\n />\n ))}\n {heartbeats.length === 0 && (\n <div\n style={{\n border: `1px dashed ${theme.border}`,\n borderRadius: 8,\n padding: 32,\n textAlign: \"center\",\n color: theme.textDim,\n fontSize: 12,\n gridColumn: \"1 / -1\",\n background: theme.columnBg,\n }}\n >\n No heartbeats yet\n </div>\n )}\n </div>\n </div>\n ) : (\n <SkillsView\n skillData={skillData}\n skills={skills}\n tasks={tasks}\n filter={filter}\n onDraft={handleSkillDraft}\n onApprove={handleSkillApprove}\n onDismiss={handleSkillDismiss}\n onToggleSkill={handleSkillToggle}\n onDeleteSkill={handleSkillDelete}\n />\n )}\n\n {/* Modals */}\n {showNew && (\n <NewTaskModal\n onClose={() => setShowNew(false)}\n onSubmit={handleCreate}\n initialData={{ agent: defaultAgent }}\n />\n )}\n {showNewHeartbeat && (\n <HeartbeatModal\n onClose={() => setShowNewHeartbeat(false)}\n onSubmit={handleCreateHeartbeat}\n defaultAgent={defaultAgent}\n />\n )}\n {editingTask && (\n <NewTaskModal\n onClose={() => setEditingTask(null)}\n onSubmit={handleEdit}\n initialData={editingTask}\n mode=\"edit\"\n />\n )}\n {editingHeartbeat && (\n <HeartbeatModal\n onClose={() => setEditingHeartbeat(null)}\n onSubmit={handleEditHeartbeat}\n initialData={editingHeartbeat}\n defaultAgent={defaultAgent}\n mode=\"edit\"\n />\n )}\n {forkingTask && (\n <NewTaskModal\n onClose={() => setForkingTask(null)}\n onSubmit={handleFork}\n initialData={forkingTask}\n mode=\"fork\"\n />\n )}\n {showSettings && (\n <SettingsModal\n onClose={() => setShowSettings(false)}\n timeout={taskTimeout}\n defaultAgent={defaultAgent}\n onSave={(timeout, agent) => {\n setTaskTimeout(timeout);\n if (agent) setDefaultAgent(agent);\n }}\n feishu={feishuSettings}\n onFeishuSave={(updated) => setFeishuSettings(updated)}\n channelsStatus={channelsStatus}\n onChannelsSave={(updated) => setChannelsStatus(updated)}\n />\n )}\n {detail && (\n <DetailPanel\n task={tasks.find((t) => t.id === detail.id) || detail}\n onClose={() => setDetail(null)}\n onRespond={handleRespond}\n onResume={handleResume}\n />\n )}\n {heartbeatDetail && (\n <HeartbeatDetailPanel\n heartbeat={heartbeats.find((h) => h.id === heartbeatDetail.id) || heartbeatDetail}\n ticks={heartbeatTicks}\n onClose={() => {\n setHeartbeatDetail(null);\n setHeartbeatTicks([]);\n }}\n />\n )}\n\n {/* Startup guide when no tasks */}\n {connected && activeView === \"tasks\" && tasks.length === 0 && (\n <div\n style={{\n position: \"fixed\",\n bottom: 28,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 12,\n padding: \"16px 24px\",\n maxWidth: 500,\n boxShadow: \"0 8px 32px rgba(0,0,0,0.3)\",\n }}\n >\n <div style={{ fontSize: 13, color: theme.text, fontWeight: 600, marginBottom: 6 }}>\n Ready to go! Click \"+ New Task\" to create your first task.\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, lineHeight: 1.6 }}>\n Tasks are dispatched to Claude Code in your specified working directory. Set cron\n schedules for recurring tasks, or delay execution.\n </div>\n </div>\n )}\n {connected && activeView === \"heartbeats\" && heartbeats.length === 0 && (\n <div\n style={{\n position: \"fixed\",\n bottom: 28,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n background: theme.surface,\n border: `1px solid ${theme.border}`,\n borderRadius: 12,\n padding: \"16px 24px\",\n maxWidth: 560,\n boxShadow: \"0 8px 32px rgba(0,0,0,0.3)\",\n }}\n >\n <div style={{ fontSize: 13, color: theme.text, fontWeight: 600, marginBottom: 6 }}>\n Heartbeats let AgentForge check first and only create work when needed.\n </div>\n <div style={{ fontSize: 11, color: theme.textDim, lineHeight: 1.6 }}>\n Create one to run a stateless agent decision tick on an interval or cron schedule, then\n trigger a real task only when the signal is actionable.\n </div>\n </div>\n )}\n\n {!connected && (\n <div\n style={{\n position: \"fixed\",\n bottom: 28,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n background: theme.redBg,\n border: `1px solid rgba(248,113,113,0.2)`,\n borderRadius: 12,\n padding: \"16px 24px\",\n maxWidth: 520,\n }}\n >\n <div style={{ fontSize: 13, color: theme.red, fontWeight: 600, marginBottom: 4 }}>\n Backend not running\n </div>\n <code style={{ fontSize: 11, color: theme.text, lineHeight: 1.8, display: \"block\" }}>\n cd backend\n <br />\n bun taskboard.ts\n </code>\n </div>\n )}\n </div>\n );\n}\n\n// CSS animation definitions.\nconst styles = `\n html, body, #root {\n min-height: 100%;\n margin: 0;\n }\n\n body {\n overflow-x: hidden;\n }\n\n button, input, textarea, select {\n font: inherit;\n }\n\n ::selection {\n background: ${theme.accentGlow};\n color: ${theme.text};\n }\n\n ::-webkit-scrollbar {\n width: 10px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-track {\n background: transparent;\n }\n\n ::-webkit-scrollbar-thumb {\n background: ${theme.borderActive};\n border: 3px solid transparent;\n border-radius: 8px;\n background-clip: padding-box;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .live-output-line {\n transition: color 0.2s ease;\n }\n\n .live-output-line.error {\n color: ${theme.red};\n }\n\n .live-output-line.success {\n color: ${theme.green};\n }\n\n .live-output-line.warning {\n color: ${theme.orange};\n }\n\n .live-output-line.info {\n color: ${theme.blue};\n }\n\n .live-output-line.command {\n color: ${theme.cyan};\n font-weight: bold;\n }\n\n .live-output-line.path {\n color: ${theme.accent};\n }\n`;\n\n// Inject styles.\nif (typeof document !== \"undefined\" && !document.querySelector(\"#live-output-styles\")) {\n const styleEl = document.createElement(\"style\");\n styleEl.id = \"live-output-styles\";\n styleEl.textContent = styles;\n document.head.appendChild(styleEl);\n}\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n", + "\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({ color, size, strokeWidth, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses(\"lucide\", contextClass, className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n", + "\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst CircleCheck = createLucideIcon(\"circle-check\", __iconNode);\n\nexport { __iconNode, CircleCheck as default };\n//# sourceMappingURL=circle-check.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\",\n key: \"1s2grr\"\n }\n ],\n [\"path\", { d: \"M20 2v4\", key: \"1rf3ol\" }],\n [\"path\", { d: \"M22 4h-4\", key: \"gwowj6\" }],\n [\"circle\", { cx: \"4\", cy: \"20\", r: \"2\", key: \"6kqj1y\" }]\n];\nconst Sparkles = createLucideIcon(\"sparkles\", __iconNode);\n\nexport { __iconNode, Sparkles as default };\n//# sourceMappingURL=sparkles.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M8 7v7\", key: \"1x2jlm\" }],\n [\"path\", { d: \"M12 7v4\", key: \"xawao1\" }],\n [\"path\", { d: \"M16 7v9\", key: \"1hp2iy\" }]\n];\nconst SquareKanban = createLucideIcon(\"square-kanban\", __iconNode);\n\nexport { __iconNode, SquareKanban as default };\n//# sourceMappingURL=square-kanban.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"18\", r: \"3\", key: \"1mpf1b\" }],\n [\"circle\", { cx: \"6\", cy: \"6\", r: \"3\", key: \"1lh9wr\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"path\", { d: \"M18 9v2c0 .6-.4 1-1 1H7c-.6 0-1-.4-1-1V9\", key: \"1uq4wg\" }],\n [\"path\", { d: \"M12 12v3\", key: \"158kv8\" }]\n];\nconst GitFork = createLucideIcon(\"git-fork\", __iconNode);\n\nexport { __iconNode, GitFork as default };\n//# sourceMappingURL=git-fork.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\",\n key: \"mvr1a0\"\n }\n ],\n [\"path\", { d: \"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27\", key: \"auskq0\" }]\n];\nconst HeartPulse = createLucideIcon(\"heart-pulse\", __iconNode);\n\nexport { __iconNode, HeartPulse as default };\n//# sourceMappingURL=heart-pulse.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"polyline\", { points: \"22 12 16 12 14 15 10 15 8 12 2 12\", key: \"o97t9d\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ]\n];\nconst Inbox = createLucideIcon(\"inbox\", __iconNode);\n\nexport { __iconNode, Inbox as default };\n//# sourceMappingURL=inbox.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 17v4\", key: \"1riwvh\" }],\n [\"path\", { d: \"m14.305 7.53.923-.382\", key: \"1mlnsw\" }],\n [\"path\", { d: \"m15.228 4.852-.923-.383\", key: \"82mpwg\" }],\n [\"path\", { d: \"m16.852 3.228-.383-.924\", key: \"ln4sir\" }],\n [\"path\", { d: \"m16.852 8.772-.383.923\", key: \"1dejw0\" }],\n [\"path\", { d: \"m19.148 3.228.383-.924\", key: \"192kgf\" }],\n [\"path\", { d: \"m19.53 9.696-.382-.924\", key: \"fiavlr\" }],\n [\"path\", { d: \"m20.772 4.852.924-.383\", key: \"1j8mgp\" }],\n [\"path\", { d: \"m20.772 7.148.924.383\", key: \"zix9be\" }],\n [\"path\", { d: \"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\", key: \"1tnzv8\" }],\n [\"path\", { d: \"M8 21h8\", key: \"1ev6f3\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }]\n];\nconst MonitorCog = createLucideIcon(\"monitor-cog\", __iconNode);\n\nexport { __iconNode, MonitorCog as default };\n//# sourceMappingURL=monitor-cog.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n];\nconst Moon = createLucideIcon(\"moon\", __iconNode);\n\nexport { __iconNode, Moon as default };\n//# sourceMappingURL=moon.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n];\nconst Pencil = createLucideIcon(\"pencil\", __iconNode);\n\nexport { __iconNode, Pencil as default };\n//# sourceMappingURL=pencil.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=plus.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M19.07 4.93A10 10 0 0 0 6.99 3.34\", key: \"z3du51\" }],\n [\"path\", { d: \"M4 6h.01\", key: \"oypzma\" }],\n [\"path\", { d: \"M2.29 9.62A10 10 0 1 0 21.31 8.35\", key: \"qzzz0\" }],\n [\"path\", { d: \"M16.24 7.76A6 6 0 1 0 8.23 16.67\", key: \"1yjesh\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M17.99 11.66A6 6 0 0 1 15.77 16.67\", key: \"1u2y91\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"2\", key: \"1c9p78\" }],\n [\"path\", { d: \"m13.41 10.59 5.66-5.66\", key: \"mhq4k0\" }]\n];\nconst Radar = createLucideIcon(\"radar\", __iconNode);\n\nexport { __iconNode, Radar as default };\n//# sourceMappingURL=radar.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\", key: \"1357e3\" }],\n [\"path\", { d: \"M3 3v5h5\", key: \"1xhq8a\" }]\n];\nconst RotateCcw = createLucideIcon(\"rotate-ccw\", __iconNode);\n\nexport { __iconNode, RotateCcw as default };\n//# sourceMappingURL=rotate-ccw.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\",\n key: \"1i5ecw\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n];\nconst Settings = createLucideIcon(\"settings\", __iconNode);\n\nexport { __iconNode, Settings as default };\n//# sourceMappingURL=settings.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }]\n];\nconst Square = createLucideIcon(\"square\", __iconNode);\n\nexport { __iconNode, Square as default };\n//# sourceMappingURL=square.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n];\nconst Sun = createLucideIcon(\"sun\", __iconNode);\n\nexport { __iconNode, Sun as default };\n//# sourceMappingURL=sun.mjs.map\n", + "/**\n * @license lucide-react v1.18.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.mjs.map\n", "interface LocalDateTimeParts {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n}\n\nfunction pad(value: number | string): string {\n return String(value).padStart(2, \"0\");\n}\n\nfunction hasExplicitTimezone(value: string): boolean {\n return /(?:Z|[+-]\\d{2}:\\d{2})$/i.test(value);\n}\n\nfunction parseLocalDateTimeParts(value: unknown): LocalDateTimeParts | null {\n const match = String(value)\n .trim()\n .match(/^(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d+)?)?$/);\n if (!match) return null;\n const [, year, month, day, hour, minute, second = \"00\"] = match;\n return {\n year: Number(year),\n month: Number(month),\n day: Number(day),\n hour: Number(hour),\n minute: Number(minute),\n second: Number(second),\n };\n}\n\nexport function parseTaskDateTime(value: unknown): Date | null {\n if (!value) return null;\n const raw = String(value).trim();\n if (!raw) return null;\n\n if (hasExplicitTimezone(raw)) {\n const date = new Date(raw);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n const parts = parseLocalDateTimeParts(raw);\n if (parts) {\n return new Date(\n parts.year,\n parts.month - 1,\n parts.day,\n parts.hour,\n parts.minute,\n parts.second,\n 0,\n );\n }\n\n const fallback = new Date(raw);\n return Number.isNaN(fallback.getTime()) ? null : fallback;\n}\n\nexport function formatTaskDateTime(value: unknown, options?: Intl.DateTimeFormatOptions): string {\n const date = parseTaskDateTime(value);\n return date ? date.toLocaleString(undefined, options) : \"\";\n}\n\nexport function formatTaskTime(value: unknown, options?: Intl.DateTimeFormatOptions): string {\n const date = parseTaskDateTime(value);\n return date ? date.toLocaleTimeString(undefined, options) : \"\";\n}\n\nexport function formatDateTimeLocalInput(value: unknown): string {\n const date = parseTaskDateTime(value);\n if (!date) return \"\";\n return [\n date.getFullYear(),\n \"-\",\n pad(date.getMonth() + 1),\n \"-\",\n pad(date.getDate()),\n \"T\",\n pad(date.getHours()),\n \":\",\n pad(date.getMinutes()),\n ].join(\"\");\n}\n\nexport function serializeDateTimeLocalInput(value: unknown): string | null {\n const parts = parseLocalDateTimeParts(value);\n if (!parts) return null;\n return [\n parts.year,\n \"-\",\n pad(parts.month),\n \"-\",\n pad(parts.day),\n \"T\",\n pad(parts.hour),\n \":\",\n pad(parts.minute),\n \":\",\n pad(parts.second),\n ].join(\"\");\n}\n", "export interface TelegramChannelState {\n enabled: boolean;\n configured: boolean;\n running: boolean;\n default_working_dir: string;\n default_chat_id: string;\n bot_token: string;\n allowed_users: string;\n}\n\nexport interface SlackChannelState {\n enabled: boolean;\n configured: boolean;\n running: boolean;\n default_working_dir: string;\n default_channel: string;\n default_user: string;\n bot_token: string;\n app_token: string;\n}\n\nexport interface WeixinChannelState {\n enabled: boolean;\n configured: boolean;\n running: boolean;\n default_working_dir: string;\n base_url: string;\n account_id: string;\n login_status: string;\n qr_code_url: string;\n last_error: string;\n user_id: string;\n}\n\nexport interface ChannelsState {\n telegram: TelegramChannelState;\n slack: SlackChannelState;\n weixin: WeixinChannelState;\n}\n\nexport interface ChannelsStatusUpdate {\n telegram?: Partial<TelegramChannelState>;\n slack?: Partial<SlackChannelState>;\n weixin?: Partial<WeixinChannelState>;\n}\n\nexport interface ChannelsSavePayload {\n telegram_enabled: string;\n telegram_bot_token?: string;\n telegram_allowed_users: string;\n telegram_default_working_dir: string;\n telegram_default_chat_id: string;\n slack_enabled: string;\n slack_bot_token?: string;\n slack_app_token?: string;\n slack_default_working_dir: string;\n slack_default_channel: string;\n slack_default_user: string;\n weixin_enabled: string;\n weixin_default_working_dir: string;\n weixin_base_url: string;\n weixin_account_id: string;\n}\n\ninterface MergeChannelsStatusOptions {\n preserveEditableFields?: boolean;\n}\n\nconst DEFAULT_CHANNELS_STATE: ChannelsState = {\n telegram: {\n enabled: false,\n configured: false,\n running: false,\n default_working_dir: \"~\",\n default_chat_id: \"\",\n bot_token: \"\",\n allowed_users: \"\",\n },\n slack: {\n enabled: false,\n configured: false,\n running: false,\n default_working_dir: \"~\",\n default_channel: \"\",\n default_user: \"\",\n bot_token: \"\",\n app_token: \"\",\n },\n weixin: {\n enabled: false,\n configured: false,\n running: false,\n default_working_dir: \"~\",\n base_url: \"https://ilinkai.weixin.qq.com\",\n account_id: \"\",\n login_status: \"idle\",\n qr_code_url: \"\",\n last_error: \"\",\n user_id: \"\",\n },\n};\n\nfunction cloneState(state: ChannelsState): ChannelsState {\n return {\n telegram: { ...state.telegram },\n slack: { ...state.slack },\n weixin: { ...state.weixin },\n };\n}\n\nexport function createInitialChannelsState(initial: ChannelsStatusUpdate = {}): ChannelsState {\n const base = cloneState(DEFAULT_CHANNELS_STATE);\n return mergeChannelsStatus(base, initial);\n}\n\nexport function mergeChannelsStatus(\n current: ChannelsState,\n status: ChannelsStatusUpdate = {},\n options: MergeChannelsStatusOptions = {},\n): ChannelsState {\n const merged = {\n telegram: { ...current.telegram, ...(status.telegram || {}) },\n slack: { ...current.slack, ...(status.slack || {}) },\n weixin: { ...current.weixin, ...(status.weixin || {}) },\n };\n if (!options.preserveEditableFields) return merged;\n\n return {\n telegram: {\n ...merged.telegram,\n enabled: current.telegram.enabled,\n bot_token: current.telegram.bot_token,\n allowed_users: current.telegram.allowed_users,\n default_working_dir: current.telegram.default_working_dir,\n default_chat_id: current.telegram.default_chat_id,\n },\n slack: {\n ...merged.slack,\n enabled: current.slack.enabled,\n bot_token: current.slack.bot_token,\n app_token: current.slack.app_token,\n default_working_dir: current.slack.default_working_dir,\n default_channel: current.slack.default_channel,\n default_user: current.slack.default_user,\n },\n weixin: {\n ...merged.weixin,\n enabled: current.weixin.enabled,\n default_working_dir: current.weixin.default_working_dir,\n base_url: current.weixin.base_url,\n account_id: current.weixin.account_id,\n },\n };\n}\n\nexport function buildChannelsSavePayload(channels: ChannelsState): ChannelsSavePayload {\n const payload: ChannelsSavePayload = {\n telegram_enabled: channels.telegram.enabled ? \"true\" : \"false\",\n telegram_allowed_users: channels.telegram.allowed_users,\n telegram_default_working_dir: channels.telegram.default_working_dir,\n telegram_default_chat_id: channels.telegram.default_chat_id,\n slack_enabled: channels.slack.enabled ? \"true\" : \"false\",\n slack_default_working_dir: channels.slack.default_working_dir,\n slack_default_channel: channels.slack.default_channel,\n slack_default_user: channels.slack.default_user,\n weixin_enabled: channels.weixin.enabled ? \"true\" : \"false\",\n weixin_default_working_dir: channels.weixin.default_working_dir,\n weixin_base_url: channels.weixin.base_url,\n weixin_account_id: channels.weixin.account_id,\n };\n if (channels.telegram.bot_token.trim()) {\n payload.telegram_bot_token = channels.telegram.bot_token;\n }\n if (channels.slack.bot_token.trim()) {\n payload.slack_bot_token = channels.slack.bot_token;\n }\n if (channels.slack.app_token.trim()) {\n payload.slack_app_token = channels.slack.app_token;\n }\n return payload;\n}\n\nexport function isWeixinQrImageSource(value: string | null | undefined): boolean {\n const normalized = (value || \"\").trim();\n if (!normalized) return false;\n if (normalized.startsWith(\"data:image/\")) return true;\n if (/\\.(png|jpg|jpeg|gif|webp|svg)(\\?|#|$)/i.test(normalized)) return true;\n return false;\n}\n", "export const TRACE_EVENT_TYPES = new Set([\n \"tool_call\",\n \"tool_result\",\n \"command_execution\",\n \"file_change\",\n \"web_search\",\n]);\n\nconst THINKING_PREFIX = \"[thinking] \";\n\nexport interface TraceRow {\n label: string;\n value: string;\n}\n\nexport type TracePayload = Record<string, any>;\n\nexport interface TraceEventInput {\n id?: number;\n event_type?: string;\n type?: string;\n content?: string;\n timestamp?: string;\n}\n\nexport interface ExecutionStep {\n id: string;\n eventIds: number[];\n rawEventType: string;\n timestamp: string;\n rows: TraceRow[];\n detail: string;\n count: number;\n type: string;\n title: string;\n imageSrc?: string;\n number?: number;\n}\n\nfunction compact(rows: Array<TraceRow | null>): TraceRow[] {\n return rows.filter(Boolean) as TraceRow[];\n}\n\nfunction row(label: string, value: unknown): TraceRow | null {\n const formatted = formatTraceValue(value);\n return formatted === \"\" ? null : { label, value: formatted };\n}\n\nexport function parseTracePayload(content: string): TracePayload | null {\n try {\n const payload = JSON.parse(content);\n return payload && typeof payload === \"object\" && !Array.isArray(payload) ? payload : null;\n } catch {\n return null;\n }\n}\n\nexport function formatTraceValue(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"string\") return value;\n return JSON.stringify(value, null, 2);\n}\n\nexport function buildTraceRows(\n eventType: string,\n payload: TracePayload,\n rawContent = \"\",\n): TraceRow[] {\n if (eventType === \"tool_call\") {\n const name = payload.server\n ? `${payload.server}.${payload.name || payload.tool || \"unknown\"}`\n : payload.name || payload.tool || \"unknown\";\n return compact([\n row(\"Tool\", name),\n row(\"Input\", payload.input || payload.arguments),\n row(\"Result\", payload.result),\n row(\"Status\", payload.status),\n row(\"Error\", payload.error),\n ]);\n }\n\n if (eventType === \"tool_result\") {\n return compact([\n row(payload.is_error ? \"Tool Error\" : \"Tool Result\", payload.tool_use_id || \"result\"),\n row(\"Content\", payload.content),\n ]);\n }\n\n if (eventType === \"command_execution\") {\n return compact([\n row(\"Command\", payload.command),\n row(\"Output\", payload.output),\n row(\"Exit\", payload.exit_code),\n row(\"Status\", payload.status),\n ]);\n }\n\n if (eventType === \"file_change\") {\n const changes = Array.isArray(payload.changes)\n ? payload.changes\n .map((change: any) => {\n if (!change || typeof change !== \"object\") return formatTraceValue(change);\n const kind = change.kind || change.type || \"changed\";\n const path = change.path || change.file || \"\";\n return path ? `${kind}: ${path}` : kind;\n })\n .join(\"\\n\")\n : payload.changes;\n return compact([row(\"Changes\", changes), row(\"Status\", payload.status)]);\n }\n\n if (eventType === \"web_search\") {\n return compact([\n row(\"Query\", payload.query),\n row(\"Action\", payload.action),\n row(\"Status\", payload.status),\n ]);\n }\n\n return [{ label: eventType, value: rawContent }];\n}\n\nexport function buildExecutionSteps(events: TraceEventInput[] | null | undefined): ExecutionStep[] {\n const sortedEvents = [...(events || [])].sort(compareEventsChronologically);\n const steps: ExecutionStep[] = [];\n\n for (const event of sortedEvents) {\n const step = eventToStep(event);\n if (!step) continue;\n\n const previous = steps[steps.length - 1];\n if (canMergeSteps(previous, step)) {\n previous.detail = appendDetail(previous.detail, step.detail);\n previous.title = summarizeTitle(previous.detail) || previous.title;\n previous.eventIds.push(...step.eventIds);\n previous.count += step.count;\n previous.timestamp = step.timestamp;\n continue;\n }\n\n steps.push(step);\n }\n\n return steps.map((step, index) => ({\n ...step,\n number: index + 1,\n }));\n}\n\nfunction compareEventsChronologically(a: TraceEventInput, b: TraceEventInput): number {\n const timestampComparison = String(a.timestamp || \"\").localeCompare(String(b.timestamp || \"\"));\n if (timestampComparison !== 0) return timestampComparison;\n return Number(a.id || 0) - Number(b.id || 0);\n}\n\nfunction eventToStep(event: TraceEventInput): ExecutionStep | null {\n const eventType = event.event_type || event.type || \"unknown\";\n const content = event.content || \"\";\n const base = {\n id: event.id ? `event-${event.id}` : `${eventType}-${event.timestamp || \"\"}-${content.length}`,\n eventIds: event.id ? [event.id] : [],\n rawEventType: eventType,\n timestamp: event.timestamp || \"\",\n rows: [] as TraceRow[],\n detail: content,\n count: 1,\n };\n\n if (eventType === \"assistant\") {\n if (content.startsWith(THINKING_PREFIX)) {\n const detail = content.slice(THINKING_PREFIX.length);\n return {\n ...base,\n type: \"thinking\",\n title: summarizeTitle(detail) || \"Thinking\",\n detail,\n };\n }\n return {\n ...base,\n type: \"assistant\",\n title: summarizeTitle(content) || \"Assistant message\",\n };\n }\n\n if (eventType === \"user\") {\n return {\n ...base,\n type: \"user\",\n title: summarizeTitle(content) || \"User message\",\n };\n }\n\n if (eventType === \"result\") {\n return {\n ...base,\n type: \"result\",\n title: summarizeTitle(content, \"Result\") || \"Result\",\n };\n }\n\n if (eventType === \"error\") {\n return {\n ...base,\n type: \"error\",\n title: summarizeTitle(content, \"Error\") || \"Error\",\n };\n }\n\n if (eventType === \"image_content\") {\n const payload = parseTracePayload(content) || {};\n const mediaType = payload.media_type || \"image/jpeg\";\n const imageSrc = payload.data ? `data:${mediaType};base64,${payload.data}` : \"\";\n return {\n ...base,\n type: \"image_content\",\n title: \"Image output\",\n rows: compact([row(\"Media\", mediaType)]),\n detail: \"[image]\",\n imageSrc,\n };\n }\n\n if (eventType === \"generated_image\") {\n const payload = parseTracePayload(content) || { content };\n const imagePath = payload.path || payload.content || \"\";\n return {\n ...base,\n type: \"generated_image\",\n title: imagePath ? `Generated image: ${basename(imagePath)}` : \"Generated image\",\n rows: compact([row(\"Path\", imagePath), row(\"Media\", payload.media_type)]),\n detail: imagePath,\n };\n }\n\n if (!TRACE_EVENT_TYPES.has(eventType)) {\n return {\n ...base,\n type: \"event\",\n title: summarizeTitle(content, eventType) || eventType,\n };\n }\n\n const payload = parseTracePayload(content) || { content };\n const rows = buildTraceRows(eventType, payload, content);\n return {\n ...base,\n type: eventType,\n title: titleForTraceEvent(eventType, payload),\n rows,\n detail: rows.map((item) => `${item.label}: ${item.value}`).join(\"\\n\"),\n };\n}\n\nfunction titleForTraceEvent(eventType: string, payload: TracePayload): string {\n if (eventType === \"tool_call\") {\n const name = payload.server\n ? `${payload.server}.${payload.name || payload.tool || \"unknown\"}`\n : payload.name || payload.tool || \"unknown\";\n return `Call tool: ${name}`;\n }\n\n if (eventType === \"tool_result\") {\n const label = payload.is_error ? \"Tool error\" : \"Tool result\";\n return `${label}: ${payload.tool_use_id || \"result\"}`;\n }\n\n if (eventType === \"command_execution\") {\n return `Run command: ${payload.command || payload.content || \"command\"}`;\n }\n\n if (eventType === \"web_search\") {\n return `Search web: ${payload.query || payload.content || \"query\"}`;\n }\n\n if (eventType === \"file_change\") {\n const changes = Array.isArray(payload.changes) ? payload.changes : [];\n const firstPath = changes.find(\n (change: any) => change && typeof change === \"object\" && (change.path || change.file),\n );\n return firstPath ? `Change file: ${firstPath.path || firstPath.file}` : \"Change files\";\n }\n\n return eventType;\n}\n\nfunction canMergeSteps(previous: ExecutionStep | undefined, next: ExecutionStep): boolean {\n return Boolean(\n previous &&\n previous.type === next.type &&\n (next.type === \"thinking\" || next.type === \"assistant\") &&\n previous.rawEventType === next.rawEventType,\n );\n}\n\nfunction appendDetail(previous: string, next: string): string {\n if (!previous) return next || \"\";\n if (!next) return previous;\n if (\n previous.endsWith(\"\\n\") ||\n previous.endsWith(\" \") ||\n next.startsWith(\"\\n\") ||\n next.startsWith(\" \")\n ) {\n return previous + next;\n }\n return `${previous}\\n${next}`;\n}\n\nfunction summarizeTitle(text: unknown, prefix = \"\"): string {\n const normalized = String(text || \"\")\n .replace(/\\s+/g, \" \")\n .trim();\n if (!normalized) return prefix;\n const title = normalized.length > 120 ? `${normalized.slice(0, 117).trim()}...` : normalized;\n return prefix ? `${prefix}: ${title}` : title;\n}\n\nfunction basename(value: unknown): string {\n const parts = String(value || \"\")\n .split(/[\\\\/]/)\n .filter(Boolean);\n return parts[parts.length - 1] || String(value || \"\");\n}\n" ], - "mappings": "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AAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;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", - "debugId": "6D6D54C3905035A964756E2164756E21", + "mappings": "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AAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAI;AAAA,IAAK;AAAA,IAAK;AAAA,IACd;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IACf;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,IAChB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,IACjB;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;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", + "debugId": "4BA23EF813E45A2F64756E2164756E21", "names": [] } \ No newline at end of file diff --git a/taskboard-electron/.bun/renderer/index.html b/taskboard-electron/.bun/renderer/index.html index 8283b35..836522b 100644 --- a/taskboard-electron/.bun/renderer/index.html +++ b/taskboard-electron/.bun/renderer/index.html @@ -3,7 +3,9 @@ <head> <meta charset="UTF-8" /> <title>AgentForge - + + +
diff --git a/taskboard-electron/index.html b/taskboard-electron/index.html index 64156c1..7a341e2 100644 --- a/taskboard-electron/index.html +++ b/taskboard-electron/index.html @@ -4,6 +4,7 @@ AgentForge +
diff --git a/taskboard-electron/src/index.css b/taskboard-electron/src/index.css index 3a16b1c..c8bef8f 100644 --- a/taskboard-electron/src/index.css +++ b/taskboard-electron/src/index.css @@ -1,8 +1,55 @@ +html, +body, +#root { + width: 100%; + min-width: 0; + min-height: 100%; + margin: 0; +} + +html { + background: #0f1012; + color-scheme: dark light; +} + body { - font-family: - -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, - sans-serif; - margin: auto; - max-width: 38rem; - padding: 2rem; + overflow-x: hidden; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +* { + box-sizing: border-box; +} + +button, +input, +textarea, +select { + font: inherit; +} + +button { + user-select: none; +} + +img { + max-width: 100%; +} + +@media (max-width: 980px) { + .app-topbar { + flex-wrap: wrap; + } + + .app-toolbar { + width: 100%; + justify-content: flex-start; + overflow-x: auto; + padding-bottom: 2px; + } + + .board-grid { + grid-template-columns: minmax(300px, 1fr) !important; + } } diff --git a/taskboard-electron/src/renderer/App.tsx b/taskboard-electron/src/renderer/App.tsx index 950948f..7241852 100644 --- a/taskboard-electron/src/renderer/App.tsx +++ b/taskboard-electron/src/renderer/App.tsx @@ -1,18 +1,24 @@ import { useState, useEffect, useCallback, useRef, type CSSProperties } from "react"; import { CheckCircle2, + GitFork, HeartPulse, Inbox, KanbanSquare, MonitorCog, Moon, + Pause, + Pencil, Play, Plus, Radar, + RotateCcw, Search, Settings, Sparkles, + Square, Sun, + Trash2, type LucideIcon, } from "lucide-react"; import QRCode from "qrcode"; @@ -36,77 +42,75 @@ const API = "http://127.0.0.1:9712/api"; // โ”€โ”€โ”€ Theme โ”€โ”€โ”€ const THEMES: Record> = { dark: { - bg: "#0f1116", - surface: "rgba(28, 30, 36, 0.86)", - surfaceHover: "rgba(38, 41, 48, 0.92)", - panel: "rgba(22, 24, 29, 0.74)", - panelRaised: "rgba(34, 37, 44, 0.76)", - field: "rgba(12, 14, 18, 0.56)", - border: "rgba(235, 245, 255, 0.11)", - borderActive: "rgba(10, 132, 255, 0.46)", - text: "#f5f5f7", - textMuted: "#b3b8c2", - textDim: "#727783", - accent: "#0a84ff", - accentGlow: "rgba(10, 132, 255, 0.18)", - green: "#30d158", - greenBg: "rgba(48, 209, 88, 0.12)", - orange: "#ff9f0a", - orangeBg: "rgba(255, 159, 10, 0.13)", - red: "#ff453a", - redBg: "rgba(255, 69, 58, 0.13)", - blue: "#64d2ff", - blueBg: "rgba(100, 210, 255, 0.12)", - cyan: "#5e5ce6", - cyanBg: "rgba(94, 92, 230, 0.13)", - yellow: "#ffd60a", - headerBg: "rgba(20, 22, 27, 0.74)", - headerBorder: "rgba(235, 245, 255, 0.12)", - boardBg: - "radial-gradient(circle at 20% 0%, rgba(10,132,255,0.18), transparent 32%), radial-gradient(circle at 78% 12%, rgba(94,92,230,0.14), transparent 28%), linear-gradient(180deg, #12141a 0%, #0f1116 42%)", - columnBg: "rgba(24, 27, 33, 0.58)", - columnHeader: "#f5f5f7", - shadow: "0 24px 60px rgba(0, 0, 0, 0.38)", - shadowSoft: "0 10px 30px rgba(0, 0, 0, 0.24)", - brandStart: "#64d2ff", - brandEnd: "#5e5ce6", + bg: "#0d0e10", + surface: "#17181c", + surfaceHover: "#1c1d22", + panel: "#111216", + panelRaised: "#18191e", + field: "#101115", + border: "rgba(255, 255, 255, 0.085)", + borderActive: "rgba(94, 106, 210, 0.48)", + text: "#f4f4f5", + textMuted: "#a6a8b0", + textDim: "#70737c", + accent: "#5e6ad2", + accentGlow: "rgba(94, 106, 210, 0.18)", + green: "#4cb782", + greenBg: "rgba(76, 183, 130, 0.12)", + orange: "#d99a45", + orangeBg: "rgba(217, 154, 69, 0.13)", + red: "#e06c75", + redBg: "rgba(224, 108, 117, 0.13)", + blue: "#6aa6f8", + blueBg: "rgba(106, 166, 248, 0.12)", + cyan: "#64b5d9", + cyanBg: "rgba(100, 181, 217, 0.12)", + yellow: "#d8b84e", + headerBg: "rgba(13, 14, 16, 0.9)", + headerBorder: "rgba(255, 255, 255, 0.08)", + boardBg: "linear-gradient(180deg, #101114 0%, #0d0e10 48%, #0b0c0e 100%)", + columnBg: "rgba(18, 19, 23, 0.72)", + columnHeader: "#f4f4f5", + shadow: "0 22px 54px rgba(0, 0, 0, 0.34)", + shadowSoft: "0 10px 28px rgba(0, 0, 0, 0.2)", + brandStart: "#f2f3f5", + brandEnd: "#bfc4cf", brandInk: "#ffffff", }, light: { - bg: "#f5f5f7", - surface: "rgba(255, 255, 255, 0.88)", - surfaceHover: "rgba(255, 255, 255, 0.96)", - panel: "rgba(255, 255, 255, 0.62)", - panelRaised: "rgba(255, 255, 255, 0.82)", - field: "rgba(244, 246, 250, 0.86)", - border: "rgba(60, 60, 67, 0.14)", - borderActive: "rgba(0, 122, 255, 0.36)", - text: "#1d1d1f", - textMuted: "#6e6e73", - textDim: "#9a9aa1", - accent: "#007aff", - accentGlow: "rgba(0, 122, 255, 0.13)", - green: "#34c759", - greenBg: "rgba(52, 199, 89, 0.1)", - orange: "#ff9500", - orangeBg: "rgba(255, 149, 0, 0.11)", - red: "#ff3b30", - redBg: "rgba(255, 59, 48, 0.1)", - blue: "#007aff", - blueBg: "rgba(0, 122, 255, 0.1)", - cyan: "#5856d6", - cyanBg: "rgba(88, 86, 214, 0.1)", - yellow: "#ffcc00", - headerBg: "rgba(245, 245, 247, 0.72)", - headerBorder: "rgba(60, 60, 67, 0.12)", - boardBg: - "radial-gradient(circle at 18% 0%, rgba(0,122,255,0.14), transparent 34%), radial-gradient(circle at 82% 8%, rgba(88,86,214,0.11), transparent 30%), linear-gradient(180deg, #fbfbfd 0%, #f5f5f7 44%)", - columnBg: "rgba(255, 255, 255, 0.58)", - columnHeader: "#1d1d1f", - shadow: "0 18px 44px rgba(31, 35, 45, 0.12)", - shadowSoft: "0 8px 24px rgba(31, 35, 45, 0.09)", - brandStart: "#00c7ff", - brandEnd: "#5856d6", + bg: "#f7f8fa", + surface: "#ffffff", + surfaceHover: "#fafbfc", + panel: "#f1f2f5", + panelRaised: "#ffffff", + field: "#f3f4f7", + border: "rgba(31, 35, 40, 0.12)", + borderActive: "rgba(94, 106, 210, 0.44)", + text: "#1f2328", + textMuted: "#636a75", + textDim: "#8a919d", + accent: "#5e6ad2", + accentGlow: "rgba(94, 106, 210, 0.13)", + green: "#2f9f6a", + greenBg: "rgba(47, 159, 106, 0.1)", + orange: "#b97722", + orangeBg: "rgba(185, 119, 34, 0.11)", + red: "#d14d57", + redBg: "rgba(209, 77, 87, 0.1)", + blue: "#3978d8", + blueBg: "rgba(57, 120, 216, 0.1)", + cyan: "#2f8fb7", + cyanBg: "rgba(47, 143, 183, 0.1)", + yellow: "#a98b19", + headerBg: "rgba(247, 248, 250, 0.9)", + headerBorder: "rgba(31, 35, 40, 0.1)", + boardBg: "linear-gradient(180deg, #fbfbfc 0%, #f7f8fa 48%, #eef0f4 100%)", + columnBg: "rgba(255, 255, 255, 0.78)", + columnHeader: "#1f2328", + shadow: "0 18px 42px rgba(31, 35, 40, 0.12)", + shadowSoft: "0 8px 22px rgba(31, 35, 40, 0.08)", + brandStart: "#ffffff", + brandEnd: "#d9dde7", brandInk: "#ffffff", }, }; @@ -125,18 +129,17 @@ function clamp(value: number, min: number, max: number): number { function getStatusConfig() { return { - pending: { label: "Pending", color: theme.orange, bg: theme.orangeBg, icon: "โ—Œ" }, - scheduled: { label: "Scheduled", color: theme.cyan, bg: theme.cyanBg, icon: "โฑ" }, - running: { label: "Running", color: theme.blue, bg: theme.blueBg, icon: "โŸณ" }, - completed: { label: "Completed", color: theme.green, bg: theme.greenBg, icon: "โœ“" }, - failed: { label: "Failed", color: theme.red, bg: theme.redBg, icon: "โœ•" }, + pending: { label: "Pending", color: theme.orange, bg: theme.orangeBg }, + scheduled: { label: "Scheduled", color: theme.cyan, bg: theme.cyanBg }, + running: { label: "Running", color: theme.blue, bg: theme.blueBg }, + completed: { label: "Completed", color: theme.green, bg: theme.greenBg }, + failed: { label: "Failed", color: theme.red, bg: theme.redBg }, cancelled: { label: "Cancelled", color: theme.textMuted, bg: "rgba(107,107,138,0.08)", - icon: "โ—ป", }, - blocked: { label: "Blocked", color: theme.textMuted, bg: "rgba(107,107,138,0.1)", icon: "โŠ˜" }, + blocked: { label: "Blocked", color: theme.textMuted, bg: "rgba(107,107,138,0.1)" }, }; } @@ -793,6 +796,32 @@ async function csrfHeaders(extra = {}) { return { "Content-Type": "application/json", "X-CSRF-Token": token, ...extra }; } +async function fetchWithTimeout( + input: RequestInfo | URL, + timeoutMs: number, + init: RequestInit = {}, +) { + if (typeof AbortController === "undefined") { + let timeout = 0; + const timeoutPromise = new Promise((_, reject) => { + timeout = window.setTimeout(() => reject(new Error("Request timed out")), timeoutMs); + }); + try { + return await Promise.race([fetch(input, init), timeoutPromise]); + } finally { + window.clearTimeout(timeout); + } + } + + const controller = new AbortController(); + const timeout = window.setTimeout(() => controller.abort(), timeoutMs); + try { + return await fetch(input, { ...init, signal: controller.signal }); + } finally { + window.clearTimeout(timeout); + } +} + // โ”€โ”€โ”€ API helpers โ”€โ”€โ”€ async function fetchTasks() { const res = await fetch(`${API}/tasks`); @@ -1217,8 +1246,8 @@ function BrandMark({ size = 40 }) { borderRadius: 8, display: "grid", placeItems: "center", - background: `radial-gradient(circle at 30% 18%, rgba(255,255,255,0.92), transparent 22%), linear-gradient(135deg, ${theme.brandStart}, ${theme.brandEnd})`, - boxShadow: `0 14px 36px ${theme.accentGlow}`, + background: `linear-gradient(180deg, ${theme.brandStart}, ${theme.brandEnd})`, + border: `1px solid ${theme.border}`, position: "relative", overflow: "hidden", flexShrink: 0, @@ -1235,7 +1264,7 @@ function BrandMark({ size = 40 }) { position: "absolute", inset: 1, borderRadius: 7, - border: "1px solid rgba(255,255,255,0.22)", + border: "1px solid rgba(255,255,255,0.14)", pointerEvents: "none", }} /> @@ -1285,13 +1314,12 @@ function IconWell({ style={{ width: size, height: size, - borderRadius: 8, + borderRadius: 7, display: "grid", placeItems: "center", - background: active ? "rgba(255,255,255,0.18)" : background, - border: `1px solid ${active ? "rgba(255,255,255,0.32)" : theme.border}`, + background: active ? theme.accentGlow : background, + border: `1px solid ${active ? theme.borderActive : theme.border}`, color, - boxShadow: active ? "inset 0 1px 0 rgba(255,255,255,0.18)" : "none", flexShrink: 0, }} > @@ -1307,18 +1335,17 @@ function HeaderButton({ children, onClick, title, active = false }) { onClick={onClick} aria-label={title} style={{ - width: 34, - height: 34, - borderRadius: 8, + width: 32, + height: 32, + borderRadius: 6, border: `1px solid ${active ? theme.accent : theme.border}`, - background: active ? theme.accentGlow : theme.panelRaised, + background: active ? theme.accentGlow : theme.surface, color: active ? theme.accent : theme.textMuted, cursor: "pointer", fontSize: 15, display: "grid", placeItems: "center", - backdropFilter: "blur(22px)", - boxShadow: active ? `0 0 0 3px ${theme.accentGlow}` : "none", + boxShadow: active ? `0 0 0 2px ${theme.accentGlow}` : "none", transition: "background 0.15s ease, color 0.15s ease, border-color 0.15s ease", }} > @@ -1337,16 +1364,15 @@ function StatusPill({ connected, label, tone = theme.green, background = theme.g style={{ display: "inline-flex", alignItems: "center", - gap: 8, + gap: 7, color: activeTone, - background: activeBackground, - border: `1px solid ${connected ? activeTone : theme.red}`, - borderRadius: 8, - padding: "5px 10px", + background: connected ? background : activeBackground, + border: `1px solid ${connected ? `${activeTone}40` : `${theme.red}55`}`, + borderRadius: 999, + padding: "4px 9px", fontSize: 11, - fontWeight: 600, + fontWeight: 650, fontFamily: MONO_FONT_STACK, - boxShadow: connected ? `0 0 0 1px ${activeBackground}` : "none", }} > {connected ? label : "offline"} @@ -1368,21 +1393,19 @@ function MetricTile({ label, value, tone = theme.text }) { return (
-
{label}
+
{label}
- {cfg.icon} + ); @@ -1424,7 +1455,7 @@ function Tag({ children }) { padding: "3px 7px", borderRadius: 4, fontSize: 10, - fontWeight: 600, + fontWeight: 650, background: theme.field, color: theme.textMuted, border: `1px solid ${theme.border}`, @@ -1446,7 +1477,7 @@ function AgentBadge({ agent }) { padding: "3px 8px", borderRadius: 4, fontSize: 10, - fontWeight: 600, + fontWeight: 650, color: cfg.color, background: `${cfg.color}18`, border: `1px solid ${cfg.color}2f`, @@ -1474,9 +1505,116 @@ function AgentBadge({ agent }) { ); } +function uiField(overrides: CSSProperties = {}): CSSProperties { + return { + width: "100%", + padding: "9px 11px", + borderRadius: 6, + border: `1px solid ${theme.border}`, + background: theme.field, + color: theme.text, + fontSize: 13, + outline: "none", + boxSizing: "border-box", + fontFamily: APP_FONT_STACK, + transition: "border-color 0.15s ease, background 0.15s ease", + ...overrides, + }; +} + +function uiLabel(): CSSProperties { + return { + fontSize: 11, + fontWeight: 650, + color: theme.textMuted, + letterSpacing: 0, + marginBottom: 6, + display: "block", + }; +} + +function modalOverlay(): CSSProperties { + return { + position: "fixed", + inset: 0, + background: "rgba(0, 0, 0, 0.58)", + display: "flex", + alignItems: "center", + justifyContent: "center", + zIndex: 1000, + backdropFilter: "blur(6px)", + padding: 20, + }; +} + +function modalPanel(width: number, maxHeight = "84vh"): CSSProperties { + return { + background: theme.surface, + border: `1px solid ${theme.border}`, + borderRadius: 10, + padding: 24, + width, + maxWidth: "calc(100vw - 40px)", + maxHeight, + overflow: "auto", + boxShadow: theme.shadow, + }; +} + +function modalTitle(): CSSProperties { + return { + margin: "0 0 18px", + fontSize: 16, + fontWeight: 720, + color: theme.text, + fontFamily: DISPLAY_FONT_STACK, + }; +} + +function secondaryButton(): CSSProperties { + return { + padding: "8px 14px", + borderRadius: 6, + border: `1px solid ${theme.border}`, + background: theme.surface, + color: theme.textMuted, + cursor: "pointer", + fontSize: 13, + fontWeight: 650, + }; +} + +function primaryButton(): CSSProperties { + return { + padding: "8px 15px", + borderRadius: 6, + border: `1px solid ${theme.accent}`, + background: theme.accent, + color: theme.brandInk, + cursor: "pointer", + fontSize: 13, + fontWeight: 680, + }; +} + +function segmentedButton(active: boolean): CSSProperties { + return { + flex: 1, + padding: "7px 10px", + borderRadius: 6, + cursor: "pointer", + border: `1px solid ${active ? theme.borderActive : theme.border}`, + background: active ? theme.accentGlow : theme.surface, + color: active ? theme.text : theme.textMuted, + fontSize: 12, + fontWeight: 650, + minWidth: 96, + transition: "background 0.15s ease, border-color 0.15s ease, color 0.15s ease", + }; +} + function TaskCard({ task, onAction, onViewDetail }) { const [hovered, setHovered] = useState(false); - const cfg = getStatusConfig()[task.status] || getStatusConfig().pending; const tags = task.tags ? task.tags.split(",").filter(Boolean) : []; return ( @@ -1490,19 +1628,18 @@ function TaskCard({ task, onAction, onViewDetail }) { borderRadius: 8, cursor: "pointer", overflow: "hidden", - backdropFilter: "blur(26px)", - transition: "transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease", - transform: hovered ? "translateY(-2px)" : "none", - boxShadow: hovered ? theme.shadowSoft : "none", + transition: + "transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease", + transform: hovered ? "translateY(-1px)" : "none", + boxShadow: hovered ? "0 8px 24px rgba(0,0,0,0.14)" : "none", }} > -
-
e.stopPropagation()}> +
e.stopPropagation()} + > {["pending", "scheduled", "blocked"].includes(task.status) && ( onAction("edit", task.id)} color={theme.blue || theme.accent} @@ -1596,7 +1736,7 @@ function TaskCard({ task, onAction, onViewDetail }) { )} {["completed", "cancelled", "failed"].includes(task.status) && ( onAction("fork", task.id)} color={theme.cyan || theme.accent} @@ -1604,7 +1744,7 @@ function TaskCard({ task, onAction, onViewDetail }) { )} {task.status === "failed" && ( onAction("retry", task.id)} color={theme.orange} @@ -1612,14 +1752,14 @@ function TaskCard({ task, onAction, onViewDetail }) { )} {["pending", "scheduled", "running"].includes(task.status) && ( onAction("cancel", task.id)} color={theme.red} /> )} onAction("delete", task.id)} color={theme.textMuted} @@ -1654,7 +1794,7 @@ function TaskCard({ task, onAction, onViewDetail }) { ); } -function ActionBtn({ label, title, onClick, color }) { +function ActionBtn({ icon, title, onClick, color }) { const [hovered, setHovered] = useState(false); return ( ); } @@ -1694,9 +1832,8 @@ function Column({ col, tasks, onAction, onViewDetail }) { borderRadius: 8, border: `1px solid ${theme.border}`, background: theme.columnBg, - backdropFilter: "blur(28px)", - boxShadow: theme.shadowSoft, - padding: 12, + boxShadow: "none", + padding: 10, minHeight: 420, }} > @@ -1707,7 +1844,7 @@ function Column({ col, tasks, onAction, onViewDetail }) { justifyContent: "space-between", gap: 12, marginBottom: 12, - padding: "4px 2px 10px", + padding: "2px 2px 10px", borderBottom: `1px solid ${theme.border}`, }} > @@ -1723,7 +1860,7 @@ function Column({ col, tasks, onAction, onViewDetail }) {
Clear @@ -1811,27 +1948,8 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " const set = (k, v) => setForm((prev) => ({ ...prev, [k]: v })); - const inputStyle: CSSProperties = { - width: "100%", - padding: "10px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.text, - fontSize: 13, - outline: "none", - boxSizing: "border-box", - fontFamily: "'JetBrains Mono', 'SF Mono', monospace", - }; - const labelStyle = { - fontSize: 11, - fontWeight: 600, - color: theme.textMuted, - letterSpacing: 0.8, - textTransform: "uppercase", - marginBottom: 6, - display: "block", - }; + const inputStyle = uiField(); + const labelStyle = uiLabel(); const handleSubmit = () => { localStorage.setItem("agentforge_working_dir", form.working_dir); @@ -1848,41 +1966,12 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " return (
-
e.stopPropagation()} - style={{ - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 16, - padding: 32, - width: 640, - maxHeight: "84vh", - overflow: "auto", - boxShadow: "0 24px 80px rgba(0,0,0,0.5)", - }} - > -

- {mode === "edit" ? "Edit Heartbeat" : "New Heartbeat"} -

+
e.stopPropagation()} style={modalPanel(640)}> +

{mode === "edit" ? "Edit Heartbeat" : "New Heartbeat"}

@@ -1908,14 +1997,10 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " if (dir) set("working_dir", dir); }} style={{ - padding: "8px 14px", - borderRadius: 8, + ...secondaryButton(), + padding: "0 13px", + height: 37, cursor: "pointer", - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.textMuted, - fontSize: 12, - fontWeight: 600, whiteSpace: "nowrap", }} > @@ -1931,20 +2016,9 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " ))}
@@ -2031,35 +2105,10 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = "
- -
@@ -2071,9 +2120,9 @@ function HeartbeatModal({ onClose, onSubmit, initialData, defaultAgent, mode = " function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { const tags = []; if (heartbeat.schedule_type === "interval" && heartbeat.interval_seconds) - tags.push(`โŸณ ${heartbeat.interval_seconds}s`); + tags.push(`every ${heartbeat.interval_seconds}s`); if (heartbeat.schedule_type === "cron" && heartbeat.cron_expr) - tags.push(`โฒ ${heartbeat.cron_expr}`); + tags.push(`cron ${heartbeat.cron_expr}`); if (heartbeat.last_decision) tags.push(`Last: ${heartbeat.last_decision}`); return ( @@ -2082,10 +2131,10 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) { style={{ background: theme.surface, border: `1px solid ${theme.border}`, - borderRadius: 12, - padding: "16px 18px", + borderRadius: 8, + padding: "14px 15px", cursor: "pointer", - transition: "all 0.2s ease", + transition: "border-color 0.16s ease, background 0.16s ease", }} >
@@ -2093,9 +2142,9 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) {
@@ -2130,34 +2179,34 @@ function HeartbeatCard({ heartbeat, onAction, onViewDetail }) {
e.stopPropagation()}> onAction("run", heartbeat.id)} color={theme.orange} /> onAction("edit", heartbeat.id)} color={theme.blue} /> {heartbeat.enabled ? ( onAction("pause", heartbeat.id)} color={theme.textMuted} /> ) : ( onAction("resume", heartbeat.id)} color={theme.green} /> )} onAction("delete", heartbeat.id)} color={theme.red} @@ -2262,9 +2311,9 @@ function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) {
{heartbeat.name} @@ -2292,9 +2341,9 @@ function HeartbeatDetailPanel({ heartbeat, ticks, onClose }) { {heartbeat.schedule_type === "interval" ? ( - โŸณ {heartbeat.interval_seconds}s + every {heartbeat.interval_seconds}s ) : ( - โฒ {heartbeat.cron_expr} + cron {heartbeat.cron_expr} )} {heartbeat.last_decision && {heartbeat.last_decision}}
@@ -2633,66 +2682,18 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { onSubmit(data); }; - const inputStyle: CSSProperties = { - width: "100%", - padding: "10px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.text, - fontSize: 13, - outline: "none", - boxSizing: "border-box", - fontFamily: "'JetBrains Mono', 'SF Mono', monospace", - transition: "border-color 0.2s", - }; - - const labelStyle = { - fontSize: 11, - fontWeight: 600, - color: theme.textMuted, - letterSpacing: 0.8, - textTransform: "uppercase", - marginBottom: 6, - display: "block", - }; + const inputStyle = uiField(); + const labelStyle = uiLabel(); return (
-
e.stopPropagation()} - style={{ - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 16, - padding: 32, - width: 520, - maxHeight: "80vh", - overflow: "auto", - boxShadow: "0 24px 80px rgba(0,0,0,0.5)", - }} - > -

+
e.stopPropagation()} style={modalPanel(520, "82vh")}> +

{mode === "edit" ? "Edit Task" : mode === "fork" ? "Fork Task" : "New Task"}

@@ -2813,16 +2814,11 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { if (dir) set("working_dir", dir); }} style={{ - padding: "8px 14px", - borderRadius: 8, + ...secondaryButton(), + padding: "0 13px", + height: 37, cursor: "pointer", - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.textMuted, - fontSize: 12, - fontWeight: 600, whiteSpace: "nowrap", - transition: "all 0.15s", }} > Browse @@ -2838,28 +2834,15 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { ))}
@@ -3012,11 +2995,11 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) { padding: "5px 12px", borderRadius: 6, border: `1px dashed ${theme.border}`, - background: "transparent", + background: theme.surface, color: theme.textMuted, cursor: "pointer", fontSize: 11, - fontWeight: 600, + fontWeight: 650, }} > + Add dependency @@ -3050,35 +3033,10 @@ function NewTaskModal({ onClose, onSubmit, initialData, mode = "create" }) {

- -
@@ -3943,27 +3901,8 @@ function SettingsModal({ } }; - const fieldStyle: CSSProperties = { - width: "100%", - padding: "10px 14px", - borderRadius: 8, - border: `1px solid ${theme.border}`, - background: theme.bg, - color: theme.text, - fontSize: 13, - outline: "none", - boxSizing: "border-box", - fontFamily: "'JetBrains Mono', 'SF Mono', monospace", - }; - const labelStyle = { - fontSize: 11, - fontWeight: 600, - color: theme.textMuted, - letterSpacing: 0.8, - textTransform: "uppercase", - marginBottom: 8, - display: "block", - }; + const fieldStyle = uiField(); + const labelStyle = uiLabel(); const hintStyle = { fontSize: 10, color: theme.textDim, marginTop: 4 }; const tabs = ["general", "channels", "feishu"]; @@ -3972,50 +3911,23 @@ function SettingsModal({ return (
-
e.stopPropagation()} - style={{ - background: theme.surface, - border: `1px solid ${theme.border}`, - borderRadius: 16, - padding: 32, - width: 480, - maxHeight: "85vh", - overflowY: "auto", - boxShadow: "0 24px 80px rgba(0,0,0,0.5)", - }} - > -

- Settings -

+
e.stopPropagation()} style={modalPanel(520, "85vh")}> +

Settings

{/* Tab bar */}
{tabs.map((t) => ( @@ -4023,16 +3935,14 @@ function SettingsModal({ key={t} onClick={() => setTab(t)} style={{ - padding: "7px 16px", - borderRadius: "8px 8px 0 0", + padding: "7px 12px", + borderRadius: 5, border: "none", cursor: "pointer", fontSize: 12, - fontWeight: 600, - background: tab === t ? theme.bg : "transparent", + fontWeight: 650, + background: tab === t ? theme.surface : "transparent", color: tab === t ? theme.text : theme.textMuted, - borderBottom: tab === t ? `2px solid ${theme.accent}` : "2px solid transparent", - marginBottom: -1, }} > {tabLabel[t]} @@ -4130,35 +4040,10 @@ function SettingsModal({ )}
- -
@@ -5774,7 +5659,7 @@ function SkillsView({ ); return ( -
+
{ try { - const res = await fetch(`${API}/health`, { signal: AbortSignal.timeout(800) }); + const res = await fetchWithTimeout(`${API}/health`, 800); if (res.ok) { if (!cancelled) setBackendReady(true); return; @@ -6330,7 +6215,6 @@ export default function App() { minHeight: "100vh", background: theme.bg, backgroundImage: theme.boardBg, - backgroundSize: "100% 100%, 100% 100%, 100% 100%", color: theme.text, fontFamily: APP_FONT_STACK, }} @@ -6383,31 +6267,31 @@ export default function App() {
-
- +
+
AgentForge
-
+
Agent orchestration board
@@ -6439,15 +6323,15 @@ export default function App() { />
-
+
{[ @@ -6459,14 +6343,14 @@ export default function App() { key={tab.key} onClick={() => setActiveView(tab.key)} style={{ - padding: "7px 10px", - borderRadius: 6, + padding: "6px 9px", + borderRadius: 5, border: "none", - background: activeView === tab.key ? theme.accent : "transparent", - color: activeView === tab.key ? theme.brandInk : theme.textMuted, + background: activeView === tab.key ? theme.field : "transparent", + color: activeView === tab.key ? theme.text : theme.textMuted, cursor: "pointer", fontSize: 12, - fontWeight: 900, + fontWeight: 720, display: "flex", alignItems: "center", gap: 6, @@ -6484,11 +6368,11 @@ export default function App() { display: "flex", alignItems: "center", gap: 8, - padding: "0 10px", - height: 34, - borderRadius: 8, + padding: "0 9px", + height: 32, + borderRadius: 7, border: `1px solid ${theme.border}`, - background: theme.panelRaised, + background: theme.surface, }} > @@ -6538,19 +6422,18 @@ export default function App() { onClick={handleSweep} disabled={!!skillData.sweep?.running} style={{ - height: 34, - padding: "0 14px", - borderRadius: 8, + height: 32, + padding: "0 12px", + borderRadius: 6, border: `1px solid ${skillData.sweep?.running ? theme.border : theme.accent}`, - background: skillData.sweep?.running ? theme.border : theme.accent, + background: skillData.sweep?.running ? theme.field : theme.accent, color: skillData.sweep?.running ? theme.textMuted : theme.brandInk, cursor: skillData.sweep?.running ? "default" : "pointer", fontSize: 12, - fontWeight: 900, + fontWeight: 720, display: "flex", alignItems: "center", gap: 7, - boxShadow: skillData.sweep?.running ? "none" : `0 0 24px ${theme.accentGlow}`, transition: "transform 0.15s ease, box-shadow 0.15s ease", }} > @@ -6563,19 +6446,18 @@ export default function App() { activeView === "tasks" ? setShowNew(true) : setShowNewHeartbeat(true) } style={{ - height: 34, - padding: "0 14px", - borderRadius: 8, + height: 32, + padding: "0 12px", + borderRadius: 6, border: `1px solid ${theme.accent}`, background: theme.accent, color: theme.brandInk, cursor: "pointer", fontSize: 12, - fontWeight: 900, + fontWeight: 720, display: "flex", alignItems: "center", gap: 7, - boxShadow: `0 0 24px ${theme.accentGlow}`, transition: "transform 0.15s ease, box-shadow 0.15s ease", }} > @@ -6586,7 +6468,7 @@ export default function App() {
-
+
{activeSummary.metrics.map((metric) => (
@@ -6625,12 +6508,12 @@ export default function App() {
) : activeView === "heartbeats" ? ( -
+
{(filter