matrix harness: persistent room (MATRIX_ROOM env) — no more DM-per-run
Reuses the fixed room when MATRIX_ROOM is set; only creates a fresh DM when unset. All replies go to the pinned room. 👾 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta Code <noreply@letta.com>
This commit is contained in:
1 parent
da50dea0d1
commit
a6d4e29589
1 file changed
+15
-13
+15
-13
@@ -11,7 +11,7 @@ const std = @import("std");
|
||||
const matrix = @import("matrix.zig");
|
||||
const letta = @import("letta.zig");
|
||||
|
||||
fn envOr(name: [:0]const u8, default: []const u8) []const u8 {
|
||||
fn env_or(name: [:0]const u8, default: []const u8) []const u8 {
|
||||
if (std.c.getenv(name)) |v| {
|
||||
var len: usize = 0;
|
||||
while (v[len] != 0) len += 1;
|
||||
@@ -25,10 +25,10 @@ pub fn main(init: std.process.Init) !void {
|
||||
const io = init.io;
|
||||
letta.initConversationsDir();
|
||||
|
||||
const user = envOr("MATRIX_USER", "@chaos-prime:chaosmith.systems");
|
||||
const password = envOr("MATRIX_PASSWORD", "");
|
||||
const peer = envOr("MATRIX_PEER", "@pierre:chaosmith.systems");
|
||||
const agent = envOr("LETTA_MATRIX_AGENT", "agent-local-273c95cf-82a0-4711-bcd5-6139661e8488");
|
||||
const user = env_or("MATRIX_USER", "@chaos-prime:chaosmith.systems");
|
||||
const password = env_or("MATRIX_PASSWORD", "");
|
||||
const peer = env_or("MATRIX_PEER", "@pierre:chaosmith.systems");
|
||||
const agent = env_or("LETTA_MATRIX_AGENT", "agent-local-273c95cf-82a0-4711-bcd5-6139661e8488");
|
||||
|
||||
if (password.len == 0) {
|
||||
std.debug.print("matrix_harness: MATRIX_PASSWORD not set\n", .{});
|
||||
@@ -44,16 +44,18 @@ pub fn main(init: std.process.Init) !void {
|
||||
defer alloc.free(session.user_id);
|
||||
std.debug.print("matrix_harness: logged in ({s})\n", .{session.user_id});
|
||||
|
||||
// Create (or reuse) the DM. For scaffold simplicity we create fresh each
|
||||
// run — Element dedupes DMs and the invite lands in Pierre's inbox.
|
||||
const room = matrix.createDirect(alloc, io, session.token, peer) catch |e| {
|
||||
// Single persistent room: MATRIX_ROOM env if set (reuse!); only create
|
||||
// a fresh DM when it's unset. All replies go to this one room.
|
||||
const room: []const u8 = env_or("MATRIX_ROOM", "");
|
||||
const owned_room: ?[]u8 = if (room.len > 0) null else matrix.createDirect(alloc, io, session.token, peer) catch |e| {
|
||||
std.debug.print("matrix_harness: createDirect failed: {s}\n", .{@errorName(e)});
|
||||
return e;
|
||||
};
|
||||
defer alloc.free(room);
|
||||
std.debug.print("matrix_harness: DM room {s}\n", .{room});
|
||||
const room_id: []const u8 = owned_room orelse room;
|
||||
defer if (owned_room) |r| alloc.free(r);
|
||||
std.debug.print("matrix_harness: room {s}\n", .{room_id});
|
||||
|
||||
_ = try matrix.sendText(alloc, io, session.token, room, "matrix_harness online. Talk to me — messages go to the agent, replies come back here.");
|
||||
_ = try matrix.sendText(alloc, io, session.token, room_id, "matrix_harness online in persistent room. Messages reach the agent, replies come back here.");
|
||||
|
||||
// Establish a sync point (drop history before now).
|
||||
const first = try matrix.sync(alloc, io, session.token, "", 0);
|
||||
@@ -87,13 +89,13 @@ pub fn main(init: std.process.Init) !void {
|
||||
const reply = letta.infer(io, alloc, agent, ev.body) catch |e| {
|
||||
std.debug.print("matrix_harness: letta failed: {s}\n", .{@errorName(e)});
|
||||
const err_txt = "agent failed — see harness logs";
|
||||
if (matrix.sendText(alloc, io, session.token, room, err_txt)) |ev_id| alloc.free(ev_id) else |_| {}
|
||||
if (matrix.sendText(alloc, io, session.token, room_id, err_txt)) |ev_id| alloc.free(ev_id) else |_| {}
|
||||
continue;
|
||||
};
|
||||
defer alloc.free(reply);
|
||||
|
||||
std.debug.print("matrix_harness: reply: {s}\n", .{reply});
|
||||
if (matrix.sendText(alloc, io, session.token, room, reply)) |ev_id| alloc.free(ev_id) else |e| {
|
||||
if (matrix.sendText(alloc, io, session.token, room_id, reply)) |ev_id| alloc.free(ev_id) else |e| {
|
||||
std.debug.print("matrix_harness: send failed: {s}\n", .{@errorName(e)});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user