文件历史

提交图

23 次代码提交

作者 SHA1 备注 提交日期
tjb-tech 4ba71f2d4a fix(telegram): use configured bot identity
Remove the hard-coded nanobot name from Telegram /start and /help responses and sanitize dangling tool-use turns before continue_pending resumes a session.
2026-05-16 12:45:08 +00:00
tjb-tech 889d9dcbda fix(grep): keep missing roots as tool errors 2026-05-16 12:24:21 +00:00
Jiabin Tang 0c6b81d61f feat: add configurable image generation tool (#244)
Add a configurable image_generation tool with OpenAI-compatible and Codex hosted providers, propagate generated media metadata through stream events, and let ohmo channels send generated image/file paths automatically.
2026-05-09 13:18:23 +08:00
Jiabin Tang 225e87f7d7 fix: recover from dangling tool call history (#239) 2026-05-08 18:25:36 +08:00
tjb-tech 0528a7a2c2 fix(ohmo): isolate group command context 2026-05-06 09:55:38 +00:00
tjb-tech 7873f0d109 fix(engine): clamp oversized token budgets 2026-05-03 09:03:05 +00:00
tjb-tech 1498a87806 fix(compact): bound large tool result history 2026-04-28 13:28:01 +00:00
tjb-tech 726b3ee028 fix(compact): handle local vision context pressure 2026-04-28 07:04:43 +00:00
tjb-tech 559ba76f23 feat(hooks): fire subagent_stop for spawned agents 2026-04-20 09:13:32 +00:00
José Maia cd68ff1e25 feat(hooks): add user_prompt_submit, notification, stop events
Extends the HookEvent enum with three new events so plugins authored
against Claude Code's hook protocol can run unmodified on OpenHarness.

- user_prompt_submit fires in QueryEngine.submit_message before the
  model sees a new user message. Payload: {event, prompt}.
- stop fires inside run_query when the assistant turn ends without
  tool uses. Payload: {event, stop_reason}.
- notification fires before the permission_prompt callback on
  confirmation-required tool calls. Payload: {event, notification_type,
  tool_name, reason}.

Hook return values are observational in this release; exit-code-driven
blocking and continuation semantics are deferred to a follow-up so the
surface area of this change stays small and reviewable.

Tests in tests/test_engine/test_query_engine.py cover each fire site,
including a negative case verifying stop does not fire on turns that
contain tool uses.
2026-04-19 21:05:23 +01:00
tjb-tech 1c00020d36 fix(coordinator): wait for async agent tasks in print mode 2026-04-19 14:56:47 +00:00
tjb-tech ce84a6a1a2 fix(session): sanitize empty assistant messages and add windows alias 2026-04-14 08:51:33 +00:00
José Maia a2dea036e0 fix(engine): keep parallel tool turns alive when one tool raises (#138)
`asyncio.gather` was called without `return_exceptions=True`, so a single
escaping exception from one parallel tool propagated out of the gather,
abandoned its sibling coroutines, and left the assistant turn with one or
more `tool_use` blocks that never received a matching `tool_result`. The
Anthropic Messages API rejects the next request on the session with a 400
in that state, so any unhandled tool exception during a multi-tool turn
effectively bricks the session.

Pass `return_exceptions=True` and synthesize an `is_error=True`
`ToolResultBlock` for each raised exception, matched to the originating
`tool_use_id`. The exception is logged via `log.exception` so the failure
is still observable.

Co-authored-by: José Maia <glitch-ux@users.noreply.github.com>
2026-04-14 16:39:42 +08:00
tjb-tech 1f5087c819 feat(subagents): improve discovery and reduce tui rerenders 2026-04-13 07:23:17 +00:00
tjb-tech bd4df81f63 Merge pull request #92 from 13ernkastel/codex/harden-path-rules-and-web-guards 2026-04-11 13:49:52 +00:00
tjb-tech 4b313bc4fe fix(ci): stabilize coordinator query engine tests 2026-04-10 11:54:37 +00:00
tjb-tech a6931b7698 feat(compact): improve task-state carry-over and channel logging 2026-04-10 11:26:16 +00:00
tjb-tech 3da00089d5 feat(compact): preserve task state across compaction 2026-04-10 09:53:57 +00:00
tjb-tech aca4016898 feat(compact): align lifecycle and carry-over behavior 2026-04-10 08:17:10 +00:00
13ernkastel 2931bc0f96 harden path rules and web network guards 2026-04-09 22:49:23 +08:00
tjb-tech cd52191f6e feat(auth): add provider profiles and subscription clients 2026-04-06 08:47:10 +00:00
13ernkastel 71c3d72a3d fix path rule enforcement for file tools 2026-04-05 19:45:06 +08:00
tjb-tech 5dd8b952ec Initial release: oh — OpenHarness: Open Agent Harness v0.1.0
A lightweight open-source Python implementation of the Agent Harness architecture.
44x lighter than Claude Code (11K vs 512K lines), 98% core tool coverage.

- 43 tools with Pydantic validation and parallel execution
- Skills system compatible with anthropics/skills (17+ tested)
- Plugin system compatible with claude-code/plugins (12+ tested)
- API retry with exponential backoff
- Multi-level permissions with path rules
- React/Ink TUI with "Oh my Harness!" branding
- 114 unit tests + 6 E2E test suites
- MIT License
2026-04-01 16:32:25 +00:00