Commit Graph

291 Commits

Author SHA1 Message Date
Ollie Agent 19971be343 Support runtime backend switching via ctl 2026-08-19 20:06:20 +02:00
Levi Neely a7b8c4c2ce Add 'none' workflow option as the default (no-op on goal set)
- Workflow() no longer defaults to 'conductor' when empty
- runWorkflow() returns immediately for '' or 'none'
- 'none' listed first in the workflows file output
- QML dropdowns default to 'none' instead of 'conductor'
- C++ fallback uses 'none' when server unreachable
2026-08-19 18:09:09 +02:00
Levi Neely 9f1aec1384 Add session settings dialog (edit mode for NewSessionDialog)
- Add session-level cfg file (read: name/cwd/remote/workflow/variant/yolo;
  write: workflow, variant, cwd)
- Add readSessionConfig() and updateSessionConfig() to C++ client
- NewSessionDialog supports editMode: pre-populates fields from session cfg,
  title becomes 'Session Settings', button becomes 'Save'
- Name and Remote fields disabled in edit mode (non-reconfigurable)
- YOLO checkbox hidden in edit mode
- Only changed values are written back on save
- Add 'Settings...' to session context menu in SessionTree
- Wire sessionSettingsRequested signal through to dialog
2026-08-19 18:07:25 +02:00
Levi Neely 5fdd80c26c Implement workflow variants system
- runWorkflow accepts a variant parameter; sources {workflow}-{variant}.conf
  as env vars before exec'ing the script
- Session stores variant; persisted and restored
- session/new accepts variant= parameter
- 'run' ctl command accepts optional variant as second arg
- workflows file now lists variants: name<TAB>default,variant1,...
- review workflow reads AUTHOR_PROFILE/REVIEWER_PROFILE env vars
- Add review-code.conf and review-writing.conf example variants
2026-08-19 17:57:22 +02:00
Levi Neely 86b5039552 peers: clean up peer links when an agent is killed
RemoveAgent now iterates remaining agents and removes any peer link
pointing to the removed agent's name, preventing stale/corrupt state.
2026-08-19 17:23:27 +02:00
Levi Neely 7055444748 agent peers: bidirectional peer links with topology-controlled messaging
Add peer/ directory to each agent's 9P namespace. Agents communicate
by writing to peer/{name}, which delivers to the target's prompt handler.
Only declared peers can be messaged — the directory is the ACL.

Implementation:
- Agent struct: peers map + AddPeer/RemovePeer/Peers methods
- fs/spec.go: peer/ Each node (write-only entries), peeradd/peerdel/peers ctl commands
- Bidirectional: peeradd A on B also adds B on A
- Peers constrained to same session
- Persisted with session state (PersistedAgent.Peers field)
- peeradd/peerdel trigger immediate session save

Docs updated: system_prompt.md, AGENTS.md, README.md, architecture-9p.md,
architecture-core.md, architecture.md, usage.md.
2026-08-19 17:22:30 +02:00
Levi Neely fa99020667 tools: multicall binaries, sandbox fixes
- Multicall pattern for tool families: one binary per family with
  symlinks for each tool name. Reduces tools dir from 156MB to 31MB.
  codeintel (6 tools), filetools (5 tools), lsptools (7 tools).

- Build with -ldflags="-s -w" to strip debug symbols.

- Fix Landlock EINVAL on regular files: filter directory-only access
  rights (READ_DIR, MAKE_*, REMOVE_*) when adding rules for non-
  directory paths.

- Fix toolsrv CWD initialization: pass --cwd flag value to server
  state at startup so {CWD} in sandbox.yaml expands correctly.
2026-08-19 13:51:52 +02:00
Levi Neely b52643314b fix remote toolsrv spawn: use tools/ path and emit ready on stderr 2026-08-19 12:44:03 +02:00
Levi Neely b4baddd826 Memory tools: never expose raw memo commands to agents
- Add MEMO_TOOLS=1 env var to memo script; when set, all printed
  instructions reference native tool names instead of memo paths
- Set MEMO_TOOLS=1 in all memory tool .meta wrappers
- Add memory_nap tool for compressions
- Add memory_zoom tool for tree navigation
- Add part/T pagination args to memory_wake
- Update system prompt to use memory_zoom tool call
- Fix inject ctl: submit as user message when agent is idle
2026-08-19 10:13:02 +02:00
Levi Neely 9bb2e41e33 Add memory section to system prompt, fix icon resolution
- Add OptMem memory section to system_prompt.md with tool-based API
- Fix KRunner plugin icon: resolve via QStandardPaths instead of theme name
- Fix desktop file icon: use absolute path to bypass stale system icon
2026-08-19 10:02:51 +02:00
Levi Neely 04bef4978c fix tests 2026-08-19 08:50:36 +02:00
Ollie Agent af478550a9 Wake OptMem before restored session turns 2026-08-18 14:04:27 +02:00
Ollie Agent 223a8f1235 remove plumber references 2026-08-18 13:32:43 +02:00
Ollie Agent bf262cba16 manage namespace directory lifecycle 2026-08-18 13:31:52 +02:00
Ollie Agent 7acaebdaaa add generic sandbox interface 2026-08-18 13:22:52 +02:00
Ollie Agent 2ba9ba036c Document native Landlock and persist session yolo 2026-08-18 12:49:25 +02:00
Ollie Agent bdafc30022 replace landrun with native Landlock sandbox 2026-08-18 12:36:27 +02:00
Ollie Agent 45ad8c624e Synchronize toolsrv authentication state 2026-08-18 07:49:59 +02:00
Ollie Agent a8a6bb5204 Complete olliesrv fid synchronization 2026-08-18 07:47:46 +02:00
Ollie Agent cad1c6be9b Synchronize olliesrv fid read state 2026-08-18 07:45:02 +02:00
Ollie Agent 6c476f4fb8 Synchronize toolsrv fid state 2026-08-18 07:41:59 +02:00
Ollie Agent c111cbd0ca Stop persistent loop timers 2026-08-18 07:34:56 +02:00
Ollie Agent e24675b8fa Handle random generation errors 2026-08-18 07:31:52 +02:00
Ollie Agent 2ee9251b5a Clean up toolsrv startup socket failures 2026-08-18 07:29:34 +02:00
Ollie Agent 9bbb6b9152 Make toolsrv socket polling cancellable 2026-08-18 07:27:42 +02:00
Ollie Agent a9f4899ed3 Clean up toolsrv startup errors 2026-08-18 07:22:41 +02:00
Ollie Agent 1b934c43f4 Release empty registry agent state 2026-08-18 07:09:21 +02:00
Ollie Agent 6ef1fe52e0 Make process GC startup idempotent 2026-08-18 07:08:38 +02:00
Ollie Agent a1dc5b990e Bound toolsrv process completion notifications 2026-08-18 07:07:46 +02:00
Ollie Agent 4b86ad94ff Make bypass resolution atomic 2026-08-18 07:04:11 +02:00
Ollie Agent 1284a83b52 Discard cancelled bypass requests 2026-08-18 07:01:48 +02:00
Ollie Agent f41a580dad Tie event subscription to server context 2026-08-18 07:00:31 +02:00
Ollie Agent 7ec8583e06 Honor cancellation during compaction streams 2026-08-18 06:59:35 +02:00
Ollie Agent c6d9b4aa23 Bound agent prompt queues 2026-08-18 06:58:38 +02:00
Ollie Agent e01d578303 Bound agent chat and summary caches 2026-08-18 06:57:15 +02:00
Ollie Agent 6c1de81cf9 Bound agent result cache 2026-08-18 06:55:25 +02:00
Ollie Agent 062642dfd3 Bound parallel tool dispatch 2026-08-18 06:54:48 +02:00
Ollie Agent 6a8e897fa5 Bound asynchronous session work 2026-08-18 06:53:51 +02:00
Ollie Agent 6a4f83b5b2 Bound completed toolsrv process retention 2026-08-18 06:51:43 +02:00
Ollie Agent b6009f0f7a Reserve toolsrv process slots atomically 2026-08-18 06:50:02 +02:00
Ollie Agent 93e7f510b7 Prevent dismissing running processes 2026-08-18 06:45:23 +02:00
Ollie Agent d31d0661bd Drain remote toolsrv stderr until exit 2026-08-18 06:43:14 +02:00
Ollie Agent e24ed79355 Avoid keeper lock during process dialing 2026-08-18 06:41:34 +02:00
Ollie Agent 3c777667ff Fix paused session process lifecycle 2026-08-17 18:31:37 +02:00
Ollie Agent 701e9bcaad Prevent backend stream goroutine leaks 2026-08-17 18:27:35 +02:00
Ollie Agent 49e43248b0 Fix paused session resume lifecycle 2026-08-17 18:23:00 +02:00
Ollie Agent e1136fdb82 Cancel session context during close 2026-08-17 17:59:19 +02:00
Ollie Agent 16bf2115fa Cancel active agent work during shutdown 2026-08-17 17:57:14 +02:00
Ollie Agent 2599ccb4ac Clear stale agent actions on turn exit 2026-08-17 17:52:51 +02:00
Ollie Agent c5a8f18884 Close 9P fids during connection teardown 2026-08-17 17:51:08 +02:00