文件历史

提交图

240 次代码提交

作者 SHA1 备注 提交日期
tjb-tech 8e012b4c2c feat: add dynamic workflows 2026-06-04 00:53:00 +00:00
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
baizenghu a68d0f984d feat(hooks): add priority ordering for lifecycle hooks (#279)
Hooks now accept an optional priority field and HookRegistry returns hooks in stable highest-priority-first order.\n\nVerified with:\n- uv run pytest -o addopts='' tests/test_hooks tests/test_plugins/test_lifecycle_flow.py tests/test_plugins/test_loader.py tests/test_ui/test_runtime_plugin_tools.py -q\n- uv run ruff check src/openharness/hooks tests/test_hooks tests/test_plugins/test_lifecycle_flow.py tests/test_plugins/test_loader.py tests/test_ui/test_runtime_plugin_tools.py
2026-05-27 18:17:16 +08:00
Mcy0618 033dce67b1 fix(runtime): refresh prompt for permission mode changes
Inject the active permission mode into the runtime system prompt so plan/default/full-auto state is visible to the model.

Refresh the engine model, effort, permission checker, and system prompt when runtime-affecting slash commands update settings.

Based-on: #268
2026-05-24 09:10:10 +00:00
SABUJ123472 4c3bf5bbc9 fix(platform): harden Windows lock detection
Recognize win32 as a Windows platform alias and wrap missing platform lock modules in SwarmLockUnavailableError instead of leaking raw ImportError.

Based-on: #34
2026-05-24 09:07:19 +00:00
Siaochuan 63ac368975 fix(auth): prefer scoped provider env keys
Prefer OPENHARNESS_<PROVIDER>_API_KEY variables over provider-native globals while resolving API-key auth. Keep provider-native variables as fallback and avoid applying unrelated native keys across active profiles.

Forward the OpenHarness-scoped auth/provider environment variables to spawned teammates.

Based-on: #93
2026-05-24 09:05:44 +00:00
tjb-tech fea0b75bc4 fix(auth): show subscription setup errors
Preserve subscription-auth failures instead of rewriting them as missing API keys, and point Claude/Codex subscription users at the correct login and provider commands.

Fixes #254
2026-05-24 09:01:35 +00:00
tjb-tech c281d34c4a fix(swarm): inherit OpenHarness permission config
Forward OpenHarness config/data env vars to spawned teammates and apply CLI permission_mode overrides to Settings.permission.mode so full_auto survives sub-agent startup paths.

Fixes #274
2026-05-24 08:18:20 +00:00
tjb-tech f5608951e1 test(ohmo): cover Feishu domain setup prompts 2026-05-24 08:14:31 +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
Jiabin Tang 09bc641aad feat(memory): add Claude-style memory runtime (#267)
* Add Claude-style memory runtime

* fix(memory): trim relevance EOF whitespace
2026-05-17 15:31:35 +08:00
tjb-tech 6243793ec0 fix(tui): keep image paste CI stable 2026-05-17 06:18:59 +00:00
tjb-tech 330ece7a62 feat(tui): support clipboard image paste
Fixes #265
2026-05-17 06:13:19 +00: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 7a0bfe9122 Merge remote-tracking branch 'origin/main' into review/pr-248 2026-05-16 13:11:47 +00: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 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
tjb-tech a2888506ba fix(web): support explicit search endpoint and proxy 2026-05-16 12:16:15 +00:00
tjb-tech 0531963435 Merge remote-tracking branch 'origin/main' into review/pr-260
# Conflicts:
#	CHANGELOG.md
2026-05-16 11:52:30 +00:00
tjb-tech c6b7552008 fix(telegram): hide bot tokens in dependency logs
Silence Telegram HTTP dependency loggers before polling starts, keep pending updates by default, and surface channel startup/handler failures through gateway state.
2026-05-16 11:50:59 +00:00
David Whatley 635d77fad4 fix(openai): omit empty reasoning_content by default (#263)
`reasoning_content` is a non-standard field that some thinking-model
providers (Kimi k2.5 on Anthropic-format) require on every assistant
message with tool calls — even when empty. Other OpenAI-compatible
providers (Cerebras, NVIDIA NIM, OpenAI direct, etc.) reject the field
outright with a 400 ``wrong_api_format`` validation error.

Until now, ``_convert_assistant_message`` unconditionally emitted
``reasoning_content: ''`` for tool-using assistant messages. That hard-
breaks every strict-OpenAI provider on the very first tool turn.

Behaviour change:

- Captured non-empty reasoning is still always replayed.
- The empty-string fallback is now opt-in via
  ``OPENHARNESS_REQUIRE_EMPTY_REASONING_CONTENT=1``.
- Default behaviour matches strict-OpenAI providers, which is the
  larger / standards-compliant population. Kimi-on-Anthropic users
  set the env var in their dotfiles or settings.

Verified end-to-end against Cerebras gpt-oss-120b (previously 100%
failure rate from this field) — zero ``wrong_api_format`` errors.

Tests added: 6 cases covering captured-replay, opt-in matrix
(truthy/falsy values), and the no-tool-calls invariant.
2026-05-16 19:46:00 +08:00
Hinotobi 7b44b7dab1 [security] fix(ohmo): scope Slack thread sessions by sender (#255) 2026-05-16 19:45:56 +08:00
tjb-tech 484502168d fix(commands): resolve remote admin command merges 2026-05-16 11:44:36 +00:00
tjb-tech 8b2ec8300d Merge branch 'review/pr-251-merge' 2026-05-16 11:40:52 +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
yl-jiang f61f70d7b1 feat(tui): preview diffs before edit and write approval
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-13 13:44:43 +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
d 🔹 a75053a740 fix(channels): declare reply_to_message field on TelegramConfig
`TelegramChannel.send` reads `self.config.reply_to_message` in the
outbound path, but the field was never declared on `TelegramConfig` —
only `ohmo init` (interactive mode) wrote it as a free-form key into
gateway.json. Configs that do not go through the interactive prompt —
`ohmo init --no-interactive`, pre-0.1.9 hand-written gateway.json, the
docs example — never have the key set, so every outbound message
crashes with `AttributeError: 'TelegramConfig' object has no attribute
'reply_to_message'` and the bot appears completely silent to the user.

Add `reply_to_message: bool = True` to `TelegramConfig` so the attribute
always exists. The default matches the interactive `ohmo init` default
(`default=bool(prior.get("reply_to_message", True))` in `ohmo/cli.py`),
so non-interactive and interactive configs that accept defaults behave
identically.

Same shape as #192 (proxy field), which added a missing `TelegramConfig`
attribute the implementation already assumed.

Closes #243

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 03:39:34 +08:00
Yudong An 5b46a2f7b3 Fix cron scheduler on Windows 2026-05-11 15:25:01 +08:00
Jiabin Tang 1929ad8051 feat(ohmo): add agent-turn cron delivery (#247) 2026-05-10 16:55:10 +08:00
Jiabin Tang f61901e842 feat(memory): add auto-dream consolidation (#246)
Add auto-dream memory consolidation with lock-based scheduling, manual /dream commands, backup/diff/rollback support, and ohmo integration for project and personal memory.
2026-05-09 14:09:55 +08: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 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
tjb-tech ffc50221df feat(skills): add skill creator bundled skill 2026-05-06 13:05:03 +00:00
tjb-tech 807e3ecd47 fix(ohmo): respect Feishu group mention policy 2026-05-06 12:46:28 +00:00
tjb-tech d2489758f0 fix(config): add NVIDIA NIM provider profile
Add a built-in NVIDIA NIM OpenAI-compatible workflow that reads NVIDIA_API_KEY, document the backend, and cover auth/profile materialization. Also make Windows shell resolution skip discovered bash executables that cannot run commands, and update the macOS Terminal backspace troubleshooting note to reflect the current fix.
2026-05-06 11:06:35 +00:00
tjb-tech 373147907a test(mcp): use built-in exception groups on Python 3.11 2026-05-06 10:17:11 +00:00
tjb-tech e0860bd3bd Merge branch 'review/pr-229' into review/security-mcp-windows-skills
# Conflicts:
#	CHANGELOG.md
2026-05-06 10:06:20 +00:00
tjb-tech 2ab4fdb2f7 Merge branch 'review/pr-231' into review/security-mcp-windows-skills 2026-05-06 10:05:20 +00:00