Commit Graph

12 Commits

Author SHA1 Message Date
Yuhao
4fda419f4a Merge pull request #94 from ZJZAC/fix/session-race-condition
fix(session): atomic file locking to prevent race conditions in all harnesses
2026-03-17 16:30:03 +08:00
ZJZAC
2f44c85f7c fix(session): add atomic file locking to prevent race conditions in all harnesses
Closes #51

The root cause: all 10 harnesses used bare `open("w") + json.dump()` for
session saves. `open("w")` truncates the file before any lock can be
acquired, so concurrent writes silently corrupt or lose data.

Fix: add `_locked_save_json()` to each session.py that opens with "r+"
(no truncation), acquires fcntl.LOCK_EX, then truncates inside the lock.
Falls back gracefully on Windows where fcntl is unavailable.

Also:
- Update HARNESS.md with session file locking guidance (per maintainer
  request on PR #52)
- Add concurrent write tests (4 threads × 50 writes) to verify the fix

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 14:35:13 +08:00
yuhao
11acc2c66c Merge remote-tracking branch 'origin/main' into feature/skill-generation
# Conflicts:
#	.gitignore
#	blender/agent-harness/setup.py
2026-03-16 09:37:34 +00:00
yuhao
31abba22a4 docs: populate Command Groups tables in all 11 SKILL.md files
Fill in the previously empty command tables with actual commands
extracted from each CLI's Click decorators. All 11 harnesses now
have complete command documentation in their SKILL.md files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 09:23:30 +00:00
yuhao
1db1622156 refactor: move SKILL.md inside Python package for pip install support
Move skills/SKILL.md from the harness root into
cli_anything/<software>/skills/SKILL.md so it is installed alongside the
package via pip. Add package_data to all 11 setup.py files. Make
ReplSkin auto-detect the skill file relative to its own __file__
location, removing the need for an explicit skill_path argument.
Update HARNESS.md, cli-anything.md, plugin README, and main README.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 09:06:31 +00:00
yuhao
f73833d15a refactor: rename skill files to SKILL.md, drop software prefix from filename
Standardize skill file naming from <software>_SKILL.md to SKILL.md across
all 11 harnesses. Update skill_generator.py, HARNESS.md, repl_skin.py,
cli-anything.md, and plugin README.md to reference the new path. Add
SKILL.md generation section to main README.md and mark roadmap item done.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 08:39:51 +00:00
7. Sun
479fa5c31e feat(session): sort JSON keys for deterministic agent diffing 2026-03-15 07:57:50 +00:00
Alon Tevet
167b8a8b51 feat: Add skill path display in CLI banner and generate SKILL.md for all harnesses
## Changes

### 1. Display skill path in CLI header (repl_skin.py)
- Added `skill_path` parameter to ReplSkin class
- Banner now displays skill path when provided: `◇ Skill: skills/<software>_SKILL.md`
- This enables AI agents to discover where to read the skill documentation

### 2. Generate SKILL.md files for all 11 existing CLI harnesses
- anygen/agent-harness/skills/anygen_SKILL.md
- audacity/agent-harness/skills/audacity_SKILL.md
- blender/agent-harness/skills/blender_SKILL.md
- drawio/agent-harness/skills/drawio_SKILL.md
- gimp/agent-harness/skills/gimp_SKILL.md
- inkscape/agent-harness/skills/inkscape_SKILL.md
- kdenlive/agent-harness/skills/kdenlive_SKILL.md
- libreoffice/agent-harness/skills/libreoffice_SKILL.md
- obs-studio/agent-harness/skills/obs_studio_SKILL.md
- shotcut/agent-harness/skills/shotcut_SKILL.md
- zoom/agent-harness/skills/zoom_SKILL.md

### 3. Update HARNESS.md with skill path guidance
- Updated Phase 3 (REPL section) to show skill_path parameter usage
- Added "Display Skill Path in CLI Banner" section in Phase 6.5

### 4. Fix skill_generator.py syntax error
- Fixed list comprehension indentation on line 80-81

Addresses maintainer feedback from PR #47 comment:
- "displaying the skill path on the cli header so that agents can know where to read it"
- "generate skill.md files for all existing CLIs we have in the repo"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 12:44:51 +02:00
Yuhao
21fbdc9a3b Merge pull request #18 from Laplace5079/fix/windows-libreoffice-backend
fix(libreoffice): enable real LibreOffice backend on Windows and macOS
2026-03-11 17:03:26 +08:00
OpenClaw
02acd54ca1 fix: replace placeholder URLs with correct HKUDS/CLI-Anything URL
Fixed 8 setup.py files that had placeholder URLs:
- Changed 'yourusername' to 'HKUDS'
- Changed repo name to 'CLI-Anything'

This fixes broken metadata when packages are published to PyPI.
2026-03-11 13:53:20 +08:00
Laplace5079
67e7032d7d fix(libreoffice): enable real LibreOffice backend on Windows and macOS
find_libreoffice() previously only searched PATH, which misses the
default install location on Windows (Program Files\LibreOffice\program)
and macOS (/Applications/LibreOffice.app). Added platform-aware
fallback paths so the backend works out of the box after a standard
install.

get_version() called `soffice --version` without --headless, which
opens a GUI splash on Windows and hangs indefinitely. Now uses
`--headless --version` and gracefully falls back on timeout.

Tested on Windows with LibreOffice 26.2.1:
  - 89 unit tests PASS
  - 69 E2E tests PASS (including 13 real LibreOffice backend tests)
  - PDF, DOCX, XLSX, PPTX, CSV all verified via magic bytes / OOXML

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:25:38 -06:00
yuh
01488030bd first commit 2026-03-08 21:58:43 +08:00