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,229 @@
1
+ import { z } from 'zod';
2
+ // ─── Enums ───
3
+ export const LearningEventTypeSchema = z.enum([
4
+ 'insight',
5
+ 'correction',
6
+ 'skill_transfer',
7
+ 'pattern_recognition',
8
+ 'feedback_response',
9
+ 'failure_analysis',
10
+ 'discovery',
11
+ 'refinement',
12
+ ]);
13
+ export const LearningMethodSchema = z.enum([
14
+ 'self_reflection',
15
+ 'peer_observation',
16
+ 'direct_teaching',
17
+ 'feedback_loop',
18
+ 'trial_and_error',
19
+ 'knowledge_distillation',
20
+ ]);
21
+ export const LearningPrioritySchema = z.enum(['low', 'medium', 'high', 'critical']);
22
+ export const TeachingOfferStatusSchema = z.enum(['pending', 'accepted', 'declined', 'negotiated']);
23
+ export const PrivacyLevelSchema = z.enum(['public', 'team', 'private']);
24
+ // ─── Learning Event ───
25
+ export const LearningEventSourceSchema = z.object({
26
+ agentId: z.string().min(1),
27
+ episodeId: z.string().uuid().optional(),
28
+ interactionId: z.string().uuid().optional(),
29
+ });
30
+ export const LearningEventContentSchema = z.object({
31
+ whatLearned: z.string().min(1),
32
+ domain: z.string().min(1),
33
+ confidence: z.number().min(0).max(1),
34
+ evidence: z.array(z.string()),
35
+ applicableContexts: z.array(z.string()),
36
+ counterExamples: z.array(z.string()).optional(),
37
+ });
38
+ export const LearningEventImpactSchema = z.object({
39
+ behaviorChange: z.string().min(1),
40
+ performanceBefore: z.number().optional(),
41
+ performanceAfter: z.number().optional(),
42
+ procedureIds: z.array(z.string().uuid()).optional(),
43
+ });
44
+ export const LearningEventMetadataSchema = z.object({
45
+ learningMethod: LearningMethodSchema,
46
+ sharingAllowed: z.boolean(),
47
+ priority: LearningPrioritySchema,
48
+ expiresAt: z.string().datetime().optional(),
49
+ });
50
+ export const LearningEventSchema = z.object({
51
+ id: z.string().uuid(),
52
+ agentId: z.string().min(1),
53
+ tenantId: z.string().min(1),
54
+ timestamp: z.string().datetime(),
55
+ type: LearningEventTypeSchema,
56
+ source: LearningEventSourceSchema,
57
+ content: LearningEventContentSchema,
58
+ impact: LearningEventImpactSchema,
59
+ metadata: LearningEventMetadataSchema,
60
+ });
61
+ // ─── Teaching ───
62
+ export const TeachingOfferOfferSchema = z.object({
63
+ skill: z.string().min(1),
64
+ description: z.string(),
65
+ prerequisites: z.array(z.string()),
66
+ estimatedLearningTime: z.number().int().min(0),
67
+ confidence: z.number().min(0).max(1),
68
+ });
69
+ export const TeachingOfferRequestSchema = z.object({
70
+ whyRelevant: z.string(),
71
+ expectedBenefit: z.string(),
72
+ riskAssessment: z.string(),
73
+ });
74
+ export const TeachingOfferSchema = z.object({
75
+ id: z.string().uuid(),
76
+ fromAgent: z.string().min(1),
77
+ toAgent: z.string().min(1),
78
+ offer: TeachingOfferOfferSchema,
79
+ request: TeachingOfferRequestSchema,
80
+ status: TeachingOfferStatusSchema,
81
+ conditions: z.array(z.string()).optional(),
82
+ createdAt: z.string().datetime(),
83
+ updatedAt: z.string().datetime(),
84
+ });
85
+ export const TeachingAcceptanceSchema = z.object({
86
+ offerId: z.string().uuid(),
87
+ decision: z.enum(['accept', 'decline', 'negotiate']),
88
+ reasons: z.string().optional(),
89
+ conditions: z.array(z.string()).optional(),
90
+ counterOffer: TeachingOfferSchema.partial().optional(),
91
+ });
92
+ // ─── Observation ───
93
+ export const ObservationWhatObservedSchema = z.object({
94
+ action: z.string().min(1),
95
+ context: z.string().min(1),
96
+ outcome: z.string().min(1),
97
+ qualityAssessment: z.number().min(0).max(1),
98
+ });
99
+ export const ObservationExtractedKnowledgeSchema = z.object({
100
+ procedure: z.string().optional(),
101
+ insight: z.string().optional(),
102
+ pattern: z.string().optional(),
103
+ confidence: z.number().min(0).max(1),
104
+ });
105
+ export const ObservationEthicsSchema = z.object({
106
+ consentObtained: z.boolean(),
107
+ privacyLevel: PrivacyLevelSchema,
108
+ anonymized: z.boolean(),
109
+ });
110
+ export const ObservationSchema = z.object({
111
+ id: z.string().uuid(),
112
+ observerAgent: z.string().min(1),
113
+ observedAgent: z.string().min(1),
114
+ tenantId: z.string().min(1),
115
+ whatObserved: ObservationWhatObservedSchema,
116
+ extractedKnowledge: ObservationExtractedKnowledgeSchema,
117
+ ethics: ObservationEthicsSchema,
118
+ timestamp: z.string().datetime(),
119
+ });
120
+ // ─── Knowledge Distillation ───
121
+ export const DistillationInputSchema = z.object({
122
+ episodes: z.array(z.string().uuid()),
123
+ procedures: z.array(z.string().uuid()),
124
+ totalExperienceHours: z.number().min(0),
125
+ });
126
+ export const DistillationApplicabilitySchema = z.object({
127
+ domains: z.array(z.string()),
128
+ agentTypes: z.array(z.string()),
129
+ contexts: z.array(z.string()),
130
+ });
131
+ export const DistillationOutputSchema = z.object({
132
+ distilledKnowledge: z.string().min(1),
133
+ keyInsights: z.array(z.string()),
134
+ transferableSkills: z.array(z.string()),
135
+ antiPatterns: z.array(z.string()),
136
+ applicability: DistillationApplicabilitySchema,
137
+ });
138
+ export const DistillationQualitySchema = z.object({
139
+ completeness: z.number().min(0).max(1),
140
+ accuracy: z.number().min(0).max(1),
141
+ generalizability: z.number().min(0).max(1),
142
+ });
143
+ export const KnowledgeDistillationSchema = z.object({
144
+ id: z.string().uuid(),
145
+ sourceAgent: z.string().min(1),
146
+ tenantId: z.string().min(1),
147
+ input: DistillationInputSchema,
148
+ output: DistillationOutputSchema,
149
+ quality: DistillationQualitySchema,
150
+ timestamp: z.string().datetime(),
151
+ });
152
+ // ─── Scorecard ───
153
+ export const LearningScorecardSchema = z.object({
154
+ agentId: z.string().min(1),
155
+ period: z.object({ from: z.string().datetime(), to: z.string().datetime() }),
156
+ metrics: z.object({
157
+ totalLearningEvents: z.number().int().min(0),
158
+ selfLearned: z.number().int().min(0),
159
+ taughtByOthers: z.number().int().min(0),
160
+ taughtOthers: z.number().int().min(0),
161
+ averageConfidence: z.number().min(0).max(1),
162
+ knowledgeRetention: z.number().min(0).max(1),
163
+ behaviorChanges: z.number().int().min(0),
164
+ performanceImprovement: z.number(),
165
+ domainCoverage: z.record(z.string(), z.number().min(0)),
166
+ }),
167
+ growth: z.object({
168
+ newSkillsAcquired: z.array(z.string()),
169
+ skillsRefined: z.array(z.string()),
170
+ skillsDeprecated: z.array(z.string()),
171
+ knowledgeGaps: z.array(z.string()),
172
+ }),
173
+ contributions: z.object({
174
+ knowledgeShared: z.number().int().min(0),
175
+ agentsTaught: z.number().int().min(0),
176
+ proceduresTransferred: z.number().int().min(0),
177
+ communityImpact: z.number().min(0),
178
+ }),
179
+ });
180
+ // ─── Request Schemas ───
181
+ export const RecordLearningEventRequestSchema = z.object({
182
+ agentId: z.string().min(1),
183
+ tenantId: z.string().min(1),
184
+ type: LearningEventTypeSchema,
185
+ source: LearningEventSourceSchema,
186
+ content: LearningEventContentSchema,
187
+ impact: LearningEventImpactSchema,
188
+ metadata: LearningEventMetadataSchema,
189
+ });
190
+ export const CreateTeachingOfferRequestSchema = z.object({
191
+ fromAgent: z.string().min(1),
192
+ toAgent: z.string().min(1),
193
+ skill: z.string().min(1),
194
+ description: z.string(),
195
+ prerequisites: z.array(z.string()).optional(),
196
+ estimatedLearningTime: z.number().int().min(0).optional(),
197
+ confidence: z.number().min(0).max(1),
198
+ whyRelevant: z.string().optional(),
199
+ expectedBenefit: z.string().optional(),
200
+ riskAssessment: z.string().optional(),
201
+ });
202
+ export const RespondToTeachingOfferRequestSchema = z.object({
203
+ decision: z.enum(['accept', 'decline', 'negotiate']),
204
+ reasons: z.string().optional(),
205
+ conditions: z.array(z.string()).optional(),
206
+ });
207
+ export const RecordObservationRequestSchema = z.object({
208
+ observerAgent: z.string().min(1),
209
+ observedAgent: z.string().min(1),
210
+ tenantId: z.string().min(1),
211
+ whatObserved: ObservationWhatObservedSchema,
212
+ extractedKnowledge: ObservationExtractedKnowledgeSchema,
213
+ ethics: ObservationEthicsSchema,
214
+ });
215
+ export const DistillKnowledgeRequestSchema = z.object({
216
+ sourceAgent: z.string().min(1),
217
+ tenantId: z.string().min(1),
218
+ input: DistillationInputSchema,
219
+ output: DistillationOutputSchema,
220
+ quality: DistillationQualitySchema,
221
+ });
222
+ export const LearningQueryRequestSchema = z.object({
223
+ agentId: z.string().min(1),
224
+ domain: z.string().optional(),
225
+ type: LearningEventTypeSchema.optional(),
226
+ since: z.string().datetime().optional(),
227
+ limit: z.number().int().min(1).max(1000).default(50),
228
+ });
229
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/extensions/learning/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { LearningScorecard } from './types';
2
+ import type { LearningStore } from './store';
3
+ export declare function buildLearningScorecard(learningStore: LearningStore, agentId: string, period: {
4
+ from: string;
5
+ to: string;
6
+ }): Promise<LearningScorecard>;
7
+ //# sourceMappingURL=scorecard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard.d.ts","sourceRoot":"","sources":["../../../src/extensions/learning/scorecard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAoE5B"}
@@ -0,0 +1,50 @@
1
+ export async function buildLearningScorecard(learningStore, agentId, period) {
2
+ const events = await learningStore.getEvents(agentId, { limit: 1000 });
3
+ const domainStats = await learningStore.getDomainStats(agentId);
4
+ const periodEvents = events.filter((e) => e.timestamp >= period.from && e.timestamp <= period.to);
5
+ const selfLearned = periodEvents.filter((e) => e.source.agentId === 'self' || e.source.agentId === agentId).length;
6
+ const taughtByOthers = periodEvents.filter((e) => e.type === 'skill_transfer').length;
7
+ const avgConfidence = periodEvents.length > 0
8
+ ? periodEvents.reduce((sum, e) => sum + e.content.confidence, 0) / periodEvents.length
9
+ : 0;
10
+ const domainCoverage = {};
11
+ for (const stat of domainStats) {
12
+ domainCoverage[stat.domain] = stat.count;
13
+ }
14
+ const performanceEvents = periodEvents.filter((e) => e.impact.performanceBefore !== undefined && e.impact.performanceAfter !== undefined);
15
+ const performanceImprovement = performanceEvents.length > 0
16
+ ? performanceEvents.reduce((sum, e) => sum + (e.impact.performanceAfter - e.impact.performanceBefore), 0) / performanceEvents.length
17
+ : 0;
18
+ return {
19
+ agentId,
20
+ period,
21
+ metrics: {
22
+ totalLearningEvents: periodEvents.length,
23
+ selfLearned,
24
+ taughtByOthers,
25
+ taughtOthers: 0,
26
+ averageConfidence: avgConfidence,
27
+ knowledgeRetention: 1.0,
28
+ behaviorChanges: periodEvents.filter((e) => e.impact.behaviorChange).length,
29
+ performanceImprovement,
30
+ domainCoverage,
31
+ },
32
+ growth: {
33
+ newSkillsAcquired: periodEvents
34
+ .filter((e) => e.type === 'discovery')
35
+ .map((e) => e.content.whatLearned),
36
+ skillsRefined: periodEvents
37
+ .filter((e) => e.type === 'refinement')
38
+ .map((e) => e.content.whatLearned),
39
+ skillsDeprecated: [],
40
+ knowledgeGaps: [],
41
+ },
42
+ contributions: {
43
+ knowledgeShared: periodEvents.filter((e) => e.metadata.sharingAllowed).length,
44
+ agentsTaught: taughtByOthers,
45
+ proceduresTransferred: 0,
46
+ communityImpact: 0,
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=scorecard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard.js","sourceRoot":"","sources":["../../../src/extensions/learning/scorecard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Database } from '../../types/database';
2
+ import type { EventBus } from '../../extensions/events/bus';
3
+ import type { ClickHouseClient } from '../../extensions/events/clickhouse-client';
4
+ import type { LearningEvent, TeachingOffer, TeachingAcceptance, KnowledgeTransfer, RecordLearningEventRequest, CreateTeachingOfferRequest } from './types';
5
+ export interface LearningStore {
6
+ record(event: RecordLearningEventRequest): Promise<LearningEvent>;
7
+ getEvents(agentId: string, opts?: {
8
+ limit?: number;
9
+ domain?: string;
10
+ since?: string;
11
+ }): Promise<LearningEvent[]>;
12
+ getDomainStats(agentId: string): Promise<{
13
+ domain: string;
14
+ count: number;
15
+ avgConfidence: number;
16
+ }[]>;
17
+ teach(params: CreateTeachingOfferRequest): Promise<TeachingOffer>;
18
+ getTeachingOffers(agentId: string): Promise<TeachingOffer[]>;
19
+ getSentOffers(agentId: string): Promise<TeachingOffer[]>;
20
+ acceptTeaching(offerId: string, acceptance: TeachingAcceptance): Promise<void>;
21
+ declineTeaching(offerId: string, reasons?: string): Promise<void>;
22
+ getKnowledgeTransfers(agentId: string): Promise<KnowledgeTransfer[]>;
23
+ }
24
+ export declare function createLearningStore(db: Database, eventBus: EventBus, clickhouse: ClickHouseClient): LearningStore;
25
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/extensions/learning/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC1B,0BAA0B,EAG3B,MAAM,SAAS,CAAC;AASjB,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,SAAS,CACP,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5B,cAAc,CACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IACvE,KAAK,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC7D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACzD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;CACtE;AA6ID,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,gBAAgB,GAC3B,aAAa,CA2Rf"}
@@ -0,0 +1,305 @@
1
+ import { validateSchema } from '../../utils/validation';
2
+ import { LearningEventSchema, RecordLearningEventRequestSchema, CreateTeachingOfferRequestSchema, } from './schema';
3
+ import { TeachingOfferNotFoundError, TeachingOfferAlreadyRespondedError } from './errors';
4
+ function parseJsonField(value) {
5
+ if (typeof value === 'string') {
6
+ try {
7
+ return JSON.parse(value);
8
+ }
9
+ catch {
10
+ return [];
11
+ }
12
+ }
13
+ return value;
14
+ }
15
+ function rowToLearningEvent(row) {
16
+ return {
17
+ id: row.event_id,
18
+ agentId: row.agent_id,
19
+ tenantId: row.tenant_id,
20
+ timestamp: new Date(row.created_at).toISOString(),
21
+ type: row.type,
22
+ source: {
23
+ agentId: row.source_agent,
24
+ episodeId: row.episode_id ?? undefined,
25
+ interactionId: row.interaction_id ?? undefined,
26
+ },
27
+ content: {
28
+ whatLearned: row.what_learned,
29
+ domain: row.domain,
30
+ confidence: row.confidence,
31
+ evidence: parseJsonField(row.evidence),
32
+ applicableContexts: parseJsonField(row.applicable_contexts),
33
+ counterExamples: parseJsonField(row.counter_examples),
34
+ },
35
+ impact: {
36
+ behaviorChange: row.behavior_change,
37
+ performanceBefore: row.performance_before ?? undefined,
38
+ performanceAfter: row.performance_after ?? undefined,
39
+ procedureIds: parseJsonField(row.procedure_ids),
40
+ },
41
+ metadata: {
42
+ learningMethod: row.learning_method,
43
+ sharingAllowed: typeof row.sharing_allowed === 'number' ? row.sharing_allowed === 1 : row.sharing_allowed,
44
+ priority: row.priority,
45
+ expiresAt: row.expires_at ?? undefined,
46
+ },
47
+ };
48
+ }
49
+ function rowToTeachingOffer(row) {
50
+ return {
51
+ id: row.offer_id,
52
+ fromAgent: row.from_agent,
53
+ toAgent: row.to_agent,
54
+ offer: {
55
+ skill: row.skill,
56
+ description: row.description,
57
+ prerequisites: parseJsonField(row.prerequisites),
58
+ estimatedLearningTime: row.estimated_time,
59
+ confidence: row.confidence,
60
+ },
61
+ request: {
62
+ whyRelevant: row.why_relevant,
63
+ expectedBenefit: row.expected_benefit,
64
+ riskAssessment: row.risk_assessment,
65
+ },
66
+ status: row.status,
67
+ conditions: parseJsonField(row.conditions),
68
+ createdAt: new Date(row.created_at).toISOString(),
69
+ updatedAt: new Date(row.updated_at).toISOString(),
70
+ };
71
+ }
72
+ function rowToKnowledgeTransfer(row) {
73
+ return {
74
+ id: row.transfer_id,
75
+ fromAgent: row.from_agent,
76
+ toAgent: row.to_agent,
77
+ offerId: row.offer_id ?? undefined,
78
+ domain: row.domain,
79
+ whatLearned: row.what_learned,
80
+ confidence: row.confidence,
81
+ evidence: parseJsonField(row.evidence),
82
+ createdAt: new Date(row.created_at).toISOString(),
83
+ };
84
+ }
85
+ export function createLearningStore(db, eventBus, clickhouse) {
86
+ return {
87
+ async record(event) {
88
+ const check = validateSchema(RecordLearningEventRequestSchema, event);
89
+ if (!check.success) {
90
+ throw new Error(`Invalid learning event: ${check.error}`);
91
+ }
92
+ const id = crypto.randomUUID();
93
+ const timestamp = new Date().toISOString();
94
+ await db.query(`INSERT INTO learning.learning_events (
95
+ event_id, agent_id, tenant_id, type, source_agent,
96
+ episode_id, interaction_id, domain, what_learned, confidence,
97
+ evidence, applicable_contexts, counter_examples,
98
+ behavior_change, performance_before, performance_after, procedure_ids,
99
+ learning_method, sharing_allowed, priority, expires_at, created_at
100
+ ) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22)`, [
101
+ id,
102
+ event.agentId,
103
+ event.tenantId,
104
+ event.type,
105
+ event.source.agentId,
106
+ event.source.episodeId ?? null,
107
+ event.source.interactionId ?? null,
108
+ event.content.domain,
109
+ event.content.whatLearned,
110
+ event.content.confidence,
111
+ JSON.stringify(event.content.evidence),
112
+ JSON.stringify(event.content.applicableContexts),
113
+ JSON.stringify(event.content.counterExamples ?? []),
114
+ event.impact.behaviorChange,
115
+ event.impact.performanceBefore ?? null,
116
+ event.impact.performanceAfter ?? null,
117
+ JSON.stringify(event.impact.procedureIds ?? []),
118
+ event.metadata.learningMethod,
119
+ event.metadata.sharingAllowed,
120
+ event.metadata.priority,
121
+ event.metadata.expiresAt ?? null,
122
+ timestamp,
123
+ ]);
124
+ eventBus.emit({
125
+ table: 'learning_events',
126
+ data: {
127
+ event_id: id,
128
+ agent_id: event.agentId,
129
+ tenant_id: event.tenantId,
130
+ type: event.type,
131
+ source_agent: event.source.agentId,
132
+ domain: event.content.domain,
133
+ what_learned: event.content.whatLearned,
134
+ confidence: event.content.confidence,
135
+ behavior_change: event.impact.behaviorChange,
136
+ priority: event.metadata.priority,
137
+ sharing_allowed: event.metadata.sharingAllowed ? 1 : 0,
138
+ learning_method: event.metadata.learningMethod,
139
+ created_at: timestamp,
140
+ },
141
+ });
142
+ return {
143
+ id,
144
+ agentId: event.agentId,
145
+ tenantId: event.tenantId,
146
+ timestamp,
147
+ type: event.type,
148
+ source: event.source,
149
+ content: event.content,
150
+ impact: event.impact,
151
+ metadata: event.metadata,
152
+ };
153
+ },
154
+ async getEvents(agentId, opts) {
155
+ const limit = opts?.limit ?? 50;
156
+ let sql = `SELECT * FROM learning.learning_events WHERE agent_id = $1`;
157
+ const params = [agentId];
158
+ let paramIdx = 2;
159
+ if (opts?.domain) {
160
+ sql += ` AND domain = $${paramIdx}`;
161
+ params.push(opts.domain);
162
+ paramIdx++;
163
+ }
164
+ if (opts?.since) {
165
+ sql += ` AND created_at >= $${paramIdx}`;
166
+ params.push(opts.since);
167
+ paramIdx++;
168
+ }
169
+ sql += ` ORDER BY created_at DESC LIMIT $${paramIdx}`;
170
+ params.push(limit);
171
+ const rows = await db.query(sql, params);
172
+ return rows.map(rowToLearningEvent);
173
+ },
174
+ async getDomainStats(agentId) {
175
+ const rows = await db.query(`SELECT domain, count(*) AS cnt, avg(confidence) AS avg_conf
176
+ FROM learning.learning_events
177
+ WHERE agent_id = $1
178
+ GROUP BY domain
179
+ ORDER BY cnt DESC`, [agentId]);
180
+ return rows.map((r) => ({
181
+ domain: r.domain,
182
+ count: Number(r.cnt),
183
+ avgConfidence: Number(r.avg_conf),
184
+ }));
185
+ },
186
+ async teach(params) {
187
+ const check = validateSchema(CreateTeachingOfferRequestSchema, params);
188
+ if (!check.success) {
189
+ throw new Error(`Invalid teaching offer: ${check.error}`);
190
+ }
191
+ const id = crypto.randomUUID();
192
+ const now = new Date().toISOString();
193
+ await db.query(`INSERT INTO learning.teaching_offers (
194
+ offer_id, from_agent, to_agent, skill, description,
195
+ prerequisites, estimated_time, confidence,
196
+ why_relevant, expected_benefit, risk_assessment,
197
+ status, created_at, updated_at
198
+ ) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,'pending',$12,$13)`, [
199
+ id,
200
+ params.fromAgent,
201
+ params.toAgent,
202
+ params.skill,
203
+ params.description,
204
+ JSON.stringify(params.prerequisites ?? []),
205
+ params.estimatedLearningTime ?? 0,
206
+ params.confidence,
207
+ params.whyRelevant ?? '',
208
+ params.expectedBenefit ?? '',
209
+ params.riskAssessment ?? '',
210
+ now,
211
+ now,
212
+ ]);
213
+ return {
214
+ id,
215
+ fromAgent: params.fromAgent,
216
+ toAgent: params.toAgent,
217
+ offer: {
218
+ skill: params.skill,
219
+ description: params.description,
220
+ prerequisites: params.prerequisites ?? [],
221
+ estimatedLearningTime: params.estimatedLearningTime ?? 0,
222
+ confidence: params.confidence,
223
+ },
224
+ request: {
225
+ whyRelevant: params.whyRelevant ?? '',
226
+ expectedBenefit: params.expectedBenefit ?? '',
227
+ riskAssessment: params.riskAssessment ?? '',
228
+ },
229
+ status: 'pending',
230
+ createdAt: now,
231
+ updatedAt: now,
232
+ };
233
+ },
234
+ async getTeachingOffers(agentId) {
235
+ const rows = await db.query(`SELECT offer_id, from_agent, to_agent, skill, description,
236
+ prerequisites, estimated_time, confidence,
237
+ why_relevant, expected_benefit, risk_assessment,
238
+ status, conditions, created_at, updated_at
239
+ FROM learning.teaching_offers
240
+ WHERE to_agent = $1 AND status = 'pending'
241
+ ORDER BY created_at DESC`, [agentId]);
242
+ return rows.map(rowToTeachingOffer);
243
+ },
244
+ async getSentOffers(agentId) {
245
+ const rows = await db.query(`SELECT offer_id, from_agent, to_agent, skill, description,
246
+ prerequisites, estimated_time, confidence,
247
+ why_relevant, expected_benefit, risk_assessment,
248
+ status, conditions, created_at, updated_at
249
+ FROM learning.teaching_offers
250
+ WHERE from_agent = $1
251
+ ORDER BY created_at DESC`, [agentId]);
252
+ return rows.map(rowToTeachingOffer);
253
+ },
254
+ async acceptTeaching(offerId, acceptance) {
255
+ const rows = await db.query(`SELECT offer_id, status FROM learning.teaching_offers WHERE offer_id = $1`, [offerId]);
256
+ const offer = rows[0];
257
+ if (!offer) {
258
+ throw new TeachingOfferNotFoundError(offerId);
259
+ }
260
+ if (offer.status !== 'pending') {
261
+ throw new TeachingOfferAlreadyRespondedError(offerId);
262
+ }
263
+ await db.query(`UPDATE learning.teaching_offers
264
+ SET status = 'accepted', conditions = $1, updated_at = now()
265
+ WHERE offer_id = $2`, [JSON.stringify(acceptance.conditions ?? []), offerId]);
266
+ const offerRows = await db.query(`SELECT * FROM learning.teaching_offers WHERE offer_id = $1`, [offerId]);
267
+ const fullOffer = offerRows[0];
268
+ if (fullOffer) {
269
+ await db.query(`INSERT INTO learning.knowledge_transfers (
270
+ from_agent, to_agent, offer_id, domain, what_learned, confidence, evidence
271
+ ) VALUES ($1, $2, $3, $4, $5, $6, $7)`, [
272
+ fullOffer.from_agent,
273
+ fullOffer.to_agent,
274
+ offerId,
275
+ fullOffer.skill,
276
+ fullOffer.description,
277
+ fullOffer.confidence,
278
+ '[]',
279
+ ]);
280
+ }
281
+ },
282
+ async declineTeaching(offerId, reasons) {
283
+ const rows = await db.query(`SELECT offer_id, status FROM learning.teaching_offers WHERE offer_id = $1`, [offerId]);
284
+ const offer = rows[0];
285
+ if (!offer) {
286
+ throw new TeachingOfferNotFoundError(offerId);
287
+ }
288
+ if (offer.status !== 'pending') {
289
+ throw new TeachingOfferAlreadyRespondedError(offerId);
290
+ }
291
+ await db.query(`UPDATE learning.teaching_offers
292
+ SET status = 'declined', updated_at = now()
293
+ WHERE offer_id = $1`, [offerId]);
294
+ },
295
+ async getKnowledgeTransfers(agentId) {
296
+ const rows = await db.query(`SELECT transfer_id, from_agent, to_agent, offer_id, domain,
297
+ what_learned, confidence, evidence, created_at
298
+ FROM learning.knowledge_transfers
299
+ WHERE to_agent = $1 OR from_agent = $1
300
+ ORDER BY created_at DESC`, [agentId]);
301
+ return rows.map(rowToKnowledgeTransfer);
302
+ },
303
+ };
304
+ }
305
+ //# sourceMappingURL=store.js.map