soma-protocol 0.1.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 (354) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +326 -0
  3. package/dist/adapters/bun.d.ts +10 -0
  4. package/dist/adapters/bun.d.ts.map +1 -0
  5. package/dist/adapters/bun.js +15 -0
  6. package/dist/adapters/bun.js.map +1 -0
  7. package/dist/adapters/drizzle.d.ts +17 -0
  8. package/dist/adapters/drizzle.d.ts.map +1 -0
  9. package/dist/adapters/drizzle.js +21 -0
  10. package/dist/adapters/drizzle.js.map +1 -0
  11. package/dist/adapters/index.d.ts +6 -0
  12. package/dist/adapters/index.d.ts.map +1 -0
  13. package/dist/adapters/index.js +6 -0
  14. package/dist/adapters/index.js.map +1 -0
  15. package/dist/adapters/pg.d.ts +16 -0
  16. package/dist/adapters/pg.d.ts.map +1 -0
  17. package/dist/adapters/pg.js +18 -0
  18. package/dist/adapters/pg.js.map +1 -0
  19. package/dist/adapters/postgres.d.ts +14 -0
  20. package/dist/adapters/postgres.d.ts.map +1 -0
  21. package/dist/adapters/postgres.js +17 -0
  22. package/dist/adapters/postgres.js.map +1 -0
  23. package/dist/adapters/typeorm.d.ts +15 -0
  24. package/dist/adapters/typeorm.d.ts.map +1 -0
  25. package/dist/adapters/typeorm.js +18 -0
  26. package/dist/adapters/typeorm.js.map +1 -0
  27. package/dist/agent/index.d.ts +7 -0
  28. package/dist/agent/index.d.ts.map +1 -0
  29. package/dist/agent/index.js +2 -0
  30. package/dist/agent/index.js.map +1 -0
  31. package/dist/agent/interfaces/agent-meta.interface.d.ts +13 -0
  32. package/dist/agent/interfaces/agent-meta.interface.d.ts.map +1 -0
  33. package/dist/agent/interfaces/agent-meta.interface.js +2 -0
  34. package/dist/agent/interfaces/agent-meta.interface.js.map +1 -0
  35. package/dist/agent/interfaces/agent-state.interface.d.ts +14 -0
  36. package/dist/agent/interfaces/agent-state.interface.d.ts.map +1 -0
  37. package/dist/agent/interfaces/agent-state.interface.js +2 -0
  38. package/dist/agent/interfaces/agent-state.interface.js.map +1 -0
  39. package/dist/agent/interfaces/memory.interface.d.ts +174 -0
  40. package/dist/agent/interfaces/memory.interface.d.ts.map +1 -0
  41. package/dist/agent/interfaces/memory.interface.js +3 -0
  42. package/dist/agent/interfaces/memory.interface.js.map +1 -0
  43. package/dist/agent/interfaces/persona.interface.d.ts +10 -0
  44. package/dist/agent/interfaces/persona.interface.d.ts.map +1 -0
  45. package/dist/agent/interfaces/persona.interface.js +2 -0
  46. package/dist/agent/interfaces/persona.interface.js.map +1 -0
  47. package/dist/agent/interfaces/soma-agents.interface.d.ts +9 -0
  48. package/dist/agent/interfaces/soma-agents.interface.d.ts.map +1 -0
  49. package/dist/agent/interfaces/soma-agents.interface.js +2 -0
  50. package/dist/agent/interfaces/soma-agents.interface.js.map +1 -0
  51. package/dist/agent/types/mood-and-communication.type.d.ts +3 -0
  52. package/dist/agent/types/mood-and-communication.type.d.ts.map +1 -0
  53. package/dist/agent/types/mood-and-communication.type.js +2 -0
  54. package/dist/agent/types/mood-and-communication.type.js.map +1 -0
  55. package/dist/extensions/emotional/emotional.router.d.ts +9 -0
  56. package/dist/extensions/emotional/emotional.router.d.ts.map +1 -0
  57. package/dist/extensions/emotional/emotional.router.js +91 -0
  58. package/dist/extensions/emotional/emotional.router.js.map +1 -0
  59. package/dist/extensions/emotional/emotional.service.d.ts +16 -0
  60. package/dist/extensions/emotional/emotional.service.d.ts.map +1 -0
  61. package/dist/extensions/emotional/emotional.service.js +161 -0
  62. package/dist/extensions/emotional/emotional.service.js.map +1 -0
  63. package/dist/extensions/emotional/errors.d.ts +9 -0
  64. package/dist/extensions/emotional/errors.d.ts.map +1 -0
  65. package/dist/extensions/emotional/errors.js +17 -0
  66. package/dist/extensions/emotional/errors.js.map +1 -0
  67. package/dist/extensions/emotional/index.d.ts +7 -0
  68. package/dist/extensions/emotional/index.d.ts.map +1 -0
  69. package/dist/extensions/emotional/index.js +6 -0
  70. package/dist/extensions/emotional/index.js.map +1 -0
  71. package/dist/extensions/emotional/schema.d.ts +372 -0
  72. package/dist/extensions/emotional/schema.d.ts.map +1 -0
  73. package/dist/extensions/emotional/schema.js +84 -0
  74. package/dist/extensions/emotional/schema.js.map +1 -0
  75. package/dist/extensions/emotional/store.d.ts +15 -0
  76. package/dist/extensions/emotional/store.d.ts.map +1 -0
  77. package/dist/extensions/emotional/store.js +123 -0
  78. package/dist/extensions/emotional/store.js.map +1 -0
  79. package/dist/extensions/emotional/types.d.ts +87 -0
  80. package/dist/extensions/emotional/types.d.ts.map +1 -0
  81. package/dist/extensions/emotional/types.js +2 -0
  82. package/dist/extensions/emotional/types.js.map +1 -0
  83. package/dist/extensions/events/bus.d.ts +17 -0
  84. package/dist/extensions/events/bus.d.ts.map +1 -0
  85. package/dist/extensions/events/bus.js +38 -0
  86. package/dist/extensions/events/bus.js.map +1 -0
  87. package/dist/extensions/events/clickhouse-client.d.ts +12 -0
  88. package/dist/extensions/events/clickhouse-client.d.ts.map +1 -0
  89. package/dist/extensions/events/clickhouse-client.js +63 -0
  90. package/dist/extensions/events/clickhouse-client.js.map +1 -0
  91. package/dist/extensions/events/index.d.ts +3 -0
  92. package/dist/extensions/events/index.d.ts.map +1 -0
  93. package/dist/extensions/events/index.js +3 -0
  94. package/dist/extensions/events/index.js.map +1 -0
  95. package/dist/extensions/identity/generate-instructions.d.ts +8 -0
  96. package/dist/extensions/identity/generate-instructions.d.ts.map +1 -0
  97. package/dist/extensions/identity/generate-instructions.js +58 -0
  98. package/dist/extensions/identity/generate-instructions.js.map +1 -0
  99. package/dist/extensions/identity/identity.router.d.ts +8 -0
  100. package/dist/extensions/identity/identity.router.d.ts.map +1 -0
  101. package/dist/extensions/identity/identity.router.js +136 -0
  102. package/dist/extensions/identity/identity.router.js.map +1 -0
  103. package/dist/extensions/identity/identity.schema.d.ts +145 -0
  104. package/dist/extensions/identity/identity.schema.d.ts.map +1 -0
  105. package/dist/extensions/identity/identity.schema.js +71 -0
  106. package/dist/extensions/identity/identity.schema.js.map +1 -0
  107. package/dist/extensions/identity/identity.service.d.ts +19 -0
  108. package/dist/extensions/identity/identity.service.d.ts.map +1 -0
  109. package/dist/extensions/identity/identity.service.js +194 -0
  110. package/dist/extensions/identity/identity.service.js.map +1 -0
  111. package/dist/extensions/identity/identity.store.d.ts +18 -0
  112. package/dist/extensions/identity/identity.store.d.ts.map +1 -0
  113. package/dist/extensions/identity/identity.store.js +126 -0
  114. package/dist/extensions/identity/identity.store.js.map +1 -0
  115. package/dist/extensions/identity/identity.types.d.ts +54 -0
  116. package/dist/extensions/identity/identity.types.d.ts.map +1 -0
  117. package/dist/extensions/identity/identity.types.js +2 -0
  118. package/dist/extensions/identity/identity.types.js.map +1 -0
  119. package/dist/extensions/identity/index.d.ts +7 -0
  120. package/dist/extensions/identity/index.d.ts.map +1 -0
  121. package/dist/extensions/identity/index.js +7 -0
  122. package/dist/extensions/identity/index.js.map +1 -0
  123. package/dist/extensions/learning/distiller.d.ts +14 -0
  124. package/dist/extensions/learning/distiller.d.ts.map +1 -0
  125. package/dist/extensions/learning/distiller.js +126 -0
  126. package/dist/extensions/learning/distiller.js.map +1 -0
  127. package/dist/extensions/learning/errors.d.ts +26 -0
  128. package/dist/extensions/learning/errors.d.ts.map +1 -0
  129. package/dist/extensions/learning/errors.js +51 -0
  130. package/dist/extensions/learning/errors.js.map +1 -0
  131. package/dist/extensions/learning/index.d.ts +9 -0
  132. package/dist/extensions/learning/index.d.ts.map +1 -0
  133. package/dist/extensions/learning/index.js +8 -0
  134. package/dist/extensions/learning/index.js.map +1 -0
  135. package/dist/extensions/learning/observation.d.ts +13 -0
  136. package/dist/extensions/learning/observation.d.ts.map +1 -0
  137. package/dist/extensions/learning/observation.js +128 -0
  138. package/dist/extensions/learning/observation.js.map +1 -0
  139. package/dist/extensions/learning/router.d.ts +15 -0
  140. package/dist/extensions/learning/router.d.ts.map +1 -0
  141. package/dist/extensions/learning/router.js +245 -0
  142. package/dist/extensions/learning/router.js.map +1 -0
  143. package/dist/extensions/learning/schema.d.ts +472 -0
  144. package/dist/extensions/learning/schema.d.ts.map +1 -0
  145. package/dist/extensions/learning/schema.js +229 -0
  146. package/dist/extensions/learning/schema.js.map +1 -0
  147. package/dist/extensions/learning/scorecard.d.ts +7 -0
  148. package/dist/extensions/learning/scorecard.d.ts.map +1 -0
  149. package/dist/extensions/learning/scorecard.js +50 -0
  150. package/dist/extensions/learning/scorecard.js.map +1 -0
  151. package/dist/extensions/learning/store.d.ts +25 -0
  152. package/dist/extensions/learning/store.d.ts.map +1 -0
  153. package/dist/extensions/learning/store.js +305 -0
  154. package/dist/extensions/learning/store.js.map +1 -0
  155. package/dist/extensions/learning/types.d.ts +212 -0
  156. package/dist/extensions/learning/types.d.ts.map +1 -0
  157. package/dist/extensions/learning/types.js +3 -0
  158. package/dist/extensions/learning/types.js.map +1 -0
  159. package/dist/extensions/memory/episodic/schema.d.ts +74 -0
  160. package/dist/extensions/memory/episodic/schema.d.ts.map +1 -0
  161. package/dist/extensions/memory/episodic/schema.js +58 -0
  162. package/dist/extensions/memory/episodic/schema.js.map +1 -0
  163. package/dist/extensions/memory/episodic/store.d.ts +31 -0
  164. package/dist/extensions/memory/episodic/store.d.ts.map +1 -0
  165. package/dist/extensions/memory/episodic/store.js +147 -0
  166. package/dist/extensions/memory/episodic/store.js.map +1 -0
  167. package/dist/extensions/memory/episodic/types.d.ts +35 -0
  168. package/dist/extensions/memory/episodic/types.d.ts.map +1 -0
  169. package/dist/extensions/memory/episodic/types.js +2 -0
  170. package/dist/extensions/memory/episodic/types.js.map +1 -0
  171. package/dist/extensions/memory/errors.d.ts +19 -0
  172. package/dist/extensions/memory/errors.d.ts.map +1 -0
  173. package/dist/extensions/memory/errors.js +37 -0
  174. package/dist/extensions/memory/errors.js.map +1 -0
  175. package/dist/extensions/memory/index.d.ts +13 -0
  176. package/dist/extensions/memory/index.d.ts.map +1 -0
  177. package/dist/extensions/memory/index.js +10 -0
  178. package/dist/extensions/memory/index.js.map +1 -0
  179. package/dist/extensions/memory/memory.router.d.ts +17 -0
  180. package/dist/extensions/memory/memory.router.d.ts.map +1 -0
  181. package/dist/extensions/memory/memory.router.js +289 -0
  182. package/dist/extensions/memory/memory.router.js.map +1 -0
  183. package/dist/extensions/memory/procedural/schema.d.ts +88 -0
  184. package/dist/extensions/memory/procedural/schema.d.ts.map +1 -0
  185. package/dist/extensions/memory/procedural/schema.js +67 -0
  186. package/dist/extensions/memory/procedural/schema.js.map +1 -0
  187. package/dist/extensions/memory/procedural/store.d.ts +20 -0
  188. package/dist/extensions/memory/procedural/store.d.ts.map +1 -0
  189. package/dist/extensions/memory/procedural/store.js +125 -0
  190. package/dist/extensions/memory/procedural/store.js.map +1 -0
  191. package/dist/extensions/memory/procedural/types.d.ts +26 -0
  192. package/dist/extensions/memory/procedural/types.d.ts.map +1 -0
  193. package/dist/extensions/memory/procedural/types.js +2 -0
  194. package/dist/extensions/memory/procedural/types.js.map +1 -0
  195. package/dist/extensions/memory/router.d.ts +23 -0
  196. package/dist/extensions/memory/router.d.ts.map +1 -0
  197. package/dist/extensions/memory/router.js +76 -0
  198. package/dist/extensions/memory/router.js.map +1 -0
  199. package/dist/extensions/memory/social/schema.d.ts +34 -0
  200. package/dist/extensions/memory/social/schema.d.ts.map +1 -0
  201. package/dist/extensions/memory/social/schema.js +34 -0
  202. package/dist/extensions/memory/social/schema.js.map +1 -0
  203. package/dist/extensions/memory/social/store.d.ts +20 -0
  204. package/dist/extensions/memory/social/store.d.ts.map +1 -0
  205. package/dist/extensions/memory/social/store.js +142 -0
  206. package/dist/extensions/memory/social/store.js.map +1 -0
  207. package/dist/extensions/memory/social/types.d.ts +19 -0
  208. package/dist/extensions/memory/social/types.d.ts.map +1 -0
  209. package/dist/extensions/memory/social/types.js +2 -0
  210. package/dist/extensions/memory/social/types.js.map +1 -0
  211. package/dist/extensions/reflection/errors.d.ts +17 -0
  212. package/dist/extensions/reflection/errors.d.ts.map +1 -0
  213. package/dist/extensions/reflection/errors.js +33 -0
  214. package/dist/extensions/reflection/errors.js.map +1 -0
  215. package/dist/extensions/reflection/index.d.ts +7 -0
  216. package/dist/extensions/reflection/index.d.ts.map +1 -0
  217. package/dist/extensions/reflection/index.js +6 -0
  218. package/dist/extensions/reflection/index.js.map +1 -0
  219. package/dist/extensions/reflection/reflection.router.d.ts +8 -0
  220. package/dist/extensions/reflection/reflection.router.d.ts.map +1 -0
  221. package/dist/extensions/reflection/reflection.router.js +195 -0
  222. package/dist/extensions/reflection/reflection.router.js.map +1 -0
  223. package/dist/extensions/reflection/reflection.service.d.ts +20 -0
  224. package/dist/extensions/reflection/reflection.service.d.ts.map +1 -0
  225. package/dist/extensions/reflection/reflection.service.js +69 -0
  226. package/dist/extensions/reflection/reflection.service.js.map +1 -0
  227. package/dist/extensions/reflection/schema.d.ts +508 -0
  228. package/dist/extensions/reflection/schema.d.ts.map +1 -0
  229. package/dist/extensions/reflection/schema.js +200 -0
  230. package/dist/extensions/reflection/schema.js.map +1 -0
  231. package/dist/extensions/reflection/store.d.ts +22 -0
  232. package/dist/extensions/reflection/store.d.ts.map +1 -0
  233. package/dist/extensions/reflection/store.js +326 -0
  234. package/dist/extensions/reflection/store.js.map +1 -0
  235. package/dist/extensions/reflection/types.d.ts +220 -0
  236. package/dist/extensions/reflection/types.d.ts.map +1 -0
  237. package/dist/extensions/reflection/types.js +2 -0
  238. package/dist/extensions/reflection/types.js.map +1 -0
  239. package/dist/extensions/reputation/errors.d.ts +21 -0
  240. package/dist/extensions/reputation/errors.d.ts.map +1 -0
  241. package/dist/extensions/reputation/errors.js +41 -0
  242. package/dist/extensions/reputation/errors.js.map +1 -0
  243. package/dist/extensions/reputation/index.d.ts +6 -0
  244. package/dist/extensions/reputation/index.d.ts.map +1 -0
  245. package/dist/extensions/reputation/index.js +5 -0
  246. package/dist/extensions/reputation/index.js.map +1 -0
  247. package/dist/extensions/reputation/schema.d.ts +157 -0
  248. package/dist/extensions/reputation/schema.d.ts.map +1 -0
  249. package/dist/extensions/reputation/schema.js +96 -0
  250. package/dist/extensions/reputation/schema.js.map +1 -0
  251. package/dist/extensions/reputation/store.d.ts +21 -0
  252. package/dist/extensions/reputation/store.d.ts.map +1 -0
  253. package/dist/extensions/reputation/store.js +421 -0
  254. package/dist/extensions/reputation/store.js.map +1 -0
  255. package/dist/extensions/reputation/types.d.ts +106 -0
  256. package/dist/extensions/reputation/types.d.ts.map +1 -0
  257. package/dist/extensions/reputation/types.js +2 -0
  258. package/dist/extensions/reputation/types.js.map +1 -0
  259. package/dist/extensions/social/errors.d.ts +25 -0
  260. package/dist/extensions/social/errors.d.ts.map +1 -0
  261. package/dist/extensions/social/errors.js +49 -0
  262. package/dist/extensions/social/errors.js.map +1 -0
  263. package/dist/extensions/social/index.d.ts +7 -0
  264. package/dist/extensions/social/index.d.ts.map +1 -0
  265. package/dist/extensions/social/index.js +6 -0
  266. package/dist/extensions/social/index.js.map +1 -0
  267. package/dist/extensions/social/schema.d.ts +421 -0
  268. package/dist/extensions/social/schema.d.ts.map +1 -0
  269. package/dist/extensions/social/schema.js +154 -0
  270. package/dist/extensions/social/schema.js.map +1 -0
  271. package/dist/extensions/social/social.router.d.ts +8 -0
  272. package/dist/extensions/social/social.router.d.ts.map +1 -0
  273. package/dist/extensions/social/social.router.js +199 -0
  274. package/dist/extensions/social/social.router.js.map +1 -0
  275. package/dist/extensions/social/social.service.d.ts +27 -0
  276. package/dist/extensions/social/social.service.d.ts.map +1 -0
  277. package/dist/extensions/social/social.service.js +93 -0
  278. package/dist/extensions/social/social.service.js.map +1 -0
  279. package/dist/extensions/social/store.d.ts +19 -0
  280. package/dist/extensions/social/store.d.ts.map +1 -0
  281. package/dist/extensions/social/store.js +382 -0
  282. package/dist/extensions/social/store.js.map +1 -0
  283. package/dist/extensions/social/types.d.ts +292 -0
  284. package/dist/extensions/social/types.d.ts.map +1 -0
  285. package/dist/extensions/social/types.js +2 -0
  286. package/dist/extensions/social/types.js.map +1 -0
  287. package/dist/index.d.ts +7 -0
  288. package/dist/index.d.ts.map +1 -0
  289. package/dist/index.js +10 -0
  290. package/dist/index.js.map +1 -0
  291. package/dist/migrator/index.d.ts +3 -0
  292. package/dist/migrator/index.d.ts.map +1 -0
  293. package/dist/migrator/index.js +2 -0
  294. package/dist/migrator/index.js.map +1 -0
  295. package/dist/migrator/migrator.d.ts +16 -0
  296. package/dist/migrator/migrator.d.ts.map +1 -0
  297. package/dist/migrator/migrator.js +225 -0
  298. package/dist/migrator/migrator.js.map +1 -0
  299. package/dist/migrator/types.d.ts +9 -0
  300. package/dist/migrator/types.d.ts.map +1 -0
  301. package/dist/migrator/types.js +2 -0
  302. package/dist/migrator/types.js.map +1 -0
  303. package/dist/soma.d.ts +66 -0
  304. package/dist/soma.d.ts.map +1 -0
  305. package/dist/soma.js +112 -0
  306. package/dist/soma.js.map +1 -0
  307. package/dist/transport/index.d.ts +2 -0
  308. package/dist/transport/index.d.ts.map +1 -0
  309. package/dist/transport/index.js +2 -0
  310. package/dist/transport/index.js.map +1 -0
  311. package/dist/types/database.d.ts +8 -0
  312. package/dist/types/database.d.ts.map +1 -0
  313. package/dist/types/database.js +2 -0
  314. package/dist/types/database.js.map +1 -0
  315. package/dist/types/index.d.ts +2 -0
  316. package/dist/types/index.d.ts.map +1 -0
  317. package/dist/types/index.js +2 -0
  318. package/dist/types/index.js.map +1 -0
  319. package/dist/utils/embedder.d.ts +13 -0
  320. package/dist/utils/embedder.d.ts.map +1 -0
  321. package/dist/utils/embedder.js +97 -0
  322. package/dist/utils/embedder.js.map +1 -0
  323. package/dist/utils/forgetting.d.ts +22 -0
  324. package/dist/utils/forgetting.d.ts.map +1 -0
  325. package/dist/utils/forgetting.js +29 -0
  326. package/dist/utils/forgetting.js.map +1 -0
  327. package/dist/utils/index.d.ts +4 -0
  328. package/dist/utils/index.d.ts.map +1 -0
  329. package/dist/utils/index.js +4 -0
  330. package/dist/utils/index.js.map +1 -0
  331. package/dist/utils/json.d.ts +2 -0
  332. package/dist/utils/json.d.ts.map +1 -0
  333. package/dist/utils/json.js +12 -0
  334. package/dist/utils/json.js.map +1 -0
  335. package/dist/utils/validation.d.ts +10 -0
  336. package/dist/utils/validation.d.ts.map +1 -0
  337. package/dist/utils/validation.js +9 -0
  338. package/dist/utils/validation.js.map +1 -0
  339. package/package.json +111 -0
  340. package/schema/clickhouse/01-episodes.sql +50 -0
  341. package/schema/clickhouse/02-learning-events.sql +37 -0
  342. package/schema/clickhouse/03-trust-history.sql +15 -0
  343. package/schema/clickhouse/04-reflection-events.sql +12 -0
  344. package/schema/clickhouse/05-emotional-events.sql +14 -0
  345. package/schema/postgres/001_create_schema.sql +11 -0
  346. package/schema/postgres/002_create_agent_identities.sql +63 -0
  347. package/schema/postgres/003_create_identity_evolution_log.sql +21 -0
  348. package/schema/postgres/004_create_agent_cards.sql +29 -0
  349. package/schema/postgres/005_create_memory_tables.sql +32 -0
  350. package/schema/postgres/006_create_learning_tables.sql +119 -0
  351. package/schema/postgres/007_create_reputation_tables.sql +27 -0
  352. package/schema/postgres/008_create_social_tables.sql +43 -0
  353. package/schema/postgres/009_create_reflection_tables.sql +54 -0
  354. package/schema/postgres/010_create_emotional_tables.sql +19 -0
@@ -0,0 +1,97 @@
1
+ export function createEmbedder(config) {
2
+ const dims = config.dimensions ?? 1536;
3
+ switch (config.provider) {
4
+ case 'openai':
5
+ return createOpenAIEmbedder(config, dims);
6
+ case 'cohere':
7
+ return createCohereEmbedder(config, dims);
8
+ case 'voyage':
9
+ return createVoyageEmbedder(config, dims);
10
+ case 'custom':
11
+ return createCustomEmbedder(config, dims);
12
+ default:
13
+ throw new Error(`Unknown embedder provider: ${config.provider}`);
14
+ }
15
+ }
16
+ function createOpenAIEmbedder(config, dims) {
17
+ const baseUrl = config.baseUrl ?? 'https://api.openai.com/v1';
18
+ const model = config.model ?? 'text-embedding-3-small';
19
+ return {
20
+ dimensions: () => dims,
21
+ async embed(texts) {
22
+ const res = await fetch(`${baseUrl}/embeddings`, {
23
+ method: 'POST',
24
+ headers: {
25
+ 'Content-Type': 'application/json',
26
+ Authorization: `Bearer ${config.apiKey}`,
27
+ },
28
+ body: JSON.stringify({ model, input: texts, dimensions: dims }),
29
+ });
30
+ if (!res.ok) {
31
+ const detail = await res.text().catch(() => '');
32
+ throw new Error(`OpenAI embed failed (${res.status}): ${detail.slice(0, 200)}`);
33
+ }
34
+ const json = (await res.json());
35
+ return json.data.map(d => d.embedding);
36
+ },
37
+ };
38
+ }
39
+ function createCohereEmbedder(config, dims) {
40
+ const model = config.model ?? 'embed-english-v3.0';
41
+ return {
42
+ dimensions: () => dims,
43
+ async embed(texts) {
44
+ const res = await fetch('https://api.cohere.ai/v1/embed', {
45
+ method: 'POST',
46
+ headers: {
47
+ 'Content-Type': 'application/json',
48
+ Authorization: `Bearer ${config.apiKey}`,
49
+ },
50
+ body: JSON.stringify({ model, texts, input_type: 'search_document', embedding_types: ['float'] }),
51
+ });
52
+ if (!res.ok)
53
+ throw new Error(`Cohere embed failed (${res.status})`);
54
+ const json = (await res.json());
55
+ return json.embeddings.float;
56
+ },
57
+ };
58
+ }
59
+ function createVoyageEmbedder(config, dims) {
60
+ const model = config.model ?? 'voyage-3';
61
+ return {
62
+ dimensions: () => dims,
63
+ async embed(texts) {
64
+ const res = await fetch('https://api.voyageai.com/v1/embeddings', {
65
+ method: 'POST',
66
+ headers: {
67
+ 'Content-Type': 'application/json',
68
+ Authorization: `Bearer ${config.apiKey}`,
69
+ },
70
+ body: JSON.stringify({ model, input: texts }),
71
+ });
72
+ if (!res.ok)
73
+ throw new Error(`Voyage embed failed (${res.status})`);
74
+ const json = (await res.json());
75
+ return json.data.map(d => d.embedding);
76
+ },
77
+ };
78
+ }
79
+ function createCustomEmbedder(config, dims) {
80
+ if (!config.baseUrl)
81
+ throw new Error('Custom embedder requires baseUrl');
82
+ return {
83
+ dimensions: () => dims,
84
+ async embed(texts) {
85
+ const res = await fetch(config.baseUrl, {
86
+ method: 'POST',
87
+ headers: { 'Content-Type': 'application/json' },
88
+ body: JSON.stringify({ texts }),
89
+ });
90
+ if (!res.ok)
91
+ throw new Error(`Custom embed failed (${res.status})`);
92
+ const json = (await res.json());
93
+ return json.embeddings;
94
+ },
95
+ };
96
+ }
97
+ //# sourceMappingURL=embedder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/utils/embedder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Recall probability via exponential decay.
3
+ * importance=1 -> half-life 30 days. importance=0.1 -> half-life ~3 hours.
4
+ */
5
+ export declare function calculateRecallProbability(timestamp: string, importance: number): number;
6
+ /**
7
+ * Recency score: exponential decay over days.
8
+ * 1.0 for now, ~0.37 after 1 day, ~0.01 after 3 days.
9
+ */
10
+ export declare function recencyScore(timestamp: string, decayDays?: number): number;
11
+ /**
12
+ * Composite relevance: recency + importance + confidence.
13
+ */
14
+ export declare function relevanceScore(opts: {
15
+ timestamp: string;
16
+ importance: number;
17
+ confidence: number;
18
+ recencyWeight?: number;
19
+ importanceWeight?: number;
20
+ confidenceWeight?: number;
21
+ }): number;
22
+ //# sourceMappingURL=forgetting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgetting.d.ts","sourceRoot":"","sources":["../../src/utils/forgetting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKxF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,MAAM,CAG7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAKT"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Recall probability via exponential decay.
3
+ * importance=1 -> half-life 30 days. importance=0.1 -> half-life ~3 hours.
4
+ */
5
+ export function calculateRecallProbability(timestamp, importance) {
6
+ const hoursSince = (Date.now() - new Date(timestamp).getTime()) / 3_600_000;
7
+ const halfLife = importance * 30 * 24;
8
+ if (halfLife <= 0)
9
+ return 0;
10
+ return Math.pow(0.5, hoursSince / halfLife);
11
+ }
12
+ /**
13
+ * Recency score: exponential decay over days.
14
+ * 1.0 for now, ~0.37 after 1 day, ~0.01 after 3 days.
15
+ */
16
+ export function recencyScore(timestamp, decayDays = 1) {
17
+ const daysSince = (Date.now() - new Date(timestamp).getTime()) / 86_400_000;
18
+ return Math.exp(-daysSince / decayDays);
19
+ }
20
+ /**
21
+ * Composite relevance: recency + importance + confidence.
22
+ */
23
+ export function relevanceScore(opts) {
24
+ const rw = opts.recencyWeight ?? 0.4;
25
+ const iw = opts.importanceWeight ?? 0.35;
26
+ const cw = opts.confidenceWeight ?? 0.25;
27
+ return rw * recencyScore(opts.timestamp) + iw * opts.importance + cw * opts.confidence;
28
+ }
29
+ //# sourceMappingURL=forgetting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgetting.js","sourceRoot":"","sources":["../../src/utils/forgetting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAAiB,EAAE,UAAkB;IAC9E,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;IAC5E,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;IACtC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,YAAoB,CAAC;IACnE,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;IAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAO9B;IACC,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IACzC,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;AACzF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { validateSchema, type ValidationResult } from './validation';
2
+ export { calculateRecallProbability, recencyScore, relevanceScore } from './forgetting';
3
+ export { createEmbedder, type Embedder, type EmbedderConfig } from './embedder';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { validateSchema } from './validation';
2
+ export { calculateRecallProbability, recencyScore, relevanceScore } from './forgetting';
3
+ export { createEmbedder } from './embedder';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,cAAc,EAAsC,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function parseJson<T>(value: string | unknown): T;
2
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,CAAC,CASvD"}
@@ -0,0 +1,12 @@
1
+ export function parseJson(value) {
2
+ if (typeof value === 'string') {
3
+ try {
4
+ return JSON.parse(value);
5
+ }
6
+ catch {
7
+ return {};
8
+ }
9
+ }
10
+ return value;
11
+ }
12
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,KAAuB;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAiB,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAkB,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,KAAqB,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { z } from 'zod';
2
+ export type ValidationResult<T> = {
3
+ success: true;
4
+ data: T;
5
+ } | {
6
+ success: false;
7
+ error: string;
8
+ };
9
+ export declare function validateSchema<T>(schema: z.ZodType<T>, data: unknown): ValidationResult<T>;
10
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAO1F"}
@@ -0,0 +1,9 @@
1
+ export function validateSchema(schema, data) {
2
+ const result = schema.safeParse(data);
3
+ if (result.success) {
4
+ return { success: true, data: result.data };
5
+ }
6
+ const messages = result.error.issues.map(i => `${i.path.join('.')}: ${i.message}`);
7
+ return { success: false, error: messages.join('; ') };
8
+ }
9
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,cAAc,CAAI,MAAoB,EAAE,IAAa;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACxD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "soma-protocol",
3
+ "version": "0.1.0",
4
+ "description": "Soma — AI agent identity, memory, learning, reputation, and social dynamics protocol",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/tensai-os/soma-protocol"
10
+ },
11
+ "keywords": [
12
+ "ai",
13
+ "agents",
14
+ "protocol",
15
+ "memory",
16
+ "identity",
17
+ "typescript",
18
+ "bun",
19
+ "mcp"
20
+ ],
21
+ "main": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ },
28
+ "./identity": {
29
+ "types": "./dist/extensions/identity/index.d.ts",
30
+ "import": "./dist/extensions/identity/index.js"
31
+ },
32
+ "./memory": {
33
+ "types": "./dist/extensions/memory/index.d.ts",
34
+ "import": "./dist/extensions/memory/index.js"
35
+ },
36
+ "./learning": {
37
+ "types": "./dist/extensions/learning/index.d.ts",
38
+ "import": "./dist/extensions/learning/index.js"
39
+ },
40
+ "./reputation": {
41
+ "types": "./dist/extensions/reputation/index.d.ts",
42
+ "import": "./dist/extensions/reputation/index.js"
43
+ },
44
+ "./emotional": {
45
+ "types": "./dist/extensions/emotional/index.d.ts",
46
+ "import": "./dist/extensions/emotional/index.js"
47
+ },
48
+ "./reflection": {
49
+ "types": "./dist/extensions/reflection/index.d.ts",
50
+ "import": "./dist/extensions/reflection/index.js"
51
+ },
52
+ "./social": {
53
+ "types": "./dist/extensions/social/index.d.ts",
54
+ "import": "./dist/extensions/social/index.js"
55
+ },
56
+ "./events": {
57
+ "types": "./dist/extensions/events/index.d.ts",
58
+ "import": "./dist/extensions/events/index.js"
59
+ },
60
+ "./utils": {
61
+ "types": "./dist/utils/index.d.ts",
62
+ "import": "./dist/utils/index.js"
63
+ },
64
+ "./adapters": {
65
+ "types": "./dist/adapters/index.d.ts",
66
+ "import": "./dist/adapters/index.js"
67
+ },
68
+ "./migrator": {
69
+ "types": "./dist/migrator/index.d.ts",
70
+ "import": "./dist/migrator/index.js"
71
+ },
72
+ "./types": {
73
+ "types": "./dist/types/index.d.ts",
74
+ "import": "./dist/types/index.js"
75
+ },
76
+ "./agent": {
77
+ "types": "./dist/agent/index.d.ts",
78
+ "import": "./dist/agent/index.js"
79
+ }
80
+ },
81
+ "files": [
82
+ "dist",
83
+ "schema",
84
+ "LICENSE",
85
+ "README.md"
86
+ ],
87
+ "scripts": {
88
+ "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
89
+ "prepublishOnly": "bun test tests/unit && bun run build",
90
+ "test": "bun test tests/unit",
91
+ "typecheck": "tsc --noEmit"
92
+ },
93
+ "dependencies": {
94
+ "zod": "^4.4.3"
95
+ },
96
+ "peerDependencies": {
97
+ "typescript": "^5"
98
+ },
99
+ "devDependencies": {
100
+ "@types/bun": "latest",
101
+ "tsc-alias": "^1.8.16",
102
+ "typescript": "^5"
103
+ },
104
+ "publishConfig": {
105
+ "access": "public"
106
+ },
107
+ "engines": {
108
+ "node": ">=18",
109
+ "bun": ">=1.0"
110
+ }
111
+ }
@@ -0,0 +1,50 @@
1
+ -- ClickHouse DDL for episodic memory (append-only)
2
+
3
+ CREATE TABLE IF NOT EXISTS episodes (
4
+ episode_id String,
5
+ agent_id String,
6
+ tenant_id String,
7
+ project_id String DEFAULT '',
8
+ timestamp DateTime64(3, 'UTC'),
9
+
10
+ -- context
11
+ trigger String,
12
+ participants Array(String),
13
+ environment String DEFAULT '{}',
14
+
15
+ -- event
16
+ event_type LowCardinality(String),
17
+ description String,
18
+ actions_taken String,
19
+ tools_used Array(String),
20
+ outcome_status LowCardinality(String),
21
+ quality_score Float32,
22
+ outcome_impact String DEFAULT '',
23
+ lessons_learned Array(String),
24
+
25
+ -- emotional
26
+ emotional_valence Float32,
27
+ arousal Float32,
28
+ dominant_emotion LowCardinality(String),
29
+
30
+ -- metadata
31
+ importance Float32,
32
+ confidence Float32,
33
+ tags Array(String),
34
+ source LowCardinality(String),
35
+
36
+ -- embeddings for semantic search
37
+ embedding Array(Float32),
38
+
39
+ -- computed
40
+ recall_probability Float32 DEFAULT 1.0,
41
+
42
+ created_at DateTime64(3, 'UTC') DEFAULT now()
43
+ )
44
+ ENGINE = ReplacingMergeTree(created_at)
45
+ ORDER BY (agent_id, timestamp, episode_id)
46
+ PARTITION BY toYYYYMM(timestamp);
47
+
48
+ ALTER TABLE episodes ADD INDEX idx_timestamp (timestamp) TYPE minmax GRANULARITY 1;
49
+ ALTER TABLE episodes ADD INDEX idx_event_type (event_type) TYPE set(0) GRANULARITY 1;
50
+ ALTER TABLE episodes ADD INDEX idx_importance (importance) TYPE minmax GRANULARITY 1;
@@ -0,0 +1,37 @@
1
+ CREATE TABLE IF NOT EXISTS learning_events (
2
+ event_id String,
3
+ agent_id String,
4
+ tenant_id String,
5
+ type LowCardinality(String),
6
+ source_agent String,
7
+ domain String,
8
+ what_learned String,
9
+ confidence Float32,
10
+ behavior_change String,
11
+ priority LowCardinality(String),
12
+ sharing_allowed UInt8,
13
+ learning_method LowCardinality(String),
14
+ created_at DateTime64(3, 'UTC') DEFAULT now()
15
+ )
16
+ ENGINE = ReplacingMergeTree(created_at)
17
+ ORDER BY (agent_id, created_at, event_id)
18
+ PARTITION BY toYYYYMM(created_at);
19
+
20
+ CREATE TABLE IF NOT EXISTS observations (
21
+ observation_id String,
22
+ observer_agent String,
23
+ observed_agent String,
24
+ tenant_id String,
25
+ action String,
26
+ context String,
27
+ outcome String,
28
+ quality_assessment Float32,
29
+ extracted_insight String,
30
+ extracted_confidence Float32,
31
+ consent_obtained UInt8,
32
+ privacy_level LowCardinality(String),
33
+ created_at DateTime64(3, 'UTC') DEFAULT now()
34
+ )
35
+ ENGINE = ReplacingMergeTree(created_at)
36
+ ORDER BY (observer_agent, created_at, observation_id)
37
+ PARTITION BY toYYYYMM(created_at);
@@ -0,0 +1,15 @@
1
+ CREATE TABLE trust_history (
2
+ truster String,
3
+ trustee String,
4
+ tenant_id String,
5
+ old_score Float32,
6
+ new_score Float32,
7
+ delta Float32,
8
+ domain Nullable(String),
9
+ reason String,
10
+ interaction_id Nullable(UUID),
11
+ created_at DateTime64(3) DEFAULT now64(3)
12
+ ) ENGINE = MergeTree()
13
+ ORDER BY (tenant_id, truster, trustee, created_at)
14
+ PARTITION BY toYYYYMM(created_at)
15
+ TTL created_at + INTERVAL 365 DAY;
@@ -0,0 +1,12 @@
1
+ CREATE TABLE IF NOT EXISTS reflection_events (
2
+ event_id String,
3
+ agent_id String,
4
+ event_type LowCardinality(String),
5
+ reflection_id String,
6
+ category LowCardinality(String),
7
+ timestamp DateTime DEFAULT now(),
8
+ payload String
9
+ ) ENGINE = MergeTree()
10
+ ORDER BY (agent_id, timestamp)
11
+ PARTITION BY toYYYYMM(timestamp)
12
+ TTL timestamp + INTERVAL 365 DAY;
@@ -0,0 +1,14 @@
1
+ CREATE TABLE IF NOT EXISTS emotional_events (
2
+ event_id String,
3
+ agent_id String,
4
+ event_type LowCardinality(String),
5
+ mood LowCardinality(String),
6
+ valence Float32,
7
+ arousal Float32,
8
+ stress_level Float32,
9
+ timestamp DateTime DEFAULT now(),
10
+ payload String
11
+ ) ENGINE = MergeTree()
12
+ ORDER BY (agent_id, timestamp)
13
+ PARTITION BY toYYYYMM(timestamp)
14
+ TTL timestamp + INTERVAL 365 DAY;
@@ -0,0 +1,11 @@
1
+ -- Migration: 001_create_schema
2
+ -- Description: Creates soma schema and migration tracker
3
+ -- Created: 2026-06-13
4
+
5
+ CREATE SCHEMA IF NOT EXISTS soma;
6
+
7
+ CREATE TABLE IF NOT EXISTS soma.migrations (
8
+ id SERIAL PRIMARY KEY,
9
+ name TEXT NOT NULL UNIQUE,
10
+ applied_at TIMESTAMPTZ DEFAULT NOW()
11
+ );
@@ -0,0 +1,63 @@
1
+ -- Migration: 002_create_agent_identities
2
+ -- Description: Creates agent_identities with normalized tables
3
+ -- Created: 2026-06-13
4
+
5
+ CREATE EXTENSION IF NOT EXISTS vector;
6
+
7
+ -- Main agent identities table
8
+ CREATE TABLE soma.agent_identities (
9
+ agent_id TEXT PRIMARY KEY,
10
+ name TEXT NOT NULL,
11
+ description TEXT NOT NULL DEFAULT '',
12
+ created_at TIMESTAMPTZ DEFAULT NOW(),
13
+ updated_at TIMESTAMPTZ DEFAULT NOW()
14
+ );
15
+
16
+ -- Persona details (1:1)
17
+ CREATE TABLE soma.agent_persona (
18
+ agent_id TEXT PRIMARY KEY REFERENCES soma.agent_identities(agent_id) ON DELETE CASCADE,
19
+ communication_style TEXT NOT NULL DEFAULT 'adaptive',
20
+ personality_vector vector(128)
21
+ );
22
+
23
+ -- State details (1:1)
24
+ CREATE TABLE soma.agent_state (
25
+ agent_id TEXT PRIMARY KEY REFERENCES soma.agent_identities(agent_id) ON DELETE CASCADE,
26
+ current_mood TEXT NOT NULL DEFAULT 'neutral',
27
+ energy_level FLOAT NOT NULL DEFAULT 1.0 CHECK (energy_level >= 0 AND energy_level <= 1),
28
+ confidence_score FLOAT NOT NULL DEFAULT 0.5 CHECK (confidence_score >= 0 AND confidence_score <= 1),
29
+ learning_rate FLOAT NOT NULL DEFAULT 0.1 CHECK (learning_rate >= 0 AND learning_rate <= 1),
30
+ interaction_count INTEGER NOT NULL DEFAULT 0,
31
+ last_active TIMESTAMPTZ DEFAULT NOW()
32
+ );
33
+
34
+ -- Meta details (1:1)
35
+ CREATE TABLE soma.agent_meta (
36
+ agent_id TEXT PRIMARY KEY REFERENCES soma.agent_identities(agent_id) ON DELETE CASCADE,
37
+ version INTEGER NOT NULL DEFAULT 1,
38
+ parent_agent TEXT
39
+ );
40
+
41
+ -- Core values (1:many)
42
+ CREATE TABLE soma.agent_core_values (
43
+ id SERIAL PRIMARY KEY,
44
+ agent_id TEXT NOT NULL REFERENCES soma.agent_identities(agent_id) ON DELETE CASCADE,
45
+ value TEXT NOT NULL,
46
+ UNIQUE(agent_id, value)
47
+ );
48
+
49
+ -- Expertise domains (1:many)
50
+ CREATE TABLE soma.agent_expertise_domains (
51
+ id SERIAL PRIMARY KEY,
52
+ agent_id TEXT NOT NULL REFERENCES soma.agent_identities(agent_id) ON DELETE CASCADE,
53
+ domain TEXT NOT NULL,
54
+ UNIQUE(agent_id, domain)
55
+ );
56
+
57
+ -- Indexes
58
+ CREATE INDEX idx_agent_identities_agent_id ON soma.agent_identities(agent_id);
59
+ CREATE INDEX idx_agent_persona_vector ON soma.agent_persona USING ivfflat (personality_vector vector_cosine_ops);
60
+ CREATE INDEX idx_agent_state_mood ON soma.agent_state(current_mood);
61
+ CREATE INDEX idx_agent_state_last_active ON soma.agent_state(last_active DESC);
62
+ CREATE INDEX idx_agent_core_values_agent_id ON soma.agent_core_values(agent_id);
63
+ CREATE INDEX idx_agent_expertise_domains_agent_id ON soma.agent_expertise_domains(agent_id);
@@ -0,0 +1,21 @@
1
+ -- Migration: 003_create_identity_evolution_log
2
+ -- Description: Creates identity_evolution_log with typed columns
3
+ -- Created: 2026-06-13
4
+
5
+ CREATE TABLE soma.identity_evolution_log (
6
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
7
+ agent_id TEXT NOT NULL REFERENCES soma.agent_identities(agent_id) ON DELETE CASCADE,
8
+ timestamp TIMESTAMPTZ DEFAULT NOW(),
9
+ change_type TEXT NOT NULL,
10
+ description TEXT NOT NULL DEFAULT '',
11
+ previous_version INTEGER NOT NULL DEFAULT 0,
12
+ new_version INTEGER NOT NULL DEFAULT 0,
13
+ trigger_type TEXT,
14
+ confidence FLOAT CHECK (confidence >= 0 AND confidence <= 1)
15
+ );
16
+
17
+ -- Indexes
18
+ CREATE INDEX idx_identity_evolution_log_agent_id ON soma.identity_evolution_log(agent_id);
19
+ CREATE INDEX idx_identity_evolution_log_timestamp ON soma.identity_evolution_log(timestamp DESC);
20
+ CREATE INDEX idx_identity_evolution_log_change_type ON soma.identity_evolution_log(change_type);
21
+ CREATE INDEX idx_identity_evolution_log_agent_time ON soma.identity_evolution_log(agent_id, timestamp DESC);
@@ -0,0 +1,29 @@
1
+ -- Migration: 004_create_agent_cards
2
+ -- Description: Creates agent_cards with normalized tables
3
+ -- Created: 2026-06-13
4
+
5
+ -- Agent cards table
6
+ CREATE TABLE soma.agent_cards (
7
+ agent_id TEXT PRIMARY KEY,
8
+ identity_id TEXT REFERENCES soma.agent_identities(agent_id) ON DELETE SET NULL,
9
+ url TEXT NOT NULL DEFAULT '',
10
+ version TEXT NOT NULL DEFAULT '1.0',
11
+ documentation_url TEXT NOT NULL DEFAULT '',
12
+ is_active BOOLEAN DEFAULT TRUE,
13
+ created_at TIMESTAMPTZ DEFAULT NOW(),
14
+ updated_at TIMESTAMPTZ DEFAULT NOW()
15
+ );
16
+
17
+ -- Agent capabilities (1:many)
18
+ CREATE TABLE soma.agent_capabilities (
19
+ id SERIAL PRIMARY KEY,
20
+ agent_id TEXT NOT NULL REFERENCES soma.agent_cards(agent_id) ON DELETE CASCADE,
21
+ name TEXT NOT NULL,
22
+ description TEXT NOT NULL DEFAULT '',
23
+ UNIQUE(agent_id, name)
24
+ );
25
+
26
+ -- Indexes
27
+ CREATE INDEX idx_agent_cards_agent_id ON soma.agent_cards(agent_id);
28
+ CREATE INDEX idx_agent_cards_is_active ON soma.agent_cards(is_active) WHERE is_active = TRUE;
29
+ CREATE INDEX idx_agent_capabilities_agent_id ON soma.agent_capabilities(agent_id);
@@ -0,0 +1,32 @@
1
+ -- Procedural + Social memory tables
2
+
3
+ -- Layer 3: Procedural Memory
4
+ CREATE TABLE IF NOT EXISTS soma.procedures (
5
+ procedure_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
6
+ agent_id TEXT NOT NULL,
7
+ pattern JSONB NOT NULL,
8
+ performance JSONB NOT NULL,
9
+ origin JSONB NOT NULL,
10
+ metadata JSONB NOT NULL,
11
+ created_at TIMESTAMPTZ DEFAULT now(),
12
+ updated_at TIMESTAMPTZ DEFAULT now()
13
+ );
14
+
15
+ CREATE INDEX IF NOT EXISTS idx_procedures_agent ON soma.procedures(agent_id);
16
+ CREATE INDEX IF NOT EXISTS idx_procedures_domain ON soma.procedures((metadata->>'domain'));
17
+
18
+ -- Layer 4: Social Memory
19
+ CREATE TABLE IF NOT EXISTS soma.social_memories (
20
+ agent_id TEXT NOT NULL,
21
+ target_agent_id TEXT NOT NULL,
22
+ trust JSONB NOT NULL,
23
+ preferences JSONB NOT NULL,
24
+ history JSONB NOT NULL,
25
+ notes TEXT[] DEFAULT '{}',
26
+ created_at TIMESTAMPTZ DEFAULT now(),
27
+ updated_at TIMESTAMPTZ DEFAULT now(),
28
+ PRIMARY KEY (agent_id, target_agent_id)
29
+ );
30
+
31
+ CREATE INDEX IF NOT EXISTS idx_social_agent ON soma.social_memories(agent_id);
32
+ CREATE INDEX IF NOT EXISTS idx_social_trust ON soma.social_memories(((trust->>'overall')::float) DESC);