NAME
Langertha::Raider::Session - Internal writer of one session journal, holding its lock
VERSION
version 0.504
SYNOPSIS
# Internal to Langertha-Raider -- no API promise.
# Made by Langertha::Raider::SessionStore->create / ->open.
my $run = $session->next_run; # 'r3' after two runs
$session->append('message', run => $run, role => 'user', content => 'hi');
say $session->id, ' ', $session->path;
$session->release; # or let it go out of scope
DESCRIPTION
Internal module. Its interface may change without notice.
The one writer of a session journal (ADR 0015). Constructing it takes an exclusive, non-blocking flock on <id>.lock next to the journal and fails at once with session ID is in use when another writer -- in this process or another -- holds it. The lock is held until "release" or until the object is destroyed.
On opening, the journal is read once ("journal"): numbering continues after its last seq and its last run, and when the last line was cut off (a crash mid-write) the next append starts on a fresh line.
id
The session id. Required.
path
The journal file, a Path::Tiny. Required; it must exist.
clock
Code reference returning epoch seconds for the time of an event. Defaults to "time" in Time::HiRes.
journal
The Langertha::Raider::Session::Journal as it was when the session was opened (read under the lock) -- what a resume replays.
lock_path
<id>.lock next to the journal.
is_open
True until "release".
next_run
my $run = $session->next_run; # 'r1', 'r2', ...
The id of the next run of this session, counting on from the runs already in the journal.
append
my $event = $session->append('tool.call', run => 'r1', call => 'c1', name => 'bash', ...);
Writes one event as one line and flushes it: the fields plus v (1), seq, time and type. Returns the event. Croaks cannot write FILE: ... when the line cannot be written; the next event then starts on a fresh line, so a partly written one damages only itself.
release
Closes the journal and gives up the lock. Appending afterwards croaks.
SEE ALSO
SUPPORT
Issues
Please report bugs and feature requests at https://github.com/Getty/langertha-raider/issues.
IRC
Join #langertha on irc.perl.org or message Getty directly.
CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
AUTHOR
Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/
COPYRIGHT AND LICENSE
This software is copyright (c) 2026 by Torsten Raudssus.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.