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,573 @@
1
+ /**
2
+ * Society Protocol - Context Compression & Optimization v1.0
3
+ *
4
+ * Sistema de otimização de contexto e comunicações:
5
+ * - Compressão de mensagens (LZ4, Zstd)
6
+ * - Summarização inteligente de contexto
7
+ * - Sliding window com relevância
8
+ * - Semantic chunking
9
+ * - Deduplicação de conteúdo
10
+ * - Priorização de mensagens
11
+ */
12
+ import { createHash } from 'crypto';
13
+ // ─── Message Compression ─────────────────────────────────────────
14
+ export class MessageCompressor {
15
+ config;
16
+ constructor(config) {
17
+ this.config = {
18
+ algorithm: config?.algorithm || 'zstd',
19
+ level: config?.level || 3,
20
+ threshold: config?.threshold || 1024 // 1KB
21
+ };
22
+ }
23
+ async compress(data) {
24
+ if (data.length < this.config.threshold) {
25
+ return data; // Não comprimir dados pequenos
26
+ }
27
+ switch (this.config.algorithm) {
28
+ case 'lz4':
29
+ return this.compressLZ4(data);
30
+ case 'zstd':
31
+ return this.compressZstd(data);
32
+ case 'gzip':
33
+ return this.compressGzip(data);
34
+ default:
35
+ return data;
36
+ }
37
+ }
38
+ async decompress(data, algorithm) {
39
+ switch (algorithm) {
40
+ case 'lz4':
41
+ return this.decompressLZ4(data);
42
+ case 'zstd':
43
+ return this.decompressZstd(data);
44
+ case 'gzip':
45
+ return this.decompressGzip(data);
46
+ default:
47
+ return data;
48
+ }
49
+ }
50
+ async compressLZ4(data) {
51
+ try {
52
+ const lz4 = await this.dynamicImport('lz4js');
53
+ const compressed = lz4.compress(data);
54
+ return this.packCodecPayload('L4', 1, new Uint8Array(compressed));
55
+ }
56
+ catch {
57
+ const compressed = await this.compressGzip(data);
58
+ return this.packCodecPayload('L4', 2, compressed);
59
+ }
60
+ }
61
+ async compressZstd(data) {
62
+ try {
63
+ const zstd = await this.dynamicImport('@bokuweb/zstd-wasm');
64
+ await zstd.init?.();
65
+ const compressed = zstd.compress(data);
66
+ return this.packCodecPayload('ZS', 1, new Uint8Array(compressed));
67
+ }
68
+ catch {
69
+ const compressed = await this.compressGzip(data);
70
+ return this.packCodecPayload('ZS', 2, compressed);
71
+ }
72
+ }
73
+ async compressGzip(data) {
74
+ // Usar zlib do Node.js
75
+ const { gzip } = await import('zlib');
76
+ const { promisify } = await import('util');
77
+ const gzipAsync = promisify(gzip);
78
+ const compressed = await gzipAsync(Buffer.from(data), {
79
+ level: this.config.level
80
+ });
81
+ return new Uint8Array(compressed);
82
+ }
83
+ async decompressLZ4(data) {
84
+ const { codec, variant, payload } = this.unpackCodecPayload(data);
85
+ if (codec !== 'L4') {
86
+ throw new Error('Invalid LZ4 payload header');
87
+ }
88
+ if (variant === 1) {
89
+ const lz4 = await this.dynamicImport('lz4js');
90
+ return new Uint8Array(lz4.decompress(payload));
91
+ }
92
+ if (variant === 2) {
93
+ return this.decompressGzip(payload);
94
+ }
95
+ throw new Error(`Unsupported LZ4 variant: ${variant}`);
96
+ }
97
+ async decompressZstd(data) {
98
+ const { codec, variant, payload } = this.unpackCodecPayload(data);
99
+ if (codec !== 'ZS') {
100
+ throw new Error('Invalid Zstd payload header');
101
+ }
102
+ if (variant === 1) {
103
+ const zstd = await this.dynamicImport('@bokuweb/zstd-wasm');
104
+ await zstd.init?.();
105
+ return new Uint8Array(zstd.decompress(payload));
106
+ }
107
+ if (variant === 2) {
108
+ return this.decompressGzip(payload);
109
+ }
110
+ throw new Error(`Unsupported Zstd variant: ${variant}`);
111
+ }
112
+ async decompressGzip(data) {
113
+ const { gunzip } = await import('zlib');
114
+ const { promisify } = await import('util');
115
+ const gunzipAsync = promisify(gunzip);
116
+ const decompressed = await gunzipAsync(Buffer.from(data));
117
+ return new Uint8Array(decompressed);
118
+ }
119
+ packCodecPayload(codec, variant, payload) {
120
+ const header = new Uint8Array([
121
+ codec.charCodeAt(0),
122
+ codec.charCodeAt(1),
123
+ variant & 0xff
124
+ ]);
125
+ const result = new Uint8Array(header.length + payload.length);
126
+ result.set(header, 0);
127
+ result.set(payload, header.length);
128
+ return result;
129
+ }
130
+ unpackCodecPayload(data) {
131
+ if (data.length < 4) {
132
+ throw new Error('Invalid compressed payload');
133
+ }
134
+ const codec = String.fromCharCode(data[0], data[1]);
135
+ return {
136
+ codec,
137
+ variant: data[2],
138
+ payload: data.slice(3)
139
+ };
140
+ }
141
+ async dynamicImport(moduleName) {
142
+ return new Function('m', 'return import(m)')(moduleName);
143
+ }
144
+ getCompressionStats(original, compressed) {
145
+ const savings = original - compressed;
146
+ return {
147
+ ratio: compressed / original,
148
+ savings,
149
+ savingsPercent: (savings / original) * 100
150
+ };
151
+ }
152
+ }
153
+ // ─── Context Optimizer ───────────────────────────────────────────
154
+ export class ContextOptimizer {
155
+ maxTokens;
156
+ reserveTokens;
157
+ constructor(maxTokens = 8000, reserveTokens = 2000) {
158
+ this.maxTokens = maxTokens;
159
+ this.reserveTokens = reserveTokens;
160
+ }
161
+ /**
162
+ * Otimizar janela de contexto mantendo apenas o mais relevante
163
+ */
164
+ optimizeWindow(window) {
165
+ if (window.totalTokens <= this.maxTokens - this.reserveTokens) {
166
+ return window; // Já está otimizado
167
+ }
168
+ // Calcular relevância de cada mensagem
169
+ const scoredMessages = window.messages.map(msg => ({
170
+ ...msg,
171
+ score: this.calculateRelevance(msg, window.messages)
172
+ }));
173
+ // Ordenar por relevância (mantendo ordem cronológica para mensagens similares)
174
+ scoredMessages.sort((a, b) => {
175
+ if (Math.abs(a.score - b.score) < 0.1) {
176
+ return a.timestamp - b.timestamp;
177
+ }
178
+ return b.score - a.score;
179
+ });
180
+ // Selecionar mensagens até atingir o limite
181
+ const selected = [];
182
+ let tokenCount = 0;
183
+ for (const msg of scoredMessages) {
184
+ if (tokenCount + msg.tokens <= this.maxTokens - this.reserveTokens) {
185
+ selected.push(msg);
186
+ tokenCount += msg.tokens;
187
+ }
188
+ else if (msg.role === 'system') {
189
+ // Sempre manter mensagens de sistema, comprimindo se necessário
190
+ const compressed = this.compressMessage(msg);
191
+ if (tokenCount + compressed.tokens <= this.maxTokens - this.reserveTokens) {
192
+ selected.push(compressed);
193
+ tokenCount += compressed.tokens;
194
+ }
195
+ }
196
+ }
197
+ // Reordenar por timestamp
198
+ selected.sort((a, b) => a.timestamp - b.timestamp);
199
+ return {
200
+ messages: selected,
201
+ totalTokens: tokenCount,
202
+ maxTokens: this.maxTokens,
203
+ compressed: true
204
+ };
205
+ }
206
+ /**
207
+ * Comprimir mensagem mantendo informação essencial
208
+ */
209
+ compressMessage(msg) {
210
+ if (msg.compressed)
211
+ return msg;
212
+ // Estratégias de compressão baseadas no tipo
213
+ let compressed = msg.content;
214
+ if (msg.content.length > 500) {
215
+ // Remover repetições
216
+ compressed = this.removeRepetitions(compressed);
217
+ // Substituir citações longas por referências
218
+ compressed = this.compressQuotes(compressed);
219
+ // Resumir se ainda for longo
220
+ if (compressed.length > 1000) {
221
+ compressed = this.summarizeText(compressed, 500);
222
+ }
223
+ }
224
+ // Estimar tokens (regra geral: ~4 chars/token)
225
+ const estimatedTokens = Math.ceil(compressed.length / 4);
226
+ const result = {
227
+ ...msg,
228
+ content: compressed,
229
+ tokens: estimatedTokens,
230
+ compressed: true,
231
+ summary: msg.summary || this.extractKeyPoints(msg.content)[0]
232
+ };
233
+ return result;
234
+ }
235
+ /**
236
+ * Criar summary progressivo do contexto
237
+ */
238
+ createProgressiveSummary(messages) {
239
+ // Agrupar mensagens em blocos
240
+ const chunks = this.chunkMessages(messages, 5);
241
+ const summaries = [];
242
+ for (const chunk of chunks) {
243
+ const content = chunk.map(m => m.content).join('\n');
244
+ const summary = this.summarizeText(content, 200);
245
+ summaries.push(summary);
246
+ }
247
+ // Se ainda for muito longo, criar summary de summaries
248
+ if (summaries.join('\n').length > 1000) {
249
+ return this.summarizeText(summaries.join('\n'), 500);
250
+ }
251
+ return summaries.join('\n\n');
252
+ }
253
+ /**
254
+ * Deduplicar mensagens similares
255
+ */
256
+ deduplicateMessages(messages) {
257
+ const seen = new Map();
258
+ const result = [];
259
+ for (const msg of messages) {
260
+ const hash = this.hashContent(msg.content);
261
+ if (seen.has(hash)) {
262
+ // Manter a mais recente
263
+ const existing = seen.get(hash);
264
+ if (msg.timestamp > existing.timestamp) {
265
+ const idx = result.indexOf(existing);
266
+ if (idx !== -1) {
267
+ result[idx] = msg;
268
+ seen.set(hash, msg);
269
+ }
270
+ }
271
+ }
272
+ else {
273
+ seen.set(hash, msg);
274
+ result.push(msg);
275
+ }
276
+ }
277
+ return result;
278
+ }
279
+ calculateRelevance(msg, allMessages) {
280
+ let score = 0;
281
+ // Recência (mensagens recentes são mais importantes)
282
+ const now = Date.now();
283
+ const age = now - msg.timestamp;
284
+ const recencyScore = Math.exp(-age / (1000 * 60 * 60)); // Decaimento por hora
285
+ score += recencyScore * 0.3;
286
+ // Tipo de mensagem
287
+ if (msg.role === 'system')
288
+ score += 1.0;
289
+ else if (msg.role === 'user')
290
+ score += 0.8;
291
+ else
292
+ score += 0.6;
293
+ // Conteúdo específico (se tiver entidades ou é acionável)
294
+ if (msg.content.includes('?'))
295
+ score += 0.1; // Perguntas
296
+ if (msg.content.includes('TODO') || msg.content.includes('ACTION'))
297
+ score += 0.2;
298
+ if (msg.content.includes('DECISION') || msg.content.includes('CONCLUSION'))
299
+ score += 0.3;
300
+ // Relevância já calculada (pode ter vindo de processamento anterior)
301
+ score += msg.relevance * 0.5;
302
+ // Tamanho (mensagens muito longas são penalizadas levemente)
303
+ if (msg.tokens > 500)
304
+ score -= 0.1;
305
+ return Math.max(0, Math.min(1, score));
306
+ }
307
+ removeRepetitions(text) {
308
+ // Remover sentenças repetidas
309
+ const sentences = text.split(/[.!?]+/);
310
+ const unique = new Set();
311
+ const result = [];
312
+ for (const sentence of sentences) {
313
+ const trimmed = sentence.trim();
314
+ if (trimmed.length < 5)
315
+ continue;
316
+ const normalized = trimmed.toLowerCase().replace(/\s+/g, ' ');
317
+ if (!unique.has(normalized)) {
318
+ unique.add(normalized);
319
+ result.push(trimmed);
320
+ }
321
+ }
322
+ return result.join('. ') + '.';
323
+ }
324
+ compressQuotes(text) {
325
+ // Substituir citações longas por [Quote: hash]
326
+ const quoteRegex = /(["'])(.{100,})\1/g;
327
+ return text.replace(quoteRegex, (match, quote, content) => {
328
+ const hash = createHash('md5').update(content).digest('hex').slice(0, 8);
329
+ return `[Quote: ${hash}]`;
330
+ });
331
+ }
332
+ summarizeText(text, maxLength) {
333
+ if (text.length <= maxLength)
334
+ return text;
335
+ // Estratégia simples: primeira e última sentença + meio resumido
336
+ const sentences = text.split(/[.!?]+/).filter(s => s.trim().length > 10);
337
+ if (sentences.length <= 3) {
338
+ return text.slice(0, maxLength) + '...';
339
+ }
340
+ const first = sentences[0].trim();
341
+ const last = sentences[sentences.length - 1].trim();
342
+ const middle = sentences.slice(1, -1)
343
+ .map(s => s.trim())
344
+ .filter(s => s.length > 20)
345
+ .slice(0, 3)
346
+ .join('. ');
347
+ const summary = `${first}. ${middle}... ${last}.`;
348
+ if (summary.length > maxLength) {
349
+ return summary.slice(0, maxLength - 3) + '...';
350
+ }
351
+ return summary;
352
+ }
353
+ extractKeyPoints(text) {
354
+ const points = [];
355
+ const lines = text.split('\n');
356
+ for (const line of lines) {
357
+ const trimmed = line.trim();
358
+ // Bullet points
359
+ if (trimmed.match(/^[-•*]\s+/)) {
360
+ points.push(trimmed.replace(/^[-•*]\s+/, ''));
361
+ }
362
+ // Números
363
+ else if (trimmed.match(/^\d+[.)]\s+/)) {
364
+ points.push(trimmed.replace(/^\d+[.)]\s+/, ''));
365
+ }
366
+ // Frases importantes (conclusões, ações)
367
+ else if (trimmed.match(/^(Conclusion|Action|Decision|Key|Important):/i)) {
368
+ points.push(trimmed);
369
+ }
370
+ }
371
+ return points.length > 0 ? points : [text.slice(0, 100) + '...'];
372
+ }
373
+ chunkMessages(messages, chunkSize) {
374
+ const chunks = [];
375
+ for (let i = 0; i < messages.length; i += chunkSize) {
376
+ chunks.push(messages.slice(i, i + chunkSize));
377
+ }
378
+ return chunks;
379
+ }
380
+ hashContent(content) {
381
+ return createHash('md5').update(content).digest('hex');
382
+ }
383
+ }
384
+ // ─── Semantic Chunker ────────────────────────────────────────────
385
+ export class SemanticChunker {
386
+ maxChunkSize;
387
+ overlap;
388
+ constructor(maxChunkSize = 500, overlap = 50) {
389
+ this.maxChunkSize = maxChunkSize;
390
+ this.overlap = overlap;
391
+ }
392
+ /**
393
+ * Dividir texto em chunks semânticos
394
+ */
395
+ chunk(text) {
396
+ // Primeiro, dividir por parágrafos
397
+ const paragraphs = text.split('\n\n').filter(p => p.trim());
398
+ const chunks = [];
399
+ let currentChunk = '';
400
+ for (const paragraph of paragraphs) {
401
+ if (currentChunk.length + paragraph.length > this.maxChunkSize) {
402
+ // Salvar chunk atual
403
+ if (currentChunk) {
404
+ chunks.push(this.createChunk(currentChunk));
405
+ }
406
+ // Começar novo chunk com overlap
407
+ const words = currentChunk.split(' ');
408
+ const overlapText = words.slice(-this.overlap).join(' ');
409
+ currentChunk = overlapText + '\n\n' + paragraph;
410
+ }
411
+ else {
412
+ currentChunk += (currentChunk ? '\n\n' : '') + paragraph;
413
+ }
414
+ }
415
+ if (currentChunk) {
416
+ chunks.push(this.createChunk(currentChunk));
417
+ }
418
+ return chunks;
419
+ }
420
+ /**
421
+ * Mesclar chunks similares
422
+ */
423
+ mergeSimilarChunks(chunks, threshold = 0.8) {
424
+ const merged = [];
425
+ let current = chunks[0];
426
+ for (let i = 1; i < chunks.length; i++) {
427
+ const similarity = this.calculateSimilarity(current, chunks[i]);
428
+ if (similarity > threshold &&
429
+ current.content.length + chunks[i].content.length <= this.maxChunkSize * 1.5) {
430
+ // Mesclar
431
+ current = this.mergeTwoChunks(current, chunks[i]);
432
+ }
433
+ else {
434
+ merged.push(current);
435
+ current = chunks[i];
436
+ }
437
+ }
438
+ if (current)
439
+ merged.push(current);
440
+ return merged;
441
+ }
442
+ createChunk(content) {
443
+ const entities = this.extractEntities(content);
444
+ const topics = this.extractTopics(content);
445
+ return {
446
+ id: `chunk_${createHash('md5').update(content).digest('hex').slice(0, 8)}`,
447
+ content: content.trim(),
448
+ tokens: Math.ceil(content.length / 4), // Estimativa
449
+ entities,
450
+ topics,
451
+ timestamp: Date.now(),
452
+ importance: this.calculateImportance(content, entities, topics)
453
+ };
454
+ }
455
+ extractEntities(text) {
456
+ const entities = new Set();
457
+ // Nomes próprios (capitalizados)
458
+ const properNouns = text.match(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)*\b/g);
459
+ if (properNouns) {
460
+ properNouns.forEach(e => entities.add(e));
461
+ }
462
+ // Emails
463
+ const emails = text.match(/\b[\w.-]+@[\w.-]+\.\w+\b/g);
464
+ if (emails) {
465
+ emails.forEach(e => entities.add(e));
466
+ }
467
+ // URLs
468
+ const urls = text.match(/https?:\/\/[^\s]+/g);
469
+ if (urls) {
470
+ urls.forEach(u => entities.add(u));
471
+ }
472
+ return Array.from(entities).slice(0, 20);
473
+ }
474
+ extractTopics(text) {
475
+ const topics = new Set();
476
+ // Hashtags
477
+ const hashtags = text.match(/#[\w-]+/g);
478
+ if (hashtags) {
479
+ hashtags.forEach(h => topics.add(h.slice(1)));
480
+ }
481
+ // Palavras-chave (em maiúsculas ou negrito)
482
+ const keywords = text.match(/\*\*([\w\s]+)\*\*|\b([A-Z]{2,})\b/g);
483
+ if (keywords) {
484
+ keywords.forEach(k => topics.add(k.replace(/\*\*/g, '').trim()));
485
+ }
486
+ return Array.from(topics).slice(0, 10);
487
+ }
488
+ calculateImportance(content, entities, topics) {
489
+ let score = 0.5; // Base
490
+ // Mais entidades = mais importante
491
+ score += Math.min(0.2, entities.length * 0.01);
492
+ // Tópicos explícitos
493
+ score += Math.min(0.2, topics.length * 0.02);
494
+ // Palavras indicativas
495
+ const indicators = ['important', 'critical', 'key', 'main', 'essential', 'crucial'];
496
+ const lower = content.toLowerCase();
497
+ for (const indicator of indicators) {
498
+ if (lower.includes(indicator))
499
+ score += 0.05;
500
+ }
501
+ // Perguntas são importantes
502
+ if (content.includes('?'))
503
+ score += 0.05;
504
+ return Math.min(1, score);
505
+ }
506
+ calculateSimilarity(a, b) {
507
+ // Similaridade baseada em entidades e tópicos compartilhados
508
+ const sharedEntities = a.entities.filter(e => b.entities.includes(e));
509
+ const sharedTopics = a.topics.filter(t => b.topics.includes(t));
510
+ const entitySim = sharedEntities.length / Math.max(a.entities.length, b.entities.length, 1);
511
+ const topicSim = sharedTopics.length / Math.max(a.topics.length, b.topics.length, 1);
512
+ return (entitySim * 0.6) + (topicSim * 0.4);
513
+ }
514
+ mergeTwoChunks(a, b) {
515
+ const content = a.content + '\n\n' + b.content;
516
+ const entities = [...new Set([...a.entities, ...b.entities])];
517
+ const topics = [...new Set([...a.topics, ...b.topics])];
518
+ return {
519
+ id: `merged_${a.id}_${b.id}`,
520
+ content,
521
+ tokens: a.tokens + b.tokens,
522
+ entities,
523
+ topics,
524
+ timestamp: Math.max(a.timestamp, b.timestamp),
525
+ importance: Math.max(a.importance, b.importance)
526
+ };
527
+ }
528
+ }
529
+ // ─── Message Prioritizer ─────────────────────────────────────────
530
+ export class MessagePrioritizer {
531
+ /**
532
+ * Priorizar mensagens para entrega
533
+ */
534
+ prioritize(messages) {
535
+ return messages
536
+ .map(msg => ({
537
+ msg,
538
+ priority: this.calculatePriority(msg)
539
+ }))
540
+ .sort((a, b) => b.priority - a.priority)
541
+ .map(p => p.msg);
542
+ }
543
+ calculatePriority(msg) {
544
+ let priority = 0;
545
+ // Tipo de mensagem
546
+ switch (msg.t) {
547
+ case 'coc.handoff':
548
+ case 'coc.cancel':
549
+ priority += 100;
550
+ break;
551
+ case 'coc.assign':
552
+ case 'coc.submit':
553
+ priority += 50;
554
+ break;
555
+ case 'chat.msg':
556
+ priority += 10;
557
+ break;
558
+ case 'presence.heartbeat':
559
+ priority += 1;
560
+ break;
561
+ default:
562
+ priority += 5;
563
+ }
564
+ // TTL (mensagens com TTL curto são mais urgentes)
565
+ const age = Date.now() - msg.ts;
566
+ const ttlRemaining = msg.ttl - age;
567
+ if (ttlRemaining < 60000)
568
+ priority += 20; // Menos de 1 min
569
+ return priority;
570
+ }
571
+ }
572
+ // Classes already exported via 'export class'
573
+ //# sourceMappingURL=compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.js","sourceRoot":"","sources":["../src/compression.ts"],"names":[],"mappings":"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"}