Skip to content

Commit d471f13

Browse files
Antigravity Agentclaude
andcommitted
feat(bridge): Add claude:<prompt> command to Perplexity Bridge (#102)
- perplexity_bridge.zig: claude: prefix → timeout 600 claude --print - tri-bridge-agent.sh: add "timeout 600 claude" to whitelist - help/error responses updated to list claude:<prompt> - Enables autonomous Claude Code control from Telegram via bridge Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 942e20a commit d471f13

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

deploy/tri-bridge-agent.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ ALLOWED_PREFIXES=(
4444
"tail "
4545
"PASS="
4646
"echo "
47+
"timeout 600 claude"
4748
)
4849

4950
validate_cmd() {

src/tri-api/perplexity_bridge.zig

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ pub const Bridge = struct {
277277
const ew = err_resp.writer(self.allocator);
278278
try ew.writeAll("{\"error\":\"unknown command\",\"cmd\":\"");
279279
try writeJsonEscaped(ew, decoded);
280-
try ew.writeAll("\",\"available\":[\"diag\",\"status\",\"build\",\"test\",\"issues\",\"log\",\"branch\",\"push\",\"commit\",\"tri-diag\",\"swarm run N\"]}");
280+
try ew.writeAll("\",\"available\":[\"diag\",\"status\",\"build\",\"test\",\"issues\",\"log\",\"branch\",\"push\",\"commit\",\"tri-diag\",\"swarm run N\",\"claude:<prompt>\"]}");
281281
try writeResponse(stream, "200", err_resp.items);
282282
return;
283283
};
@@ -514,7 +514,7 @@ pub const Bridge = struct {
514514
.{ "git log", "git log --oneline -20" },
515515
.{ "branch", "git branch --show-current" },
516516
.{ "tri-diag", "./zig-out/bin/tri diag 2>&1 || echo 'tri not available'" },
517-
.{ "help", "echo 'Commands: diag, status, build, test, issues, log, branch, push, commit, tri-diag, swarm run N'" },
517+
.{ "help", "echo 'Commands: diag, status, build, test, issues, log, branch, push, commit, tri-diag, swarm run N, claude:<prompt>'" },
518518
};
519519

520520
inline for (commands) |entry| {
@@ -530,6 +530,15 @@ pub const Bridge = struct {
530530
return try std.fmt.allocPrint(self.allocator, "./zig-out/bin/tri swarm run {s} 2>&1", .{num});
531531
}
532532

533+
// claude:<prompt> — pass to Claude Code CLI (timeout 600s)
534+
if (std.mem.startsWith(u8, cmd, "claude:")) {
535+
const prompt = cmd["claude:".len..];
536+
if (prompt.len == 0) return error.InvalidCommand;
537+
// Escape single quotes in prompt
538+
return try std.fmt.allocPrint(self.allocator,
539+
"timeout 600 claude --print '{s}' 2>&1 || echo 'CLAUDE_TIMEOUT'", .{prompt});
540+
}
541+
533542
return error.InvalidCommand;
534543
}
535544

0 commit comments

Comments
 (0)