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,543 @@
1
+ /**
2
+ * Society Protocol - Knowledge Pool System v1.0
3
+ *
4
+ * Sistema de conhecimento compartilhado:
5
+ * - Knowledge Cards (unidades de conhecimento)
6
+ * - Spaces compartilhados (repositórios de conhecimento)
7
+ * - CRDT para convergência sem conflitos
8
+ * - Knowledge Graph descentralizado
9
+ * - Links semânticos entre conhecimentos
10
+ */
11
+ import { EventEmitter } from 'events';
12
+ import { ulid } from 'ulid';
13
+ // ─── Knowledge Pool Engine ───────────────────────────────────────
14
+ export class KnowledgePool extends EventEmitter {
15
+ storage;
16
+ identity;
17
+ cards = new Map();
18
+ spaces = new Map();
19
+ links = [];
20
+ collectiveUnconscious = new Map();
21
+ // Índices para busca
22
+ tagIndex = new Map();
23
+ authorIndex = new Map();
24
+ typeIndex = new Map();
25
+ // Link indexes for O(1) graph traversal (fixes N+1 query)
26
+ linksBySource = new Map();
27
+ linksByTarget = new Map();
28
+ constructor(storage, identity) {
29
+ super();
30
+ this.storage = storage;
31
+ this.identity = identity;
32
+ this.loadFromStorage();
33
+ }
34
+ // ─── Space Management ────────────────────────────────────────
35
+ async createSpace(name, description, type = 'team', privacy = 'room') {
36
+ const id = `space_${ulid()}`;
37
+ const now = Date.now();
38
+ const space = {
39
+ id,
40
+ name,
41
+ description,
42
+ owner: this.identity.did,
43
+ type,
44
+ privacy,
45
+ cards: new Set(),
46
+ links: [],
47
+ subspaces: [],
48
+ createdAt: now,
49
+ updatedAt: now,
50
+ tags: [],
51
+ stats: {
52
+ cardCount: 0,
53
+ linkCount: 0,
54
+ contributorCount: 1,
55
+ lastActivity: now
56
+ },
57
+ policies: {
58
+ allowPublicRead: type === 'public',
59
+ allowPublicWrite: false,
60
+ requireVerification: type === 'public',
61
+ autoArchiveDays: type === 'personal' ? undefined : 365
62
+ }
63
+ };
64
+ this.spaces.set(id, space);
65
+ // Criar inconsciente coletivo para o space
66
+ await this.createCollectiveUnconscious(id);
67
+ await this.saveSpace(space);
68
+ this.emit('space:created', space);
69
+ return space;
70
+ }
71
+ // ─── Knowledge Card CRUD ─────────────────────────────────────
72
+ async createCard(spaceId, type, title, content, options) {
73
+ const space = this.spaces.get(spaceId);
74
+ if (!space)
75
+ throw new Error('Space not found');
76
+ const id = `know_${ulid()}`;
77
+ const now = Date.now();
78
+ const card = {
79
+ id,
80
+ spaceId,
81
+ type,
82
+ title,
83
+ summary: options?.summary || this.generateSummary(content),
84
+ content,
85
+ contentFormat: 'markdown',
86
+ author: this.identity.did,
87
+ createdAt: now,
88
+ updatedAt: now,
89
+ version: 1,
90
+ tags: options?.tags || [],
91
+ domain: options?.domain || [],
92
+ entities: this.extractEntities(content),
93
+ source: options?.source,
94
+ confidence: options?.confidence || 0.8,
95
+ verificationStatus: 'unverified',
96
+ verifications: [],
97
+ usage: {
98
+ views: 0,
99
+ citations: 0,
100
+ applications: 0,
101
+ lastAccessed: now
102
+ },
103
+ privacy: options?.privacy || space.privacy,
104
+ crdt: {
105
+ hlc: { wallTime: now, logical: 0, nodeId: this.identity.did },
106
+ vectorClock: { [this.identity.did]: 1 },
107
+ tombstone: false
108
+ }
109
+ };
110
+ this.cards.set(id, card);
111
+ space.cards.add(id);
112
+ space.stats.cardCount++;
113
+ space.stats.lastActivity = now;
114
+ // Indexar
115
+ this.indexCard(card);
116
+ // Atualizar inconsciente coletivo
117
+ await this.updateCollectiveUnconscious(spaceId, card);
118
+ await this.saveCard(card);
119
+ await this.saveSpace(space);
120
+ this.emit('card:created', card);
121
+ return card;
122
+ }
123
+ async updateCard(id, updates) {
124
+ const card = this.cards.get(id);
125
+ if (!card)
126
+ throw new Error('Card not found');
127
+ // Verificar permissão
128
+ if (card.author !== this.identity.did) {
129
+ // TODO: Verificar permissões de edição
130
+ throw new Error('No permission to edit');
131
+ }
132
+ // CRDT: Incrementar versão e atualizar clocks
133
+ card.version++;
134
+ card.updatedAt = Date.now();
135
+ card.crdt.vectorClock[this.identity.did] =
136
+ (card.crdt.vectorClock[this.identity.did] || 0) + 1;
137
+ // Aplicar updates
138
+ if (updates.title)
139
+ card.title = updates.title;
140
+ if (updates.content) {
141
+ card.content = updates.content;
142
+ card.summary = this.generateSummary(updates.content);
143
+ card.entities = this.extractEntities(updates.content);
144
+ }
145
+ if (updates.tags) {
146
+ // Re-indexar tags
147
+ this.removeFromTagIndex(card);
148
+ card.tags = updates.tags;
149
+ this.addToTagIndex(card);
150
+ }
151
+ if (updates.confidence !== undefined)
152
+ card.confidence = updates.confidence;
153
+ await this.saveCard(card);
154
+ this.emit('card:updated', card);
155
+ return card;
156
+ }
157
+ async deleteCard(id) {
158
+ const card = this.cards.get(id);
159
+ if (!card)
160
+ throw new Error('Card not found');
161
+ // Soft delete (tombstone para CRDT)
162
+ card.crdt.tombstone = true;
163
+ card.updatedAt = Date.now();
164
+ const space = this.spaces.get(card.spaceId);
165
+ if (space) {
166
+ space.cards.delete(id);
167
+ space.stats.cardCount--;
168
+ }
169
+ this.removeFromIndex(card);
170
+ await this.saveCard(card);
171
+ this.emit('card:deleted', id);
172
+ }
173
+ async linkCards(sourceId, targetId, type, strength = 0.5, evidence) {
174
+ // Verificar se cards existem
175
+ if (!this.cards.has(sourceId) || !this.cards.has(targetId)) {
176
+ throw new Error('Source or target card not found');
177
+ }
178
+ const link = {
179
+ id: `link_${ulid()}`,
180
+ source: sourceId,
181
+ target: targetId,
182
+ type,
183
+ strength: Math.max(0, Math.min(1, strength)),
184
+ createdBy: this.identity.did,
185
+ createdAt: Date.now(),
186
+ evidence
187
+ };
188
+ this.links.push(link);
189
+ this.indexLink(link);
190
+ const space = this.spaces.get(this.cards.get(sourceId).spaceId);
191
+ if (space) {
192
+ space.links.push(link);
193
+ space.stats.linkCount++;
194
+ }
195
+ await this.saveLink(link);
196
+ this.emit('link:created', link);
197
+ return link;
198
+ }
199
+ // ─── Knowledge Graph Queries ─────────────────────────────────
200
+ queryCards(options) {
201
+ let results = Array.from(this.cards.values())
202
+ .filter(c => !c.crdt.tombstone);
203
+ // Aplicar filtros
204
+ if (options.spaceId) {
205
+ results = results.filter(c => c.spaceId === options.spaceId);
206
+ }
207
+ if (options.type) {
208
+ results = results.filter(c => c.type === options.type);
209
+ }
210
+ if (options.tags?.length) {
211
+ results = results.filter(c => options.tags.some(tag => c.tags.includes(tag)));
212
+ }
213
+ if (options.author) {
214
+ results = results.filter(c => c.author === options.author);
215
+ }
216
+ if (options.domain?.length) {
217
+ results = results.filter(c => options.domain.some(d => c.domain.includes(d)));
218
+ }
219
+ if (options.verificationStatus) {
220
+ results = results.filter(c => c.verificationStatus === options.verificationStatus);
221
+ }
222
+ if (options.privacy) {
223
+ results = results.filter(c => c.privacy === options.privacy);
224
+ }
225
+ // Full-text search simples
226
+ if (options.query) {
227
+ const q = options.query.toLowerCase();
228
+ results = results.filter(c => c.title.toLowerCase().includes(q) ||
229
+ c.summary.toLowerCase().includes(q) ||
230
+ c.content.toLowerCase().includes(q) ||
231
+ c.tags.some(t => t.toLowerCase().includes(q)));
232
+ }
233
+ // Sorting
234
+ switch (options.sortBy) {
235
+ case 'confidence':
236
+ results.sort((a, b) => b.confidence - a.confidence);
237
+ break;
238
+ case 'created':
239
+ results.sort((a, b) => b.createdAt - a.createdAt);
240
+ break;
241
+ case 'usage':
242
+ results.sort((a, b) => b.usage.applications - a.usage.applications);
243
+ break;
244
+ default:
245
+ // relevance - combina vários fatores
246
+ results.sort((a, b) => (b.confidence * b.usage.applications) -
247
+ (a.confidence * a.usage.applications));
248
+ }
249
+ // Pagination
250
+ const offset = options.offset || 0;
251
+ const limit = options.limit || 50;
252
+ return results.slice(offset, offset + limit);
253
+ }
254
+ getRelatedCards(cardId, depth = 1) {
255
+ const related = new Set();
256
+ let currentLevel = [cardId];
257
+ const processed = new Set();
258
+ for (let d = 0; d < depth && currentLevel.length > 0; d++) {
259
+ const nextLevel = [];
260
+ for (const current of currentLevel) {
261
+ if (processed.has(current))
262
+ continue;
263
+ processed.add(current);
264
+ // O(1) lookup via indexed maps instead of O(n) filter
265
+ const outLinks = this.linksBySource.get(current) || [];
266
+ const inLinks = this.linksByTarget.get(current) || [];
267
+ for (const link of outLinks) {
268
+ if (!processed.has(link.target)) {
269
+ related.add(link.target);
270
+ nextLevel.push(link.target);
271
+ }
272
+ }
273
+ for (const link of inLinks) {
274
+ if (!processed.has(link.source)) {
275
+ related.add(link.source);
276
+ nextLevel.push(link.source);
277
+ }
278
+ }
279
+ }
280
+ currentLevel = nextLevel;
281
+ }
282
+ return Array.from(related)
283
+ .map(id => this.cards.get(id))
284
+ .filter((c) => c !== undefined && !c.crdt.tombstone);
285
+ }
286
+ indexLink(link) {
287
+ if (!this.linksBySource.has(link.source)) {
288
+ this.linksBySource.set(link.source, []);
289
+ }
290
+ this.linksBySource.get(link.source).push(link);
291
+ if (!this.linksByTarget.has(link.target)) {
292
+ this.linksByTarget.set(link.target, []);
293
+ }
294
+ this.linksByTarget.get(link.target).push(link);
295
+ }
296
+ getKnowledgeGraph(spaceId) {
297
+ const space = this.spaces.get(spaceId);
298
+ if (!space)
299
+ return { nodes: [], links: [] };
300
+ const nodes = Array.from(space.cards)
301
+ .map(id => this.cards.get(id))
302
+ .filter((c) => c !== undefined && !c.crdt.tombstone);
303
+ return { nodes, links: space.links };
304
+ }
305
+ // ─── Collective Unconscious ──────────────────────────────────
306
+ async createCollectiveUnconscious(spaceId) {
307
+ const cu = {
308
+ id: `cu_${spaceId}`,
309
+ spaceId,
310
+ workingMemory: {
311
+ recentMessages: [],
312
+ activeTopics: [],
313
+ participants: [],
314
+ contextWindow: ''
315
+ },
316
+ longTermMemory: {
317
+ keyConcepts: [],
318
+ recurringThemes: [],
319
+ learnedPatterns: [],
320
+ agentModels: {}
321
+ },
322
+ sharedState: {
323
+ goals: [],
324
+ plans: [],
325
+ decisions: [],
326
+ openQuestions: []
327
+ },
328
+ lastUpdate: Date.now(),
329
+ coherence: 1.0
330
+ };
331
+ this.collectiveUnconscious.set(spaceId, cu);
332
+ return cu;
333
+ }
334
+ async updateCollectiveUnconscious(spaceId, card) {
335
+ const cu = this.collectiveUnconscious.get(spaceId);
336
+ if (!cu)
337
+ return;
338
+ // Atualizar memória de longo prazo
339
+ if (card.type === 'concept' || card.type === 'insight') {
340
+ cu.longTermMemory.keyConcepts.push(card.id);
341
+ }
342
+ if (card.type === 'decision') {
343
+ cu.sharedState.decisions.push(card.title);
344
+ }
345
+ // Extrair tópicos
346
+ cu.workingMemory.activeTopics = [...card.tags, ...card.domain];
347
+ // Atualizar timestamp
348
+ cu.lastUpdate = Date.now();
349
+ // Simplificar: gerar context window
350
+ cu.workingMemory.contextWindow = await this.generateContextWindow(spaceId);
351
+ await this.saveCollectiveUnconscious(cu);
352
+ this.emit('collective:updated', cu);
353
+ }
354
+ async updateWorkingMemory(spaceId, update) {
355
+ const cu = this.collectiveUnconscious.get(spaceId);
356
+ if (!cu)
357
+ throw new Error('Collective unconscious not found');
358
+ Object.assign(cu.workingMemory, update);
359
+ cu.lastUpdate = Date.now();
360
+ await this.saveCollectiveUnconscious(cu);
361
+ }
362
+ getCollectiveUnconscious(spaceId) {
363
+ return this.collectiveUnconscious.get(spaceId);
364
+ }
365
+ getSharedContext(spaceId) {
366
+ const cu = this.collectiveUnconscious.get(spaceId);
367
+ if (!cu)
368
+ return '';
369
+ return `
370
+ # Contexto Compartilhado (Inconsciente Coletivo)
371
+
372
+ ## Tópicos Ativos
373
+ ${cu.workingMemory.activeTopics.join(', ')}
374
+
375
+ ## Conceitos-Chave
376
+ ${cu.longTermMemory.keyConcepts.slice(0, 10).join(', ')}
377
+
378
+ ## Objetivos Atuais
379
+ ${cu.sharedState.goals.join('\n')}
380
+
381
+ ## Decisões Recentes
382
+ ${cu.sharedState.decisions.slice(-5).join('\n')}
383
+
384
+ ## Contexto da Conversa
385
+ ${cu.workingMemory.contextWindow}
386
+ `.trim();
387
+ }
388
+ // ─── Private Helpers ─────────────────────────────────────────
389
+ generateSummary(content, maxLength = 200) {
390
+ // Remover markdown
391
+ const plain = content
392
+ .replace(/[#*`\[\]()]/g, '')
393
+ .replace(/\s+/g, ' ')
394
+ .trim();
395
+ if (plain.length <= maxLength)
396
+ return plain;
397
+ return plain.substring(0, maxLength) + '...';
398
+ }
399
+ extractEntities(content) {
400
+ // Simples: extrair palavras capitalizadas como entidades
401
+ const entities = new Set();
402
+ const matches = content.match(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)*\b/g);
403
+ if (matches) {
404
+ matches.forEach(e => entities.add(e));
405
+ }
406
+ return Array.from(entities).slice(0, 20);
407
+ }
408
+ async generateContextWindow(spaceId) {
409
+ // Pegar cards mais relevantes do space
410
+ const cards = this.queryCards({
411
+ spaceId,
412
+ sortBy: 'usage',
413
+ limit: 10
414
+ });
415
+ return cards
416
+ .map(c => `- ${c.title}: ${c.summary}`)
417
+ .join('\n');
418
+ }
419
+ indexCard(card) {
420
+ // Tags
421
+ this.addToTagIndex(card);
422
+ // Author
423
+ if (!this.authorIndex.has(card.author)) {
424
+ this.authorIndex.set(card.author, new Set());
425
+ }
426
+ this.authorIndex.get(card.author).add(card.id);
427
+ // Type
428
+ if (!this.typeIndex.has(card.type)) {
429
+ this.typeIndex.set(card.type, new Set());
430
+ }
431
+ this.typeIndex.get(card.type).add(card.id);
432
+ }
433
+ addToTagIndex(card) {
434
+ for (const tag of card.tags) {
435
+ if (!this.tagIndex.has(tag)) {
436
+ this.tagIndex.set(tag, new Set());
437
+ }
438
+ this.tagIndex.get(tag).add(card.id);
439
+ }
440
+ }
441
+ removeFromTagIndex(card) {
442
+ for (const tag of card.tags) {
443
+ this.tagIndex.get(tag)?.delete(card.id);
444
+ }
445
+ }
446
+ removeFromIndex(card) {
447
+ this.removeFromTagIndex(card);
448
+ this.authorIndex.get(card.author)?.delete(card.id);
449
+ this.typeIndex.get(card.type)?.delete(card.id);
450
+ }
451
+ async saveCard(card) {
452
+ this.storage.saveKnowledgeCard?.(card);
453
+ }
454
+ async saveSpace(space) {
455
+ this.storage.saveKnowledgeSpace?.(space);
456
+ }
457
+ async saveLink(link) {
458
+ this.storage.saveKnowledgeLink?.(link);
459
+ }
460
+ async saveCollectiveUnconscious(cu) {
461
+ this.storage.saveCollectiveUnconscious?.(cu);
462
+ }
463
+ loadFromStorage() {
464
+ const spaces = this.storage.getKnowledgeSpaces?.() || [];
465
+ for (const rawSpace of spaces) {
466
+ const space = this.normalizeSpace(rawSpace);
467
+ this.spaces.set(space.id, space);
468
+ }
469
+ const cards = this.storage.getKnowledgeCards?.() || [];
470
+ for (const rawCard of cards) {
471
+ const card = this.normalizeCard(rawCard);
472
+ this.cards.set(card.id, card);
473
+ this.indexCard(card);
474
+ const space = this.spaces.get(card.spaceId);
475
+ if (space) {
476
+ space.cards.add(card.id);
477
+ space.stats.cardCount = Math.max(space.stats.cardCount, space.cards.size);
478
+ }
479
+ }
480
+ const links = this.storage.getKnowledgeLinks?.() || [];
481
+ this.links = links.map((link) => this.normalizeLink(link));
482
+ // Rebuild link indexes for O(1) graph traversal
483
+ this.linksBySource.clear();
484
+ this.linksByTarget.clear();
485
+ for (const link of this.links) {
486
+ this.indexLink(link);
487
+ const sourceCard = this.cards.get(link.source);
488
+ if (!sourceCard)
489
+ continue;
490
+ const space = this.spaces.get(sourceCard.spaceId);
491
+ if (!space)
492
+ continue;
493
+ space.links.push(link);
494
+ space.stats.linkCount = space.links.length;
495
+ }
496
+ const collectiveStates = this.storage.getCollectiveUnconscious?.() || [];
497
+ for (const state of collectiveStates) {
498
+ if (state?.spaceId) {
499
+ this.collectiveUnconscious.set(state.spaceId, state);
500
+ }
501
+ }
502
+ }
503
+ normalizeSpace(rawSpace) {
504
+ const cards = rawSpace.cards instanceof Set
505
+ ? rawSpace.cards
506
+ : new Set(Array.isArray(rawSpace.cards) ? rawSpace.cards : []);
507
+ return {
508
+ ...rawSpace,
509
+ cards,
510
+ links: [],
511
+ subspaces: Array.isArray(rawSpace.subspaces) ? rawSpace.subspaces : [],
512
+ stats: {
513
+ cardCount: rawSpace.stats?.cardCount ?? cards.size,
514
+ linkCount: rawSpace.stats?.linkCount ?? 0,
515
+ contributorCount: rawSpace.stats?.contributorCount ?? 1,
516
+ lastActivity: rawSpace.stats?.lastActivity ?? rawSpace.updatedAt ?? Date.now()
517
+ }
518
+ };
519
+ }
520
+ normalizeCard(rawCard) {
521
+ const now = Date.now();
522
+ return {
523
+ ...rawCard,
524
+ tags: Array.isArray(rawCard.tags) ? rawCard.tags : [],
525
+ domain: Array.isArray(rawCard.domain) ? rawCard.domain : [],
526
+ entities: Array.isArray(rawCard.entities) ? rawCard.entities : [],
527
+ verifications: Array.isArray(rawCard.verifications) ? rawCard.verifications : [],
528
+ crdt: rawCard.crdt || {
529
+ hlc: { wallTime: now, logical: 0, nodeId: this.identity.did },
530
+ vectorClock: { [this.identity.did]: 1 },
531
+ tombstone: false
532
+ }
533
+ };
534
+ }
535
+ normalizeLink(rawLink) {
536
+ return {
537
+ ...rawLink,
538
+ strength: typeof rawLink.strength === 'number' ? rawLink.strength : 0.5
539
+ };
540
+ }
541
+ }
542
+ // Classes already exported via 'export class'
543
+ //# sourceMappingURL=knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../src/knowledge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=knowledge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.test.d.ts","sourceRoot":"","sources":["../src/knowledge.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { KnowledgePool } from './knowledge.js';
3
+ import { Storage } from './storage.js';
4
+ import { tmpdir } from 'os';
5
+ import { join } from 'path';
6
+ import { mkdirSync } from 'fs';
7
+ describe('KnowledgePool', () => {
8
+ let storage;
9
+ let pool;
10
+ let testDir;
11
+ beforeEach(() => {
12
+ testDir = join(tmpdir(), `society-test-${Date.now()}`);
13
+ mkdirSync(testDir, { recursive: true });
14
+ storage = new Storage({ dbPath: join(testDir, 'test.db') });
15
+ pool = new KnowledgePool(storage, { identity: { did: 'did:key:z6MkTest' } });
16
+ });
17
+ describe('createSpace', () => {
18
+ it('should create a knowledge space', async () => {
19
+ const space = await pool.createSpace('Test Space', 'Test description', 'team', 'room');
20
+ expect(space).toBeDefined();
21
+ expect(space.name).toBe('Test Space');
22
+ expect(space.id).toMatch(/^ks_/);
23
+ });
24
+ });
25
+ describe('createCard', () => {
26
+ it('should create cards of all types', async () => {
27
+ const space = await pool.createSpace('Test', 'Test', 'team', 'room');
28
+ const types = ['concept', 'fact', 'insight', 'decision', 'code', 'process', 'pattern', 'sop'];
29
+ for (const type of types) {
30
+ const card = await pool.createCard(space.id, type, `${type} Card`, `Content for ${type}`);
31
+ expect(card.type).toBe(type);
32
+ expect(card.title).toBe(`${type} Card`);
33
+ }
34
+ });
35
+ });
36
+ describe('semantic links', () => {
37
+ it('should link cards with different relation types', async () => {
38
+ const space = await pool.createSpace('Test', 'Test', 'team', 'room');
39
+ const card1 = await pool.createCard(space.id, 'concept', 'Neural Networks', 'Computing systems inspired by biological neural networks.');
40
+ const card2 = await pool.createCard(space.id, 'concept', 'Deep Learning', 'ML technique using multiple layers of neural networks.');
41
+ // Create link
42
+ await pool.linkCards(card1.id, card2.id, 'supports', 0.9);
43
+ const links = pool.getLinks(card1.id);
44
+ expect(links.length).toBe(1);
45
+ expect(links[0].type).toBe('supports');
46
+ });
47
+ });
48
+ describe('collective unconscious', () => {
49
+ it('should store and retrieve agent models', async () => {
50
+ const agentDid = 'did:key:z6MkAgent1';
51
+ await pool.updateAgentModel(agentDid, {
52
+ communicationStyle: 'formal',
53
+ expertise: ['AI', 'Blockchain'],
54
+ reliability: 0.95
55
+ });
56
+ const model = pool.getAgentModel(agentDid);
57
+ expect(model).toBeDefined();
58
+ expect(model?.expertise).toContain('AI');
59
+ expect(model?.reliability).toBe(0.95);
60
+ });
61
+ });
62
+ describe('search', () => {
63
+ it('should search cards by content', async () => {
64
+ const space = await pool.createSpace('Test', 'Test', 'team', 'room');
65
+ await pool.createCard(space.id, 'fact', 'AI Fundamentals', 'Artificial Intelligence basics');
66
+ await pool.createCard(space.id, 'fact', 'ML Overview', 'Machine Learning concepts');
67
+ const results = pool.search('artificial intelligence');
68
+ expect(results.length).toBeGreaterThan(0);
69
+ });
70
+ });
71
+ });
72
+ //# sourceMappingURL=knowledge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.test.js","sourceRoot":"","sources":["../src/knowledge.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAqC,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAU,MAAM,IAAI,CAAC;AAEvC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAgB,CAAC;IACrB,IAAI,IAAmB,CAAC;IACxB,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAS,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAEvF,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,KAAK,GAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAE/G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAC9B,KAAK,CAAC,EAAE,EACR,IAAI,EACJ,GAAG,IAAI,OAAO,EACd,eAAe,IAAI,EAAE,CACxB,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAErE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAC/B,KAAK,CAAC,EAAE,EACR,SAAS,EACT,iBAAiB,EACjB,2DAA2D,CAC9D,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAC/B,KAAK,CAAC,EAAE,EACR,SAAS,EACT,eAAe,EACf,wDAAwD,CAC3D,CAAC;YAEF,cAAc;YACd,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,UAAsB,EAAE,GAAG,CAAC,CAAC;YAEtE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,QAAQ,GAAG,oBAAoB,CAAC;YAEtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBAClC,kBAAkB,EAAE,QAAQ;gBAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC;gBAC/B,WAAW,EAAE,IAAI;aACpB,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAErE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;YAC7F,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,2BAA2B,CAAC,CAAC;YAEpF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}