claude code agent 227
|
7190eb27f4
|
feat(git-sync): GitSyncModule orchestrator + config + listener (Phase A.4b/B)
Control plane wiring (plan §5-§11):
- PageService create/update/movePage now honor provenance actor 'git-sync'
(stamp lastUpdatedSource='git-sync'), closing the A.4a gap.
- EnvironmentService: GIT_SYNC_ENABLED / DATA_DIR / REMOTE_TEMPLATE /
POLL_INTERVAL_MS / DEBOUNCE_MS / SERVICE_USER_ID (required-if-enabled) /
SSH_KEY_PATH + validation.
- VaultRegistryService: per-space vault path + cached VaultGit.
- GitSyncOrchestrator: per-space Redis leader-lock (SET NX PX + CAS-Lua release,
randomUUID instanceId) + in-process mutex; runOnce drives the vendored engine
PULL (readExisting->computePullActions->applyPullActions) then PUSH (runPush)
with the bound native GitSyncClient + VaultGit; @Interval poll-safety gated on
GIT_SYNC_ENABLED; imports plain ScheduleModule (TelemetryModule owns forRoot).
- PageChangeListener: @OnEvent PAGE_* -> per-space debounce -> runOnce, with a
best-effort lastUpdatedSource==='git-sync' loop-guard.
- GitSyncController: admin POST /api/git-sync/trigger + GET /status (ops/e2e).
- GitSyncModule registered in app.module. Enabled-space enumeration uses
settings.gitSync.enabled, falling back to all live spaces until Phase C writes
the flag (master gate = GIT_SYNC_ENABLED).
tsc clean; 713 tests/71 suites pass; dev server hot-reloaded the module (route
live, DI graph boots). Live pull/push round-trip verified next.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-26 20:38:46 +03:00 |
|