feat(delete): real deletes — adapters seeded once into adapter_dir (existing dir is authoritative), sources removed from config.yaml on delete; drop tombstone mechanism for both. Docs: multi-key architecture, gateway_keys as seed

This commit is contained in:
root
2026-08-10 11:52:51 +08:00
parent e2dd4d9727
commit f46b02089c
8 changed files with 184 additions and 67 deletions

View File

@ -183,11 +183,20 @@ func (v *VM) Start() error {
if v.dir == "" {
return nil
}
if err := os.MkdirAll(v.dir, 0755); err != nil {
return fmt.Errorf("mkdir adapter dir: %w", err)
// First-run seeding: a brand-new adapter dir is created and populated with
// the bundled adapters. If the dir already exists it is treated as
// authoritative and never rewritten — deleting a file there is a real delete.
firstRun := false
if _, err := os.Stat(v.dir); os.IsNotExist(err) {
firstRun = true
if err := os.MkdirAll(v.dir, 0755); err != nil {
return fmt.Errorf("mkdir adapter dir: %w", err)
}
}
if err := v.writeBundledAdapters(); err != nil {
return err
if firstRun {
if err := v.writeBundledAdapters(); err != nil {
return err
}
}
entries, err := os.ReadDir(v.dir)
if err != nil {