YeonGyu-Kim
bb75751410
fix(babysitter): avoid double prompt gate
2026-05-19 13:48:55 +09:00
YeonGyu-Kim
44ef5dec1d
fix(runtime-events): honor OpenCode progress shapes
2026-05-19 13:48:45 +09:00
YeonGyu-Kim
5f0e037dae
fix(plugin): cover Anthropic-family prefill guard
...
Include Vertex Anthropic in the assistant-tail prefill guard after Cubic flagged the strict provider check. Keep the non-Anthropic opencode negative control covered by tests.
Plan: plans/fix-anthropic-assistant-prefill-tail.md
2026-05-19 12:33:22 +09:00
YeonGyu-Kim
45d670a7dc
fix(plugin): constrain Anthropic prefill guard
...
Tighten the assistant-tail repair after review so only the Anthropic provider is treated as prefill-rejecting, and so assistant-tail model metadata is evaluated independently from the last user model.
Add regression coverage for an allowed user model followed by a rejecting Anthropic assistant tail, plus a non-Anthropic provider carrying a Claude-looking model id.
Plan: plans/fix-anthropic-assistant-prefill-tail.md
2026-05-19 12:24:37 +09:00
YeonGyu-Kim
3509bf47ae
fix(plugin): guard Anthropic assistant prefill tails
...
Claude Opus 4.7 rejects requests whose final message is an assistant turn, because Anthropic treats that as unsupported assistant prefill. Add a transform guard that appends the existing synthetic user recovery turn only for Anthropic prefill-rejecting model IDs, while preserving assistant-prefill behavior for supported and unknown models.
Tests cover Opus 4.7, Opus 4.6 assistant metadata fallback, direct Sonnet 4.6 model fields, allowed OpenAI/Sonnet 4.5 tails, missing metadata, and compaction continuation compatibility.
Plan: plans/fix-anthropic-assistant-prefill-tail.md
2026-05-19 12:17:32 +09:00
YeonGyu-Kim
d8f6d59dc2
docs: update rules and MCP inventories
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 21:28:12 +09:00
YeonGyu-Kim
90b3f4ac96
test: harden workspace package assumptions
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 21:28:12 +09:00
YeonGyu-Kim
a86cc6af18
refactor(tools): remove native ast-grep tool
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 21:27:36 +09:00
YeonGyu-Kim
c9a3c34a29
test: stabilize dependency verification
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-18 20:55:33 +09:00
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