Centralized utilities and shared abstractions used across the oh-my-opencode-slim plugin. This folder provides:
BackgroundJobBoard (background-job-board.ts): Singleton registry and lifecycle manager for background tasks spawned by sub-agents. Implements a reusable session pool pattern with automatic cleanup and reconciliation hooks. Tracks task state (running, completed, error, cancelled), maintains context files, and provides prompt-ready summaries for agent coordination.
Logger (logger.ts): File-based logging with 7-day retention, automatic directory creation, and write queuing. Logs are written to ~/.local/share/opencode/log/oh-my-opencode-slim.<sessionId>.log and cleaned up on initialization.
Session Utilities (session.ts): Timeout handling, session abort coordination, model reference parsing, and session content extraction. Provides promptWithTimeout and extractSessionResult for safe session operations.
Task Utilities (task.ts): XML-inspired task output parsing for extracting task IDs, states, and results from tool output strings. Used for resumption and status tracking.
Type Guards (guards.ts): Simple type checking utilities (isRecord) for runtime validation.
Environment Utilities (env.ts): Environment variable parsing and plugin disable flag checking.
Internal Initiator (internal-initiator.ts): Marker system for identifying internally-initiated agent messages to prevent infinite loops.
System Collapse (system-collapse.ts): Utility for collapsing multiple system messages into a single entry by joining with double-newlines.
~/.local/share/opencode/log/oh-my-opencode-slim.<sessionId>.logpromptWithTimeout() to send prompts with configurable timeoutextractSessionResult() which collects all assistant message textCouncil Agents (src/agents/council.ts, src/agents/council-agents.ts):
Multiplexer (src/multiplexer/):
Agents (src/agents/):
Main Plugin (src/index.ts):
src/utils/index.tsfs, fs/promises, os, path for logging and file operationssrc/utils/index.ts re-exports all utilities, providing a single entry point:
export * from './background-job-board';
export * from './internal-initiator';
export { getLogDir, initLogger, log } from './logger';
export * from './session';
export * from './task';
This allows consumers to import from src/utils rather than individual files.
| File | Purpose |
|---|---|
index.ts |
Public API re-exporting all utilities |
background-job-board.ts |
Background task registry and lifecycle manager |
env.ts |
Environment variable utilities |
guards.ts |
Type guard utilities |
internal-initiator.ts |
Internal agent message marker system |
logger.ts |
File-based logging with rotation |
session.ts |
Session timeout, abort, and extraction utilities |
system-collapse.ts |
System message collapsing utility |
task.ts |
Task output parsing utilities |