Commit Graph
179 Commits
Author SHA1 Message Date
Furkan Köykıran 5f20c5970e fix(tests): add proper assertions to e2e tests
test_daemon_start_with_json had a silent JSONDecodeError pass that
would hide regressions. test_invalid_path_gives_error ended with
assert True which doesn't verify any actual behavior.
2026-03-22 13:27:18 +03:00
Furkan Köykıran 827e5e0743 fix(browser): only update working_dir when backend cd succeeds
The change_directory function was updating session.working_dir even
when the backend returned an error. This could leave the session in an
invalid directory state and break subsequent relative-path operations.
2026-03-22 13:27:14 +03:00
Furkan Köykıran daa6001c01 fix(browser): redact sensitive text from act type output
The act type command was echoing the full text value in non-JSON mode,
which could leak passwords or PII into terminal scrollback and logs.
Now only outputs the target path without the typed text.
2026-03-22 13:27:09 +03:00
Furkan Köykıran e23cd945e0 fix(browser): update contributor to furkankoykiran in registry.json 2026-03-22 12:55:43 +03:00
Furkan Köykıran 6129577587 fix(docs): correct npx installation command
Change from invalid "npx install -g npx" to "npm install -g npx" for
correct npx installation instructions.
2026-03-21 21:55:50 +03:00
Furkan Köykıran b88b5458ec fix(docs): clarify daemon mode and state persistence behavior
Update documentation to clarify that daemon mode works within a single
process (REPL or --daemon flag) and that state does not persist across
separate CLI invocations.
2026-03-21 21:55:45 +03:00
Furkan Köykıran a41c5be3bc fix(docs): correct command name from cli-autocomplete-browser
Fix typo in daemon stop command name from cli-autocomplete-browser
to cli-anything-browser.
2026-03-21 21:55:38 +03:00
Furkan Köykıran a8fd4d6f98 fix(tests): use DOMSHELL_E2E environment variable for test gating
Avoid invoking npx during test collection by requiring DOMSHELL_E2E=1
environment variable. This prevents unwanted side effects when running
pytest in environments without DOMShell.
2026-03-21 21:55:31 +03:00
Furkan Köykıran 017a6ce6f1 fix(backend): fix daemon lifecycle to properly cleanup subprocess
Store the stdio_client context manager to ensure proper cleanup
when stopping daemon mode. Previously, __aexit__ was called on a new
instance, causing subprocess leaks.
2026-03-21 21:55:19 +03:00
Furkan Köykıran 1dfce3127b fix(page): use backend.back() and backend.forward() MCP tools
Instead of reconstructing navigation via open_url(), directly use the
DOMShell MCP tools for back/forward navigation. This ensures
proper browser history tracking.
2026-03-21 21:54:53 +03:00
Furkan Köykıran 99ff7438d8 fix(browser): skip dependency check for --help/--version
Allow --help and --version flags to work without DOMShell installed.
This aligns with other CLI-Anything harnesses where help is always available.
2026-03-21 21:54:37 +03:00
Furkan Köykıran 5fa31fc122 feat: add Browser automation CLI via DOMShell MCP server
Implement filesystem-first browser automation using DOMShell's MCP
server. Maps Chrome's Accessibility Tree to a virtual filesystem
for agent-native navigation with ls, cd, cat, grep, click commands.

Key features:
- MCP backend pattern (first in CLI-Anything)
- Daemon mode for persistent connections
- Page state management (URL, working directory, history)
- Filesystem-first commands (fs, page, act, session)
- Comprehensive test coverage (31 unit tests, 10 E2E tests)

Resolves #90
2026-03-21 21:28:18 +03:00
Yuhao 776b5126a3 Merge pull request #100 from ZJZAC/security/codec-whitelist-validation
security: add codec allowlist validation for melt backends
2026-03-21 23:11:13 +08:00
Yuhao 415ffc4b5d Merge pull request #101 from Alex-wuhu/novita-integration
Add Novita provider integration
2026-03-21 23:08:33 +08:00
Yuhao 124e7f06c5 Merge branch 'main' into novita-integration 2026-03-21 23:06:05 +08:00
Yuhao 0beb0d6f30 Merge pull request #83 from sehawq/codex/gimp-file-load-fix
Use gimp-file-load for non-PNG inputs in apply_filter_and_export
2026-03-20 20:00:40 +08:00
Yuhao b478b46cbc Merge pull request #110 from tommyalt/feat/ollama-batch-embed
feat(ollama): support repeatable embed inputs
2026-03-20 19:56:08 +08:00
Yuhao 8ad7efaf79 Merge pull request #112 from sehawq/fix/gimp-cli-session-persistence
fix: persist session state in CLI mode and handle quoted text in REPL
2026-03-20 19:40:48 +08:00
sehawq 08f6eb5e61 fix: persist session state in CLI mode and handle quoted text in REPL
- Add auto-save via result_callback so --project flag triggers disk
  write after every mutating command, fixing broken consecutive
  operations in non-REPL mode.
- Switch REPL arg parsing from str.split() to shlex.split() so that
  quoted strings with spaces (e.g. --text "Summer Sale") are handled
  correctly.

Fixes #111
2026-03-20 13:18:20 +03:00
ZJZACandClaude Opus 4.6 5153e9b86f docs: add scope note to SECURITY.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:24:28 +08:00
Tommy-alto-FYygU 72dc6a6f59 feat(ollama): support repeatable embed inputs 2026-03-20 11:46:08 +08:00
Yuhao edf9755dd3 Merge pull request #96 from sehawq/codex/audacity-eval-harness
Add Audacity eval harness and regression reporting
2026-03-19 23:53:40 +08:00
Yuhao d2dd36c831 Merge pull request #102 from HKUDS/codex/ollama-harness
feat: add ollama agent harness
2026-03-19 23:47:11 +08:00
Yuhao d6040fb59f Merge pull request #103 from fishwww-ww/docs/readmecn
docs(README_CN): improve Chinese phrasing
2026-03-19 23:43:37 +08:00
sehawq b601e69a38 chore: revert README_CN and README_JA changes, will sync in separate docs PR 2026-03-19 14:57:30 +03:00
sehawq bc03927dec chore: remove README_CN changes from ollama PR, will sync in separate docs PR 2026-03-19 14:53:38 +03:00
sehawq e2e7c4105f fix: correct README totals to 1,839 matching individual entry sum 2026-03-19 14:43:14 +03:00
sehawq 50eb3e52b3 fix: restore adguardhome entries in .gitignore and README, add ollama alongside 2026-03-19 14:31:34 +03:00
Alex-wuhuandClaude Opus 4.6 77af57d9ce fix: persist history to disk, add file locking, remove sys.path hack
- save_history() now writes to session JSON so history survives restarts
- Use fcntl.flock exclusive locking on session writes (ported from blender harness)
- Reset modified flag after _save()
- Remove sys.path.insert; rely on proper package installation
- clear() also resets history

Addresses review feedback from sehawq on #101.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:53:51 +08:00
Alex-wuhuandClaude Opus 4.6 371a651ce4 fix: resolve bugs and align novita harness with repo conventions
- Fix NameError: pass api_key_opt via Click context to chat/stream commands
- Fix NameError: add missing `import requests` in test_core.py
- Extract ChatSession to core/session.py (matches other harness patterns)
- Convert flat session commands to @cli.group() subcommands
- Add missing utils/__init__.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:53:51 +08:00
Alex-wuhu e9ec0b7dda Add Novita provider and CLI harness
- Implement novita/agent-harness with OpenAI-compatible API client
- Add chat completion, streaming, model listing support
- Include CLI with chat, session, and config commands
- Add tests with mocked API calls
- Update registry.json with Novita entry
- Update .gitignore to include novita/
2026-03-19 18:53:50 +08:00
Zeng QingwenandCopilot Autofix powered by AI ade2d54e56 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-19 14:48:53 +08:00
fishwww-ww d96d1528b6 docs(README_CN): improve Chinese phrasing 2026-03-19 14:38:51 +08:00
Ömer 45cfa1e66d Merge branch 'main' into codex/ollama-harness 2026-03-19 00:52:58 +03:00
sehawq 7ba573680b test: record Ollama test results 2026-03-19 00:26:52 +03:00
Yuhao 40bdb40b92 Merge pull request #98 from pyxl-dev/feat/adguardhome-clean
feat: add AdGuardHome CLI harness
2026-03-19 01:40:19 +08:00
yuhaoandClaude Opus 4.6 96f4b0eef5 merge: resolve README conflicts, update counts, add adguardhome to registry
- Resolve merge conflict in README.md test badge (1,684 → 1,720)
- Update all app/demo counts from 14 → 16 to reflect all CLIs in registry
- Update test counts: 1,247 unit + 473 e2e = 1,720 total
- Add AdGuardHome entry to registry.json with contributor info (pyxl-dev)
- Add contributor/contributor_url fields to all registry entries

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:36:36 +00:00
yuhao 341a4dc088 include authors on CLI-Hub 2026-03-18 17:27:31 +00:00
Yuhao 2fbbe24705 Merge pull request #99 from cnfjlhj/feat/add-mubu-harness
feat(mubu): add Mubu agent harness
2026-03-19 01:07:55 +08:00
PYXL d5e999029d Merge branch 'main' into feat/adguardhome-clean 2026-03-18 15:46:14 +01:00
pyxlandClaude Opus 4.6 433c3cf880 fix: preserve server config when toggling log/filter settings
- log_config: trigger POST when --interval is passed without --enabled,
  read current config for missing parameters
- set_enabled: read current filter interval from server instead of
  hardcoding 24h
- Update test mock to cover the new get_status call in set_enabled

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:39:58 +01:00
ZJZACandClaude Opus 4.6 f66e29cdb2 docs: document codec allowlist as breaking change in SECURITY.md
Add section explaining the behavior change for callers using non-listed
codecs, with instructions on how to extend the allowlists.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 19:50:23 +08:00
sehawq 36e6a6a0ed feat: add ollama agent harness 2026-03-18 13:10:51 +03:00
cnfjlhj ffb7395f1a merge: sync feat/add-mubu-harness with upstream main 2026-03-18 17:59:31 +08:00
cnfjlhj 71c1ae6dcf fix(mubu): harden document resolution and state branding
Deduplicate logical document paths by freshest metadata so open-path resolves real Mubu history duplicates consistently. Overlay backup-driven show/link output with metadata titles and doc paths, and default new public state to ~/.config/mubu-cli while preserving legacy fallback.
2026-03-18 17:13:44 +08:00
ZJZACandClaude Opus 4.6 ad83a32283 security: block extra_args from bypassing codec allowlist
extra_args could pass vcodec=..., acodec=..., or -consumer to override
the validated codec parameters. Add _validate_extra_args() that rejects
any argument starting with these prefixes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:50:38 +08:00
ZJZACandClaude Opus 4.6 8935f478c5 security: add codec allowlist validation in melt backends
When an AI agent constructs CLI commands, it may pass arbitrary strings as
codec parameters — either through prompt injection, hallucination, or
processing untrusted input. Since codec values are passed directly to
melt/ffmpeg subprocesses, unvalidated input is an injection risk.

Fix: add ALLOWED_VCODECS / ALLOWED_ACODECS allowlists to both kdenlive
and shotcut melt_backend.py. All codec parameters are validated before
reaching subprocess.run(). Unknown codecs raise ValueError with a list
of valid options.

Also add SECURITY.md documenting the project's threat model (AI agents
as CLI callers), attack surfaces, reporting process, and security
guidelines for harness developers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 16:17:18 +08:00
Ömer 061b3c9047 Merge pull request #95 from Haimbeau1o/notebooklm-agent-harness-scaffold
feat: add experimental NotebookLM agent harness scaffold / 新增实验性的 NotebookLM agent harness 脚手架
2026-03-18 11:15:35 +03:00
liuche 54f78f65d2 docs: trim notebooklm readme mentions 2026-03-18 15:30:14 +08:00
cnfjlhj f15052487e chore(mubu): bump harness version to 0.1.1
Update the package metadata, generated skill output, test expectations, and registry entry so the contribution PR reflects the generalized daily-folder behavior in the published harness version.
2026-03-18 13:40:41 +08:00