@gitgov/core 1.0.0 → 1.0.2

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 (469) hide show
  1. package/README.md +139 -135
  2. package/dist/src/index.d.ts +5475 -21
  3. package/dist/src/index.js +7873 -22
  4. package/dist/src/index.js.map +1 -1
  5. package/package.json +19 -7
  6. package/dist/scripts/compile-json-to-types.d.ts +0 -11
  7. package/dist/scripts/compile-json-to-types.d.ts.map +0 -1
  8. package/dist/scripts/compile-json-to-types.js +0 -129
  9. package/dist/scripts/compile-json-to-types.js.map +0 -1
  10. package/dist/scripts/diagnose-duplicates.d.ts +0 -7
  11. package/dist/scripts/diagnose-duplicates.d.ts.map +0 -1
  12. package/dist/scripts/diagnose-duplicates.js +0 -72
  13. package/dist/scripts/diagnose-duplicates.js.map +0 -1
  14. package/dist/scripts/generate-indexes.d.ts +0 -22
  15. package/dist/scripts/generate-indexes.d.ts.map +0 -1
  16. package/dist/scripts/generate-indexes.js +0 -168
  17. package/dist/scripts/generate-indexes.js.map +0 -1
  18. package/dist/scripts/sync-schemas.d.ts +0 -10
  19. package/dist/scripts/sync-schemas.d.ts.map +0 -1
  20. package/dist/scripts/sync-schemas.js +0 -84
  21. package/dist/scripts/sync-schemas.js.map +0 -1
  22. package/dist/scripts/sync-workflow-configs.d.ts +0 -11
  23. package/dist/scripts/sync-workflow-configs.d.ts.map +0 -1
  24. package/dist/scripts/sync-workflow-configs.js +0 -61
  25. package/dist/scripts/sync-workflow-configs.js.map +0 -1
  26. package/dist/scripts/update-diagram.d.ts +0 -7
  27. package/dist/scripts/update-diagram.d.ts.map +0 -1
  28. package/dist/scripts/update-diagram.js +0 -47
  29. package/dist/scripts/update-diagram.js.map +0 -1
  30. package/dist/scripts/validate-schemas.d.ts +0 -18
  31. package/dist/scripts/validate-schemas.d.ts.map +0 -1
  32. package/dist/scripts/validate-schemas.js +0 -313
  33. package/dist/scripts/validate-schemas.js.map +0 -1
  34. package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.d.ts +0 -2
  35. package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.d.ts.map +0 -1
  36. package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.js +0 -507
  37. package/dist/src/adapters/backlog_adapter/backlog_adapter.integration.test.js.map +0 -1
  38. package/dist/src/adapters/backlog_adapter/backlog_adapter.test.d.ts +0 -2
  39. package/dist/src/adapters/backlog_adapter/backlog_adapter.test.d.ts.map +0 -1
  40. package/dist/src/adapters/backlog_adapter/backlog_adapter.test.js +0 -1282
  41. package/dist/src/adapters/backlog_adapter/backlog_adapter.test.js.map +0 -1
  42. package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.d.ts +0 -10
  43. package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.d.ts.map +0 -1
  44. package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.js +0 -144
  45. package/dist/src/adapters/backlog_adapter/backlog_adapter_e2e.test.js.map +0 -1
  46. package/dist/src/adapters/backlog_adapter/index.d.ts +0 -213
  47. package/dist/src/adapters/backlog_adapter/index.d.ts.map +0 -1
  48. package/dist/src/adapters/backlog_adapter/index.js +0 -924
  49. package/dist/src/adapters/backlog_adapter/index.js.map +0 -1
  50. package/dist/src/adapters/changelog_adapter/changelog_adapter.test.d.ts +0 -2
  51. package/dist/src/adapters/changelog_adapter/changelog_adapter.test.d.ts.map +0 -1
  52. package/dist/src/adapters/changelog_adapter/changelog_adapter.test.js +0 -505
  53. package/dist/src/adapters/changelog_adapter/changelog_adapter.test.js.map +0 -1
  54. package/dist/src/adapters/changelog_adapter/index.d.ts +0 -101
  55. package/dist/src/adapters/changelog_adapter/index.d.ts.map +0 -1
  56. package/dist/src/adapters/changelog_adapter/index.js +0 -197
  57. package/dist/src/adapters/changelog_adapter/index.js.map +0 -1
  58. package/dist/src/adapters/execution_adapter/execution_adapter.test.d.ts +0 -2
  59. package/dist/src/adapters/execution_adapter/execution_adapter.test.d.ts.map +0 -1
  60. package/dist/src/adapters/execution_adapter/execution_adapter.test.js +0 -266
  61. package/dist/src/adapters/execution_adapter/execution_adapter.test.js.map +0 -1
  62. package/dist/src/adapters/execution_adapter/index.d.ts +0 -90
  63. package/dist/src/adapters/execution_adapter/index.d.ts.map +0 -1
  64. package/dist/src/adapters/execution_adapter/index.js +0 -150
  65. package/dist/src/adapters/execution_adapter/index.js.map +0 -1
  66. package/dist/src/adapters/feedback_adapter/feedback_adapter.test.d.ts +0 -2
  67. package/dist/src/adapters/feedback_adapter/feedback_adapter.test.d.ts.map +0 -1
  68. package/dist/src/adapters/feedback_adapter/feedback_adapter.test.js +0 -256
  69. package/dist/src/adapters/feedback_adapter/feedback_adapter.test.js.map +0 -1
  70. package/dist/src/adapters/feedback_adapter/index.d.ts +0 -95
  71. package/dist/src/adapters/feedback_adapter/index.d.ts.map +0 -1
  72. package/dist/src/adapters/feedback_adapter/index.js +0 -192
  73. package/dist/src/adapters/feedback_adapter/index.js.map +0 -1
  74. package/dist/src/adapters/identity_adapter/identity_adapter.test.d.ts +0 -2
  75. package/dist/src/adapters/identity_adapter/identity_adapter.test.d.ts.map +0 -1
  76. package/dist/src/adapters/identity_adapter/identity_adapter.test.js +0 -624
  77. package/dist/src/adapters/identity_adapter/identity_adapter.test.js.map +0 -1
  78. package/dist/src/adapters/identity_adapter/index.d.ts +0 -82
  79. package/dist/src/adapters/identity_adapter/index.d.ts.map +0 -1
  80. package/dist/src/adapters/identity_adapter/index.js +0 -336
  81. package/dist/src/adapters/identity_adapter/index.js.map +0 -1
  82. package/dist/src/adapters/index.d.ts +0 -10
  83. package/dist/src/adapters/index.d.ts.map +0 -1
  84. package/dist/src/adapters/index.js +0 -10
  85. package/dist/src/adapters/index.js.map +0 -1
  86. package/dist/src/adapters/indexer_adapter/index.d.ts +0 -214
  87. package/dist/src/adapters/indexer_adapter/index.d.ts.map +0 -1
  88. package/dist/src/adapters/indexer_adapter/index.js +0 -643
  89. package/dist/src/adapters/indexer_adapter/index.js.map +0 -1
  90. package/dist/src/adapters/indexer_adapter/indexer_adapter.test.d.ts +0 -2
  91. package/dist/src/adapters/indexer_adapter/indexer_adapter.test.d.ts.map +0 -1
  92. package/dist/src/adapters/indexer_adapter/indexer_adapter.test.js +0 -409
  93. package/dist/src/adapters/indexer_adapter/indexer_adapter.test.js.map +0 -1
  94. package/dist/src/adapters/metrics_adapter/index.d.ts +0 -189
  95. package/dist/src/adapters/metrics_adapter/index.d.ts.map +0 -1
  96. package/dist/src/adapters/metrics_adapter/index.js +0 -592
  97. package/dist/src/adapters/metrics_adapter/index.js.map +0 -1
  98. package/dist/src/adapters/metrics_adapter/metrics_adapter.test.d.ts +0 -2
  99. package/dist/src/adapters/metrics_adapter/metrics_adapter.test.d.ts.map +0 -1
  100. package/dist/src/adapters/metrics_adapter/metrics_adapter.test.js +0 -558
  101. package/dist/src/adapters/metrics_adapter/metrics_adapter.test.js.map +0 -1
  102. package/dist/src/adapters/project_adapter/index.d.ts +0 -164
  103. package/dist/src/adapters/project_adapter/index.d.ts.map +0 -1
  104. package/dist/src/adapters/project_adapter/index.js +0 -445
  105. package/dist/src/adapters/project_adapter/index.js.map +0 -1
  106. package/dist/src/adapters/project_adapter/project_adapter.test.d.ts +0 -2
  107. package/dist/src/adapters/project_adapter/project_adapter.test.d.ts.map +0 -1
  108. package/dist/src/adapters/project_adapter/project_adapter.test.js +0 -627
  109. package/dist/src/adapters/project_adapter/project_adapter.test.js.map +0 -1
  110. package/dist/src/adapters/workflow_methodology_adapter/index.d.ts +0 -75
  111. package/dist/src/adapters/workflow_methodology_adapter/index.d.ts.map +0 -1
  112. package/dist/src/adapters/workflow_methodology_adapter/index.js +0 -205
  113. package/dist/src/adapters/workflow_methodology_adapter/index.js.map +0 -1
  114. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.d.ts +0 -2
  115. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.d.ts.map +0 -1
  116. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.js +0 -463
  117. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter.test.js.map +0 -1
  118. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.d.ts +0 -2
  119. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.d.ts.map +0 -1
  120. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.js +0 -287
  121. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_integration.test.js.map +0 -1
  122. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.d.ts +0 -2
  123. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.d.ts.map +0 -1
  124. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.js +0 -278
  125. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_adapter_scrum_integration.test.js.map +0 -1
  126. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_default.json +0 -188
  127. package/dist/src/adapters/workflow_methodology_adapter/workflow_methodology_scrum.json +0 -284
  128. package/dist/src/config_manager/config_manager.test.d.ts +0 -2
  129. package/dist/src/config_manager/config_manager.test.d.ts.map +0 -1
  130. package/dist/src/config_manager/config_manager.test.js +0 -321
  131. package/dist/src/config_manager/config_manager.test.js.map +0 -1
  132. package/dist/src/config_manager/index.d.ts +0 -107
  133. package/dist/src/config_manager/index.d.ts.map +0 -1
  134. package/dist/src/config_manager/index.js +0 -192
  135. package/dist/src/config_manager/index.js.map +0 -1
  136. package/dist/src/crypto/checksum.d.ts +0 -6
  137. package/dist/src/crypto/checksum.d.ts.map +0 -1
  138. package/dist/src/crypto/checksum.js +0 -38
  139. package/dist/src/crypto/checksum.js.map +0 -1
  140. package/dist/src/crypto/checksum.test.d.ts +0 -2
  141. package/dist/src/crypto/checksum.test.d.ts.map +0 -1
  142. package/dist/src/crypto/checksum.test.js +0 -167
  143. package/dist/src/crypto/checksum.test.js.map +0 -1
  144. package/dist/src/crypto/index.d.ts +0 -3
  145. package/dist/src/crypto/index.d.ts.map +0 -1
  146. package/dist/src/crypto/index.js +0 -3
  147. package/dist/src/crypto/index.js.map +0 -1
  148. package/dist/src/crypto/signatures.d.ts +0 -24
  149. package/dist/src/crypto/signatures.d.ts.map +0 -1
  150. package/dist/src/crypto/signatures.js +0 -67
  151. package/dist/src/crypto/signatures.js.map +0 -1
  152. package/dist/src/crypto/signatures.test.d.ts +0 -2
  153. package/dist/src/crypto/signatures.test.d.ts.map +0 -1
  154. package/dist/src/crypto/signatures.test.js +0 -378
  155. package/dist/src/crypto/signatures.test.js.map +0 -1
  156. package/dist/src/diagram_generator/diagram_generator.d.ts +0 -76
  157. package/dist/src/diagram_generator/diagram_generator.d.ts.map +0 -1
  158. package/dist/src/diagram_generator/diagram_generator.js +0 -233
  159. package/dist/src/diagram_generator/diagram_generator.js.map +0 -1
  160. package/dist/src/diagram_generator/graph_validator.d.ts +0 -19
  161. package/dist/src/diagram_generator/graph_validator.d.ts.map +0 -1
  162. package/dist/src/diagram_generator/graph_validator.js +0 -98
  163. package/dist/src/diagram_generator/graph_validator.js.map +0 -1
  164. package/dist/src/diagram_generator/index.d.ts +0 -4
  165. package/dist/src/diagram_generator/index.d.ts.map +0 -1
  166. package/dist/src/diagram_generator/index.js +0 -4
  167. package/dist/src/diagram_generator/index.js.map +0 -1
  168. package/dist/src/diagram_generator/mermaid_renderer.d.ts +0 -82
  169. package/dist/src/diagram_generator/mermaid_renderer.d.ts.map +0 -1
  170. package/dist/src/diagram_generator/mermaid_renderer.js +0 -306
  171. package/dist/src/diagram_generator/mermaid_renderer.js.map +0 -1
  172. package/dist/src/diagram_generator/relationship_analyzer.d.ts +0 -116
  173. package/dist/src/diagram_generator/relationship_analyzer.d.ts.map +0 -1
  174. package/dist/src/diagram_generator/relationship_analyzer.js +0 -381
  175. package/dist/src/diagram_generator/relationship_analyzer.js.map +0 -1
  176. package/dist/src/event_bus/event_bus.d.ts +0 -110
  177. package/dist/src/event_bus/event_bus.d.ts.map +0 -1
  178. package/dist/src/event_bus/event_bus.js +0 -161
  179. package/dist/src/event_bus/event_bus.js.map +0 -1
  180. package/dist/src/event_bus/event_bus.test.d.ts +0 -2
  181. package/dist/src/event_bus/event_bus.test.d.ts.map +0 -1
  182. package/dist/src/event_bus/event_bus.test.js +0 -332
  183. package/dist/src/event_bus/event_bus.test.js.map +0 -1
  184. package/dist/src/event_bus/event_bus_integration.test.d.ts +0 -2
  185. package/dist/src/event_bus/event_bus_integration.test.d.ts.map +0 -1
  186. package/dist/src/event_bus/event_bus_integration.test.js +0 -474
  187. package/dist/src/event_bus/event_bus_integration.test.js.map +0 -1
  188. package/dist/src/event_bus/index.d.ts +0 -3
  189. package/dist/src/event_bus/index.d.ts.map +0 -1
  190. package/dist/src/event_bus/index.js +0 -3
  191. package/dist/src/event_bus/index.js.map +0 -1
  192. package/dist/src/event_bus/types.d.ts +0 -203
  193. package/dist/src/event_bus/types.d.ts.map +0 -1
  194. package/dist/src/event_bus/types.js +0 -5
  195. package/dist/src/event_bus/types.js.map +0 -1
  196. package/dist/src/factories/actor_factory.d.ts +0 -6
  197. package/dist/src/factories/actor_factory.d.ts.map +0 -1
  198. package/dist/src/factories/actor_factory.js +0 -25
  199. package/dist/src/factories/actor_factory.js.map +0 -1
  200. package/dist/src/factories/actor_factory.test.d.ts +0 -2
  201. package/dist/src/factories/actor_factory.test.d.ts.map +0 -1
  202. package/dist/src/factories/actor_factory.test.js +0 -169
  203. package/dist/src/factories/actor_factory.test.js.map +0 -1
  204. package/dist/src/factories/agent_factory.d.ts +0 -6
  205. package/dist/src/factories/agent_factory.d.ts.map +0 -1
  206. package/dist/src/factories/agent_factory.js +0 -25
  207. package/dist/src/factories/agent_factory.js.map +0 -1
  208. package/dist/src/factories/agent_factory.test.d.ts +0 -2
  209. package/dist/src/factories/agent_factory.test.d.ts.map +0 -1
  210. package/dist/src/factories/agent_factory.test.js +0 -199
  211. package/dist/src/factories/agent_factory.test.js.map +0 -1
  212. package/dist/src/factories/changelog_factory.d.ts +0 -9
  213. package/dist/src/factories/changelog_factory.d.ts.map +0 -1
  214. package/dist/src/factories/changelog_factory.js +0 -46
  215. package/dist/src/factories/changelog_factory.js.map +0 -1
  216. package/dist/src/factories/changelog_factory.test.d.ts +0 -2
  217. package/dist/src/factories/changelog_factory.test.d.ts.map +0 -1
  218. package/dist/src/factories/changelog_factory.test.js +0 -368
  219. package/dist/src/factories/changelog_factory.test.js.map +0 -1
  220. package/dist/src/factories/cycle_factory.d.ts +0 -6
  221. package/dist/src/factories/cycle_factory.d.ts.map +0 -1
  222. package/dist/src/factories/cycle_factory.js +0 -28
  223. package/dist/src/factories/cycle_factory.js.map +0 -1
  224. package/dist/src/factories/cycle_factory.test.d.ts +0 -2
  225. package/dist/src/factories/cycle_factory.test.d.ts.map +0 -1
  226. package/dist/src/factories/cycle_factory.test.js +0 -175
  227. package/dist/src/factories/cycle_factory.test.js.map +0 -1
  228. package/dist/src/factories/execution_factory.d.ts +0 -9
  229. package/dist/src/factories/execution_factory.d.ts.map +0 -1
  230. package/dist/src/factories/execution_factory.js +0 -29
  231. package/dist/src/factories/execution_factory.js.map +0 -1
  232. package/dist/src/factories/execution_factory.test.d.ts +0 -2
  233. package/dist/src/factories/execution_factory.test.d.ts.map +0 -1
  234. package/dist/src/factories/execution_factory.test.js +0 -207
  235. package/dist/src/factories/execution_factory.test.js.map +0 -1
  236. package/dist/src/factories/feedback_factory.d.ts +0 -9
  237. package/dist/src/factories/feedback_factory.d.ts.map +0 -1
  238. package/dist/src/factories/feedback_factory.js +0 -30
  239. package/dist/src/factories/feedback_factory.js.map +0 -1
  240. package/dist/src/factories/feedback_factory.test.d.ts +0 -2
  241. package/dist/src/factories/feedback_factory.test.d.ts.map +0 -1
  242. package/dist/src/factories/feedback_factory.test.js +0 -256
  243. package/dist/src/factories/feedback_factory.test.js.map +0 -1
  244. package/dist/src/factories/index.d.ts +0 -9
  245. package/dist/src/factories/index.d.ts.map +0 -1
  246. package/dist/src/factories/index.js +0 -9
  247. package/dist/src/factories/index.js.map +0 -1
  248. package/dist/src/factories/task_factory.d.ts +0 -6
  249. package/dist/src/factories/task_factory.d.ts.map +0 -1
  250. package/dist/src/factories/task_factory.js +0 -30
  251. package/dist/src/factories/task_factory.js.map +0 -1
  252. package/dist/src/factories/task_factory.test.d.ts +0 -2
  253. package/dist/src/factories/task_factory.test.d.ts.map +0 -1
  254. package/dist/src/factories/task_factory.test.js +0 -197
  255. package/dist/src/factories/task_factory.test.js.map +0 -1
  256. package/dist/src/factories/workflow_methodology_factory.d.ts +0 -11
  257. package/dist/src/factories/workflow_methodology_factory.d.ts.map +0 -1
  258. package/dist/src/factories/workflow_methodology_factory.js +0 -173
  259. package/dist/src/factories/workflow_methodology_factory.js.map +0 -1
  260. package/dist/src/factories/workflow_methodology_factory.test.d.ts +0 -2
  261. package/dist/src/factories/workflow_methodology_factory.test.d.ts.map +0 -1
  262. package/dist/src/factories/workflow_methodology_factory.test.js +0 -244
  263. package/dist/src/factories/workflow_methodology_factory.test.js.map +0 -1
  264. package/dist/src/index.d.ts.map +0 -1
  265. package/dist/src/integration/cycles_tasks_integration.test.d.ts +0 -2
  266. package/dist/src/integration/cycles_tasks_integration.test.d.ts.map +0 -1
  267. package/dist/src/integration/cycles_tasks_integration.test.js +0 -258
  268. package/dist/src/integration/cycles_tasks_integration.test.js.map +0 -1
  269. package/dist/src/integration/schema_integration.test.d.ts +0 -8
  270. package/dist/src/integration/schema_integration.test.d.ts.map +0 -1
  271. package/dist/src/integration/schema_integration.test.js +0 -279
  272. package/dist/src/integration/schema_integration.test.js.map +0 -1
  273. package/dist/src/logger/index.d.ts +0 -2
  274. package/dist/src/logger/index.d.ts.map +0 -1
  275. package/dist/src/logger/index.js +0 -2
  276. package/dist/src/logger/index.js.map +0 -1
  277. package/dist/src/logger/logger.d.ts +0 -10
  278. package/dist/src/logger/logger.d.ts.map +0 -1
  279. package/dist/src/logger/logger.js +0 -48
  280. package/dist/src/logger/logger.js.map +0 -1
  281. package/dist/src/schemas/errors.d.ts +0 -28
  282. package/dist/src/schemas/errors.d.ts.map +0 -1
  283. package/dist/src/schemas/errors.js +0 -31
  284. package/dist/src/schemas/errors.js.map +0 -1
  285. package/dist/src/schemas/generated/actor_record_schema.json +0 -91
  286. package/dist/src/schemas/generated/agent_record_schema.json +0 -142
  287. package/dist/src/schemas/generated/changelog_record_schema.json +0 -227
  288. package/dist/src/schemas/generated/cycle_record_schema.json +0 -80
  289. package/dist/src/schemas/generated/embedded_metadata_schema.json +0 -318
  290. package/dist/src/schemas/generated/execution_record_schema.json +0 -89
  291. package/dist/src/schemas/generated/feedback_record_schema.json +0 -83
  292. package/dist/src/schemas/generated/index.d.ts +0 -2221
  293. package/dist/src/schemas/generated/index.d.ts.map +0 -1
  294. package/dist/src/schemas/generated/index.js +0 -48
  295. package/dist/src/schemas/generated/index.js.map +0 -1
  296. package/dist/src/schemas/generated/task_record_schema.json +0 -103
  297. package/dist/src/schemas/generated/workflow_methodology_record_schema.json +0 -393
  298. package/dist/src/schemas/index.d.ts +0 -4
  299. package/dist/src/schemas/index.d.ts.map +0 -1
  300. package/dist/src/schemas/index.js +0 -4
  301. package/dist/src/schemas/index.js.map +0 -1
  302. package/dist/src/schemas/schema_cache.d.ts +0 -39
  303. package/dist/src/schemas/schema_cache.d.ts.map +0 -1
  304. package/dist/src/schemas/schema_cache.js +0 -109
  305. package/dist/src/schemas/schema_cache.js.map +0 -1
  306. package/dist/src/schemas/schema_cache.test.d.ts +0 -2
  307. package/dist/src/schemas/schema_cache.test.d.ts.map +0 -1
  308. package/dist/src/schemas/schema_cache.test.js +0 -163
  309. package/dist/src/schemas/schema_cache.test.js.map +0 -1
  310. package/dist/src/store/index.d.ts +0 -2
  311. package/dist/src/store/index.d.ts.map +0 -1
  312. package/dist/src/store/index.js +0 -2
  313. package/dist/src/store/index.js.map +0 -1
  314. package/dist/src/store/record_store.d.ts +0 -30
  315. package/dist/src/store/record_store.d.ts.map +0 -1
  316. package/dist/src/store/record_store.js +0 -83
  317. package/dist/src/store/record_store.js.map +0 -1
  318. package/dist/src/store/record_store.test.d.ts +0 -2
  319. package/dist/src/store/record_store.test.d.ts.map +0 -1
  320. package/dist/src/store/record_store.test.js +0 -646
  321. package/dist/src/store/record_store.test.js.map +0 -1
  322. package/dist/src/types/common.types.d.ts +0 -43
  323. package/dist/src/types/common.types.d.ts.map +0 -1
  324. package/dist/src/types/common.types.js +0 -13
  325. package/dist/src/types/common.types.js.map +0 -1
  326. package/dist/src/types/embedded.types.d.ts +0 -17
  327. package/dist/src/types/embedded.types.d.ts.map +0 -1
  328. package/dist/src/types/embedded.types.js +0 -2
  329. package/dist/src/types/embedded.types.js.map +0 -1
  330. package/dist/src/types/generated/actor_record.d.ts +0 -45
  331. package/dist/src/types/generated/actor_record.d.ts.map +0 -1
  332. package/dist/src/types/generated/actor_record.js +0 -7
  333. package/dist/src/types/generated/actor_record.js.map +0 -1
  334. package/dist/src/types/generated/agent_record.d.ts +0 -40
  335. package/dist/src/types/generated/agent_record.d.ts.map +0 -1
  336. package/dist/src/types/generated/agent_record.js +0 -7
  337. package/dist/src/types/generated/agent_record.js.map +0 -1
  338. package/dist/src/types/generated/changelog_record.d.ts +0 -100
  339. package/dist/src/types/generated/changelog_record.d.ts.map +0 -1
  340. package/dist/src/types/generated/changelog_record.js +0 -7
  341. package/dist/src/types/generated/changelog_record.js.map +0 -1
  342. package/dist/src/types/generated/cycle_record.d.ts +0 -36
  343. package/dist/src/types/generated/cycle_record.d.ts.map +0 -1
  344. package/dist/src/types/generated/cycle_record.js +0 -7
  345. package/dist/src/types/generated/cycle_record.js.map +0 -1
  346. package/dist/src/types/generated/embedded_metadata.d.ts +0 -94
  347. package/dist/src/types/generated/embedded_metadata.d.ts.map +0 -1
  348. package/dist/src/types/generated/embedded_metadata.js +0 -7
  349. package/dist/src/types/generated/embedded_metadata.js.map +0 -1
  350. package/dist/src/types/generated/execution_record.d.ts +0 -39
  351. package/dist/src/types/generated/execution_record.d.ts.map +0 -1
  352. package/dist/src/types/generated/execution_record.js +0 -7
  353. package/dist/src/types/generated/execution_record.js.map +0 -1
  354. package/dist/src/types/generated/feedback_record.d.ts +0 -43
  355. package/dist/src/types/generated/feedback_record.d.ts.map +0 -1
  356. package/dist/src/types/generated/feedback_record.js +0 -7
  357. package/dist/src/types/generated/feedback_record.js.map +0 -1
  358. package/dist/src/types/generated/index.d.ts +0 -15
  359. package/dist/src/types/generated/index.d.ts.map +0 -1
  360. package/dist/src/types/generated/index.js +0 -15
  361. package/dist/src/types/generated/index.js.map +0 -1
  362. package/dist/src/types/generated/task_record.d.ts +0 -47
  363. package/dist/src/types/generated/task_record.d.ts.map +0 -1
  364. package/dist/src/types/generated/task_record.js +0 -7
  365. package/dist/src/types/generated/task_record.js.map +0 -1
  366. package/dist/src/types/generated/workflow_methodology_record.d.ts +0 -211
  367. package/dist/src/types/generated/workflow_methodology_record.d.ts.map +0 -1
  368. package/dist/src/types/generated/workflow_methodology_record.js +0 -7
  369. package/dist/src/types/generated/workflow_methodology_record.js.map +0 -1
  370. package/dist/src/types/index.d.ts +0 -4
  371. package/dist/src/types/index.d.ts.map +0 -1
  372. package/dist/src/types/index.js +0 -4
  373. package/dist/src/types/index.js.map +0 -1
  374. package/dist/src/utils/id_generator.d.ts +0 -44
  375. package/dist/src/utils/id_generator.d.ts.map +0 -1
  376. package/dist/src/utils/id_generator.js +0 -107
  377. package/dist/src/utils/id_generator.js.map +0 -1
  378. package/dist/src/utils/id_generator.test.d.ts +0 -2
  379. package/dist/src/utils/id_generator.test.d.ts.map +0 -1
  380. package/dist/src/utils/id_generator.test.js +0 -100
  381. package/dist/src/utils/id_generator.test.js.map +0 -1
  382. package/dist/src/utils/index.d.ts +0 -2
  383. package/dist/src/utils/index.d.ts.map +0 -1
  384. package/dist/src/utils/index.js +0 -3
  385. package/dist/src/utils/index.js.map +0 -1
  386. package/dist/src/validation/actor_validator.d.ts +0 -21
  387. package/dist/src/validation/actor_validator.d.ts.map +0 -1
  388. package/dist/src/validation/actor_validator.js +0 -48
  389. package/dist/src/validation/actor_validator.js.map +0 -1
  390. package/dist/src/validation/actor_validator.test.d.ts +0 -2
  391. package/dist/src/validation/actor_validator.test.d.ts.map +0 -1
  392. package/dist/src/validation/actor_validator.test.js +0 -83
  393. package/dist/src/validation/actor_validator.test.js.map +0 -1
  394. package/dist/src/validation/agent_validator.d.ts +0 -30
  395. package/dist/src/validation/agent_validator.d.ts.map +0 -1
  396. package/dist/src/validation/agent_validator.js +0 -66
  397. package/dist/src/validation/agent_validator.js.map +0 -1
  398. package/dist/src/validation/agent_validator.test.d.ts +0 -2
  399. package/dist/src/validation/agent_validator.test.d.ts.map +0 -1
  400. package/dist/src/validation/agent_validator.test.js +0 -73
  401. package/dist/src/validation/agent_validator.test.js.map +0 -1
  402. package/dist/src/validation/changelog_validator.d.ts +0 -23
  403. package/dist/src/validation/changelog_validator.d.ts.map +0 -1
  404. package/dist/src/validation/changelog_validator.js +0 -58
  405. package/dist/src/validation/changelog_validator.js.map +0 -1
  406. package/dist/src/validation/changelog_validator.test.d.ts +0 -2
  407. package/dist/src/validation/changelog_validator.test.d.ts.map +0 -1
  408. package/dist/src/validation/changelog_validator.test.js +0 -401
  409. package/dist/src/validation/changelog_validator.test.js.map +0 -1
  410. package/dist/src/validation/common.d.ts +0 -10
  411. package/dist/src/validation/common.d.ts.map +0 -1
  412. package/dist/src/validation/common.js +0 -12
  413. package/dist/src/validation/common.js.map +0 -1
  414. package/dist/src/validation/cycle_validator.d.ts +0 -24
  415. package/dist/src/validation/cycle_validator.d.ts.map +0 -1
  416. package/dist/src/validation/cycle_validator.js +0 -51
  417. package/dist/src/validation/cycle_validator.js.map +0 -1
  418. package/dist/src/validation/cycle_validator.test.d.ts +0 -2
  419. package/dist/src/validation/cycle_validator.test.d.ts.map +0 -1
  420. package/dist/src/validation/cycle_validator.test.js +0 -182
  421. package/dist/src/validation/cycle_validator.test.js.map +0 -1
  422. package/dist/src/validation/embedded_metadata_validator.d.ts +0 -26
  423. package/dist/src/validation/embedded_metadata_validator.d.ts.map +0 -1
  424. package/dist/src/validation/embedded_metadata_validator.js +0 -122
  425. package/dist/src/validation/embedded_metadata_validator.js.map +0 -1
  426. package/dist/src/validation/embedded_metadata_validator.test.d.ts +0 -2
  427. package/dist/src/validation/embedded_metadata_validator.test.d.ts.map +0 -1
  428. package/dist/src/validation/embedded_metadata_validator.test.js +0 -316
  429. package/dist/src/validation/embedded_metadata_validator.test.js.map +0 -1
  430. package/dist/src/validation/errors.d.ts +0 -67
  431. package/dist/src/validation/errors.d.ts.map +0 -1
  432. package/dist/src/validation/errors.js +0 -83
  433. package/dist/src/validation/errors.js.map +0 -1
  434. package/dist/src/validation/execution_validator.d.ts +0 -23
  435. package/dist/src/validation/execution_validator.d.ts.map +0 -1
  436. package/dist/src/validation/execution_validator.js +0 -58
  437. package/dist/src/validation/execution_validator.js.map +0 -1
  438. package/dist/src/validation/execution_validator.test.d.ts +0 -2
  439. package/dist/src/validation/execution_validator.test.d.ts.map +0 -1
  440. package/dist/src/validation/execution_validator.test.js +0 -167
  441. package/dist/src/validation/execution_validator.test.js.map +0 -1
  442. package/dist/src/validation/feedback_validator.d.ts +0 -23
  443. package/dist/src/validation/feedback_validator.d.ts.map +0 -1
  444. package/dist/src/validation/feedback_validator.js +0 -58
  445. package/dist/src/validation/feedback_validator.js.map +0 -1
  446. package/dist/src/validation/feedback_validator.test.d.ts +0 -2
  447. package/dist/src/validation/feedback_validator.test.d.ts.map +0 -1
  448. package/dist/src/validation/feedback_validator.test.js +0 -131
  449. package/dist/src/validation/feedback_validator.test.js.map +0 -1
  450. package/dist/src/validation/index.d.ts +0 -11
  451. package/dist/src/validation/index.d.ts.map +0 -1
  452. package/dist/src/validation/index.js +0 -10
  453. package/dist/src/validation/index.js.map +0 -1
  454. package/dist/src/validation/task_validator.d.ts +0 -24
  455. package/dist/src/validation/task_validator.d.ts.map +0 -1
  456. package/dist/src/validation/task_validator.js +0 -50
  457. package/dist/src/validation/task_validator.js.map +0 -1
  458. package/dist/src/validation/task_validator.test.d.ts +0 -2
  459. package/dist/src/validation/task_validator.test.d.ts.map +0 -1
  460. package/dist/src/validation/task_validator.test.js +0 -185
  461. package/dist/src/validation/task_validator.test.js.map +0 -1
  462. package/dist/src/validation/workflow_methodology_validator.d.ts +0 -32
  463. package/dist/src/validation/workflow_methodology_validator.d.ts.map +0 -1
  464. package/dist/src/validation/workflow_methodology_validator.js +0 -91
  465. package/dist/src/validation/workflow_methodology_validator.js.map +0 -1
  466. package/dist/src/validation/workflow_methodology_validator.test.d.ts +0 -2
  467. package/dist/src/validation/workflow_methodology_validator.test.d.ts.map +0 -1
  468. package/dist/src/validation/workflow_methodology_validator.test.js +0 -229
  469. package/dist/src/validation/workflow_methodology_validator.test.js.map +0 -1
@@ -1,624 +0,0 @@
1
- import { IdentityAdapter } from './index';
2
- import { RecordStore } from '../../store/record_store';
3
- import { createActorRecord } from '../../factories/actor_factory';
4
- import { validateFullActorRecord } from '../../validation/actor_validator';
5
- import { createAgentRecord } from '../../factories/agent_factory';
6
- import { validateFullAgentRecord } from '../../validation/agent_validator';
7
- import { generateKeys, signPayload } from '../../crypto/signatures';
8
- import { calculatePayloadChecksum } from '../../crypto/checksum';
9
- import { generateActorId } from '../../utils/id_generator';
10
- // Mock all dependencies
11
- jest.mock('../../factories/actor_factory');
12
- jest.mock('../../validation/actor_validator');
13
- jest.mock('../../factories/agent_factory');
14
- jest.mock('../../validation/agent_validator');
15
- jest.mock('../../crypto/signatures');
16
- jest.mock('../../crypto/checksum');
17
- jest.mock('../../utils/id_generator');
18
- const mockedCreateActorRecord = createActorRecord;
19
- const mockedValidateFullActorRecord = validateFullActorRecord;
20
- const mockedCreateAgentRecord = createAgentRecord;
21
- const mockedValidateFullAgentRecord = validateFullAgentRecord;
22
- const mockedGenerateKeys = generateKeys;
23
- const mockedSignPayload = signPayload;
24
- const mockedCalculatePayloadChecksum = calculatePayloadChecksum;
25
- const mockedGenerateActorId = generateActorId;
26
- describe('IdentityAdapter - ActorRecord Operations', () => {
27
- let identityAdapter;
28
- let identityAdapterWithEvents;
29
- let mockActorStore;
30
- let mockAgentStore;
31
- let mockEventBus;
32
- beforeEach(() => {
33
- jest.clearAllMocks();
34
- // Create mock store instances
35
- mockActorStore = {
36
- read: jest.fn(),
37
- write: jest.fn(),
38
- delete: jest.fn(),
39
- list: jest.fn(),
40
- exists: jest.fn(),
41
- };
42
- mockAgentStore = {
43
- read: jest.fn(),
44
- write: jest.fn(),
45
- delete: jest.fn(),
46
- list: jest.fn(),
47
- exists: jest.fn(),
48
- };
49
- // Create mock event bus
50
- mockEventBus = {
51
- publish: jest.fn(),
52
- subscribe: jest.fn().mockReturnValue({ id: 'mock-subscription', eventType: '', handler: jest.fn() }),
53
- unsubscribe: jest.fn().mockReturnValue(true),
54
- getSubscriptions: jest.fn().mockReturnValue([]),
55
- clearSubscriptions: jest.fn(),
56
- };
57
- // Create IdentityAdapter without events (graceful degradation)
58
- identityAdapter = new IdentityAdapter({
59
- actorStore: mockActorStore,
60
- agentStore: mockAgentStore,
61
- });
62
- // Create IdentityAdapter with events
63
- identityAdapterWithEvents = new IdentityAdapter({
64
- actorStore: mockActorStore,
65
- agentStore: mockAgentStore,
66
- eventBus: mockEventBus,
67
- });
68
- });
69
- const sampleActorPayload = {
70
- id: 'human:test-user',
71
- type: 'human',
72
- displayName: 'Test User',
73
- publicKey: 'sample-public-key',
74
- roles: ['author'],
75
- status: 'active'
76
- };
77
- const sampleRecord = {
78
- header: {
79
- version: '1.0',
80
- type: 'actor',
81
- payloadChecksum: 'sample-checksum',
82
- signatures: [{
83
- keyId: 'human:test-user',
84
- role: 'author',
85
- signature: 'sample-signature',
86
- timestamp: 1234567890,
87
- timestamp_iso: '2023-01-01T00:00:00Z'
88
- }]
89
- },
90
- payload: sampleActorPayload
91
- };
92
- describe('getActor', () => {
93
- it('[EARS-1] should return ActorRecord when it exists', async () => {
94
- mockActorStore.read.mockResolvedValue(sampleRecord);
95
- const result = await identityAdapter.getActor('human:test-user');
96
- expect(mockActorStore.read).toHaveBeenCalledWith('human:test-user');
97
- expect(result).toEqual(sampleActorPayload);
98
- });
99
- it('[EARS-2] should return null when ActorRecord does not exist', async () => {
100
- mockActorStore.read.mockResolvedValue(null);
101
- const result = await identityAdapter.getActor('non-existent');
102
- expect(mockActorStore.read).toHaveBeenCalledWith('non-existent');
103
- expect(result).toBeNull();
104
- });
105
- });
106
- describe('listActors', () => {
107
- it('[EARS-3] should return all ActorRecords', async () => {
108
- const actorIds = ['human:user1', 'human:user2'];
109
- const record1 = { ...sampleRecord, payload: { ...sampleActorPayload, id: 'human:user1' } };
110
- const record2 = { ...sampleRecord, payload: { ...sampleActorPayload, id: 'human:user2' } };
111
- mockActorStore.list.mockResolvedValue(actorIds);
112
- mockActorStore.read
113
- .mockResolvedValueOnce(record1)
114
- .mockResolvedValueOnce(record2);
115
- const result = await identityAdapter.listActors();
116
- expect(mockActorStore.list).toHaveBeenCalled();
117
- expect(mockActorStore.read).toHaveBeenCalledTimes(2);
118
- expect(result).toHaveLength(2);
119
- expect(result[0]?.id).toBe('human:user1');
120
- expect(result[1]?.id).toBe('human:user2');
121
- });
122
- it('[EARS-4] should return empty array when no actors exist', async () => {
123
- mockActorStore.list.mockResolvedValue([]);
124
- const result = await identityAdapter.listActors();
125
- expect(mockActorStore.list).toHaveBeenCalled();
126
- expect(result).toEqual([]);
127
- });
128
- });
129
- describe('createActor', () => {
130
- it('[EARS-5] should create a new ActorRecord with generated keys', async () => {
131
- const inputPayload = {
132
- type: 'human',
133
- displayName: 'Test User',
134
- roles: ['author']
135
- };
136
- // Mock all dependencies
137
- mockedGenerateKeys.mockResolvedValue({
138
- publicKey: 'generated-public-key',
139
- privateKey: 'generated-private-key'
140
- });
141
- mockedGenerateActorId.mockReturnValue('human:test-user');
142
- mockedCreateActorRecord.mockResolvedValue(sampleActorPayload);
143
- mockedCalculatePayloadChecksum.mockReturnValue('calculated-checksum');
144
- mockedSignPayload.mockReturnValue({
145
- keyId: 'human:test-user',
146
- role: 'author',
147
- signature: 'generated-signature',
148
- timestamp: 1234567890,
149
- timestamp_iso: '2023-01-01T00:00:00Z'
150
- });
151
- mockedValidateFullActorRecord.mockResolvedValue(undefined);
152
- mockActorStore.write.mockResolvedValue(undefined);
153
- // Suppress console.warn for tests
154
- const originalWarn = console.warn;
155
- console.warn = jest.fn();
156
- const result = await identityAdapter.createActor(inputPayload, 'human:test-user');
157
- expect(mockedGenerateKeys).toHaveBeenCalled();
158
- expect(mockedGenerateActorId).toHaveBeenCalledWith('human', 'Test User');
159
- expect(mockedCreateActorRecord).toHaveBeenCalled();
160
- expect(mockedCalculatePayloadChecksum).toHaveBeenCalled();
161
- expect(mockedSignPayload).toHaveBeenCalled();
162
- expect(mockedValidateFullActorRecord).toHaveBeenCalled();
163
- expect(mockActorStore.write).toHaveBeenCalled();
164
- expect(result).toEqual(sampleActorPayload);
165
- // Restore console.warn
166
- console.warn = originalWarn;
167
- });
168
- it('[EARS-6] should throw error when required fields are missing', async () => {
169
- const invalidPayload = {
170
- type: 'human',
171
- // Missing displayName
172
- };
173
- await expect(identityAdapter.createActor(invalidPayload, 'signer'))
174
- .rejects.toThrow('ActorRecord requires type and displayName');
175
- });
176
- });
177
- describe('revokeActor', () => {
178
- it('[EARS-7] should revoke an existing actor', async () => {
179
- const existingRecord = { ...sampleRecord };
180
- mockActorStore.read.mockResolvedValue(existingRecord);
181
- mockActorStore.write.mockResolvedValue(undefined);
182
- mockedCalculatePayloadChecksum.mockReturnValue('new-checksum');
183
- const result = await identityAdapter.revokeActor('human:test-user');
184
- expect(mockActorStore.read).toHaveBeenCalledWith('human:test-user');
185
- expect(mockActorStore.write).toHaveBeenCalled();
186
- expect(result.status).toBe('revoked');
187
- });
188
- it('[EARS-8] should throw error when actor does not exist', async () => {
189
- mockActorStore.read.mockResolvedValue(null);
190
- await expect(identityAdapter.revokeActor('non-existent'))
191
- .rejects.toThrow('ActorRecord with id non-existent not found');
192
- });
193
- });
194
- describe('signRecord', () => {
195
- it('[EARS-9] should sign record with mock signature in MVP mode', async () => {
196
- const mockRecord = {
197
- header: {
198
- version: '1.0',
199
- type: 'task',
200
- payloadChecksum: 'test',
201
- signatures: [{
202
- keyId: 'initial-signer',
203
- role: 'author',
204
- signature: 'initial-signature',
205
- timestamp: 1234567890,
206
- timestamp_iso: '2023-01-01T00:00:00Z'
207
- }]
208
- },
209
- payload: sampleActorPayload // Use valid ActorRecord payload
210
- };
211
- // Mock actor exists
212
- mockActorStore.read.mockResolvedValue(sampleRecord);
213
- const signedRecord = await identityAdapter.signRecord(mockRecord, 'human:test-user', 'author');
214
- // Should have 2 signatures: original + new mock signature
215
- expect(signedRecord.header.signatures).toHaveLength(2);
216
- // Check the new signature (second one)
217
- const newSignature = signedRecord.header.signatures[1];
218
- expect(newSignature).toBeDefined();
219
- expect(newSignature.keyId).toBe('human:test-user');
220
- expect(newSignature.role).toBe('author');
221
- expect(newSignature.signature).toContain('mock-signature-');
222
- expect(newSignature.timestamp).toBeGreaterThan(0);
223
- expect(newSignature.timestamp_iso).toMatch(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/);
224
- // Check that payload checksum was updated
225
- expect(signedRecord.header.payloadChecksum).toBeDefined();
226
- });
227
- it('[EARS-9] should throw error when actor not found', async () => {
228
- const mockRecord = {
229
- header: {
230
- version: '1.0',
231
- type: 'actor',
232
- payloadChecksum: 'test',
233
- signatures: [{
234
- keyId: 'initial-signer',
235
- role: 'author',
236
- signature: 'initial-signature',
237
- timestamp: 1234567890,
238
- timestamp_iso: '2023-01-01T00:00:00Z'
239
- }]
240
- },
241
- payload: sampleActorPayload
242
- };
243
- mockActorStore.read.mockResolvedValue(null);
244
- await expect(identityAdapter.signRecord(mockRecord, 'non-existent', 'author'))
245
- .rejects.toThrow('Actor not found: non-existent');
246
- });
247
- });
248
- describe('rotateActorKey', () => {
249
- it('[EARS-10] should throw error indicating complex operation not implemented', async () => {
250
- await expect(identityAdapter.rotateActorKey('human:test-user'))
251
- .rejects.toThrow('rotateActorKey not implemented yet - complex operation');
252
- });
253
- });
254
- describe('authenticate', () => {
255
- it('[EARS-11] should log warning for unimplemented method', async () => {
256
- const originalWarn = console.warn;
257
- console.warn = jest.fn();
258
- await identityAdapter.authenticate('test-token');
259
- expect(console.warn).toHaveBeenCalledWith('authenticate not fully implemented yet');
260
- console.warn = originalWarn;
261
- });
262
- });
263
- describe('AgentRecord operations', () => {
264
- const sampleAgentPayload = {
265
- id: 'agent:test-agent',
266
- guild: 'design',
267
- status: 'active',
268
- engine: { type: 'local', runtime: 'typescript', entrypoint: 'test.ts', function: 'run' },
269
- triggers: [{ type: 'manual' }],
270
- knowledge_dependencies: [],
271
- prompt_engine_requirements: {}
272
- };
273
- const sampleAgentRecord = {
274
- header: {
275
- version: '1.0',
276
- type: 'agent',
277
- payloadChecksum: 'sample-agent-checksum',
278
- signatures: [{
279
- keyId: 'agent:test-agent',
280
- role: 'author',
281
- signature: 'sample-agent-signature',
282
- timestamp: 1234567890,
283
- timestamp_iso: '2023-01-01T00:00:00Z'
284
- }]
285
- },
286
- payload: sampleAgentPayload
287
- };
288
- const correspondingActorPayload = {
289
- id: 'agent:test-agent',
290
- type: 'agent',
291
- displayName: 'Test Agent',
292
- publicKey: 'agent-public-key',
293
- roles: ['author'],
294
- status: 'active'
295
- };
296
- const correspondingActorRecord = {
297
- header: {
298
- version: '1.0',
299
- type: 'actor',
300
- payloadChecksum: 'actor-checksum',
301
- signatures: [{ keyId: 'agent:test-agent', role: 'author', signature: 'sig', timestamp: 123, timestamp_iso: '' }]
302
- },
303
- payload: correspondingActorPayload
304
- };
305
- describe('getAgentRecord', () => {
306
- it('[EARS-12] should return AgentRecord when it exists', async () => {
307
- mockAgentStore.read.mockResolvedValue(sampleAgentRecord);
308
- const result = await identityAdapter.getAgentRecord('agent:test-agent');
309
- expect(mockAgentStore.read).toHaveBeenCalledWith('agent:test-agent');
310
- expect(result).toEqual(sampleAgentPayload);
311
- });
312
- it('[EARS-13] should return null when AgentRecord does not exist', async () => {
313
- mockAgentStore.read.mockResolvedValue(null);
314
- const result = await identityAdapter.getAgentRecord('agent:non-existent');
315
- expect(mockAgentStore.read).toHaveBeenCalledWith('agent:non-existent');
316
- expect(result).toBeNull();
317
- });
318
- });
319
- describe('listAgentRecords', () => {
320
- it('[EARS-14] should return all AgentRecords', async () => {
321
- const agentIds = ['agent:agent1', 'agent:agent2'];
322
- const record1 = { ...sampleAgentRecord, payload: { ...sampleAgentPayload, id: 'agent:agent1' } };
323
- const record2 = { ...sampleAgentRecord, payload: { ...sampleAgentPayload, id: 'agent:agent2' } };
324
- mockAgentStore.list.mockResolvedValue(agentIds);
325
- mockAgentStore.read
326
- .mockResolvedValueOnce(record1)
327
- .mockResolvedValueOnce(record2);
328
- const result = await identityAdapter.listAgentRecords();
329
- expect(mockAgentStore.list).toHaveBeenCalled();
330
- expect(mockAgentStore.read).toHaveBeenCalledTimes(2);
331
- expect(result).toHaveLength(2);
332
- expect(result[0]?.id).toBe('agent:agent1');
333
- expect(result[1]?.id).toBe('agent:agent2');
334
- });
335
- it('[EARS-15] should return empty array when no agents exist', async () => {
336
- mockAgentStore.list.mockResolvedValue([]);
337
- const result = await identityAdapter.listAgentRecords();
338
- expect(mockAgentStore.list).toHaveBeenCalled();
339
- expect(result).toEqual([]);
340
- });
341
- });
342
- describe('createAgentRecord', () => {
343
- it('[EARS-16] should create a new AgentRecord when corresponding ActorRecord exists', async () => {
344
- const inputPayload = {
345
- id: 'agent:test-agent',
346
- guild: 'design',
347
- engine: { type: 'local', runtime: 'typescript', entrypoint: 'test.ts', function: 'run' }
348
- };
349
- // Mock dependencies
350
- mockActorStore.read.mockResolvedValue(correspondingActorRecord);
351
- mockedCreateAgentRecord.mockResolvedValue(sampleAgentPayload);
352
- mockedCalculatePayloadChecksum.mockReturnValue('calculated-agent-checksum');
353
- mockedSignPayload.mockReturnValue({
354
- keyId: 'agent:test-agent',
355
- role: 'author',
356
- signature: 'generated-agent-signature',
357
- timestamp: 1234567890,
358
- timestamp_iso: '2023-01-01T00:00:00Z'
359
- });
360
- mockedValidateFullAgentRecord.mockResolvedValue(undefined);
361
- mockAgentStore.write.mockResolvedValue(undefined);
362
- const result = await identityAdapter.createAgentRecord(inputPayload);
363
- expect(mockActorStore.read).toHaveBeenCalledWith('agent:test-agent');
364
- expect(mockedCreateAgentRecord).toHaveBeenCalled();
365
- expect(mockedCalculatePayloadChecksum).toHaveBeenCalled();
366
- expect(mockedSignPayload).toHaveBeenCalled();
367
- expect(mockedValidateFullAgentRecord).toHaveBeenCalled();
368
- expect(mockAgentStore.write).toHaveBeenCalled();
369
- expect(result).toEqual(sampleAgentPayload);
370
- });
371
- it('[EARS-17] should throw error when required fields are missing', async () => {
372
- const invalidPayload = {
373
- id: 'agent:test-agent',
374
- // Missing guild and engine
375
- };
376
- await expect(identityAdapter.createAgentRecord(invalidPayload))
377
- .rejects.toThrow('AgentRecord requires id, guild and engine');
378
- });
379
- it('[EARS-18] should throw error when corresponding ActorRecord does not exist', async () => {
380
- const inputPayload = {
381
- id: 'agent:non-existent',
382
- guild: 'design',
383
- engine: { type: 'local' }
384
- };
385
- mockActorStore.read.mockResolvedValue(null);
386
- await expect(identityAdapter.createAgentRecord(inputPayload))
387
- .rejects.toThrow('ActorRecord with id agent:non-existent not found. AgentRecord can only be created for existing ActorRecord.');
388
- });
389
- it('[EARS-19] should throw error when ActorRecord is not of type agent', async () => {
390
- const inputPayload = {
391
- id: 'human:test-user',
392
- guild: 'design',
393
- engine: { type: 'local' }
394
- };
395
- const humanActorRecord = {
396
- ...correspondingActorRecord,
397
- payload: { ...correspondingActorPayload, id: 'human:test-user', type: 'human' }
398
- };
399
- mockActorStore.read.mockResolvedValue(humanActorRecord);
400
- await expect(identityAdapter.createAgentRecord(inputPayload))
401
- .rejects.toThrow('ActorRecord with id human:test-user must be of type \'agent\' to create AgentRecord.');
402
- });
403
- });
404
- });
405
- describe('resolveCurrentActorId', () => {
406
- it('[EARS-20] should return same ID for active actor', async () => {
407
- const activeActor = { ...sampleActorPayload, status: 'active' };
408
- mockActorStore.read.mockResolvedValue({
409
- ...sampleRecord,
410
- payload: activeActor
411
- });
412
- const result = await identityAdapter.resolveCurrentActorId('human:test-user');
413
- expect(result).toBe('human:test-user');
414
- expect(mockActorStore.read).toHaveBeenCalledWith('human:test-user');
415
- });
416
- it('[EARS-21] should follow succession chain for revoked actor', async () => {
417
- const revokedActor = {
418
- ...sampleActorPayload,
419
- status: 'revoked',
420
- supersededBy: 'human:test-user-v2'
421
- };
422
- const newActiveActor = {
423
- ...sampleActorPayload,
424
- id: 'human:test-user-v2',
425
- status: 'active'
426
- };
427
- mockActorStore.read
428
- .mockResolvedValueOnce({
429
- ...sampleRecord,
430
- payload: revokedActor
431
- })
432
- .mockResolvedValueOnce({
433
- ...sampleRecord,
434
- payload: newActiveActor
435
- });
436
- const result = await identityAdapter.resolveCurrentActorId('human:test-user');
437
- expect(result).toBe('human:test-user-v2');
438
- expect(mockActorStore.read).toHaveBeenCalledTimes(2);
439
- expect(mockActorStore.read).toHaveBeenNthCalledWith(1, 'human:test-user');
440
- expect(mockActorStore.read).toHaveBeenNthCalledWith(2, 'human:test-user-v2');
441
- });
442
- it('[EARS-22] should follow long succession chain', async () => {
443
- const actor1 = { ...sampleActorPayload, status: 'revoked', supersededBy: 'human:test-user-v2' };
444
- const actor2 = { ...sampleActorPayload, id: 'human:test-user-v2', status: 'revoked', supersededBy: 'human:test-user-v3' };
445
- const actor3 = { ...sampleActorPayload, id: 'human:test-user-v3', status: 'active' };
446
- mockActorStore.read
447
- .mockResolvedValueOnce({ ...sampleRecord, payload: actor1 })
448
- .mockResolvedValueOnce({ ...sampleRecord, payload: actor2 })
449
- .mockResolvedValueOnce({ ...sampleRecord, payload: actor3 });
450
- const result = await identityAdapter.resolveCurrentActorId('human:test-user');
451
- expect(result).toBe('human:test-user-v3');
452
- expect(mockActorStore.read).toHaveBeenCalledTimes(3);
453
- });
454
- });
455
- describe('getEffectiveActorForAgent', () => {
456
- it('[EARS-23] should return effective actor for agent with succession', async () => {
457
- // Test the method by mocking resolveCurrentActorId and getActor separately
458
- const newActiveAgentActor = {
459
- ...sampleActorPayload,
460
- id: 'agent:test-agent-v2',
461
- type: 'agent',
462
- status: 'active'
463
- };
464
- // Spy on the methods to control their behavior
465
- jest.spyOn(identityAdapter, 'resolveCurrentActorId')
466
- .mockResolvedValue('agent:test-agent-v2');
467
- jest.spyOn(identityAdapter, 'getActor')
468
- .mockResolvedValue(newActiveAgentActor);
469
- const result = await identityAdapter.getEffectiveActorForAgent('agent:test-agent');
470
- expect(result).toEqual(newActiveAgentActor);
471
- expect(result?.id).toBe('agent:test-agent-v2');
472
- expect(result?.status).toBe('active');
473
- // Verify the method calls
474
- expect(identityAdapter.resolveCurrentActorId).toHaveBeenCalledWith('agent:test-agent');
475
- expect(identityAdapter.getActor).toHaveBeenCalledWith('agent:test-agent-v2');
476
- });
477
- });
478
- describe('getCurrentActor', () => {
479
- it('[EARS-24] should return actor from valid session resolving succession chain', async () => {
480
- // Since the real ConfigManager is being used and returns 'human:camilo',
481
- // we test with the actual session data
482
- jest.spyOn(identityAdapter, 'resolveCurrentActorId')
483
- .mockResolvedValue('human:camilo');
484
- jest.spyOn(identityAdapter, 'getActor')
485
- .mockResolvedValue(sampleActorPayload);
486
- const result = await identityAdapter.getCurrentActor();
487
- expect(result).toEqual(sampleActorPayload);
488
- expect(identityAdapter.resolveCurrentActorId).toHaveBeenCalledWith('human:camilo');
489
- expect(identityAdapter.getActor).toHaveBeenCalledWith('human:camilo');
490
- });
491
- it('[EARS-25] should return first active actor when no valid session', async () => {
492
- // Mock ConfigManager with no session
493
- const mockConfigManager = {
494
- loadSession: jest.fn().mockResolvedValue(null)
495
- };
496
- jest.doMock('../../config_manager', () => ({
497
- ConfigManager: jest.fn().mockImplementation(() => mockConfigManager)
498
- }));
499
- // Mock listActors to return active actor
500
- jest.spyOn(identityAdapter, 'listActors')
501
- .mockResolvedValue([
502
- { ...sampleActorPayload, status: 'revoked' },
503
- { ...sampleActorPayload, id: 'human:active-user', status: 'active' }
504
- ]);
505
- const result = await identityAdapter.getCurrentActor();
506
- expect(result.id).toBe('human:active-user');
507
- expect(result.status).toBe('active');
508
- });
509
- it('[EARS-26] should throw error when no active actors exist', async () => {
510
- // Mock ConfigManager with no session
511
- const mockConfigManager = {
512
- loadSession: jest.fn().mockResolvedValue(null)
513
- };
514
- jest.doMock('../../config_manager', () => ({
515
- ConfigManager: jest.fn().mockImplementation(() => mockConfigManager)
516
- }));
517
- // Mock listActors to return only revoked actors
518
- jest.spyOn(identityAdapter, 'listActors')
519
- .mockResolvedValue([
520
- { ...sampleActorPayload, status: 'revoked' },
521
- { ...sampleActorPayload, id: 'human:revoked-2', status: 'revoked' }
522
- ]);
523
- await expect(identityAdapter.getCurrentActor())
524
- .rejects.toThrow("❌ No active actors found. Run 'gitgov init' first.");
525
- });
526
- });
527
- describe('Event Emission', () => {
528
- it('should emit actor.created event when creating actor with eventBus', async () => {
529
- const inputPayload = {
530
- type: 'human',
531
- displayName: 'Test User',
532
- roles: ['author']
533
- };
534
- // Mock dependencies
535
- mockedGenerateKeys.mockResolvedValue({
536
- publicKey: 'generated-public-key',
537
- privateKey: 'generated-private-key'
538
- });
539
- mockedGenerateActorId.mockReturnValue('human:test-user');
540
- mockedCreateActorRecord.mockResolvedValue(sampleActorPayload);
541
- mockedCalculatePayloadChecksum.mockReturnValue('calculated-checksum');
542
- mockedSignPayload.mockReturnValue({
543
- keyId: 'human:test-user',
544
- role: 'author',
545
- signature: 'generated-signature',
546
- timestamp: 1234567890,
547
- timestamp_iso: '2023-01-01T00:00:00Z'
548
- });
549
- mockedValidateFullActorRecord.mockResolvedValue(undefined);
550
- mockActorStore.write.mockResolvedValue(undefined);
551
- mockActorStore.list.mockResolvedValue(['human:test-user']); // Only one actor (bootstrap)
552
- // Suppress console.warn for tests
553
- const originalWarn = console.warn;
554
- console.warn = jest.fn();
555
- await identityAdapterWithEvents.createActor(inputPayload, 'human:test-user');
556
- // Verify event was published
557
- expect(mockEventBus.publish).toHaveBeenCalledWith({
558
- type: 'identity.actor.created',
559
- timestamp: expect.any(Number),
560
- source: 'identity_adapter',
561
- payload: {
562
- actorId: 'human:test-user',
563
- type: 'human',
564
- publicKey: 'sample-public-key',
565
- roles: ['author'],
566
- isBootstrap: true,
567
- },
568
- });
569
- console.warn = originalWarn;
570
- });
571
- it('should emit actor.revoked event when revoking actor with eventBus', async () => {
572
- const existingRecord = { ...sampleRecord };
573
- mockActorStore.read.mockResolvedValue(existingRecord);
574
- mockActorStore.write.mockResolvedValue(undefined);
575
- mockedCalculatePayloadChecksum.mockReturnValue('new-checksum');
576
- await identityAdapterWithEvents.revokeActor('human:test-user', 'admin', 'manual', 'human:test-user-v2');
577
- // Verify event was published
578
- expect(mockEventBus.publish).toHaveBeenCalledWith({
579
- type: 'identity.actor.revoked',
580
- timestamp: expect.any(Number),
581
- source: 'identity_adapter',
582
- payload: {
583
- actorId: 'human:test-user',
584
- revokedBy: 'admin',
585
- supersededBy: 'human:test-user-v2',
586
- revocationReason: 'manual',
587
- },
588
- });
589
- });
590
- it('should not emit events when eventBus is not provided (graceful degradation)', async () => {
591
- const inputPayload = {
592
- type: 'human',
593
- displayName: 'Test User',
594
- roles: ['author']
595
- };
596
- // Mock dependencies
597
- mockedGenerateKeys.mockResolvedValue({
598
- publicKey: 'generated-public-key',
599
- privateKey: 'generated-private-key'
600
- });
601
- mockedGenerateActorId.mockReturnValue('human:test-user');
602
- mockedCreateActorRecord.mockResolvedValue(sampleActorPayload);
603
- mockedCalculatePayloadChecksum.mockReturnValue('calculated-checksum');
604
- mockedSignPayload.mockReturnValue({
605
- keyId: 'human:test-user',
606
- role: 'author',
607
- signature: 'generated-signature',
608
- timestamp: 1234567890,
609
- timestamp_iso: '2023-01-01T00:00:00Z'
610
- });
611
- mockedValidateFullActorRecord.mockResolvedValue(undefined);
612
- mockActorStore.write.mockResolvedValue(undefined);
613
- // Suppress console.warn for tests
614
- const originalWarn = console.warn;
615
- console.warn = jest.fn();
616
- // Use adapter WITHOUT eventBus
617
- await identityAdapter.createActor(inputPayload, 'human:test-user');
618
- // Verify no events were published (graceful degradation)
619
- expect(mockEventBus.publish).not.toHaveBeenCalled();
620
- console.warn = originalWarn;
621
- });
622
- });
623
- });
624
- //# sourceMappingURL=identity_adapter.test.js.map