YeonGyu-Kim
ca3ea0bbe2
fix(messages-transform): narrow assistant-tail recovery trigger
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 15:50:23 +09:00
YeonGyu-Kim
44ee5e6ae7
test(messages-transform): lock assistant-tail continuation guard
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 15:49:09 +09:00
YeonGyu-Kim
fdf7ba2e6f
Merge pull request #4129 from code-yeongyu/feature/stage-c-lsp-mcp
...
Extract LSP tools into Tier-1 MCP server via lsp-tools-mcp submodule
2026-05-18 13:39:17 +09:00
YeonGyu-Kim
21b782de93
test(plugin): cover fresh install team mode tools
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 13:24:08 +09:00
YeonGyu-Kim
9bae873395
fix(plugin): log team tool registry state
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 13:24:08 +09:00
YeonGyu-Kim
b20e2c9c55
fix: refactor 5 additional aliased output.args mutations + strengthen audit test
...
Address Oracle review feedback: refactor 4 aliased mutations via argsObject
in plugin/tool-execute-before.ts and 1 via toolOutput in atlas/tool-execute-before.ts.
Strengthen audit test regex to catch Output.args mutations regardless of the
variable name prefix (toolOutput, argsObject aliases).
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 13:04:10 +09:00
YeonGyu-Kim
13d8857415
refactor(hooks): replace direct output.args mutation with replaceToolArgs (question/webfetch/null-byte)
...
Replace Object.assign(output.args, truncatedArgs), output.args.url = resolution.url,
and output.args.command = ... .replace(/\x00/g, "") with replaceToolArgs() calls
in question-label-truncator, webfetch-redirect-guard, and plugin/tool-execute-before.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 12:46:52 +09:00
YeonGyu-Kim
b149ce5331
docs: update AGENTS docs for MCP-backed LSP architecture
2026-05-18 12:24:44 +09:00
YeonGyu-Kim
48c827ffc0
test: update plugin tests for MCP-backed LSP
2026-05-18 12:22:54 +09:00
YeonGyu-Kim
8716ef458c
refactor(plugin): drop lspManager lifecycle wiring
2026-05-18 12:22:54 +09:00
YeonGyu-Kim
ca51f613ca
refactor(tools): remove native LSP tool registry wiring
2026-05-18 12:22:54 +09:00
YeonGyu-Kim
dd3fecaf40
refactor(plugin): use unified internal prompt dispatch
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-17 17:01:50 +09:00
YeonGyu-Kim
55312cc4b6
fix(session-recovery): preflight idle recovery fanout
2026-05-17 16:17:36 +09:00
YeonGyu-Kim
a7b7ace7ed
fix(prompt-gate): block prompts into pending tool turns
2026-05-17 15:42:58 +09:00
YeonGyu-Kim
f43effb842
fix(session-recovery): recover interrupted idle tool turns
2026-05-17 15:08:39 +09:00
YeonGyu-Kim
a43215f24e
fix(plugin/event): bind team-idle-wake-hint client methods to SDK Session
...
The team-mode wiring at `createEventHandler` extracted
`pluginContext.client.session.promptAsync` and `.status` into a fresh
wrapper object. The methods were copied by reference, so the prompt-async
gate's `session.promptAsync.bind(session)` was binding to that plain
wrapper rather than the underlying SDK `Session` instance. The opencode
SDK's `promptAsync` reads `this._client.post(...)`, so production calls
threw `TypeError: undefined is not an object (evaluating 'this._client')`
on the very first dispatch — fingerprinted in /tmp/oh-my-opencode.log as
688 `background-agent-parent-wake`, 47 `model-suggestion-retry`, and 4
`team-idle-wake-hint` failures over the past three days.
Move the wrapper construction into `buildTeamIdleWakeHintClient`, which
preserves the narrow factory contract while binding both methods back to
the SDK `Session` so `_client` survives the dispatch. Cover the contract
with four BDD-style tests including the historical destructure-only
failure mode so any future regression is caught at unit-test time.
2026-05-17 02:06:52 +09:00
YeonGyu-Kim
36e373cdbb
feat(workspace): point planning guardrails at omo
2026-05-16 17:41:35 +09:00
Enoch
d11613999a
fix tool execute after hook boundary
2026-05-15 23:37:45 +09:00
YeonGyu-Kim
c580b8f2ce
fix(session): ignore internal synthetic turns
2026-05-15 23:16:05 +09:00
YeonGyu-Kim
2bd4944bad
fix(prompt-gate): scope reservation releases
2026-05-15 21:52:29 +09:00
rshks
b504fb1deb
fix(tool-pair-validator): emit schema-compatible synthetic tool results
2026-05-15 21:04:03 +09:00
YeonGyu-Kim
8dcbccf063
fix(tmux): inject pane action dependencies
2026-05-15 17:54:43 +09:00
YeonGyu-Kim
462b55efc7
Merge pull request #4040 from code-yeongyu/cleanup/typescript-ai-slop-20260515
...
Refactor TypeScript cleanup patterns
2026-05-15 16:42:10 +09:00
YeonGyu-Kim
a9886ccbb7
refactor(plugin): remove metadata assertions
...
Guard optional plugin metadata and pane identifiers before passing them to cleanup and warning paths.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 16:31:13 +09:00
YeonGyu-Kim
d8f52aae7f
test: run suite without split runner
2026-05-15 16:26:57 +09:00
YeonGyu-Kim
15e7330ff0
fix(team-mode): gate status injection by keyword
2026-05-15 15:35:35 +09:00
YeonGyu-Kim
9f6d0d2281
docs(agents-md): refresh hierarchical knowledge base for v4.1.2
...
- Bump root AGENTS.md header: 2026-05-14 → 2026-05-15, commit 5ffbe0e24 → 53a740636 , release v4.1.1 → v4.1.2
- Update file counts: 2034 (1337+697) → 2041 (1340+701), LOC ~292k → ~294k
- Fix STRUCTURE: openclaw lives at src/openclaw/ (not src/features/); list more accurate feature modules in the parenthetical
- Clarify interactive_bash gate: tmux binary on PATH via isInteractiveBashEnabled() (not 'tmux enabled')
- Fix docs/reference/features.md hook counts: Tool Guard 14→16, Total base 52→54, total with team-mode 59→61
- Bump 'Generated' date on all 43 subdir AGENTS.md files to 2026-05-15
- Preserve promptAsync injection cautions verbatim (per request)
2026-05-15 13:48:11 +09:00
YeonGyu-Kim
c2aa180e7e
fix(prompt-gate): pin duplicate prompt dispatches
...
Keep prompt reservations briefly after successful dispatch so rapid idle/message/error transitions cannot inject the same follow-up twice.
Route all production session prompt calls through the shared gate, restore skipped background resume state, release holds after abort/recovery paths, and preserve Ralph/ULW loop state when a dispatch is deferred.
Add regression coverage for session routing, static prompt route auditing, team-mode live messaging, model suggestion retries, call-omo-agent reuse, background parent wakes, runtime fallback, compaction recovery, Atlas, and Ralph/ULW loops.
2026-05-15 13:19:10 +09:00
YeonGyu-Kim
edf3e530d4
fix(hooks): gate sync injected prompts
2026-05-15 12:55:56 +09:00
YeonGyu-Kim
dd6271bbf4
fix(babysitter): gate reminder prompts
2026-05-15 12:55:56 +09:00
YeonGyu-Kim
c75f548863
fix(fallback): gate model retry prompts
2026-05-15 12:55:56 +09:00
YeonGyu-Kim
23dfe7eec2
fix(fallback): skip duplicate fallback re-arms
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 11:45:21 +09:00
YeonGyu-Kim
b7482ea727
test(fallback): type chat output assertions
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 11:28:18 +09:00
YeonGyu-Kim
26bb6231b6
fix(fallback): preserve provider-specific fallback retries
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 11:14:26 +09:00
YeonGyu-Kim
005d16dd96
fix(fallback): dedupe providerless fallback errors
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 11:14:26 +09:00
YeonGyu-Kim
da339204bb
fix(fallback): dedupe overlapping fallback continuations
...
Guard model fallback continuation dispatch so overlapping message.updated/session.error surfaces issue only one abort+promptAsync cycle for the same failed fallback.
Refs https://github.com/code-yeongyu/oh-my-openagent/issues/4019
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 11:14:26 +09:00
YeonGyu-Kim
1e7a7600a2
docs(agents-md): regenerate hierarchical AGENTS.md knowledge base for v4.1.1
...
Refresh all AGENTS.md files to reflect codebase state at 5ffbe0e24 (was cd31d2a1a , 197 commits behind).
Key drift corrections across 45 modified + 1 new file:
Root AGENTS.md:
- TS file counts: 1967 -> 2034 in src/ (1337 source + 697 test)
- LOC: 278k -> 292k
- Barrel index.ts: 120 -> 122
- Hook tier composition: 52/59 -> 54/61 (base/with team-mode)
- Tool Guard hooks: 14 -> 16 (add fsync-skip-warning, bash-file-read-guard)
- Add boulder feature, agent-ordering schema, .agents/ directory, v4.1.1 release tag
- Add generated/ directory entry
src/AGENTS.md:
- Subsystem inventory: agents 96->102, hooks 570->581, tools 306->314,
features 389->400, shared 258->278, cli 150->158, plugin 55->56
- LOC totals refreshed for every subsystem
- Schema files: 32 -> 30
src/hooks/AGENTS.md:
- Tier 2 (Tool Guard): 14 -> 16 hooks, add fsyncSkipWarning row
- Total: 52 base / 59 team-mode -> 54 base / 61 team-mode
- zauc-mocks count: 7 -> 5
src/features/AGENTS.md:
- background-agent: 47 -> 57 files, mention archive fallback
- opencode-skill-loader: 33 -> 30
- tmux-subagent: 34 -> 32
src/plugin/AGENTS.md:
- Tool Guard composer count: 14 -> 16
- Aggregator total: 43 -> 45
src/cli/AGENTS.md:
- Add new boulder subcommand (BoulderState inspector)
- Command count: 6 -> 7
NEW: src/features/boulder-state/AGENTS.md
- Document the new Boulder work tracking feature
- Schema v2 with BoulderState/BoulderWorkState/TaskSessionState
- Lifecycle, storage, integration points with atlas/ralph-loop hooks
All other AGENTS.md files: Generated date 2026-05-08 -> 2026-05-14.
2026-05-14 12:57:46 +09:00
YeonGyu-Kim
5ffbe0e24e
fix(fallback): guard duplicate prompt injections
2026-05-14 01:03:19 +09:00
YeonGyu-Kim
36f51ddb16
fix(continuation): mark fallback resumes synthetic
2026-05-13 13:36:25 +09:00
YeonGyu-Kim
d5fbada13d
test: make unsafe test coercion explicit
...
Move test coercion out of a hidden global and require each test to import the helper so review tools and runtime scripts can see the unsafe boundary.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-12 15:51:31 +09:00
YeonGyu-Kim
f05aeaa63a
test(plugin): remove unsafe test assertions
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-12 15:41:17 +09:00
YeonGyu-Kim
9ffef79dbb
fix(ralph-loop): ignore synthetic idle replays
2026-05-12 15:28:46 +09:00
YeonGyu-Kim
4da48555ee
fix(plugin): normalize event session ids
...
Handle OpenCode session events that carry the session ID under properties.info.id or properties.info.sessionID so background tasks and continuation hooks do not miss idle/error/delete events.
Add regression coverage for nested session.idle events completing background tasks and waking continuation hooks.
2026-05-12 12:32:26 +09:00
YeonGyu-Kim
3ed4651b7a
fix(compaction): skip autocontinue for compaction agent
2026-05-11 18:46:29 +09:00
YeonGyu-Kim
0fd918ea80
fix(delegate-task): preserve native task metadata
2026-05-11 13:08:56 +09:00
YeonGyu-Kim
954aa1f121
fix(compaction): isolate preservation hook failures
2026-05-11 12:54:32 +09:00
YeonGyu-Kim
4b281f949e
Merge pull request #3914 from code-yeongyu/fix/max-output-tokens
...
fix: prevent non-positive maxOutputTokens from leaking to SDK
2026-05-11 09:22:39 +09:00
YeonGyu-Kim
50dffc9952
Merge pull request #3911 from code-yeongyu/fix/todo-diag-blocked-alert
...
fix(plugin): allow real session.idle after synthetic idle within dedup window
2026-05-11 09:22:31 +09:00
YeonGyu-Kim
2f8ce576dc
fix(chat-params): use conservative token fallback for invalid limits
...
Avoid inflating non-positive maxOutputTokens values to model capability maxima by always falling back to a safe fixed budget.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-11 08:47:49 +09:00
YeonGyu-Kim
2168040ac6
fix(plugin): scope synthetic-idle dedup bypass to matching marker
...
Only clear recentAnyIdles when the stored marker matches the synthetic idle timestamp for the same session, preventing accidental clobbering of newer idle markers. Add a regression test to verify other sessions keep their dedup state during this bypass path.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-11 08:45:34 +09:00