viettranx
|
ee328d4266
|
refactor: consolidate hooks table migration and drop deprecated agent_id column
- Consolidated PG migration 054: agent_hooks rename + junction table + deprecated column drop
- Updated SQLite schema v19 with final consolidated migration
- Removed obsolete schema rebuild files (v21, v23)
- Updated Go store layer (pg/hooks.go, sqlitestore/hooks.go)
- Updated integration tests to use new table names (hooks, hook_agents)
- Updated TypeScript protocol, UI components, and i18n strings
- Updated gateway methods to reflect schema changes
Tables: agent_hooks → hooks, agent_hook_agents → hook_agents
|
2026-04-16 14:17:48 +07:00 |
|
viettranx
|
8ee540dc7e
|
feat(hooks/builtin): embedded registry + UPSERT seed + store-layer readonly
Phase 04 of hooks Wave 1. Adds infrastructure for shipping canonical hook
rows with the binary; Phase 05 plants the first real builtin (pii-redactor).
- internal/hooks/builtin: loader (//go:embed yaml+js), Seed() with version
reconciliation (newer embed overwrites DB; downgrade warn-only; preserves
user's enabled toggle), AllowlistFor() for per-id mutable-field lookup.
Stable UUIDv5 namespace 082ab084-a25f-52b4-a4a4-eb8a816bd9a8 keys rows
across restarts so Seed is idempotent on every boot.
- internal/hooks/store.go: ErrBuiltinReadOnly sentinel + WithSeedBypass
ctx marker (seeder bypasses the guard; users cannot).
- PG + SQLite hook stores: Update/Delete now reject any patch other than
enabled=* on source='builtin' rows. Fail-closed on GetByID errors.
- Dispatcher: SetBuiltinAllowlistLookup setter lets the gateway wire the
registry-backed strict allowlist; unwired tests keep Phase 03 permissive
default. Gateway installs a strip-all lookup first so a Load() failure
fails closed instead of opening mutation to the permissive default.
- i18n: MsgHookBuiltinReadOnly (en/vi/zh).
- yaml.v3 promoted to direct dep.
- Tests: loader parse + namespace stability + seed idempotency
(3 boots → N rows), version bump, downgrade detection, operator
BuiltinDisable escape hatch, PG + SQLite readonly guard round-trip.
|
2026-04-16 14:17:47 +07:00 |
|
viettranx
|
3fe5ae0b50
|
feat(hooks): introduce agent lifecycle hooks foundation with fail-closed blocking semantics
Phase 1 of agent-hooks-system establishes:
- Hook types, matchers, and CEL evaluation engine for event-driven extensibility
- Edition-gated command handlers (Lite disabled) with dedup_key-indexed audit log
- Dual-DB store layer (PostgreSQL + SQLite) with transaction boundary enforcement
- Blocking-event semantics: hook execution failures propagate to agent loop, graceful retry
- Tenant-isolated audit trail with per-hook execution context tracing
- Integration tests verifying store correctness and hook dispatch atomicity
Lays groundwork for post-v3.0 phase-02 (per-tenant onboarding hooks).
|
2026-04-15 14:25:59 +07:00 |
|