@commonpub/server 2.72.0 → 2.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/content/content.d.ts.map +1 -1
  2. package/dist/content/content.js +7 -2
  3. package/dist/content/content.js.map +1 -1
  4. package/dist/contest/contest.d.ts +2 -0
  5. package/dist/contest/contest.d.ts.map +1 -1
  6. package/dist/contest/contest.js +22 -9
  7. package/dist/contest/contest.js.map +1 -1
  8. package/dist/federation/backfill.d.ts +9 -1
  9. package/dist/federation/backfill.d.ts.map +1 -1
  10. package/dist/federation/backfill.js +33 -2
  11. package/dist/federation/backfill.js.map +1 -1
  12. package/dist/federation/delivery.d.ts.map +1 -1
  13. package/dist/federation/delivery.js +3 -2
  14. package/dist/federation/delivery.js.map +1 -1
  15. package/dist/federation/federation.d.ts.map +1 -1
  16. package/dist/federation/federation.js +14 -5
  17. package/dist/federation/federation.js.map +1 -1
  18. package/dist/federation/hubMirroring.d.ts.map +1 -1
  19. package/dist/federation/hubMirroring.js +8 -0
  20. package/dist/federation/hubMirroring.js.map +1 -1
  21. package/dist/federation/inboxHandlers.d.ts.map +1 -1
  22. package/dist/federation/inboxHandlers.js +86 -1
  23. package/dist/federation/inboxHandlers.js.map +1 -1
  24. package/dist/federation/index.d.ts +2 -1
  25. package/dist/federation/index.d.ts.map +1 -1
  26. package/dist/federation/index.js +2 -1
  27. package/dist/federation/index.js.map +1 -1
  28. package/dist/federation/mirroring.d.ts +56 -2
  29. package/dist/federation/mirroring.d.ts.map +1 -1
  30. package/dist/federation/mirroring.js +281 -32
  31. package/dist/federation/mirroring.js.map +1 -1
  32. package/dist/federation/outboxQueries.d.ts +9 -11
  33. package/dist/federation/outboxQueries.d.ts.map +1 -1
  34. package/dist/federation/outboxQueries.js +102 -41
  35. package/dist/federation/outboxQueries.js.map +1 -1
  36. package/dist/federation/registry.d.ts +79 -0
  37. package/dist/federation/registry.d.ts.map +1 -0
  38. package/dist/federation/registry.js +205 -0
  39. package/dist/federation/registry.js.map +1 -0
  40. package/dist/hub/members.d.ts.map +1 -1
  41. package/dist/hub/members.js +11 -7
  42. package/dist/hub/members.js.map +1 -1
  43. package/dist/hub/posts.d.ts.map +1 -1
  44. package/dist/hub/posts.js +3 -1
  45. package/dist/hub/posts.js.map +1 -1
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/social/social.d.ts.map +1 -1
  51. package/dist/social/social.js +9 -0
  52. package/dist/social/social.js.map +1 -1
  53. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,sBAAsB,GAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAA4B,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAA6C,MAAM,eAAe,CAAC;AAChI,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,EAEtB,2BAA2B,GAE5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,GAOhB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/federation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,sBAAsB,GAEvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAA4B,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAA6C,MAAM,eAAe,CAAC;AAChI,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,EAEtB,2BAA2B,GAE5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GAIpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,GAGjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,GAOhB,MAAM,YAAY,CAAC"}
@@ -14,13 +14,67 @@ export interface MirrorConfig {
14
14
  createdAt: string;
15
15
  }
16
16
  /**
17
- * Create a new instance mirror subscription.
18
- * The instance actor will follow the remote instance actor to receive content.
17
+ * Create a new PULL instance mirror subscription — the instance actor follows the remote instance
18
+ * actor to receive its public content. (Push is a consent-based request — see `requestMirror`.)
19
19
  */
20
20
  export declare function createMirror(db: DB, remoteDomain: string, remoteActorUri: string, direction: 'pull' | 'push', localDomain: string, filters?: {
21
21
  contentTypes?: string[];
22
22
  tags?: string[];
23
23
  }): Promise<MirrorConfig>;
24
+ export interface MirrorRequestConfig {
25
+ id: string;
26
+ direction: 'incoming' | 'outgoing';
27
+ remoteDomain: string;
28
+ remoteActorUri: string;
29
+ status: 'pending' | 'approved' | 'rejected';
30
+ offerActivityUri: string | null;
31
+ resultingMirrorId: string | null;
32
+ lastError: string | null;
33
+ decidedAt: string | null;
34
+ createdAt: string;
35
+ }
36
+ /**
37
+ * Send a consent-based mirror request (createMirror direction:'push') — ask a remote CommonPub
38
+ * instance to pull-mirror US. Stores an 'outgoing' request row and queues a signed `Offer(Follow)`
39
+ * to the target's inbox. Re-requesting the same domain resets the row to pending (idempotent).
40
+ */
41
+ export declare function requestMirror(db: DB, remoteDomain: string, remoteActorUri: string, localDomain: string): Promise<MirrorRequestConfig>;
42
+ /** List mirror requests, optionally filtered by direction. */
43
+ export declare function listMirrorRequests(db: DB, direction?: 'incoming' | 'outgoing'): Promise<MirrorRequestConfig[]>;
44
+ /** Get a single mirror request by id. */
45
+ export declare function getMirrorRequest(db: DB, requestId: string): Promise<MirrorRequestConfig | null>;
46
+ /**
47
+ * Approve an INCOMING mirror request: create a pull mirror of the requester (using the approver's
48
+ * own depth + filters), optionally backfill bounded history, queue an `Accept(Offer)` back to the
49
+ * requester, and mark the request approved. Idempotent if a pull mirror already exists for the
50
+ * requester's domain (reuses it — respects the unique(remote_domain) constraint).
51
+ */
52
+ export declare function approveMirrorRequest(db: DB, requestId: string, localDomain: string, opts?: {
53
+ sinceDays?: number;
54
+ maxItems?: number;
55
+ filterContentTypes?: string[] | null;
56
+ filterTags?: string[] | null;
57
+ }): Promise<MirrorRequestConfig>;
58
+ /**
59
+ * Reject an INCOMING mirror request: queue a `Reject(Offer)` back to the requester and mark it
60
+ * rejected. No mirror is created.
61
+ */
62
+ export declare function rejectMirrorRequest(db: DB, requestId: string, localDomain: string): Promise<MirrorRequestConfig>;
63
+ /** A remote instance that follows our instance Service actor — i.e. is mirroring us. */
64
+ export interface InstanceFollower {
65
+ actorUri: string;
66
+ domain: string;
67
+ followedAt: string | null;
68
+ }
69
+ /**
70
+ * List the instances mirroring US — remote actors that follow our instance Service actor
71
+ * (`https://{domain}/actor`) with an accepted follow. Each such follower is an instance
72
+ * pulling our public content. This is the read side of "who is mirroring me".
73
+ *
74
+ * Note: this is INSTANCE-level only (followers of `/actor`), not per-user followers — a
75
+ * remote user following a local user is not mirroring the instance.
76
+ */
77
+ export declare function listInstanceFollowers(db: DB, domain: string): Promise<InstanceFollower[]>;
24
78
  /**
25
79
  * Activate a pending mirror (called after the Follow is accepted).
26
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"mirroring.d.ts","sourceRoot":"","sources":["../../src/federation/mirroring.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrD,OAAO,CAAC,YAAY,CAAC,CA6CvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5E;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS1E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGjE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAOtF;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,IAAI,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7B,iGAAiG;AACjG,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgExB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CASf"}
1
+ {"version":3,"file":"mirroring.d.ts","sourceRoot":"","sources":["../../src/federation/mirroring.ts"],"names":[],"mappings":"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"}
@@ -3,53 +3,302 @@
3
3
  * Uses standard AP semantics: instance B's Service actor follows instance A's Service actor.
4
4
  * Content arrives via normal inbox Create activities, filtered by mirror config.
5
5
  */
6
- import { eq, and, sql } from 'drizzle-orm';
7
- import { instanceMirrors, federatedContent, activities, followRelationships, } from '@commonpub/schema';
8
- import { buildFollowActivity } from '@commonpub/protocol';
6
+ import { eq, and, sql, desc } from 'drizzle-orm';
7
+ import { instanceMirrors, mirrorRequests, federatedContent, activities, followRelationships, } from '@commonpub/schema';
8
+ import { buildFollowActivity, buildMirrorRequestActivity, buildAcceptActivity, buildRejectActivity, } from '@commonpub/protocol';
9
9
  /**
10
- * Create a new instance mirror subscription.
11
- * The instance actor will follow the remote instance actor to receive content.
10
+ * Resolve+cache the remote instance actor, then store a pending follow relationship and queue a
11
+ * signed Follow from our instance actor to it — so the remote delivers its content to us. Shared by
12
+ * `createMirror` and `approveMirrorRequest`'s reuse-an-existing-mirror path. `onConflictDoNothing`
13
+ * keeps it idempotent if a relationship row already exists.
14
+ */
15
+ async function queueInstanceFollow(db, remoteActorUri, localDomain) {
16
+ // CRITICAL: resolve and cache the remote actor FIRST so the delivery worker can find their inbox.
17
+ const { resolveRemoteActor } = await import('./federation.js');
18
+ const resolved = await resolveRemoteActor(db, remoteActorUri).catch(() => null);
19
+ if (!resolved) {
20
+ console.warn(`[mirroring] Could not resolve remote actor ${remoteActorUri} — Follow delivery may fail`);
21
+ }
22
+ const localActorUri = `https://${localDomain}/actor`;
23
+ await db
24
+ .insert(followRelationships)
25
+ .values({ followerActorUri: localActorUri, followingActorUri: remoteActorUri, status: 'pending' })
26
+ .onConflictDoNothing();
27
+ await db.insert(activities).values({
28
+ type: 'Follow',
29
+ actorUri: localActorUri,
30
+ objectUri: remoteActorUri,
31
+ payload: buildFollowActivity(localDomain, localActorUri, remoteActorUri),
32
+ direction: 'outbound',
33
+ status: 'pending',
34
+ });
35
+ }
36
+ /**
37
+ * Create a new PULL instance mirror subscription — the instance actor follows the remote instance
38
+ * actor to receive its public content. (Push is a consent-based request — see `requestMirror`.)
12
39
  */
13
40
  export async function createMirror(db, remoteDomain, remoteActorUri, direction, localDomain, filters) {
41
+ if (direction === 'push') {
42
+ // Push is no longer a mirror row — it's a consent-based request to the remote instance.
43
+ throw new Error('createMirror only handles pull mirrors; use requestMirror() for push (consent-based) requests');
44
+ }
14
45
  const [row] = await db
15
46
  .insert(instanceMirrors)
16
47
  .values({
17
48
  remoteDomain,
18
49
  remoteActorUri,
19
- direction,
50
+ direction: 'pull',
20
51
  status: 'active', // Start as active immediately
21
52
  filterContentTypes: filters?.contentTypes ?? null,
22
53
  filterTags: filters?.tags ?? null,
23
54
  })
24
55
  .returning();
25
- // For pull mirrors: Follow the remote instance actor so they deliver content to us
26
- if (direction === 'pull') {
27
- // CRITICAL: resolve and cache the remote actor FIRST so the delivery worker
28
- // can find their inbox when delivering the Follow activity
29
- const { resolveRemoteActor } = await import('./federation.js');
30
- const resolved = await resolveRemoteActor(db, remoteActorUri).catch(() => null);
31
- if (!resolved) {
32
- console.warn(`[mirroring] Could not resolve remote actor ${remoteActorUri} — mirror created but Follow delivery may fail`);
33
- }
34
- const localActorUri = `https://${localDomain}/actor`;
35
- const followActivity = buildFollowActivity(localDomain, localActorUri, remoteActorUri);
36
- // Store the follow relationship so the remote can find us
37
- await db.insert(followRelationships).values({
38
- followerActorUri: localActorUri,
39
- followingActorUri: remoteActorUri,
40
- status: 'pending',
41
- }).onConflictDoNothing();
42
- // Queue the Follow for delivery
43
- await db.insert(activities).values({
44
- type: 'Follow',
45
- actorUri: localActorUri,
46
- objectUri: remoteActorUri,
47
- payload: followActivity,
48
- direction: 'outbound',
56
+ // Pull mirror: Follow the remote instance actor so they deliver content to us.
57
+ await queueInstanceFollow(db, remoteActorUri, localDomain);
58
+ return mirrorRowToConfig(row);
59
+ }
60
+ function mirrorRequestRowToConfig(row) {
61
+ return {
62
+ id: row.id,
63
+ direction: row.direction,
64
+ remoteDomain: row.remoteDomain,
65
+ remoteActorUri: row.remoteActorUri,
66
+ status: row.status,
67
+ offerActivityUri: row.offerActivityUri,
68
+ resultingMirrorId: row.resultingMirrorId,
69
+ lastError: row.lastError,
70
+ decidedAt: row.decidedAt?.toISOString() ?? null,
71
+ createdAt: row.createdAt.toISOString(),
72
+ };
73
+ }
74
+ /**
75
+ * Send a consent-based mirror request (createMirror direction:'push') — ask a remote CommonPub
76
+ * instance to pull-mirror US. Stores an 'outgoing' request row and queues a signed `Offer(Follow)`
77
+ * to the target's inbox. Re-requesting the same domain resets the row to pending (idempotent).
78
+ */
79
+ export async function requestMirror(db, remoteDomain, remoteActorUri, localDomain) {
80
+ // Resolve + cache the remote actor first so the delivery worker can find its inbox.
81
+ const { resolveRemoteActor } = await import('./federation.js');
82
+ const resolved = await resolveRemoteActor(db, remoteActorUri).catch(() => null);
83
+ if (!resolved) {
84
+ console.warn(`[mirroring] Could not resolve ${remoteActorUri} — request created but Offer delivery may fail`);
85
+ }
86
+ const localActorUri = `https://${localDomain}/actor`;
87
+ const offer = buildMirrorRequestActivity(localDomain, localActorUri, remoteActorUri);
88
+ const [row] = await db
89
+ .insert(mirrorRequests)
90
+ .values({
91
+ direction: 'outgoing',
92
+ remoteDomain,
93
+ remoteActorUri,
94
+ status: 'pending',
95
+ offerActivityUri: offer.id,
96
+ })
97
+ .onConflictDoUpdate({
98
+ target: [mirrorRequests.direction, mirrorRequests.remoteDomain],
99
+ set: {
100
+ remoteActorUri,
49
101
  status: 'pending',
50
- });
102
+ offerActivityUri: offer.id,
103
+ lastError: null,
104
+ decidedAt: null,
105
+ updatedAt: new Date(),
106
+ },
107
+ })
108
+ .returning();
109
+ // Queue the Offer for delivery to the target instance's inbox.
110
+ await db.insert(activities).values({
111
+ type: 'Offer',
112
+ actorUri: localActorUri,
113
+ objectUri: remoteActorUri,
114
+ payload: offer,
115
+ direction: 'outbound',
116
+ status: 'pending',
117
+ });
118
+ return mirrorRequestRowToConfig(row);
119
+ }
120
+ /** List mirror requests, optionally filtered by direction. */
121
+ export async function listMirrorRequests(db, direction) {
122
+ const rows = await db
123
+ .select()
124
+ .from(mirrorRequests)
125
+ .where(direction ? eq(mirrorRequests.direction, direction) : undefined)
126
+ .orderBy(desc(mirrorRequests.createdAt));
127
+ return rows.map(mirrorRequestRowToConfig);
128
+ }
129
+ /** Get a single mirror request by id. */
130
+ export async function getMirrorRequest(db, requestId) {
131
+ const [row] = await db
132
+ .select()
133
+ .from(mirrorRequests)
134
+ .where(eq(mirrorRequests.id, requestId))
135
+ .limit(1);
136
+ return row ? mirrorRequestRowToConfig(row) : null;
137
+ }
138
+ /**
139
+ * Approve an INCOMING mirror request: create a pull mirror of the requester (using the approver's
140
+ * own depth + filters), optionally backfill bounded history, queue an `Accept(Offer)` back to the
141
+ * requester, and mark the request approved. Idempotent if a pull mirror already exists for the
142
+ * requester's domain (reuses it — respects the unique(remote_domain) constraint).
143
+ */
144
+ export async function approveMirrorRequest(db, requestId, localDomain, opts) {
145
+ const [req] = await db.select().from(mirrorRequests).where(eq(mirrorRequests.id, requestId)).limit(1);
146
+ if (!req)
147
+ throw new Error('Mirror request not found');
148
+ if (req.direction !== 'incoming')
149
+ throw new Error('Can only approve incoming mirror requests');
150
+ // Create (or reuse) a pull mirror of the requester with the approver's chosen filters.
151
+ const [existing] = await db
152
+ .select()
153
+ .from(instanceMirrors)
154
+ .where(eq(instanceMirrors.remoteDomain, req.remoteDomain))
155
+ .limit(1);
156
+ let mirrorId;
157
+ if (existing) {
158
+ // Reuse the row, but make it actually usable: re-activate if it was paused/failed and apply
159
+ // the approver's chosen filters (matchMirrorForContent only accepts 'active' pull mirrors).
160
+ // The approve's filters are authoritative — same semantics as the fresh-create path below
161
+ // (absent/null = all types/tags), so re-approving with no filters means "mirror everything".
162
+ mirrorId = existing.id;
163
+ await db
164
+ .update(instanceMirrors)
165
+ .set({
166
+ status: 'active',
167
+ direction: 'pull',
168
+ pausedAt: null,
169
+ filterContentTypes: opts?.filterContentTypes ?? null,
170
+ filterTags: opts?.filterTags ?? null,
171
+ updatedAt: new Date(),
172
+ })
173
+ .where(eq(instanceMirrors.id, existing.id));
174
+ // (Re)queue a Follow only if there's no live subscription — a 'pending' follow already has a
175
+ // Follow in flight (the activities table has no dedup), so don't append a duplicate.
176
+ const [rel] = await db
177
+ .select({ status: followRelationships.status })
178
+ .from(followRelationships)
179
+ .where(and(eq(followRelationships.followerActorUri, `https://${localDomain}/actor`), eq(followRelationships.followingActorUri, req.remoteActorUri)))
180
+ .limit(1);
181
+ if (!rel || rel.status === 'rejected') {
182
+ await queueInstanceFollow(db, req.remoteActorUri, localDomain);
183
+ }
51
184
  }
52
- return mirrorRowToConfig(row);
185
+ else {
186
+ try {
187
+ const mirror = await createMirror(db, req.remoteDomain, req.remoteActorUri, 'pull', localDomain, {
188
+ contentTypes: opts?.filterContentTypes ?? undefined,
189
+ tags: opts?.filterTags ?? undefined,
190
+ });
191
+ mirrorId = mirror.id;
192
+ }
193
+ catch (err) {
194
+ // ONLY swallow a unique(remote_domain) race (concurrent approval / a directory "Mirror" click
195
+ // landing between our SELECT and createMirror's INSERT). Any other failure is real — rethrow
196
+ // rather than returning a Follow-less mirror as if approval succeeded.
197
+ const code = err.code;
198
+ const isUniqueViolation = code === '23505' || /duplicate key|unique constraint/i.test(String(err?.message));
199
+ if (!isUniqueViolation)
200
+ throw err;
201
+ const [raced] = await db
202
+ .select({ id: instanceMirrors.id })
203
+ .from(instanceMirrors)
204
+ .where(eq(instanceMirrors.remoteDomain, req.remoteDomain))
205
+ .limit(1);
206
+ if (!raced)
207
+ throw err;
208
+ mirrorId = raced.id;
209
+ }
210
+ }
211
+ // Optional bounded history import (forward-only if no depth chosen).
212
+ if (opts && (opts.sinceDays || opts.maxItems)) {
213
+ try {
214
+ const { backfillFromOutbox } = await import('./backfill.js');
215
+ const since = opts.sinceDays
216
+ ? new Date(Date.now() - opts.sinceDays * 24 * 60 * 60 * 1000)
217
+ : undefined;
218
+ await backfillFromOutbox(db, req.remoteActorUri, localDomain, {
219
+ maxItems: opts.maxItems,
220
+ since,
221
+ });
222
+ }
223
+ catch (err) {
224
+ console.error('[mirroring] approve backfill failed:', err instanceof Error ? err.message : err);
225
+ }
226
+ }
227
+ // Tell the requester we approved — Accept(Offer). objectUri = requester actor so delivery routes there.
228
+ const localActorUri = `https://${localDomain}/actor`;
229
+ const accept = buildAcceptActivity(localDomain, localActorUri, req.offerActivityUri ?? req.remoteActorUri);
230
+ await db.insert(activities).values({
231
+ type: 'Accept',
232
+ actorUri: localActorUri,
233
+ objectUri: req.remoteActorUri,
234
+ payload: accept,
235
+ direction: 'outbound',
236
+ status: 'pending',
237
+ });
238
+ const [updated] = await db
239
+ .update(mirrorRequests)
240
+ .set({ status: 'approved', resultingMirrorId: mirrorId, decidedAt: new Date(), updatedAt: new Date() })
241
+ .where(eq(mirrorRequests.id, requestId))
242
+ .returning();
243
+ return mirrorRequestRowToConfig(updated);
244
+ }
245
+ /**
246
+ * Reject an INCOMING mirror request: queue a `Reject(Offer)` back to the requester and mark it
247
+ * rejected. No mirror is created.
248
+ */
249
+ export async function rejectMirrorRequest(db, requestId, localDomain) {
250
+ const [req] = await db.select().from(mirrorRequests).where(eq(mirrorRequests.id, requestId)).limit(1);
251
+ if (!req)
252
+ throw new Error('Mirror request not found');
253
+ if (req.direction !== 'incoming')
254
+ throw new Error('Can only reject incoming mirror requests');
255
+ const localActorUri = `https://${localDomain}/actor`;
256
+ const reject = buildRejectActivity(localDomain, localActorUri, req.offerActivityUri ?? req.remoteActorUri);
257
+ await db.insert(activities).values({
258
+ type: 'Reject',
259
+ actorUri: localActorUri,
260
+ objectUri: req.remoteActorUri,
261
+ payload: reject,
262
+ direction: 'outbound',
263
+ status: 'pending',
264
+ });
265
+ const [updated] = await db
266
+ .update(mirrorRequests)
267
+ .set({ status: 'rejected', decidedAt: new Date(), updatedAt: new Date() })
268
+ .where(eq(mirrorRequests.id, requestId))
269
+ .returning();
270
+ return mirrorRequestRowToConfig(updated);
271
+ }
272
+ /**
273
+ * List the instances mirroring US — remote actors that follow our instance Service actor
274
+ * (`https://{domain}/actor`) with an accepted follow. Each such follower is an instance
275
+ * pulling our public content. This is the read side of "who is mirroring me".
276
+ *
277
+ * Note: this is INSTANCE-level only (followers of `/actor`), not per-user followers — a
278
+ * remote user following a local user is not mirroring the instance.
279
+ */
280
+ export async function listInstanceFollowers(db, domain) {
281
+ const instanceActorUri = `https://${domain}/actor`;
282
+ const rows = await db
283
+ .select({
284
+ followerActorUri: followRelationships.followerActorUri,
285
+ createdAt: followRelationships.createdAt,
286
+ })
287
+ .from(followRelationships)
288
+ .where(and(eq(followRelationships.followingActorUri, instanceActorUri), eq(followRelationships.status, 'accepted')))
289
+ .orderBy(desc(followRelationships.createdAt));
290
+ return rows.map((r) => {
291
+ let host = r.followerActorUri;
292
+ try {
293
+ host = new URL(r.followerActorUri).hostname;
294
+ }
295
+ catch { /* keep raw uri */ }
296
+ return {
297
+ actorUri: r.followerActorUri,
298
+ domain: host,
299
+ followedAt: r.createdAt ? r.createdAt.toISOString() : null,
300
+ };
301
+ });
53
302
  }
54
303
  /**
55
304
  * Activate a pending mirror (called after the Follow is accepted).
@@ -1 +1 @@
1
- {"version":3,"file":"mirroring.js","sourceRoot":"","sources":["../../src/federation/mirroring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mirroring.js","sourceRoot":"","sources":["../../src/federation/mirroring.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,21 @@
1
1
  import type { DB } from '../types.js';
2
2
  /**
3
- * Count total outbox items for an actor.
4
- * Only counts delivered outbound Create/Update/Delete activities.
3
+ * Count outbox items for a specific user actor (published+public content by that author).
5
4
  */
6
5
  export declare function countOutboxItems(db: DB, actorUri: string): Promise<number>;
7
6
  /**
8
- * Count total outbox items for the instance actor (all users' delivered Create activities).
7
+ * Count outbox items for the instance actor (all users' published+public content).
9
8
  */
10
- export declare function countInstanceOutboxItems(db: DB, domain: string): Promise<number>;
9
+ export declare function countInstanceOutboxItems(db: DB, _domain: string): Promise<number>;
11
10
  /**
12
- * Get a page of outbox activities for a specific actor.
13
- * Returns the full activity payload (AP JSON-LD) for each item.
11
+ * Page of a specific user actor's outbox (projected from their published+public content).
14
12
  */
15
13
  export declare function getOutboxPage(db: DB, actorUri: string, page: number, pageSize?: number): Promise<Record<string, unknown>[]>;
14
+ /**
15
+ * Page of the instance actor's outbox (all users' published+public content as Create activities).
16
+ * This is what mirror backfill crawls.
17
+ */
18
+ export declare function getInstanceOutboxPage(db: DB, domain: string, page: number, pageSize?: number): Promise<Record<string, unknown>[]>;
16
19
  /**
17
20
  * Count total outbox items for a hub Group actor.
18
21
  * Counts delivered outbound Announce activities from the hub actor.
@@ -23,9 +26,4 @@ export declare function countHubOutboxItems(db: DB, hubActorUri: string): Promis
23
26
  * Returns Announce activity payloads.
24
27
  */
25
28
  export declare function getHubOutboxPage(db: DB, hubActorUri: string, page: number, pageSize?: number): Promise<Record<string, unknown>[]>;
26
- /**
27
- * Get a page of instance-level outbox activities (all users' Create activities).
28
- * Used by the instance actor outbox for backfill.
29
- */
30
- export declare function getInstanceOutboxPage(db: DB, domain: string, page: number, pageSize?: number): Promise<Record<string, unknown>[]>;
31
29
  //# sourceMappingURL=outboxQueries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outboxQueries.d.ts","sourceRoot":"","sources":["../../src/federation/outboxQueries.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAItC;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAatF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAkBpC;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAatF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAkBpC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAkBpC"}
1
+ {"version":3,"file":"outboxQueries.d.ts","sourceRoot":"","sources":["../../src/federation/outboxQueries.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AA8EtC;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAOpC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAEpC;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAatF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAoB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAkBpC"}