Changeset 6b5d7da in Klonkt for src/config/database.js


Ignore:
Timestamp:
07/24/2026 04:56:51 PM (7 weeks ago)
Author:
Robin Genis <roboburr@…>
Branches:
main
Children:
e61c289
Parents:
9a00f28
Message:

Guardianship als eigen module + gedeelde BlocklistService

FEP-633c (Guardians) lag verspreid door ActivityPubService; nu is het één
cohesief onderdeel in src/services/guardianship/ met submodules. De
blocklist staat er bewust NAAST (BlocklistService): die wordt gedeeld met
Klonkt zelf (Block-tab) en is niet guardianship-specifiek.

De module importeert ActivityPubService nooit terug: de AP-helpers gaan er
één keer in via wireDelivery/wireHandshake, en de service delegeert met
dunne wrappers zodat elke bestaande aanroep blijft werken.

Naast de verhuizing ook de serverkant die nog miste (shaer-bh1): de
ap_guardianships-relaties, shaer:guardians/isGuardian/queues op het
actor-doc, en de adoptie-handshake Offer/Accept/Reject over C2S en S2S,
met het contract van de Shaer test-daemon zodat de iOS/Android-clients het
ongewijzigd spreken. Een inkomend hulpverzoek (shaer:helpRequest op een
directe mention) krijgt een eigen vlag in ap_mentions en pusht als
'help'-type richting de Guardian-PWA (volgende commit).

Changed files:
src/services/ActivityPubService.js

  • shaer-context, actor-props en helpRequest uit de module gespread
  • blocklist-functies zijn delegaties naar BlocklistService
  • c2sVisibility/deliverDirectNote re-export uit guardianship/delivery
  • C2S: Offer/Accept/Reject eerst langs de handshake-module
  • S2S: Offer aan GATED (signature-eis) + handshake-routering
  • inbound mention: help_request-vlag + 'help'/'guardian'-push-events

src/config/database.js

  • tabel ap_guardianships (slug, role, other_uri, status, offer_id)
  • kolom ap_mentions.help_request

test/activitypub-as2.test.js

  • shaer:queues/offers/follows/wards in de AS2-allowlist

New file:
src/services/BlocklistService.js

  • ap_blocks-opslag, blockTarget/unblock/listBlocks/isBlockedAny, purge; handle-resolver via injectie (geen circulaire import)

src/services/guardianship/index.js

  • de publieke API van het onderdeel

src/services/guardianship/context.js

  • shaer-namespace + Relationship-vocabulaire

src/services/guardianship/relations.js

  • ap_guardianships-API + actor-props (FEP-633c paragraaf 2)

src/services/guardianship/handshake.js

src/services/guardianship/queues.js

src/services/guardianship/notes.js

  • shaer:helpRequest lezen/schrijven

src/services/guardianship/delivery.js

  • de directe-note-route (call-for-help), gedrag ongewijzigd

remarks: alle 158 tests groen. push-teksten (push.n_help_*, push.n_guard_*)
en de queue-routes + Guardian-PWA volgen in de volgende commits.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/config/database.js

    r9a00f28 r6b5d7da  
    405405    );
    406406    CREATE INDEX IF NOT EXISTS idx_ap_blocks_target ON ap_blocks(target);
     407    CREATE TABLE IF NOT EXISTS ap_guardianships (
     408      id INTEGER PRIMARY KEY AUTOINCREMENT,
     409      slug TEXT NOT NULL,          -- our local site in this relation (guardianship module)
     410      role TEXT NOT NULL,          -- 'guardian' (slug guards other) | 'ward' (other guards slug)
     411      other_uri TEXT NOT NULL,     -- the counterpart actor URI (local or remote)
     412      other_handle TEXT,           -- cached @user@host for display
     413      status TEXT NOT NULL,        -- 'offered' (handshake pending) | 'accepted'
     414      offer_id TEXT,               -- the Offer activity id (FEP-633c section 3)
     415      created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
     416      UNIQUE(slug, role, other_uri)
     417    );
     418    CREATE INDEX IF NOT EXISTS idx_ap_guardianships_slug ON ap_guardianships(slug, role, status);
    407419    CREATE TABLE IF NOT EXISTS ap_delivery (
    408420      id INTEGER PRIMARY KEY AUTOINCREMENT,
     
    485497  ensureColumn('ap_outbox', 'to_actors', 'TEXT');   // JSON array of recipient actor URIs for direct notes
    486498  ensureColumn('ap_outbox', 'help_request', 'INTEGER'); // FEP-633c shaer:helpRequest (ward's call for help)
     499  ensureColumn('ap_mentions', 'help_request', 'INTEGER'); // inbound ward call-for-help (Guardian PWA message centre)
    487500  ensureColumn('ap_followers', 'name', 'TEXT');    // cached display name (shaer-aa3)
    488501  ensureColumn('ap_followers', 'handle', 'TEXT');  // @user@host
Note: See TracChangeset for help on using the changeset viewer.