feat(go): durable transaction engine and Kiro IDE 1.0 adapter

Split the monolithic transaction into focused modules: append-only
crash-recoverable journal under ~/.elydora/transactions with owner
tokens and per-transaction namespaces, staged atomic publication
(stage .pending, fsync, rename, fsync), platform-specific atomic
replacement (MoveFileEx, renameat2, renamex_np), private-directory
hardening per OS, lock-guarded recovery, and workspace cleanup that
removes only transaction-created empty directories.

Add the Kiro IDE 1.0 plugin: strict v1 hook schema with one enabled
PreToolUse guard and PostToolUse audit pair bound to the active
workspace, agent-to-workspace identity binding in runtime config, and
exact migration of the legacy elydora-audit.kiro.hook contract.

Gates: go test ./... and -race pass, go vet clean, govulncheck reports
zero reachable vulnerabilities, git diff --check clean.
This commit is contained in:
ZacharyZhang-NY committed 2026-07-21 19:02:57 -04:00
1 parent dd72793cdb
commit eb41b991bf
70 files changed
+8182 -358

No files matched your search

+9
View File
@@ -13,6 +13,7 @@ type managedFileSnapshot struct {
contents []byte
info os.FileInfo
mode os.FileMode
identity string
}
func readManagedFile(
@@ -51,6 +52,13 @@ func readManagedFile(
file.Close(),
)
}
identity, identityErr := transactionFileIdentity(file, after)
if identityErr != nil {
return nil, errors.Join(
fmt.Errorf("identify %s at %s: %w", label, filePath, identityErr),
file.Close(),
)
}
raw, readErr := io.ReadAll(io.LimitReader(file, maximumBytes+1))
closeErr := file.Close()
if readErr != nil || closeErr != nil {
@@ -70,6 +78,7 @@ func readManagedFile(
contents: raw,
info: after,
mode: after.Mode().Perm(),
identity: identity,
}, nil
}