文件历史

38 次代码提交

作者 SHA1 备注 提交日期
guyuming bf5931e7c1 fix(runtime): close API clients on shutdown
Close API clients when the runtime shuts down to release HTTP connection pool resources, and surface the active session ID in /session output.

Cherry-picked from PR #273. Excluded the embedded-wrapper session resolver and memory parser API changes because they need a narrower public API design.
2026-05-27 10:19:21 +00:00
tjb-tech 92e298852c Merge branch 'pr-276' into codex/pr-merge-test-20260524 2026-05-24 08:13:17 +00:00
hinotoi-agent 9a24b8dfe2 fix(commands): keep session transcript commands local-only 2026-05-22 13:19:37 +08:00
hinotoi-agent 4321bd824d fix(commands): keep project context commands local-only 2026-05-22 08:15:41 +08:00
Yang XiuYuan 6747d12385 feat(memory): add structured schema and usage index (#266)
* feat(memory): add structured schema and usage index

Add schema-v1 frontmatter for memory files, including stable ids, deterministic signatures, soft delete metadata, TTL handling, and migration support for legacy stores.

Track recalled memories in usage_index.json so retrieval can prioritize useful memories and auto-dream can review stale unused entries before pruning.

Keep project and ohmo memory backends aligned under the same behavior while preserving runtime compatibility for unmigrated Markdown files.

* fix(memory): make backend migration defaults explicit
2026-05-17 14:01:24 +08:00
tjb-tech 595a9ab3a4 Merge remote-tracking branch 'origin/main' into review/pr-256
# Conflicts:
#	CHANGELOG.md
2026-05-16 13:04:45 +00:00
tjb-tech 484502168d fix(commands): resolve remote admin command merges 2026-05-16 11:44:36 +00:00
tjb-tech a1fef67cdc Merge branch 'review/pr-252-merge'
# Conflicts:
#	src/openharness/commands/registry.py
#	tests/test_commands/test_registry.py
#	tests/test_ohmo/test_gateway.py
2026-05-16 11:40:43 +00:00
tjb-tech 9cff3a05b0 Merge branch 'review/pr-253-merge'
# Conflicts:
#	tests/test_commands/test_registry.py
2026-05-16 11:40:01 +00:00
Hinotobi c38e2fc066 [security] fix(commands): keep autopilot local-only by default (#258) 2026-05-16 19:38:39 +08:00
Hinotobi 653369d983 [security] fix(commands): keep /commit local-only over remote channels (#261) 2026-05-16 19:38:35 +08:00
Pat Yang b93b2cfb30 fix(codex): pass reasoning effort separately 2026-05-12 14:34:12 +08:00
hinotoi-agent c70811cc40 fix(commands): keep diff local-only by default 2026-05-12 10:05:00 +08:00
hinotoi-agent 73fb0fa0bf fix(commands): keep tasks local-only remotely 2026-05-12 09:06:43 +08:00
tjb-tech 18fc6dea13 feat(skills): discover Claude and project skills 2026-05-08 03:49:02 +00:00
tjb-tech b22d5e9368 fix(cli): allow updating provider API keys 2026-05-07 10:05:31 +00:00
tjb-tech 0e557a65d3 feat(skills): expose user-invocable skills as slash commands 2026-05-06 13:43:39 +00:00
hinotoi-agent 4e33118c48 fix(commands): keep config auth commands local-only 2026-05-05 13:32:29 +08:00
tjb-tech f10d8875ee feat(ui): make mode switching and stop explicit 2026-05-03 09:02:47 +00:00
Mcy0618 d611d6ddf6 feat(vision): add image-to-text fallback for text-only models (#227)
* feat(provider): add ModelScope inference API support

* fix(cli/auth): wire ModelScope into CLI and auth manager

* feat(vision): add image-to-text fallback for non-multimodal models

* fix: remove leftover merge conflict marker in query.py

* test: fix cross-platform test failures

* test: remove unused os import in test_environment.py
2026-05-03 16:47:56 +08:00
tjb-tech c835d7cf2e feat(model): manage profile model allowlists
Add /model list/add/remove/clear so a single provider profile can expose multiple switchable models in the TUI selector. Also add regression coverage for invalid grep regexes in the Python fallback.\n\nFixes #222\nRefs #218
2026-05-01 12:38:48 +00:00
tjb-tech cc825efb83 fix(ohmo): isolate personal memory from project memory 2026-04-29 08:47:58 +00:00
hinotoi-agent 438e373097 fix: keep bridge command local-only by default 2026-04-28 11:51:44 +08:00
Hinotobi bed1e4777e fix(plugins): reject traversal names on uninstall (#198) 2026-04-28 10:34:31 +08:00
Yufeng He 0bba07fe19 fix(tui): complete slash commands without cursor drift (#185)
Three related bugs in the React TUI slash-command flow (fixes #183):

1. Tab completion left a trailing space after the command, so hitting
   Enter right after Tab would submit "/exit " (with arg) instead of
   running /exit. Drop the space — user can add one themselves if they
   want to type an argument.

2. After a programmatic setInput() from completion/history, the
   MultilineTextInput cursor stayed at its previous offset instead of
   moving to the end of the newly-inserted text. Subsequent keystrokes
   landed in the middle of the completed command ("/eXxit" when typing
   X after Tab-completing "/exit"). Track the last internally-authored
   value via a ref; when the incoming value differs, treat it as an
   external change and snap the cursor to the end.

3. /quit is the other obvious word for "exit" and users were surprised
   when it wasn't registered. Add an `aliases` field to SlashCommand
   and make /quit an alias of /exit. help/list output deduplicates
   aliases so they resolve via lookup without cluttering the command
   listing.

Tests:
- tests/test_commands/test_registry.py: new tests for the alias path
  and for help/list dedup. Both pass locally.
- MultilineTextInput doesn't have a standalone unit test for the
  cursor behavior (uses node:test + ink render harness, can't run
  without node toolchain on this machine), but the fix is a local,
  obvious change in a single component.

Co-authored-by: Yufeng He <40085740+universeplayer@users.noreply.github.com>
2026-04-23 19:25:50 +08:00
tjb-tech c4075ffea3 test(cli): stabilize help output assertion 2026-04-22 07:41:39 +00:00
tjb-tech 699bab3d3a feat(cli): add dry-run safe preview mode 2026-04-22 07:36:59 +00:00
Hinotobi 59017e0988 fix(plugin): address code execution via untrusted plugin activation (#156)
* [security] fix(plugin): require explicit trust for project plugins

* test: clarify project plugin secure-default behavior
2026-04-17 18:00:13 +08:00
tjb-tech 67617e6eb5 fix(ohmo): restore runtime system prompt after startup 2026-04-16 12:52:11 +00:00
Hinotobi dd1d235450 fix: harden gateway slash command security (#127)
* fix: harden gateway slash command security

* fix: add secure remote admin opt-in for gateway commands
2026-04-13 16:24:20 +08:00
tjb-tech 1f5087c819 feat(subagents): improve discovery and reduce tui rerenders 2026-04-13 07:23:17 +00:00
tjb-tech 76d91fdfa1 fix(swarm): run subprocess teammates in headless worker mode 2026-04-10 09:50:07 +00:00
tjb-tech 2f6f8b01d6 release: ship 0.1.4 fixes and ohmo updates 2026-04-08 09:53:39 +00:00
tjb-tech 69c85e411c fix(ui): avoid blocking paste and permission responses in terminal 2026-04-07 16:30:00 +00:00
tjb-tech 3558ae6e57 feat(cli): streamline provider setup flows 2026-04-06 13:29:46 +00:00
tjb-tech cd52191f6e feat(auth): add provider profiles and subscription clients 2026-04-06 08:47:10 +00:00
tjb-tech 8abe47603e fix(ci): update tests for new system prompt, agent definitions, and CI compatibility
- Update prompt assertions to match new OpenHarness system prompt
- Update agent definition tests (verification not verifier, tools=['*'])
- Add pytest.mark.skipif for tests needing real API or AutoAgent workspace
- Fix agent tool test for InProcessBackend same-name spawn conflict
- Fix flaky worktree test for CI environments
2026-04-04 10:14:22 +00: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