cli/pkg/i18n
Snider d731afc298 feat(dev): add safe git operations for AI agents (#71)
* feat(dev): add safe git operations for AI agents

Adds agent-safe commands to prevent common git mistakes:

- `core dev sync <file> --to="pattern"`: Sync files across repos
  - Auto-pulls before copying (safe sync)
  - Optional commit with --message
  - Optional push with --push
  - Dry-run mode with --dry-run

- `core dev apply --command="..."`: Run commands across repos
  - Execute shell commands in each repo
  - Execute scripts with --script
  - Optional commit/push after changes
  - Continue on error with --continue
  - Filter repos with --repos

Safety features:
- Never force push
- Auto-pull before push on rejection
- Report failures without stopping other repos
- Dry-run support for previewing changes

Closes #53

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(dev): address CodeRabbit review feedback

- Use errors.E() for consistent error handling in cmd_apply.go and cmd_file_sync.go
- Add path traversal validation to reject ".." in source paths
- Execute scripts directly to honor shebangs (not via sh)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 06:11:24 +00:00
..
locales feat(dev): add safe git operations for AI agents (#71) 2026-02-01 06:11:24 +00:00
compose.go feat(i18n): add options pattern and NewWithLoader constructor 2026-01-30 18:47:11 +00:00
compose_data_test.go refactor(i18n): rename intents_test.go to compose_data_test.go 2026-01-30 16:52:30 +00:00
compose_test.go feat(i18n): add options pattern and NewWithLoader constructor 2026-01-30 18:47:11 +00:00
context.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00
context_test.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00
debug.go docs(i18n): clarify Set* behaviour and fix CurrentLanguage default 2026-01-30 18:11:03 +00:00
grammar.go fix(i18n): address remaining code review issues 2026-01-30 19:10:28 +00:00
grammar_test.go refactor(i18n): consistent empty input handling and add doc comment 2026-01-30 18:15:28 +00:00
handler.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00
handler_test.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00
hooks.go feat(i18n): add RegisterLocales for package locale registration 2026-01-30 20:51:32 +00:00
i18n.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00
i18n_test.go fix(i18n): address remaining code review issues 2026-01-30 19:10:28 +00:00
interface_test.go refactor(i18n): remove C() and move intents to test-only 2026-01-30 16:50:08 +00:00
language.go refactor(i18n): final code standards cleanup 2026-01-30 18:08:33 +00:00
language_test.go feat(i18n): add Phase 4 extended language support 2026-01-30 12:55:41 +00:00
loader.go feat(i18n): add RegisterLocales for package locale registration 2026-01-30 20:51:32 +00:00
loader_test.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00
localise.go docs(i18n): clarify Set* behaviour and fix CurrentLanguage default 2026-01-30 18:11:03 +00:00
mode_test.go fix(i18n): address thread-safety issues from code review 2026-01-30 19:02:30 +00:00
numbers.go refactor(i18n): consolidate types into interfaces.go 2026-01-30 17:24:24 +00:00
numbers_test.go refactor(i18n): remove legacy i18n.{format} shortcuts 2026-01-30 17:34:45 +00:00
service.go feat(i18n): add RegisterLocales for package locale registration 2026-01-30 20:51:32 +00:00
time.go feat(i18n): add localized time formatting helpers 2026-01-30 14:44:42 +00:00
time_test.go refactor(i18n): remove legacy i18n.{format} shortcuts 2026-01-30 17:34:45 +00:00
transform.go fix(i18n): address remaining code review issues 2026-01-30 19:10:28 +00:00
types.go refactor(i18n): implement extensible handler chain architecture 2026-01-30 18:42:41 +00:00