Commit Graph

87 Commits

Author SHA1 Message Date
Ollie Agent c7aea0db59 rename elevate→bypass throughout
The sandbox escape mechanism is a bypass, not privilege elevation.
The old name caused the agent to confuse it with sudo.

- elevate/ → bypass/ (package, types, tests)
- elevate_notify.go → bypass_notify.go
- Namespace: /elevate → /bypass, session/*/elevate → session/*/bypass
- Tool arg: "elevated" → "bypass"
- Env: OLLIE_ELEVATE_SOCKET → OLLIE_BYPASS_SOCKET
- File: elevate-policy.yaml → bypass-policy.yaml
- All docs, prompts, and scripts updated
2026-08-09 02:22:39 +02:00
Ollie Agent d1907adfae o script: audit cleanup
- Merge readloop into read -l (loop mode)
- Remove chatstream command (TUI uses 'o read chat' directly)
- Rework ctl: o ctl <cmd> [session] [agent] — dispatches to
  session ctl for kill/pause/resume, agent ctl for the rest
- Add trap EXIT to kill background statewait loop (fixes zombie)
- Remove -1 compatibility flag from generate
- Remove no-op bracketed paste bind from prompt REPL
- Fix /i help text: 'inject prompt (mid-turn or queued)'
- Update all help text to reflect current commands
2026-08-09 02:15:48 +02:00
Ollie Agent 49c93eab5f remove usage_log.go (write-only telemetry), clean AGENT_FILES
- Delete agent/usage_log.go — wrote JSONL to disk but nothing read it
- Remove appendUsageLog call from turn.go
- Remove dead 'offset' from AGENT_FILES tab-completion list
- TUI: grep markers+fences from o log (single read, not streaming)
2026-08-09 02:03:51 +02:00
Ollie Agent 72db6d900d fs: namespace cleanup — merge and remove dead files
- fifo.in + fifo.out → single fifo (write enqueues, read dequeues)
- cost + usage + ctxsz → single stats (key=value lines)
- Remove connection (no consumers, heartbeat handles it)
- Remove dead prevPrompt field and write (prompt.prev gone from spec)
- Clean AGENT_FILES: remove state, context, tail (all already absent
  from spec, were only in the tab-completion list)
2026-08-09 01:57:41 +02:00
Ollie Agent 744f775eb5 fs: split chat into chat (filtered text) and chat.raw (full markup)
chat — strips [[[...]]] markers and source fences at the byte level.
Partial lines pass through immediately for true streaming. Terminals
and text editors use this.

chat.raw — full block-structured stream with markers and fences.
GUIs that parse blocks (KDE, web) use this.

The TUI no longer pipes through grep (which was line-buffering and
killing char-by-char streaming since Aug 4).

The stripMarkers state machine processes each chunk from the server:
- Complete lines starting with [[[ and ending with ]]] → dropped
- Fence lines (```...) → dropped (open toggles in-fence state)
- Partial lines (no trailing \n) → always emitted immediately
- Everything else → passed through
2026-08-09 01:43:39 +02:00
Ollie Agent 2c5444e902 o: /agent with no args shows current agent profile 2026-08-08 23:07:54 +02:00
Ollie Agent b5404fff87 o: /cwd with no args shows current working directory 2026-08-08 23:07:26 +02:00
Ollie Agent cf1866d646 o: /model and /backend with no args show current value 2026-08-08 23:04:33 +02:00
Ollie Agent 79afb09f3d o: fix /i command — was sending double-slash to prompt
$line still had the leading / from input, so echo "/$line" sent
//i ... to the agent. Use $cmd (which has the / stripped) instead.
2026-08-08 23:00:59 +02:00
Ollie Agent d596c31606 backend: move default backend selection to backends.conf
backends.conf now supports a top-level 'backend = name' line that
selects the default backend for new sessions. Lookup order:

  1. backends.conf 'backend = ...'
  2. OLLIE_BACKEND env var (fallback)
  3. session-level backend= parameter (override)

No env file needed for backend/model config anymore.
2026-08-08 22:57:37 +02:00
Ollie Agent c9df895445 data: add model field to copilot/kiro in sample backends.conf 2026-08-08 22:55:00 +02:00
Ollie Agent 2c26a7fb9c backend: add backends.conf for per-backend configuration
Each backend is now configured via ~/.config/ollie/backends.conf:

    [openrouter]
    key = sk-or-v1-...
    model = qwen/qwen3-235b-a22b

    [anthropic]
    key = sk-ant-...

Each backend knows its own default URL (openrouter → openrouter.ai/api,
anthropic → api.anthropic.com, etc). Only key and optional model needed.

Env vars (OLLIE_OPENAI_KEY, OLLIE_ANTHROPIC_KEY, etc) still work as
fallback for backward compatibility, but backends.conf is the canonical
config path going forward.

- Delete openAIName() (URL no longer determines backend identity)
- Delete geminiKey() (config handles fallback)
- Install template with mode 600 (contains API keys)
- Only install template if user hasn't created their own
2026-08-08 16:25:47 +02:00
Levi Neely 07ec63704e o prompt: drop readline for paste support
Switch from 'read -e' to plain 'read' so multi-line paste can be
captured. Readline was consuming pasted lines individually.
Increase drain timeout to 100ms.
2026-08-07 17:46:35 +02:00
Levi Neely 189ec65aae o prompt: buffer multi-line paste input
Drains additional lines within 50ms of the first line to capture
multi-line pastes in the TUI prompt.
2026-08-07 17:44:05 +02:00
Levi Neely 8397f1aa74 o: add log command, rename tail to chatstream
- Add 'o log [-n N]' to read last N lines from agent log (default 1000)
- Rename 'o tail' to 'o chatstream' for clarity
- Update TUI to show log history before streaming chat
2026-08-07 17:34:33 +02:00
Levi Neely e84b4ffef7 feat: add resetsCounter tool property to reset step budget on active progress
Tools like file_write, file_edit, and shell now reset the agent's step
counter when called successfully. This allows the agent to continue
working without hitting the soft step-budget guardrail as long as it's
making active progress (writing files, running commands) rather than
looping on research/reading.

Changes:
- Add ResetsCounter bool to ToolInfo and MetaFile structs
- Parse resetsCounter from .meta JSON files
- Reset step counter in agent loop when ResetsCounter tool succeeds
- Add resetsCounter: true to file_write, file_edit, shell
- Reduce maxSteps from 50 to 25 (resetsCounter makes this safe)
2026-08-07 17:13:14 +02:00
Ollie Agent 84b8b03dad agent: replace hardcoded model maps with models.yaml config
- Remove defaultCompactionModels map from compaction.go
- Add agent/models.go: load ~/.config/ollie/models.yaml for all backend/model settings
- Completion (Complete()) falls back to models.yaml completion section when env vars unset
- Compaction falls back to models.yaml compaction section per-backend
- Add data/configs/models.yaml.sample as reference config
- Priority chain: agent config > OLLIE_*_MODEL env > models.yaml > session model
2026-08-07 07:24:43 +02:00
Ollie Agent 06b287b8f2 remove hooks blocks and beads/freeloader refs from all agent JSON configs
- Remove "hooks" blocks from all 8 agent JSON files (copilot, default, driver, explorer, librarian, navigator, taskmanager, theo)
- Remove beads shell one-liner from prompt arrays in default.json and driver.json
- Hooks mechanism is dead code; these empty blocks are just noise
2026-08-07 07:15:04 +02:00
Ollie Agent d80a87eb86 clean up OLLIE_* env vars: replace with XDG conventions
- Remove all OLLIE_*_PATH vars (TOOLS_PATH, CFG_PATH, DATA_PATH, etc.)
  Use XDG_CONFIG_HOME/ollie/* and XDG_DATA_HOME/ollie/* instead
- Replace OLLIE_<TAG>_LOG per-component logging with single OLLIE_LOG={level}
- Replace OLLIE_USAGE_LOG with XDG_DATA_HOME-based path
- Replace OLLIE_OLLAMA_URL with standard OLLAMA_HOST (or omit entirely)
- Rename protocol markers: OLLIE_LISTEN_READY → ListenReady, OLLIE_9P_OPEN → Open
- Remove freeloader hooks from agent configs
- Update sandbox YAMLs to use XDG paths instead of OLLIE_*_PATH tokens
- Update shell tools to use $(dirname "$0") fallback instead of OLLIE_TOOLS_PATH
- Update docs and prompts accordingly
2026-08-07 07:11:53 +02:00
Levi Neely 54c6bc3ed2 update kde submodule pointer; whitespace cleanup in data/scripts/o 2026-08-06 14:06:14 +02:00
Ollie Agent fc0c368e91 Good idea fairy cleanup: ~960 lines removed
Phase 1:
- agent/hooks.go (entire hooks engine, 237 lines)
- backend/noop.go (unused test backend)
- backend/oneshot.go: Route/RouteRequest/RouteResult + /route 9P file
- cmd/ollie-9p/mount/ (FUSE mount, 336 lines)
- toolsrv/schema.go (ParseToolInfo, zero callers)
- toolsrv/discover.go: ToolPrompt/ReadTool (zero callers)
- agent/commands.go: CompactionSnapshot + history.go: PreCompactionSnapshot
- data/tools/route.meta + justfile route install

Phase 2:
- detach/process.go: stripped Signal(), Cmd field, unused imports
- SignalDetached reimplemented with syscall.Kill directly

24 files changed, 19 insertions, ~980 deletions
2026-08-05 21:51:55 +02:00
Ollie Agent 4ebcdf24b9 Remove dead data/tools/route (replaced by 9P /route file) 2026-08-05 19:45:58 +02:00
Ollie Agent 38efa3c985 Remove stale data/prompts/system_prompt.md (not embedded, not installed) 2026-08-05 19:41:52 +02:00
Ollie Agent 5584a24efb Remove tool_active/skill_active references from system prompts and core.md 2026-08-05 19:40:21 +02:00
Ollie Agent 2e14d2e93b Add o complete and o route subcommands, update table 2026-08-05 19:20:52 +02:00
Levi Neely 9e07821c26 shell: always print exit code, even on success
Ensures tool output is never blank - at minimum shows 'exit: 0'.
2026-08-05 08:25:41 +02:00
Levi Neely 1766b7c2bb remove unused session-9p.md prompt file
Not referenced by any agent config or code - dead file.
2026-08-05 08:21:33 +02:00
Levi Neely cee5e9fefe remove D-Bus session management, 9P is the only control plane
- Remove OperationalModel function and OpModel prompt layer (dead code)
- Update session-9p.md: remove D-Bus preference mention
- Update desktop file: remove X-DBUS-* entries
- Update systemd service: remove dbus.service dependency
- Rewrite route, process_output, process_signal tools to use 9P

D-Bus is still used for:
- Desktop notifications (org.freedesktop.Notifications) for elevation prompts
- KDE tools (gui_windows, etc.) talking to KWin - not ollie's D-Bus
2026-08-05 08:20:04 +02:00
Ollie Agent 3349b610ec remove remaining Reactions references from data/prompts and history.go 2026-08-04 20:22:58 +02:00
Ollie Agent 5ab073ebdb fix resolve_context unbound variable when no args 2026-08-04 19:54:48 +02:00
Ollie Agent 0694f47376 o: add trailing session/agent args to prompt, tail, stop, kill, ctl 2026-08-04 19:45:17 +02:00
Ollie Agent f1611fb50b o tui: clear prompt pane before entering REPL 2026-08-04 19:41:14 +02:00
Ollie Agent a5510a7a2b o tui: accept [session] [agent] positional args 2026-08-04 19:40:39 +02:00
Ollie Agent 1a2ad14f6b docs: replace all session/{id} and {sid} with {sname} 2026-08-04 19:30:57 +02:00
Ollie Agent 3a8e3f3c63 o prompt: add /i and /info to inspect agent state 2026-08-04 19:29:57 +02:00
Ollie Agent b939bd4c6b docs: replace all {aid} with {aname} 2026-08-04 19:29:34 +02:00
Ollie Agent 3f69427084 docs: standardize on {sname} and {aname} placeholder syntax 2026-08-04 19:29:00 +02:00
Ollie Agent 0f8cfd0c14 docs: replace agent/0 with agent/{aname} in path templates 2026-08-04 19:26:22 +02:00
Ollie Agent 8ffbf3b699 o prompt: use . as send trigger, empty lines add newlines 2026-08-04 18:56:47 +02:00
Ollie Agent 19a96ab2de o prompt: fix readline line editing with ANSI prompt
Wrap bold escape sequences in \001/\002 markers so readline
correctly tracks cursor position. Fixes Ctrl+U, Ctrl+W, and
other readline kill commands after typing several characters.
2026-08-04 18:56:19 +02:00
Ollie Agent e375126adf o tui: clear chat pane before tail 2026-08-04 18:54:16 +02:00
Ollie Agent cd18539280 o tui: add /quit and /q slash commands 2026-08-04 18:53:01 +02:00
Ollie Agent 0923633624 o tui: remove shell pane, replace state pane with tmux status bar 2026-08-04 18:52:01 +02:00
Levi Neely 0f29757dac o: add generate command for one-shot prompts
Uses /generate 9P file - no session/agent context needed.
Example: o generate 'explain monads'
2026-08-04 17:25:17 +02:00
Levi Neely 59fb7d5561 o tui: use percentage-based layout instead of fixed sizes
- Right column: 25% width
- State/shell: 50/50 split
- Prompt: 20% height
- Adapts to terminal size
2026-08-04 17:09:53 +02:00
Levi Neely 77d589f98b o tui: filter out [[[...]]] block markers from chat stream 2026-08-04 17:05:52 +02:00
Levi Neely abdc91d097 remove mount/ package references and ollie-watchdog
- mount/ package no longer exists, remove from build/test rules
- remove ollie-watchdog script (unused)
- keep ollie-remount (still needed for FUSE recovery)
2026-08-04 16:58:44 +02:00
Levi Neely 05517c384a o: simplify path resolution, remove auto-session/agent
- Remove auto-resolution of session/agent (was slow, unexpected)
- Path classification determines required context level immediately
- Errors are fast and actionable with clear fix instructions
- Root-level paths work without any context
- o env now just prints export statements without requiring context
2026-08-04 16:57:01 +02:00
Levi Neely 7189a9fc24 scripts: add 'o write' subcommand 2026-08-03 12:48:08 +02:00
Levi Neely 8bb4246cde prompts: document tool discovery in session-9p.md
- Global catalog: read /tools
- Loaded tools: read agent/tools
- Load a tool: write tool name to agent/tools
- Added tools to agent directory file table
2026-08-03 11:26:37 +02:00