diff --git a/TUI/catalog.zig b/TUI/catalog.zig index 3ed02ab6..0e045055 100644 --- a/TUI/catalog.zig +++ b/TUI/catalog.zig @@ -31,6 +31,8 @@ pub const items = [_]Item{ .{ .name = "/plan", .desc = "Toggle plan mode" }, .{ .name = "/theme", .desc = "Switch color theme", .aliases = &.{"/t"} }, .{ .name = "/goal", .desc = "Set a standing objective" }, + .{ .name = "/schedule", .desc = "Fire a prompt later (30s/5m/2h)" }, + .{ .name = "/adapter", .desc = "Channel-worker send / inbox" }, .{ .name = "/thinking", .desc = "Show live reasoning" }, .{ .name = "/fast", .desc = "Priority service tier" }, .{ .name = "/ultracode", .desc = "Persistent workflow mode", .aliases = &.{"/ult"} }, @@ -41,6 +43,8 @@ pub const items = [_]Item{ .{ .name = "/jump", .desc = "Jump to a previous turn" }, .{ .name = "/copy", .desc = "Copy the last reply to the clipboard" }, .{ .name = "/btw", .desc = "Queue an aside without interrupting" }, + .{ .name = "/tell", .desc = "Message a running graff (/tell all broadcasts)" }, + .{ .name = "/peek", .desc = "See what a live session is doing" }, .{ .name = "/vim-mode", .desc = "Vim keys in the scrollback", .aliases = &.{"/vim"} }, .{ .name = "/help", .desc = "List commands" }, .{ .name = "/doctor", .desc = "Health check" }, @@ -99,6 +103,8 @@ test "filter: slash prefix and alias" { try std.testing.expect(lookup("/debug") != null); try std.testing.expect(lookup("/cache") != null); try std.testing.expect(lookup("/cost") != null); + try std.testing.expect(lookup("/tell") != null); + try std.testing.expect(lookup("/peek") != null); try std.testing.expect(lookup("/not-a-cmd") == null); } diff --git a/TUI/dispatch.zig b/TUI/dispatch.zig index 43754dd9..e7ddb2c2 100644 --- a/TUI/dispatch.zig +++ b/TUI/dispatch.zig @@ -7,6 +7,7 @@ const app = @import("app.zig"); const bgop = @import("bgop.zig"); const catalog = @import("catalog.zig"); const engine = @import("engine.zig"); +const peer_cmd = @import("peer_cmd.zig"); const meters = @import("meters.zig"); const theme_mod = @import("theme.zig"); const turn = @import("turn.zig"); @@ -188,6 +189,8 @@ pub fn runCommand(self: *Model, line: []const u8) Effect { self.pushFmt(.system, "vim scrollback: {s}", .{onOff(self.vim_mode)}) catch {}; } else if (std.mem.eql(u8, canon, "/copy")) { copyLastReply(self); + } else if (std.mem.eql(u8, canon, "/tell") or std.mem.eql(u8, canon, "/peek")) { + peer_cmd.run(self, canon, arg); } else if (std.mem.eql(u8, canon, "/btw")) { if (arg.len == 0) { self.push(.system, "usage: /btw