🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance
2.4 KiB
2.4 KiB
src/plugin/ — 8 OpenCode Hook Handlers + Hook Composition
Generated: 2026-02-18
OVERVIEW
Core glue layer. 20 source files assembling the 8 OpenCode hook handlers and composing 44 hooks into the PluginInterface. Every handler file corresponds to one OpenCode hook type.
HANDLER FILES
| File | OpenCode Hook | Purpose |
|---|---|---|
chat-message.ts |
chat.message |
First-message variant, session setup, keyword detection |
chat-params.ts |
chat.params |
Anthropic effort level, think mode |
event.ts |
event |
Session lifecycle (created, deleted, idle, error) |
tool-execute-before.ts |
tool.execute.before |
Pre-tool guards (file guard, label truncator, rules injector) |
tool-execute-after.ts |
tool.execute.after |
Post-tool hooks (output truncation, comment checker, metadata) |
messages-transform.ts |
experimental.chat.messages.transform |
Context injection, thinking block validation |
tool-registry.ts |
tool |
26 tools assembled from factories |
skill-context.ts |
— | Skill/browser/category context for tool creation |
HOOK COMPOSITION (hooks/ subdir)
| File | Tier | Count |
|---|---|---|
create-session-hooks.ts |
Session | 22 |
create-tool-guard-hooks.ts |
Tool Guard | 9 |
create-transform-hooks.ts |
Transform | 4 |
create-continuation-hooks.ts |
Continuation | 7 |
create-skill-hooks.ts |
Skill | 2 |
create-core-hooks.ts |
Aggregator | Session + Guard + Transform = 35 |
SUPPORT FILES
| File | Purpose |
|---|---|
available-categories.ts |
Build AvailableCategory[] for agent prompt injection |
session-agent-resolver.ts |
Resolve which agent owns a session |
session-status-normalizer.ts |
Normalize session status across OpenCode versions |
recent-synthetic-idles.ts |
Dedup rapid idle events |
unstable-agent-babysitter.ts |
Track unstable agent behavior across sessions |
types.ts |
PluginContext, PluginInterface, ToolsRecord, TmuxConfig |
KEY PATTERNS
- Each handler exports a function receiving
(hookRecord, ctx, pluginConfig, managers)→ returns OpenCode hook function - Handlers iterate over hook records, calling each hook with
(input, output)in sequence safeHook()wrapper in composition files catches errors per-hook without breaking the chain- Tool registry uses
filterDisabledTools()before returning