Commit Graph

383 Commits

Author SHA1 Message Date
yuhao
e59b7ee367 launch cli-anything-hub pkg manager. 2026-04-10 15:43:51 +00:00
Yuhao
c6c5514a3f Merge pull request #200 from hiSandog/fix/cleanup-and-docs-1dcf1e0
docs: add Openscreen CLI to README table, test summary, and project structure
2026-04-09 23:26:15 +08:00
yuhao
728ee63be5 Merge main into fix/cleanup-and-docs-1dcf1e0: resolve conflicts, fix test totals
Include both openscreen and cloudanalyzer in test summary.
Correctly recount all totals across badge, HTML table, prose, and test summary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 15:25:17 +00:00
陈家名
01e6ee6e4e fix(review): correct Openscreen test subtotals on PR #200 2026-04-09 11:19:39 +00:00
陈家名
628f004652 docs: add Openscreen CLI to Chinese README table, test summary, and project structure 2026-04-09 11:19:39 +00:00
陈家名
76d838f2f3 docs: add Openscreen CLI to README table, test summary, and project structure 2026-04-09 11:19:39 +00:00
Furkan Köykıran
52e93a07d4 docs(browser): clarify explicit scheme requirement in security docs
Update URL Restrictions section to explicitly state that URLs must
include http:// or https:// scheme. Scheme-less URLs are rejected.

Addresses Copilot review comment at line 12.
2026-04-09 11:19:39 +00:00
Furkan Köykıran
a9f937eedc test(browser): make env var tests deterministic with monkeypatch
- Add module reload mechanism for env var changes
- Update test_malformed_url with proper assertion
- Add tests for scheme-less URLs, uppercase schemes, hostname requirement
- Add test for fdn.example.com (IPv6 ULA pattern fix verification)
- Make all env var dependent tests use monkeypatch

Addresses Copilot review comments:
- Line 117: Added assertion to test_malformed_url
- Line 170: Made tests deterministic with monkeypatch
2026-04-09 11:19:38 +00:00
Furkan Köykıran
f0b4cf6061 fix(browser): raise ValueError on URL validation failure
Instead of returning an error dict, raise ValueError so that
the CLI's @handle_error decorator can handle it consistently.

This ensures error messages are properly formatted in both
normal and JSON output modes, and prevents success messages
from being printed for invalid URLs.

Addresses Copilot review comment at line 30.
2026-04-09 11:19:38 +00:00
Furkan Köykıran
0c7af70aac fix(browser): normalize env var schemes and require explicit URL scheme
- Normalize _ALLOWED_SCHEMES to lowercase and filter empty entries
- Require explicit scheme (http/https) - reject scheme-less URLs
- Require hostname for http/https URLs
- Fix IPv6 ULA pattern to require hex + colon (was matching fdn.example.com)

Addresses Copilot review comments:
- Line 28: Uppercase env var schemes now work (HTTP,HTTPS)
- Line 65: Fixed r'^fd' pattern to r'^fd[0-9a-f]{2}:'
- Line 140: Scheme-less URLs now rejected with clear error message
2026-04-09 11:19:38 +00:00
Furkan Köykıran
84a4b22444 docs(browser): add security considerations to SKILL.md
Document security considerations for AI agents using browser CLI.

Add section covering:
- URL restrictions (blocked schemes, private network blocking)
- DOM content risks (ARIA label manipulation, hidden elements)
- Environment variables for security configuration
- Session isolation recommendations

Agents reading SKILL.md will be aware of security boundaries
and mitigations when interacting with untrusted websites.
2026-04-09 11:19:38 +00:00
Furkan Köykıran
78adc43a01 feat(browser): integrate URL validation into page navigation
Modify open_page() to validate URLs before navigation via DOMShell.

Calls validate_url() from security.py to block dangerous schemes
and optionally restrict private network access. Returns error dict
if validation fails instead of passing dangerous URLs to browser.

This prevents SSRF attacks via file://, javascript://, and other
dangerous URI schemes.
2026-04-09 11:19:38 +00:00
Furkan Köykıran
c5048a33b5 test(browser): add security module unit tests
Add 42 tests for URL validation and DOM sanitization functions.

Tests cover:
- Blocked URI schemes (file://, javascript://, data://, etc.)
- Private network detection (127.0.0.1, 192.168.x.x, 10.x.x.x)
- DOM content sanitization and prompt injection pattern flagging
- Edge cases (empty URLs, None values, malformed URLs)

All tests pass without requiring DOMShell backend.
2026-04-09 11:19:38 +00:00
Furkan Köykıran
19f3376301 feat(browser): add URL validation and DOM sanitization utilities
Add security.py with validate_url() and sanitize_dom_text() functions
to mitigate SSRF and prompt injection risks in browser automation.

- validate_url(): Blocks dangerous schemes (file://, javascript://, data://)
- sanitize_dom_text(): Flags suspicious prompt injection patterns
- Configurable via CLI_ANYTHING_BROWSER_BLOCK_PRIVATE and
  CLI_ANYTHING_BROWSER_ALLOWED_SCHEMES environment variables

This addresses security concerns raised by Ilhan Goktas during
peer review of PR #118 (DOMShell MCP browser automation).
2026-04-09 11:19:38 +00:00
akabane-rog
8c7f448331 feat: add CLI-Anything wrapper for Dify workflow
- Implemented a new CLI wrapper for the Dify workflow DSL, allowing users to create, inspect, validate, edit, export, and layout workflows through a unified command-line interface.
- Added REPL functionality for interactive command execution.
- Created utility functions for backend command resolution and subprocess execution.
- Developed comprehensive test suite covering core functionality and end-to-end scenarios.
- Included installation instructions and usage documentation in SKILL.md.
- Updated registry.json to include the new Dify Workflow entry with installation and usage details.
2026-04-09 11:19:38 +00:00
Octopus
3e0c3137a6 fix(inkscape): add -s/--save flag for auto-save in one-shot mode (fixes #182)
One-shot commands start a fresh Session each run, so in-memory changes
were silently discarded without an explicit 'document save'. This ports
the same pattern already used in the Shotcut harness (commit 17a30ba):

- Add -s/--save flag to the cli() group
- Register ctx.call_on_close(_auto_save_callback)
- _auto_save_callback saves if session is modified and not in REPL mode
2026-04-09 11:19:38 +00:00
Sereja
09a3dfa644 fix: address PR review — correct path mismatch, relocate tests
1. Rename pi-extension/ to .pi-extension/ to match Pi auto-discovery
   convention. Update root README install instructions to reference
   correct path and install.sh workflow instead of non-existent
   .pi-extension/extensions/cli-anything/.

2. Move test_skill_generator.py from .pi-extension/cli-anything/tests/
   to cli-anything-plugin/tests/ (next to skill_generator.py) so it
   runs standalone without fragile parent-navigation fallbacks.
   Update install.sh to copy tests during global install.

31/31 pytest tests pass.
2026-04-09 11:19:38 +00:00
Sergey Kostrov
d7e70cfef7 fix: correct indentation in cli-anything-plugin/commands/list.md Python example 2026-04-09 11:19:38 +00:00
Sergey Kostrov
35cac8f329 feat: add pi-extension/cli-anything with updated index.ts, install.sh and tests 2026-04-09 11:19:38 +00:00
Sergey Kostrov
0f8b7171c6 refactor: remove old .pi-extension layout, update .gitignore for new pi-extension dir 2026-04-09 11:19:38 +00:00
Sergey Kostrov
820939e3eb feat: add Pi Coding Agent extension
Adds .pi-extension directory with full CLI-Anything plugin support:
- 5 slash commands: /cli-anything, /cli-anything:refine,
  /cli-anything:test, /cli-anything:validate, /cli-anything:list
- Full HARNESS.md methodology documentation
- Guides for skill generation, PyPI publishing, MCP backend, etc.
- Utility scripts: repl_skin.py, skill_generator.py, setup-cli-anything.sh
- SKILL.md template for AI-discoverable skill definitions
- README.md documenting the extension structure and usage
- Updated root README.md to include Pi as a supported platform
2026-04-09 11:19:38 +00:00
Yuhao
9d06841248 Merge pull request #181 from rsasaki0109/feature/cloudanalyzer-harness
Add CloudAnalyzer agent harness
2026-04-08 21:49:18 +08:00
Yuhao
ba1ea89654 Merge pull request #129 from t4tarzan/feat/add-seaclip-pm2-chromadb-harnesses
feat: Add SeaClip, PM2, and ChromaDB CLI harnesses
2026-04-08 21:43:20 +08:00
yuhao
56552ea522 Address review feedback: fix hardcoded paths, PATH logic, SQLite mode
1. Replace all hardcoded /Users/whitenoise-oc/ dev paths in SEACLIP.md
   and TEST.md files (seaclip, pm2, chromadb) with generic placeholders
2. Extract shared _EXTRA_PATH_DIRS constant and _augmented_path() helper
   in pm2_backend.py so _find_pm2() and _build_env() use identical logic
3. Open SQLite in read-only mode (file:...?mode=ro) in _query_db()
4. Add trailing newline to registry.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 08:00:21 +00:00
Ryohei Sasaki
3702ff029f fix(cloudanalyzer): address code review findings
- Remove unused imports (load_project, save_project, etc.)
- Use shlex.split() in REPL for proper quoted-path handling
- Pass json_mode to _error() in REPL for consistent JSON errors
- Add --trajectory-reference to inspect web/web-export commands
- Add --heatmap/--trajectory to web-export command
- Validate --history/--history-dir in baseline decision (fail fast)
- Combine --history and --history-dir instead of ignoring one
- Add JSON validation with clear errors in baseline_decision backend
- Add try/except to info version command
- Pass --plot to backend instead of post-hoc dict mutation
2026-04-08 07:20:04 +09:00
Ryohei Sasaki
dbce794db4 fix(cloudanalyzer): align command counts to 27 in SKILL.md header and README trajectory row 2026-04-08 05:57:35 +09:00
Ryohei Sasaki
c9fc67619c chore: add cloudanalyzer to CLI-Hub registry.json
Made-with: Cursor
2026-04-08 05:56:53 +09:00
Ryohei Sasaki
a75b174c08 fix(cloudanalyzer): address harness review (backend guard, docs, README, e2e skips)
Made-with: Cursor
2026-04-08 05:56:23 +09:00
Ryohei Sasaki
d73c588078 Fix license classifier to MIT (matching CloudAnalyzer) 2026-04-08 05:55:52 +09:00
Ryohei Sasaki
9412347b09 Fix self-review issues: add missing CLI commands, clean unused imports
- Add all missing CLI commands: evaluate batch/pipeline, trajectory
  batch/run-evaluate, process sample/filter/merge/convert, inspect
  view/web/web-export (now matches SKILL.md documentation)
- Remove unused imports (sys, tempfile, subprocess)
- Remove unused variable (project in session_new)
- Fix license to GPL-3.0 to match CLI-Anything repo
2026-04-08 05:55:52 +09:00
Ryohei Sasaki
04ad941861 Add CloudAnalyzer agent harness
CloudAnalyzer is a QA platform for mapping, localization, and
perception point cloud outputs with 32 CLI commands.

Unlike other harnesses, the backend imports CloudAnalyzer's Python
API directly (no subprocess needed). Includes Click CLI with --json
on all commands, project/session management, REPL, SKILL.md, and
unit + E2E tests (14 passed).
2026-04-08 05:55:52 +09:00
Ömer
1dcf1e033d Merge pull request #156 from furkankoykiran/security/domshell-security-hardening
feat(browser): add security hardening for DOMShell MCP automation
2026-04-07 22:06:57 +03:00
Ömer
d7e70e0cbe Merge pull request #191 from Akabane71/feat/add-dify-workflow
Feat/add dify workflow
2026-04-07 21:46:36 +03:00
Ömer
ba467bae38 Merge pull request #193 from octo-patch/fix/issue-182-inkscape-auto-save
fix(inkscape): add -s/--save flag for auto-save in one-shot mode
2026-04-07 21:44:35 +03:00
Ömer
47ee93d4ec Merge pull request #178 from ruttybob/feat/pi-coding-agent
feat: add Pi Coding Agent extension
2026-04-07 21:36:31 +03:00
yuhao
336c1fcd3b update 2026-04-07 17:01:44 +00:00
Yuhao
95f541b813 Merge pull request #183 from ndpvt-web/feat/openscreen-harness
feat: add Openscreen screen recording editor CLI harness
2026-04-08 00:09:30 +08:00
Octopus
c1e5d4f195 fix(inkscape): add -s/--save flag for auto-save in one-shot mode (fixes #182)
One-shot commands start a fresh Session each run, so in-memory changes
were silently discarded without an explicit 'document save'. This ports
the same pattern already used in the Shotcut harness (commit 17a30ba):

- Add -s/--save flag to the cli() group
- Register ctx.call_on_close(_auto_save_callback)
- _auto_save_callback saves if session is modified and not in REPL mode
2026-04-07 20:01:40 +08:00
akabane-rog
a1e928d2ac feat: add CLI-Anything wrapper for Dify workflow
- Implemented a new CLI wrapper for the Dify workflow DSL, allowing users to create, inspect, validate, edit, export, and layout workflows through a unified command-line interface.
- Added REPL functionality for interactive command execution.
- Created utility functions for backend command resolution and subprocess execution.
- Developed comprehensive test suite covering core functionality and end-to-end scenarios.
- Included installation instructions and usage documentation in SKILL.md.
- Updated registry.json to include the new Dify Workflow entry with installation and usage details.
2026-04-07 15:31:14 +08:00
yuhao
69dea56a61 improve frontend 2026-04-06 13:42:02 +00:00
yuhao
369e02b9c0 Address reviewer feedback: merge main, fix namespace packages, hardcoded path, PATH mutation, SKILL.md format, setup.py completeness
Must fix:
- Merge conflicts with main resolved
- Remove hardcoded developer path in seaclip_backend.py; require SEACLIP_DB
  env var for SQLite queries (raises RuntimeError if unset)
- Switch all three setup.py from find_packages() to
  find_namespace_packages(include=["cli_anything.*"])
- Remove global os.environ["PATH"] mutation in pm2_backend.py; use
  shutil.which(path=...) with a local variable instead

Should fix:
- Align PM2 SKILL.md format with existing convention (name + description
  with >- folding syntax, command group tables)
- Add missing setup.py fields: classifiers, extras_require, package_data,
  include_package_data, zip_safe, url, consistent author

All 91 unit tests pass (25 seaclip + 28 pm2 + 38 chromadb).
2026-04-06 13:25:31 +00:00
Yuhao
ae76e0890b Merge pull request #172 from tgonzalezc5/feat/add-exa-cli
feat: add Exa CLI harness — AI-powered web search and answers
2026-04-06 21:18:54 +08:00
yuhao
e84ed7fecd Resolve merge conflicts with main (registry.json, README.md)
Keep all new CLI entries (exa, sts2, rms, renderdoc, videocaptioner,
intelwatch, clibrowser, cloudcompare) and incorporate the godot entry
added on main.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 13:17:50 +00:00
Yuhao
2ac5be9e39 Merge pull request #140 from HKUDS/feat/add-godot-cli
feat: add Godot Engine CLI harness
2026-04-06 21:11:37 +08:00
ndpvt-web
3579c6d1b4 fix: address PR review feedback (4 items)
1. Fix project_save --output parameter: add Click parameter name
   mapping so --output correctly maps to output_path
2. Use functools.wraps in handle_error decorator to preserve
   __click_params__ and other attributes
3. Fix test count mismatch: OPENSCREEN.md now shows 101 (78+23),
   TEST.md table updated with missing test row and correct numbering
4. Replace raw input() with skin.sub_input() in REPL add flows
   (zoom, speed, trim, crop) to use prompt_toolkit when available

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 07:58:28 +00:00
Sereja
262502f93e fix: address PR review — correct path mismatch, relocate tests
1. Rename pi-extension/ to .pi-extension/ to match Pi auto-discovery
   convention. Update root README install instructions to reference
   correct path and install.sh workflow instead of non-existent
   .pi-extension/extensions/cli-anything/.

2. Move test_skill_generator.py from .pi-extension/cli-anything/tests/
   to cli-anything-plugin/tests/ (next to skill_generator.py) so it
   runs standalone without fragile parent-navigation fallbacks.
   Update install.sh to copy tests during global install.

31/31 pytest tests pass.
2026-04-06 00:19:37 +03:00
Teo Gonzalez Collazo
28cf94ec5e fix: address SDK compat, version pin, gitignore, and exit code issues
- Replace invalid `additional_headers` kwarg with `user_agent` in Exa client
- Pin exa-py>=2.0.0 (code uses v2-only `contents` param)
- Add missing .gitignore Step 5/6 entries for exa/
- Exit non-zero from `server status` when check fails

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:19:34 -07:00
Teo Gonzalez Collazo
574f5bd4b0 fix: address PR review feedback (items 1-6)
- Reformat PR body to match repo template
- Add Exa to root README (category table, software grid, directory tree)
- Add comment explaining different build_contents_param() usage in search vs get_contents
- Document that server status consumes 1 search credit
- Clarify auto=neural in --type help text
- Remove stale noqa: SIM114 comment

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00
Teo Gonzalez Collazo
7e6fdf3413 fix: address Copilot review feedback on Exa CLI harness
- Fix REPL to use skin.get_input() instead of skin.prompt() so it
  actually reads user input
- Use shlex.split() instead of str.split() to preserve quoted arguments
- Remove unnecessary ImportError guard on ReplSkin (prompt-toolkit is
  optional within ReplSkin itself)
- Deduplicate get_contents() by reusing build_contents_param()
- Use shutil.which() instead of shelling out to `which` in tests
- Fix get_client() docstring to match actual RuntimeError raise

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00
Teo Gonzalez Collazo
db2ff670ef revert: remove unnecessary _json_output reset in REPL loop
cli.main() re-invokes the root group callback on every dispatch, which
already resets _json_output = use_json before any output runs — so the
reset in finally was a no-op.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:19:23 -07:00