society-protocol 1.0.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/adapters.d.ts +101 -0
  4. package/dist/adapters.d.ts.map +1 -0
  5. package/dist/adapters.js +764 -0
  6. package/dist/adapters.js.map +1 -0
  7. package/dist/agents-md.d.ts +59 -0
  8. package/dist/agents-md.d.ts.map +1 -0
  9. package/dist/agents-md.js +204 -0
  10. package/dist/agents-md.js.map +1 -0
  11. package/dist/autoconfig.d.ts +137 -0
  12. package/dist/autoconfig.d.ts.map +1 -0
  13. package/dist/autoconfig.js +452 -0
  14. package/dist/autoconfig.js.map +1 -0
  15. package/dist/bootstrap.d.ts +68 -0
  16. package/dist/bootstrap.d.ts.map +1 -0
  17. package/dist/bootstrap.js +304 -0
  18. package/dist/bootstrap.js.map +1 -0
  19. package/dist/bridges/a2a-bridge.d.ts +156 -0
  20. package/dist/bridges/a2a-bridge.d.ts.map +1 -0
  21. package/dist/bridges/a2a-bridge.js +337 -0
  22. package/dist/bridges/a2a-bridge.js.map +1 -0
  23. package/dist/bridges/mcp-bridge.d.ts +87 -0
  24. package/dist/bridges/mcp-bridge.d.ts.map +1 -0
  25. package/dist/bridges/mcp-bridge.js +332 -0
  26. package/dist/bridges/mcp-bridge.js.map +1 -0
  27. package/dist/cache.d.ts +130 -0
  28. package/dist/cache.d.ts.map +1 -0
  29. package/dist/cache.js +257 -0
  30. package/dist/cache.js.map +1 -0
  31. package/dist/capsules.d.ts +23 -0
  32. package/dist/capsules.d.ts.map +1 -0
  33. package/dist/capsules.js +75 -0
  34. package/dist/capsules.js.map +1 -0
  35. package/dist/cli/commands.d.ts +8 -0
  36. package/dist/cli/commands.d.ts.map +1 -0
  37. package/dist/cli/commands.js +263 -0
  38. package/dist/cli/commands.js.map +1 -0
  39. package/dist/coc.d.ts +121 -0
  40. package/dist/coc.d.ts.map +1 -0
  41. package/dist/coc.js +629 -0
  42. package/dist/coc.js.map +1 -0
  43. package/dist/coc.test.d.ts +2 -0
  44. package/dist/coc.test.d.ts.map +1 -0
  45. package/dist/coc.test.js +80 -0
  46. package/dist/coc.test.js.map +1 -0
  47. package/dist/compression.d.ts +125 -0
  48. package/dist/compression.d.ts.map +1 -0
  49. package/dist/compression.js +573 -0
  50. package/dist/compression.js.map +1 -0
  51. package/dist/cot-stream.d.ts +220 -0
  52. package/dist/cot-stream.d.ts.map +1 -0
  53. package/dist/cot-stream.js +673 -0
  54. package/dist/cot-stream.js.map +1 -0
  55. package/dist/crypto-wasm.d.ts +100 -0
  56. package/dist/crypto-wasm.d.ts.map +1 -0
  57. package/dist/crypto-wasm.js +229 -0
  58. package/dist/crypto-wasm.js.map +1 -0
  59. package/dist/federation.d.ts +200 -0
  60. package/dist/federation.d.ts.map +1 -0
  61. package/dist/federation.js +691 -0
  62. package/dist/federation.js.map +1 -0
  63. package/dist/federation.test.d.ts +2 -0
  64. package/dist/federation.test.d.ts.map +1 -0
  65. package/dist/federation.test.js +71 -0
  66. package/dist/federation.test.js.map +1 -0
  67. package/dist/gateway/capability-router.d.ts +77 -0
  68. package/dist/gateway/capability-router.d.ts.map +1 -0
  69. package/dist/gateway/capability-router.js +222 -0
  70. package/dist/gateway/capability-router.js.map +1 -0
  71. package/dist/gateway/demand-spawner.d.ts +155 -0
  72. package/dist/gateway/demand-spawner.d.ts.map +1 -0
  73. package/dist/gateway/demand-spawner.js +426 -0
  74. package/dist/gateway/demand-spawner.js.map +1 -0
  75. package/dist/identity.d.ts +46 -0
  76. package/dist/identity.d.ts.map +1 -0
  77. package/dist/identity.js +102 -0
  78. package/dist/identity.js.map +1 -0
  79. package/dist/identity.test.d.ts +2 -0
  80. package/dist/identity.test.d.ts.map +1 -0
  81. package/dist/identity.test.js +45 -0
  82. package/dist/identity.test.js.map +1 -0
  83. package/dist/index.d.ts +36 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +1572 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/integration.d.ts +210 -0
  88. package/dist/integration.d.ts.map +1 -0
  89. package/dist/integration.js +1105 -0
  90. package/dist/integration.js.map +1 -0
  91. package/dist/integration.test.d.ts +2 -0
  92. package/dist/integration.test.d.ts.map +1 -0
  93. package/dist/integration.test.js +155 -0
  94. package/dist/integration.test.js.map +1 -0
  95. package/dist/knowledge.d.ts +219 -0
  96. package/dist/knowledge.d.ts.map +1 -0
  97. package/dist/knowledge.js +543 -0
  98. package/dist/knowledge.js.map +1 -0
  99. package/dist/knowledge.test.d.ts +2 -0
  100. package/dist/knowledge.test.d.ts.map +1 -0
  101. package/dist/knowledge.test.js +72 -0
  102. package/dist/knowledge.test.js.map +1 -0
  103. package/dist/latent-space.d.ts +178 -0
  104. package/dist/latent-space.d.ts.map +1 -0
  105. package/dist/latent-space.js +385 -0
  106. package/dist/latent-space.js.map +1 -0
  107. package/dist/lib.d.ts +30 -0
  108. package/dist/lib.d.ts.map +1 -0
  109. package/dist/lib.js +30 -0
  110. package/dist/lib.js.map +1 -0
  111. package/dist/mcp/server.d.ts +74 -0
  112. package/dist/mcp/server.d.ts.map +1 -0
  113. package/dist/mcp/server.js +1392 -0
  114. package/dist/mcp/server.js.map +1 -0
  115. package/dist/metrics.d.ts +98 -0
  116. package/dist/metrics.d.ts.map +1 -0
  117. package/dist/metrics.js +222 -0
  118. package/dist/metrics.js.map +1 -0
  119. package/dist/p2p.d.ts +87 -0
  120. package/dist/p2p.d.ts.map +1 -0
  121. package/dist/p2p.js +606 -0
  122. package/dist/p2p.js.map +1 -0
  123. package/dist/persona/capabilities.d.ts +17 -0
  124. package/dist/persona/capabilities.d.ts.map +1 -0
  125. package/dist/persona/capabilities.js +224 -0
  126. package/dist/persona/capabilities.js.map +1 -0
  127. package/dist/persona/domains.d.ts +22 -0
  128. package/dist/persona/domains.d.ts.map +1 -0
  129. package/dist/persona/domains.js +176 -0
  130. package/dist/persona/domains.js.map +1 -0
  131. package/dist/persona/embeddings.d.ts +40 -0
  132. package/dist/persona/embeddings.d.ts.map +1 -0
  133. package/dist/persona/embeddings.js +265 -0
  134. package/dist/persona/embeddings.js.map +1 -0
  135. package/dist/persona/engine.d.ts +79 -0
  136. package/dist/persona/engine.d.ts.map +1 -0
  137. package/dist/persona/engine.js +1087 -0
  138. package/dist/persona/engine.js.map +1 -0
  139. package/dist/persona/index.d.ts +11 -0
  140. package/dist/persona/index.d.ts.map +1 -0
  141. package/dist/persona/index.js +11 -0
  142. package/dist/persona/index.js.map +1 -0
  143. package/dist/persona/lifecycle.d.ts +17 -0
  144. package/dist/persona/lifecycle.d.ts.map +1 -0
  145. package/dist/persona/lifecycle.js +36 -0
  146. package/dist/persona/lifecycle.js.map +1 -0
  147. package/dist/persona/retrieval.d.ts +6 -0
  148. package/dist/persona/retrieval.d.ts.map +1 -0
  149. package/dist/persona/retrieval.js +122 -0
  150. package/dist/persona/retrieval.js.map +1 -0
  151. package/dist/persona/sync.d.ts +15 -0
  152. package/dist/persona/sync.d.ts.map +1 -0
  153. package/dist/persona/sync.js +92 -0
  154. package/dist/persona/sync.js.map +1 -0
  155. package/dist/persona/types.d.ts +283 -0
  156. package/dist/persona/types.d.ts.map +1 -0
  157. package/dist/persona/types.js +2 -0
  158. package/dist/persona/types.js.map +1 -0
  159. package/dist/persona/zkp/engine.d.ts +26 -0
  160. package/dist/persona/zkp/engine.d.ts.map +1 -0
  161. package/dist/persona/zkp/engine.js +370 -0
  162. package/dist/persona/zkp/engine.js.map +1 -0
  163. package/dist/persona/zkp/types.d.ts +39 -0
  164. package/dist/persona/zkp/types.d.ts.map +1 -0
  165. package/dist/persona/zkp/types.js +2 -0
  166. package/dist/persona/zkp/types.js.map +1 -0
  167. package/dist/planner.d.ts +114 -0
  168. package/dist/planner.d.ts.map +1 -0
  169. package/dist/planner.js +522 -0
  170. package/dist/planner.js.map +1 -0
  171. package/dist/proactive/checkpoints.d.ts +9 -0
  172. package/dist/proactive/checkpoints.d.ts.map +1 -0
  173. package/dist/proactive/checkpoints.js +20 -0
  174. package/dist/proactive/checkpoints.js.map +1 -0
  175. package/dist/proactive/engine.d.ts +59 -0
  176. package/dist/proactive/engine.d.ts.map +1 -0
  177. package/dist/proactive/engine.js +406 -0
  178. package/dist/proactive/engine.js.map +1 -0
  179. package/dist/proactive/scheduler.d.ts +11 -0
  180. package/dist/proactive/scheduler.d.ts.map +1 -0
  181. package/dist/proactive/scheduler.js +45 -0
  182. package/dist/proactive/scheduler.js.map +1 -0
  183. package/dist/proactive/swarm-controller.d.ts +189 -0
  184. package/dist/proactive/swarm-controller.d.ts.map +1 -0
  185. package/dist/proactive/swarm-controller.js +477 -0
  186. package/dist/proactive/swarm-controller.js.map +1 -0
  187. package/dist/proactive/swarm-registry.d.ts +13 -0
  188. package/dist/proactive/swarm-registry.d.ts.map +1 -0
  189. package/dist/proactive/swarm-registry.js +122 -0
  190. package/dist/proactive/swarm-registry.js.map +1 -0
  191. package/dist/proactive/types.d.ts +145 -0
  192. package/dist/proactive/types.d.ts.map +1 -0
  193. package/dist/proactive/types.js +25 -0
  194. package/dist/proactive/types.js.map +1 -0
  195. package/dist/registry.d.ts +35 -0
  196. package/dist/registry.d.ts.map +1 -0
  197. package/dist/registry.js +88 -0
  198. package/dist/registry.js.map +1 -0
  199. package/dist/reputation.d.ts +123 -0
  200. package/dist/reputation.d.ts.map +1 -0
  201. package/dist/reputation.js +366 -0
  202. package/dist/reputation.js.map +1 -0
  203. package/dist/reputation.test.d.ts +5 -0
  204. package/dist/reputation.test.d.ts.map +1 -0
  205. package/dist/reputation.test.js +265 -0
  206. package/dist/reputation.test.js.map +1 -0
  207. package/dist/rooms.d.ts +96 -0
  208. package/dist/rooms.d.ts.map +1 -0
  209. package/dist/rooms.js +410 -0
  210. package/dist/rooms.js.map +1 -0
  211. package/dist/sdk/client.d.ts +290 -0
  212. package/dist/sdk/client.d.ts.map +1 -0
  213. package/dist/sdk/client.js +1287 -0
  214. package/dist/sdk/client.js.map +1 -0
  215. package/dist/sdk/index.d.ts +32 -0
  216. package/dist/sdk/index.d.ts.map +1 -0
  217. package/dist/sdk/index.js +70 -0
  218. package/dist/sdk/index.js.map +1 -0
  219. package/dist/security.d.ts +230 -0
  220. package/dist/security.d.ts.map +1 -0
  221. package/dist/security.js +652 -0
  222. package/dist/security.js.map +1 -0
  223. package/dist/skills/engine.d.ts +262 -0
  224. package/dist/skills/engine.d.ts.map +1 -0
  225. package/dist/skills/engine.js +788 -0
  226. package/dist/skills/engine.js.map +1 -0
  227. package/dist/skills/engine.test.d.ts +2 -0
  228. package/dist/skills/engine.test.d.ts.map +1 -0
  229. package/dist/skills/engine.test.js +134 -0
  230. package/dist/skills/engine.test.js.map +1 -0
  231. package/dist/skills/parser.d.ts +129 -0
  232. package/dist/skills/parser.d.ts.map +1 -0
  233. package/dist/skills/parser.js +318 -0
  234. package/dist/skills/parser.js.map +1 -0
  235. package/dist/social.d.ts +149 -0
  236. package/dist/social.d.ts.map +1 -0
  237. package/dist/social.js +401 -0
  238. package/dist/social.js.map +1 -0
  239. package/dist/storage-optimized.d.ts +116 -0
  240. package/dist/storage-optimized.d.ts.map +1 -0
  241. package/dist/storage-optimized.js +264 -0
  242. package/dist/storage-optimized.js.map +1 -0
  243. package/dist/storage.d.ts +584 -0
  244. package/dist/storage.d.ts.map +1 -0
  245. package/dist/storage.js +2703 -0
  246. package/dist/storage.js.map +1 -0
  247. package/dist/storage.test.d.ts +2 -0
  248. package/dist/storage.test.d.ts.map +1 -0
  249. package/dist/storage.test.js +78 -0
  250. package/dist/storage.test.js.map +1 -0
  251. package/dist/swp.d.ts +443 -0
  252. package/dist/swp.d.ts.map +1 -0
  253. package/dist/swp.js +223 -0
  254. package/dist/swp.js.map +1 -0
  255. package/dist/swp.test.d.ts +5 -0
  256. package/dist/swp.test.d.ts.map +1 -0
  257. package/dist/swp.test.js +127 -0
  258. package/dist/swp.test.js.map +1 -0
  259. package/dist/templates.d.ts +25 -0
  260. package/dist/templates.d.ts.map +1 -0
  261. package/dist/templates.js +1048 -0
  262. package/dist/templates.js.map +1 -0
  263. package/dist/test-e2e.d.ts +14 -0
  264. package/dist/test-e2e.d.ts.map +1 -0
  265. package/dist/test-e2e.js +266 -0
  266. package/dist/test-e2e.js.map +1 -0
  267. package/dist/workers/research-worker.d.ts +19 -0
  268. package/dist/workers/research-worker.d.ts.map +1 -0
  269. package/dist/workers/research-worker.js +141 -0
  270. package/dist/workers/research-worker.js.map +1 -0
  271. package/package.json +110 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Society Protocol — Social Layer
3
+ *
4
+ * Agent-as-social-network features:
5
+ * - Follow/unfollow agents (social graph)
6
+ * - Invite codes for federations and rooms
7
+ * - Rich agent profiles (bio, specialties, links)
8
+ * - Agent discovery and search
9
+ * - Activity feed
10
+ * - Direct messaging (1-on-1 rooms)
11
+ */
12
+ import { EventEmitter } from 'events';
13
+ import type { Storage } from './storage.js';
14
+ import type { Identity } from './identity.js';
15
+ export interface AgentProfile {
16
+ did: string;
17
+ displayName: string;
18
+ bio?: string;
19
+ avatar?: string;
20
+ website?: string;
21
+ github?: string;
22
+ specialties: string[];
23
+ tags: string[];
24
+ status: 'online' | 'busy' | 'away' | 'offline';
25
+ joinedAt: number;
26
+ updatedAt: number;
27
+ }
28
+ export interface FollowRelation {
29
+ id: string;
30
+ followerDid: string;
31
+ followeeDid: string;
32
+ createdAt: number;
33
+ }
34
+ export interface InviteCode {
35
+ code: string;
36
+ type: 'federation' | 'room';
37
+ targetId: string;
38
+ creatorDid: string;
39
+ maxUses: number;
40
+ usedCount: number;
41
+ expiresAt?: number;
42
+ createdAt: number;
43
+ role?: string;
44
+ }
45
+ export interface ActivityEvent {
46
+ id: string;
47
+ actorDid: string;
48
+ actorName: string;
49
+ type: ActivityType;
50
+ targetId?: string;
51
+ targetName?: string;
52
+ metadata?: Record<string, unknown>;
53
+ timestamp: number;
54
+ }
55
+ export type ActivityType = 'joined_federation' | 'left_federation' | 'joined_room' | 'completed_task' | 'started_mission' | 'earned_reputation' | 'followed_agent' | 'created_knowledge' | 'opened_chain' | 'profile_updated';
56
+ export declare class SocialEngine extends EventEmitter {
57
+ private storage;
58
+ private identity;
59
+ private profiles;
60
+ private follows;
61
+ private invites;
62
+ private activities;
63
+ constructor(storage: Storage, identity: Identity);
64
+ /** Helper: run parameterized write statement */
65
+ private run;
66
+ private initTables;
67
+ private loadFromStorage;
68
+ /**
69
+ * Create or update an agent's profile.
70
+ */
71
+ upsertProfile(profile: Partial<AgentProfile> & {
72
+ did: string;
73
+ }): AgentProfile;
74
+ getProfile(did: string): AgentProfile | undefined;
75
+ searchProfiles(query: string): AgentProfile[];
76
+ listProfiles(options?: {
77
+ status?: string;
78
+ limit?: number;
79
+ }): AgentProfile[];
80
+ /**
81
+ * Follow another agent.
82
+ */
83
+ follow(followerDid: string, followeeDid: string): FollowRelation;
84
+ /**
85
+ * Unfollow an agent.
86
+ */
87
+ unfollow(followerDid: string, followeeDid: string): boolean;
88
+ /**
89
+ * Get agents that a given DID follows.
90
+ */
91
+ getFollowing(did: string): AgentProfile[];
92
+ /**
93
+ * Get agents that follow a given DID.
94
+ */
95
+ getFollowers(did: string): AgentProfile[];
96
+ /**
97
+ * Check if one agent follows another.
98
+ */
99
+ isFollowing(followerDid: string, followeeDid: string): boolean;
100
+ getFollowerCount(did: string): number;
101
+ getFollowingCount(did: string): number;
102
+ /**
103
+ * Generate an invite code for a federation or room.
104
+ */
105
+ generateInvite(options: {
106
+ type: 'federation' | 'room';
107
+ targetId: string;
108
+ creatorDid: string;
109
+ maxUses?: number;
110
+ expiresInMs?: number;
111
+ role?: string;
112
+ }): InviteCode;
113
+ /**
114
+ * Redeem an invite code.
115
+ */
116
+ redeemInvite(code: string, redeemerDid: string): {
117
+ type: 'federation' | 'room';
118
+ targetId: string;
119
+ role?: string;
120
+ };
121
+ /**
122
+ * Revoke an invite code.
123
+ */
124
+ revokeInvite(code: string, revokerDid: string): boolean;
125
+ /**
126
+ * List invite codes created by a DID.
127
+ */
128
+ listInvites(creatorDid: string): InviteCode[];
129
+ getInvite(code: string): InviteCode | undefined;
130
+ /**
131
+ * Record an activity event.
132
+ */
133
+ recordActivity(type: ActivityType, actorDid: string, actorName: string, targetId?: string, targetName?: string, metadata?: Record<string, unknown>): ActivityEvent;
134
+ /**
135
+ * Get activity feed for agents you follow.
136
+ */
137
+ getFeed(did: string, limit?: number): ActivityEvent[];
138
+ /**
139
+ * Get activity for a specific agent.
140
+ */
141
+ getAgentActivity(did: string, limit?: number): ActivityEvent[];
142
+ /**
143
+ * Get global activity feed.
144
+ */
145
+ getGlobalFeed(limit?: number): ActivityEvent[];
146
+ private generateCode;
147
+ destroy(): void;
148
+ }
149
+ //# sourceMappingURL=social.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.d.ts","sourceRoot":"","sources":["../src/social.ts"],"names":[],"mappings":"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"}
package/dist/social.js ADDED
@@ -0,0 +1,401 @@
1
+ /**
2
+ * Society Protocol — Social Layer
3
+ *
4
+ * Agent-as-social-network features:
5
+ * - Follow/unfollow agents (social graph)
6
+ * - Invite codes for federations and rooms
7
+ * - Rich agent profiles (bio, specialties, links)
8
+ * - Agent discovery and search
9
+ * - Activity feed
10
+ * - Direct messaging (1-on-1 rooms)
11
+ */
12
+ import { EventEmitter } from 'events';
13
+ import { ulid } from 'ulid';
14
+ import { randomBytes } from 'crypto';
15
+ // ─── Social Engine ───────────────────────────────────────────────
16
+ export class SocialEngine extends EventEmitter {
17
+ storage;
18
+ identity;
19
+ profiles = new Map();
20
+ follows = new Map();
21
+ invites = new Map();
22
+ activities = [];
23
+ constructor(storage, identity) {
24
+ super();
25
+ this.storage = storage;
26
+ this.identity = identity;
27
+ this.initTables();
28
+ this.loadFromStorage();
29
+ }
30
+ // ─── Database ────────────────────────────────────────────────
31
+ /** Helper: run parameterized write statement */
32
+ run(sql, params = []) {
33
+ this.storage.db.prepare(sql).run(...params);
34
+ }
35
+ initTables() {
36
+ this.storage.db.exec(`
37
+ CREATE TABLE IF NOT EXISTS social_profiles (
38
+ did TEXT PRIMARY KEY,
39
+ display_name TEXT NOT NULL,
40
+ bio TEXT,
41
+ avatar TEXT,
42
+ website TEXT,
43
+ github TEXT,
44
+ specialties TEXT DEFAULT '[]',
45
+ tags TEXT DEFAULT '[]',
46
+ status TEXT DEFAULT 'offline',
47
+ joined_at INTEGER NOT NULL,
48
+ updated_at INTEGER NOT NULL
49
+ );
50
+ CREATE TABLE IF NOT EXISTS social_follows (
51
+ id TEXT PRIMARY KEY,
52
+ follower_did TEXT NOT NULL,
53
+ followee_did TEXT NOT NULL,
54
+ created_at INTEGER NOT NULL,
55
+ UNIQUE(follower_did, followee_did)
56
+ );
57
+ CREATE TABLE IF NOT EXISTS social_invites (
58
+ code TEXT PRIMARY KEY,
59
+ type TEXT NOT NULL,
60
+ target_id TEXT NOT NULL,
61
+ creator_did TEXT NOT NULL,
62
+ max_uses INTEGER DEFAULT 1,
63
+ used_count INTEGER DEFAULT 0,
64
+ expires_at INTEGER,
65
+ created_at INTEGER NOT NULL,
66
+ role TEXT
67
+ );
68
+ CREATE TABLE IF NOT EXISTS social_activities (
69
+ id TEXT PRIMARY KEY,
70
+ actor_did TEXT NOT NULL,
71
+ actor_name TEXT NOT NULL,
72
+ type TEXT NOT NULL,
73
+ target_id TEXT,
74
+ target_name TEXT,
75
+ metadata TEXT,
76
+ timestamp INTEGER NOT NULL
77
+ );
78
+ CREATE INDEX IF NOT EXISTS idx_follows_follower ON social_follows(follower_did);
79
+ CREATE INDEX IF NOT EXISTS idx_follows_followee ON social_follows(followee_did);
80
+ CREATE INDEX IF NOT EXISTS idx_activities_actor ON social_activities(actor_did);
81
+ CREATE INDEX IF NOT EXISTS idx_activities_time ON social_activities(timestamp);
82
+ `);
83
+ }
84
+ loadFromStorage() {
85
+ const profiles = this.storage.query('SELECT * FROM social_profiles');
86
+ for (const row of profiles) {
87
+ this.profiles.set(row.did, {
88
+ did: row.did,
89
+ displayName: row.display_name,
90
+ bio: row.bio,
91
+ avatar: row.avatar,
92
+ website: row.website,
93
+ github: row.github,
94
+ specialties: JSON.parse(row.specialties || '[]'),
95
+ tags: JSON.parse(row.tags || '[]'),
96
+ status: row.status,
97
+ joinedAt: row.joined_at,
98
+ updatedAt: row.updated_at,
99
+ });
100
+ }
101
+ const follows = this.storage.query('SELECT * FROM social_follows');
102
+ for (const row of follows) {
103
+ this.follows.set(row.id, {
104
+ id: row.id,
105
+ followerDid: row.follower_did,
106
+ followeeDid: row.followee_did,
107
+ createdAt: row.created_at,
108
+ });
109
+ }
110
+ const invites = this.storage.query('SELECT * FROM social_invites WHERE used_count < max_uses');
111
+ for (const row of invites) {
112
+ this.invites.set(row.code, {
113
+ code: row.code,
114
+ type: row.type,
115
+ targetId: row.target_id,
116
+ creatorDid: row.creator_did,
117
+ maxUses: row.max_uses,
118
+ usedCount: row.used_count,
119
+ expiresAt: row.expires_at,
120
+ createdAt: row.created_at,
121
+ role: row.role,
122
+ });
123
+ }
124
+ }
125
+ // ─── Profiles ────────────────────────────────────────────────
126
+ /**
127
+ * Create or update an agent's profile.
128
+ */
129
+ upsertProfile(profile) {
130
+ const existing = this.profiles.get(profile.did);
131
+ const now = Date.now();
132
+ const full = {
133
+ did: profile.did,
134
+ displayName: profile.displayName || existing?.displayName || 'Anonymous',
135
+ bio: profile.bio ?? existing?.bio,
136
+ avatar: profile.avatar ?? existing?.avatar,
137
+ website: profile.website ?? existing?.website,
138
+ github: profile.github ?? existing?.github,
139
+ specialties: profile.specialties || existing?.specialties || [],
140
+ tags: profile.tags || existing?.tags || [],
141
+ status: profile.status || existing?.status || 'online',
142
+ joinedAt: existing?.joinedAt || now,
143
+ updatedAt: now,
144
+ };
145
+ this.profiles.set(full.did, full);
146
+ this.run(`INSERT OR REPLACE INTO social_profiles
147
+ (did, display_name, bio, avatar, website, github, specialties, tags, status, joined_at, updated_at)
148
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
149
+ full.did, full.displayName, full.bio || null, full.avatar || null,
150
+ full.website || null, full.github || null,
151
+ JSON.stringify(full.specialties), JSON.stringify(full.tags),
152
+ full.status, full.joinedAt, full.updatedAt,
153
+ ]);
154
+ this.recordActivity('profile_updated', full.did, full.displayName);
155
+ this.emit('profile:updated', full);
156
+ return full;
157
+ }
158
+ getProfile(did) {
159
+ return this.profiles.get(did);
160
+ }
161
+ searchProfiles(query) {
162
+ const q = query.toLowerCase();
163
+ return [...this.profiles.values()].filter(p => p.displayName.toLowerCase().includes(q) ||
164
+ p.bio?.toLowerCase().includes(q) ||
165
+ p.specialties.some(s => s.toLowerCase().includes(q)) ||
166
+ p.tags.some(t => t.toLowerCase().includes(q)));
167
+ }
168
+ listProfiles(options) {
169
+ let results = [...this.profiles.values()];
170
+ if (options?.status) {
171
+ results = results.filter(p => p.status === options.status);
172
+ }
173
+ results.sort((a, b) => b.updatedAt - a.updatedAt);
174
+ if (options?.limit) {
175
+ results = results.slice(0, options.limit);
176
+ }
177
+ return results;
178
+ }
179
+ // ─── Follow/Unfollow ─────────────────────────────────────────
180
+ /**
181
+ * Follow another agent.
182
+ */
183
+ follow(followerDid, followeeDid) {
184
+ if (followerDid === followeeDid) {
185
+ throw new Error('Cannot follow yourself');
186
+ }
187
+ // Check if already following
188
+ const existing = [...this.follows.values()].find(f => f.followerDid === followerDid && f.followeeDid === followeeDid);
189
+ if (existing)
190
+ return existing;
191
+ const relation = {
192
+ id: `follow_${ulid()}`,
193
+ followerDid,
194
+ followeeDid,
195
+ createdAt: Date.now(),
196
+ };
197
+ this.follows.set(relation.id, relation);
198
+ this.run(`INSERT INTO social_follows (id, follower_did, followee_did, created_at)
199
+ VALUES (?, ?, ?, ?)`, [relation.id, followerDid, followeeDid, relation.createdAt]);
200
+ const followerProfile = this.profiles.get(followerDid);
201
+ this.recordActivity('followed_agent', followerDid, followerProfile?.displayName || followerDid, followeeDid, this.profiles.get(followeeDid)?.displayName);
202
+ this.emit('follow', relation);
203
+ return relation;
204
+ }
205
+ /**
206
+ * Unfollow an agent.
207
+ */
208
+ unfollow(followerDid, followeeDid) {
209
+ const relation = [...this.follows.values()].find(f => f.followerDid === followerDid && f.followeeDid === followeeDid);
210
+ if (!relation)
211
+ return false;
212
+ this.follows.delete(relation.id);
213
+ this.run('DELETE FROM social_follows WHERE id = ?', [relation.id]);
214
+ this.emit('unfollow', { followerDid, followeeDid });
215
+ return true;
216
+ }
217
+ /**
218
+ * Get agents that a given DID follows.
219
+ */
220
+ getFollowing(did) {
221
+ const followeeDids = [...this.follows.values()]
222
+ .filter(f => f.followerDid === did)
223
+ .map(f => f.followeeDid);
224
+ return followeeDids
225
+ .map(d => this.profiles.get(d))
226
+ .filter((p) => p !== undefined);
227
+ }
228
+ /**
229
+ * Get agents that follow a given DID.
230
+ */
231
+ getFollowers(did) {
232
+ const followerDids = [...this.follows.values()]
233
+ .filter(f => f.followeeDid === did)
234
+ .map(f => f.followerDid);
235
+ return followerDids
236
+ .map(d => this.profiles.get(d))
237
+ .filter((p) => p !== undefined);
238
+ }
239
+ /**
240
+ * Check if one agent follows another.
241
+ */
242
+ isFollowing(followerDid, followeeDid) {
243
+ return [...this.follows.values()].some(f => f.followerDid === followerDid && f.followeeDid === followeeDid);
244
+ }
245
+ getFollowerCount(did) {
246
+ return [...this.follows.values()].filter(f => f.followeeDid === did).length;
247
+ }
248
+ getFollowingCount(did) {
249
+ return [...this.follows.values()].filter(f => f.followerDid === did).length;
250
+ }
251
+ // ─── Invite Codes ────────────────────────────────────────────
252
+ /**
253
+ * Generate an invite code for a federation or room.
254
+ */
255
+ generateInvite(options) {
256
+ const code = this.generateCode();
257
+ const now = Date.now();
258
+ const invite = {
259
+ code,
260
+ type: options.type,
261
+ targetId: options.targetId,
262
+ creatorDid: options.creatorDid,
263
+ maxUses: options.maxUses || 1,
264
+ usedCount: 0,
265
+ expiresAt: options.expiresInMs ? now + options.expiresInMs : undefined,
266
+ createdAt: now,
267
+ role: options.role,
268
+ };
269
+ this.invites.set(code, invite);
270
+ this.run(`INSERT INTO social_invites (code, type, target_id, creator_did, max_uses, used_count, expires_at, created_at, role)
271
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [code, invite.type, invite.targetId, invite.creatorDid,
272
+ invite.maxUses, 0, invite.expiresAt || null, now, invite.role || null]);
273
+ this.emit('invite:created', invite);
274
+ return invite;
275
+ }
276
+ /**
277
+ * Redeem an invite code.
278
+ */
279
+ redeemInvite(code, redeemerDid) {
280
+ const invite = this.invites.get(code);
281
+ if (!invite) {
282
+ throw new Error('Invalid invite code');
283
+ }
284
+ if (invite.usedCount >= invite.maxUses) {
285
+ throw new Error('Invite code has reached max uses');
286
+ }
287
+ if (invite.expiresAt && Date.now() > invite.expiresAt) {
288
+ throw new Error('Invite code has expired');
289
+ }
290
+ invite.usedCount++;
291
+ this.run('UPDATE social_invites SET used_count = ? WHERE code = ?', [invite.usedCount, code]);
292
+ this.emit('invite:redeemed', { code, redeemerDid, invite });
293
+ return {
294
+ type: invite.type,
295
+ targetId: invite.targetId,
296
+ role: invite.role,
297
+ };
298
+ }
299
+ /**
300
+ * Revoke an invite code.
301
+ */
302
+ revokeInvite(code, revokerDid) {
303
+ const invite = this.invites.get(code);
304
+ if (!invite)
305
+ return false;
306
+ if (invite.creatorDid !== revokerDid) {
307
+ throw new Error('Only the creator can revoke an invite');
308
+ }
309
+ this.invites.delete(code);
310
+ this.run('DELETE FROM social_invites WHERE code = ?', [code]);
311
+ this.emit('invite:revoked', { code, revokerDid });
312
+ return true;
313
+ }
314
+ /**
315
+ * List invite codes created by a DID.
316
+ */
317
+ listInvites(creatorDid) {
318
+ return [...this.invites.values()].filter(i => i.creatorDid === creatorDid);
319
+ }
320
+ getInvite(code) {
321
+ return this.invites.get(code);
322
+ }
323
+ // ─── Activity Feed ───────────────────────────────────────────
324
+ /**
325
+ * Record an activity event.
326
+ */
327
+ recordActivity(type, actorDid, actorName, targetId, targetName, metadata) {
328
+ const event = {
329
+ id: `act_${ulid()}`,
330
+ actorDid,
331
+ actorName,
332
+ type,
333
+ targetId,
334
+ targetName,
335
+ metadata,
336
+ timestamp: Date.now(),
337
+ };
338
+ this.activities.push(event);
339
+ // Keep last 5000 activities in memory
340
+ if (this.activities.length > 5000) {
341
+ this.activities = this.activities.slice(-2500);
342
+ }
343
+ this.run(`INSERT INTO social_activities (id, actor_did, actor_name, type, target_id, target_name, metadata, timestamp)
344
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [event.id, actorDid, actorName, type, targetId || null,
345
+ targetName || null, metadata ? JSON.stringify(metadata) : null, event.timestamp]);
346
+ this.emit('activity', event);
347
+ return event;
348
+ }
349
+ /**
350
+ * Get activity feed for agents you follow.
351
+ */
352
+ getFeed(did, limit = 50) {
353
+ const followeeDids = new Set([...this.follows.values()]
354
+ .filter(f => f.followerDid === did)
355
+ .map(f => f.followeeDid));
356
+ // Include own activities
357
+ followeeDids.add(did);
358
+ return this.activities
359
+ .filter(a => followeeDids.has(a.actorDid))
360
+ .sort((a, b) => b.timestamp - a.timestamp)
361
+ .slice(0, limit);
362
+ }
363
+ /**
364
+ * Get activity for a specific agent.
365
+ */
366
+ getAgentActivity(did, limit = 50) {
367
+ return this.activities
368
+ .filter(a => a.actorDid === did)
369
+ .sort((a, b) => b.timestamp - a.timestamp)
370
+ .slice(0, limit);
371
+ }
372
+ /**
373
+ * Get global activity feed.
374
+ */
375
+ getGlobalFeed(limit = 50) {
376
+ return this.activities
377
+ .sort((a, b) => b.timestamp - a.timestamp)
378
+ .slice(0, limit);
379
+ }
380
+ // ─── Helpers ─────────────────────────────────────────────────
381
+ generateCode() {
382
+ const bytes = randomBytes(6);
383
+ // Generate a readable invite code like "ABC-123-XYZ"
384
+ const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // No I,O,0,1 for readability
385
+ let code = '';
386
+ for (let i = 0; i < 9; i++) {
387
+ if (i === 3 || i === 6)
388
+ code += '-';
389
+ code += chars[bytes[i % bytes.length] % chars.length];
390
+ }
391
+ return code;
392
+ }
393
+ destroy() {
394
+ this.profiles.clear();
395
+ this.follows.clear();
396
+ this.invites.clear();
397
+ this.activities = [];
398
+ this.removeAllListeners();
399
+ }
400
+ }
401
+ //# sourceMappingURL=social.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social.js","sourceRoot":"","sources":["../src/social.ts"],"names":[],"mappings":"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"}