From b45da1bc6b951e5c161bac0d18a0f9fc39d41341 Mon Sep 17 00:00:00 2001 From: Gab Date: Sat, 28 Mar 2026 17:30:08 +1100 Subject: [PATCH] feat: tfcode --- packages/tfcode/src/agent/agent.ts | 5 ++++- packages/tfcode/src/cli/cmd/tui/app.tsx | 12 ------------ packages/tfcode/src/command/index.ts | 25 ++++++++++++++++++++++--- packages/tfcode/src/skill/index.ts | 5 ++++- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/packages/tfcode/src/agent/agent.ts b/packages/tfcode/src/agent/agent.ts index 91282d018..274042e05 100644 --- a/packages/tfcode/src/agent/agent.ts +++ b/packages/tfcode/src/agent/agent.ts @@ -316,7 +316,10 @@ export namespace Agent { const debugFile = (msg: string) => { const timestamp = new Date().toISOString() const line = `[${timestamp}] ${msg}\n` - Bun.write("/tmp/tfcode-debug.log", line).catch(() => {}) + try { + const fs = require("fs") + fs.appendFileSync("/tmp/tfcode-debug.log", line) + } catch {} } export async function loadTFPrompts(): Promise { diff --git a/packages/tfcode/src/cli/cmd/tui/app.tsx b/packages/tfcode/src/cli/cmd/tui/app.tsx index 65aba72e3..8d6ba134a 100644 --- a/packages/tfcode/src/cli/cmd/tui/app.tsx +++ b/packages/tfcode/src/cli/cmd/tui/app.tsx @@ -20,7 +20,6 @@ import { DialogHelp } from "./ui/dialog-help" import { DialogChangelog } from "./ui/dialog-changelog" import { CommandProvider, useCommandDialog } from "@tui/component/dialog-command" import { DialogAgent } from "@tui/component/dialog-agent" -import { DialogPrompts } from "@tui/component/dialog-prompts" import { DialogSessionList } from "@tui/component/dialog-session-list" import { DialogWorkspaceList } from "@tui/component/dialog-workspace-list" import { KeybindProvider } from "@tui/context/keybind" @@ -492,17 +491,6 @@ function App() { dialog.replace(() => ) }, }, - { - title: "Switch prompts", - value: "prompt.list", - category: "Agent", - slash: { - name: "prompts", - }, - onSelect: () => { - dialog.replace(() => ) - }, - }, { title: "Agent cycle", value: "agent.cycle", diff --git a/packages/tfcode/src/command/index.ts b/packages/tfcode/src/command/index.ts index 4ebd1e9ca..5ac12b18f 100644 --- a/packages/tfcode/src/command/index.ts +++ b/packages/tfcode/src/command/index.ts @@ -79,13 +79,18 @@ export namespace Command { const log = (msg: string) => { const timestamp = new Date().toISOString() const line = `[${timestamp}] ${msg}\n` - Bun.write("/tmp/tfcode-debug.log", line).catch(() => {}) + try { + const fs = require("fs") + fs.appendFileSync("/tmp/tfcode-debug.log", line) + } catch {} } const init = Effect.fn("Command.state")(function* (ctx) { const cfg = yield* Effect.promise(() => Config.get()) const commands: Record = {} + log(`[Command.init] Starting command initialization`) + commands[Default.INIT] = { name: Default.INIT, description: "create/update AGENTS.md", @@ -147,8 +152,14 @@ export namespace Command { } } - for (const skill of yield* Effect.promise(() => Skill.all())) { - if (commands[skill.name]) continue + const skills = yield* Effect.promise(() => Skill.all()) + log(`[Command.init] Skills loaded: ${skills.length} - ${skills.map((s) => s.name).join(", ")}`) + for (const skill of skills) { + if (commands[skill.name]) { + log(`[Command.init] Skipping skill ${skill.name} - already exists`) + continue + } + log(`[Command.init] Adding skill as command: ${skill.name}`) commands[skill.name] = { name: skill.name, description: skill.description, @@ -160,6 +171,14 @@ export namespace Command { } } + log(`[Command.init] Total commands: ${Object.keys(commands).length}`) + const promptsCmds = Object.values(commands).filter((c) => c.name.toLowerCase().includes("prompt")) + if (promptsCmds.length > 0) { + log( + `[Command.init] Commands with 'prompt' in name: ${promptsCmds.map((c) => `${c.name}(${c.source})`).join(", ")}`, + ) + } + return { commands, } diff --git a/packages/tfcode/src/skill/index.ts b/packages/tfcode/src/skill/index.ts index 7a18f6c83..ffe3fa95c 100644 --- a/packages/tfcode/src/skill/index.ts +++ b/packages/tfcode/src/skill/index.ts @@ -23,7 +23,10 @@ export namespace Skill { const debugFile = (msg: string) => { const timestamp = new Date().toISOString() const line = `[${timestamp}] ${msg}\n` - Bun.write("/tmp/tfcode-debug.log", line).catch(() => {}) + try { + const fs = require("fs") + fs.appendFileSync("/tmp/tfcode-debug.log", line) + } catch {} } const EXTERNAL_DIRS = [".claude", ".agents"] const EXTERNAL_SKILL_PATTERN = "skills/**/SKILL.md"