@jini-ai/cms 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 (527) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +84 -0
  3. package/dist/content-types/agent-tools.d.ts +65 -0
  4. package/dist/content-types/agent-tools.d.ts.map +1 -0
  5. package/dist/content-types/agent-tools.js +172 -0
  6. package/dist/content-types/agent-tools.js.map +1 -0
  7. package/dist/content-types/cleanup.d.ts +118 -0
  8. package/dist/content-types/cleanup.d.ts.map +1 -0
  9. package/dist/content-types/cleanup.js +65 -0
  10. package/dist/content-types/cleanup.js.map +1 -0
  11. package/dist/content-types/errors.d.ts +90 -0
  12. package/dist/content-types/errors.d.ts.map +1 -0
  13. package/dist/content-types/errors.js +119 -0
  14. package/dist/content-types/errors.js.map +1 -0
  15. package/dist/content-types/field-defs.d.ts +25 -0
  16. package/dist/content-types/field-defs.d.ts.map +1 -0
  17. package/dist/content-types/field-defs.js +155 -0
  18. package/dist/content-types/field-defs.js.map +1 -0
  19. package/dist/content-types/index-provisioning.d.ts +94 -0
  20. package/dist/content-types/index-provisioning.d.ts.map +1 -0
  21. package/dist/content-types/index-provisioning.js +133 -0
  22. package/dist/content-types/index-provisioning.js.map +1 -0
  23. package/dist/content-types/index.d.ts +63 -0
  24. package/dist/content-types/index.d.ts.map +1 -0
  25. package/dist/content-types/index.js +36 -0
  26. package/dist/content-types/index.js.map +1 -0
  27. package/dist/content-types/lifecycle-dispatch.d.ts +38 -0
  28. package/dist/content-types/lifecycle-dispatch.d.ts.map +1 -0
  29. package/dist/content-types/lifecycle-dispatch.js +28 -0
  30. package/dist/content-types/lifecycle-dispatch.js.map +1 -0
  31. package/dist/content-types/lifecycle.d.ts +104 -0
  32. package/dist/content-types/lifecycle.d.ts.map +1 -0
  33. package/dist/content-types/lifecycle.js +143 -0
  34. package/dist/content-types/lifecycle.js.map +1 -0
  35. package/dist/content-types/list.d.ts +44 -0
  36. package/dist/content-types/list.d.ts.map +1 -0
  37. package/dist/content-types/list.js +13 -0
  38. package/dist/content-types/list.js.map +1 -0
  39. package/dist/content-types/repo.memory.d.ts +72 -0
  40. package/dist/content-types/repo.memory.d.ts.map +1 -0
  41. package/dist/content-types/repo.memory.js +71 -0
  42. package/dist/content-types/repo.memory.js.map +1 -0
  43. package/dist/content-types/tool-registrations.d.ts +65 -0
  44. package/dist/content-types/tool-registrations.d.ts.map +1 -0
  45. package/dist/content-types/tool-registrations.js +180 -0
  46. package/dist/content-types/tool-registrations.js.map +1 -0
  47. package/dist/content-types/types.d.ts +78 -0
  48. package/dist/content-types/types.d.ts.map +1 -0
  49. package/dist/content-types/types.js +32 -0
  50. package/dist/content-types/types.js.map +1 -0
  51. package/dist/content-types/write-service.d.ts +141 -0
  52. package/dist/content-types/write-service.d.ts.map +1 -0
  53. package/dist/content-types/write-service.js +180 -0
  54. package/dist/content-types/write-service.js.map +1 -0
  55. package/dist/core/commands/change-set.d.ts +98 -0
  56. package/dist/core/commands/change-set.d.ts.map +1 -0
  57. package/dist/core/commands/change-set.js +2 -0
  58. package/dist/core/commands/change-set.js.map +1 -0
  59. package/dist/core/commands/command.d.ts +168 -0
  60. package/dist/core/commands/command.d.ts.map +1 -0
  61. package/dist/core/commands/command.js +173 -0
  62. package/dist/core/commands/command.js.map +1 -0
  63. package/dist/core/index.d.ts +45 -0
  64. package/dist/core/index.d.ts.map +1 -0
  65. package/dist/core/index.js +43 -0
  66. package/dist/core/index.js.map +1 -0
  67. package/dist/core/ports.d.ts +139 -0
  68. package/dist/core/ports.d.ts.map +1 -0
  69. package/dist/core/ports.js +2 -0
  70. package/dist/core/ports.js.map +1 -0
  71. package/dist/core/tools/registration-kit.d.ts +308 -0
  72. package/dist/core/tools/registration-kit.d.ts.map +1 -0
  73. package/dist/core/tools/registration-kit.js +381 -0
  74. package/dist/core/tools/registration-kit.js.map +1 -0
  75. package/dist/entries/agent-tools.d.ts +78 -0
  76. package/dist/entries/agent-tools.d.ts.map +1 -0
  77. package/dist/entries/agent-tools.js +158 -0
  78. package/dist/entries/agent-tools.js.map +1 -0
  79. package/dist/entries/errors.d.ts +43 -0
  80. package/dist/entries/errors.d.ts.map +1 -0
  81. package/dist/entries/errors.js +59 -0
  82. package/dist/entries/errors.js.map +1 -0
  83. package/dist/entries/field-validation.d.ts +70 -0
  84. package/dist/entries/field-validation.d.ts.map +1 -0
  85. package/dist/entries/field-validation.js +87 -0
  86. package/dist/entries/field-validation.js.map +1 -0
  87. package/dist/entries/index.d.ts +55 -0
  88. package/dist/entries/index.d.ts.map +1 -0
  89. package/dist/entries/index.js +38 -0
  90. package/dist/entries/index.js.map +1 -0
  91. package/dist/entries/lifecycle-dispatch.d.ts +15 -0
  92. package/dist/entries/lifecycle-dispatch.d.ts.map +1 -0
  93. package/dist/entries/lifecycle-dispatch.js +16 -0
  94. package/dist/entries/lifecycle-dispatch.js.map +1 -0
  95. package/dist/entries/list.d.ts +47 -0
  96. package/dist/entries/list.d.ts.map +1 -0
  97. package/dist/entries/list.js +12 -0
  98. package/dist/entries/list.js.map +1 -0
  99. package/dist/entries/repo.memory.d.ts +64 -0
  100. package/dist/entries/repo.memory.d.ts.map +1 -0
  101. package/dist/entries/repo.memory.js +73 -0
  102. package/dist/entries/repo.memory.js.map +1 -0
  103. package/dist/entries/tool-registrations.d.ts +52 -0
  104. package/dist/entries/tool-registrations.d.ts.map +1 -0
  105. package/dist/entries/tool-registrations.js +141 -0
  106. package/dist/entries/tool-registrations.js.map +1 -0
  107. package/dist/entries/types.d.ts +55 -0
  108. package/dist/entries/types.d.ts.map +1 -0
  109. package/dist/entries/types.js +2 -0
  110. package/dist/entries/types.js.map +1 -0
  111. package/dist/entries/write-service.d.ts +202 -0
  112. package/dist/entries/write-service.d.ts.map +1 -0
  113. package/dist/entries/write-service.js +204 -0
  114. package/dist/entries/write-service.js.map +1 -0
  115. package/dist/identity/admin-crud-service.d.ts +252 -0
  116. package/dist/identity/admin-crud-service.d.ts.map +1 -0
  117. package/dist/identity/admin-crud-service.js +437 -0
  118. package/dist/identity/admin-crud-service.js.map +1 -0
  119. package/dist/identity/agent-tool-input.d.ts +58 -0
  120. package/dist/identity/agent-tool-input.d.ts.map +1 -0
  121. package/dist/identity/agent-tool-input.js +126 -0
  122. package/dist/identity/agent-tool-input.js.map +1 -0
  123. package/dist/identity/agent-tools.d.ts +101 -0
  124. package/dist/identity/agent-tools.d.ts.map +1 -0
  125. package/dist/identity/agent-tools.js +290 -0
  126. package/dist/identity/agent-tools.js.map +1 -0
  127. package/dist/identity/auth-service.d.ts +87 -0
  128. package/dist/identity/auth-service.d.ts.map +1 -0
  129. package/dist/identity/auth-service.js +141 -0
  130. package/dist/identity/auth-service.js.map +1 -0
  131. package/dist/identity/authorize.d.ts +90 -0
  132. package/dist/identity/authorize.d.ts.map +1 -0
  133. package/dist/identity/authorize.js +94 -0
  134. package/dist/identity/authorize.js.map +1 -0
  135. package/dist/identity/grant-service.d.ts +198 -0
  136. package/dist/identity/grant-service.d.ts.map +1 -0
  137. package/dist/identity/grant-service.js +361 -0
  138. package/dist/identity/grant-service.js.map +1 -0
  139. package/dist/identity/hasher.d.ts +39 -0
  140. package/dist/identity/hasher.d.ts.map +1 -0
  141. package/dist/identity/hasher.js +39 -0
  142. package/dist/identity/hasher.js.map +1 -0
  143. package/dist/identity/index.d.ts +59 -0
  144. package/dist/identity/index.d.ts.map +1 -0
  145. package/dist/identity/index.js +51 -0
  146. package/dist/identity/index.js.map +1 -0
  147. package/dist/identity/password-policy.d.ts +58 -0
  148. package/dist/identity/password-policy.d.ts.map +1 -0
  149. package/dist/identity/password-policy.js +67 -0
  150. package/dist/identity/password-policy.js.map +1 -0
  151. package/dist/identity/permission-migrations.d.ts +86 -0
  152. package/dist/identity/permission-migrations.d.ts.map +1 -0
  153. package/dist/identity/permission-migrations.js +67 -0
  154. package/dist/identity/permission-migrations.js.map +1 -0
  155. package/dist/identity/permissions.d.ts +35 -0
  156. package/dist/identity/permissions.d.ts.map +1 -0
  157. package/dist/identity/permissions.js +603 -0
  158. package/dist/identity/permissions.js.map +1 -0
  159. package/dist/identity/ports.d.ts +201 -0
  160. package/dist/identity/ports.d.ts.map +1 -0
  161. package/dist/identity/ports.js +2 -0
  162. package/dist/identity/ports.js.map +1 -0
  163. package/dist/identity/repo.memory.d.ts +164 -0
  164. package/dist/identity/repo.memory.d.ts.map +1 -0
  165. package/dist/identity/repo.memory.js +224 -0
  166. package/dist/identity/repo.memory.js.map +1 -0
  167. package/dist/identity/seed.d.ts +42 -0
  168. package/dist/identity/seed.d.ts.map +1 -0
  169. package/dist/identity/seed.js +277 -0
  170. package/dist/identity/seed.js.map +1 -0
  171. package/dist/identity/tool-registrations.d.ts +50 -0
  172. package/dist/identity/tool-registrations.d.ts.map +1 -0
  173. package/dist/identity/tool-registrations.js +419 -0
  174. package/dist/identity/tool-registrations.js.map +1 -0
  175. package/dist/identity/types.d.ts +185 -0
  176. package/dist/identity/types.d.ts.map +1 -0
  177. package/dist/identity/types.js +64 -0
  178. package/dist/identity/types.js.map +1 -0
  179. package/dist/identity/username.d.ts +12 -0
  180. package/dist/identity/username.d.ts.map +1 -0
  181. package/dist/identity/username.js +14 -0
  182. package/dist/identity/username.js.map +1 -0
  183. package/dist/media/agent-tools.d.ts +66 -0
  184. package/dist/media/agent-tools.d.ts.map +1 -0
  185. package/dist/media/agent-tools.js +131 -0
  186. package/dist/media/agent-tools.js.map +1 -0
  187. package/dist/media/blob-gc-lock.d.ts +37 -0
  188. package/dist/media/blob-gc-lock.d.ts.map +1 -0
  189. package/dist/media/blob-gc-lock.js +55 -0
  190. package/dist/media/blob-gc-lock.js.map +1 -0
  191. package/dist/media/blob-gc.d.ts +246 -0
  192. package/dist/media/blob-gc.d.ts.map +1 -0
  193. package/dist/media/blob-gc.js +254 -0
  194. package/dist/media/blob-gc.js.map +1 -0
  195. package/dist/media/blob-key.d.ts +28 -0
  196. package/dist/media/blob-key.d.ts.map +1 -0
  197. package/dist/media/blob-key.js +11 -0
  198. package/dist/media/blob-key.js.map +1 -0
  199. package/dist/media/blob-store.fs.d.ts +23 -0
  200. package/dist/media/blob-store.fs.d.ts.map +1 -0
  201. package/dist/media/blob-store.fs.js +48 -0
  202. package/dist/media/blob-store.fs.js.map +1 -0
  203. package/dist/media/blob-store.memory.d.ts +22 -0
  204. package/dist/media/blob-store.memory.d.ts.map +1 -0
  205. package/dist/media/blob-store.memory.js +23 -0
  206. package/dist/media/blob-store.memory.js.map +1 -0
  207. package/dist/media/content-type-sniffer.d.ts +49 -0
  208. package/dist/media/content-type-sniffer.d.ts.map +1 -0
  209. package/dist/media/content-type-sniffer.js +141 -0
  210. package/dist/media/content-type-sniffer.js.map +1 -0
  211. package/dist/media/image-transformer.d.ts +45 -0
  212. package/dist/media/image-transformer.d.ts.map +1 -0
  213. package/dist/media/image-transformer.js +23 -0
  214. package/dist/media/image-transformer.js.map +1 -0
  215. package/dist/media/image-transformer.sharp.d.ts +26 -0
  216. package/dist/media/image-transformer.sharp.d.ts.map +1 -0
  217. package/dist/media/image-transformer.sharp.js +91 -0
  218. package/dist/media/image-transformer.sharp.js.map +1 -0
  219. package/dist/media/index.d.ts +43 -0
  220. package/dist/media/index.d.ts.map +1 -0
  221. package/dist/media/index.js +31 -0
  222. package/dist/media/index.js.map +1 -0
  223. package/dist/media/media-service.d.ts +244 -0
  224. package/dist/media/media-service.d.ts.map +1 -0
  225. package/dist/media/media-service.js +345 -0
  226. package/dist/media/media-service.js.map +1 -0
  227. package/dist/media/ports.d.ts +142 -0
  228. package/dist/media/ports.d.ts.map +1 -0
  229. package/dist/media/ports.js +2 -0
  230. package/dist/media/ports.js.map +1 -0
  231. package/dist/media/rendition-service.d.ts +66 -0
  232. package/dist/media/rendition-service.d.ts.map +1 -0
  233. package/dist/media/rendition-service.js +135 -0
  234. package/dist/media/rendition-service.js.map +1 -0
  235. package/dist/media/repo.memory.d.ts +107 -0
  236. package/dist/media/repo.memory.d.ts.map +1 -0
  237. package/dist/media/repo.memory.js +131 -0
  238. package/dist/media/repo.memory.js.map +1 -0
  239. package/dist/media/tool-registrations.d.ts +42 -0
  240. package/dist/media/tool-registrations.d.ts.map +1 -0
  241. package/dist/media/tool-registrations.js +121 -0
  242. package/dist/media/tool-registrations.js.map +1 -0
  243. package/dist/media/transform-lock.d.ts +36 -0
  244. package/dist/media/transform-lock.d.ts.map +1 -0
  245. package/dist/media/transform-lock.js +50 -0
  246. package/dist/media/transform-lock.js.map +1 -0
  247. package/dist/media/transform-registry.d.ts +103 -0
  248. package/dist/media/transform-registry.d.ts.map +1 -0
  249. package/dist/media/transform-registry.js +87 -0
  250. package/dist/media/transform-registry.js.map +1 -0
  251. package/dist/media/transform-types.d.ts +82 -0
  252. package/dist/media/transform-types.d.ts.map +1 -0
  253. package/dist/media/transform-types.js +47 -0
  254. package/dist/media/transform-types.js.map +1 -0
  255. package/dist/media/types.d.ts +150 -0
  256. package/dist/media/types.d.ts.map +1 -0
  257. package/dist/media/types.js +26 -0
  258. package/dist/media/types.js.map +1 -0
  259. package/dist/navigation/agent-tools.d.ts +90 -0
  260. package/dist/navigation/agent-tools.d.ts.map +1 -0
  261. package/dist/navigation/agent-tools.js +225 -0
  262. package/dist/navigation/agent-tools.js.map +1 -0
  263. package/dist/navigation/contracts.d.ts +98 -0
  264. package/dist/navigation/contracts.d.ts.map +1 -0
  265. package/dist/navigation/contracts.js +70 -0
  266. package/dist/navigation/contracts.js.map +1 -0
  267. package/dist/navigation/index.d.ts +39 -0
  268. package/dist/navigation/index.d.ts.map +1 -0
  269. package/dist/navigation/index.js +30 -0
  270. package/dist/navigation/index.js.map +1 -0
  271. package/dist/navigation/menu-service.d.ts +256 -0
  272. package/dist/navigation/menu-service.d.ts.map +1 -0
  273. package/dist/navigation/menu-service.js +382 -0
  274. package/dist/navigation/menu-service.js.map +1 -0
  275. package/dist/navigation/ports.d.ts +147 -0
  276. package/dist/navigation/ports.d.ts.map +1 -0
  277. package/dist/navigation/ports.js +2 -0
  278. package/dist/navigation/ports.js.map +1 -0
  279. package/dist/navigation/read-model.d.ts +11 -0
  280. package/dist/navigation/read-model.d.ts.map +1 -0
  281. package/dist/navigation/read-model.js +27 -0
  282. package/dist/navigation/read-model.js.map +1 -0
  283. package/dist/navigation/reconcile.d.ts +57 -0
  284. package/dist/navigation/reconcile.d.ts.map +1 -0
  285. package/dist/navigation/reconcile.js +33 -0
  286. package/dist/navigation/reconcile.js.map +1 -0
  287. package/dist/navigation/repo.memory.d.ts +137 -0
  288. package/dist/navigation/repo.memory.d.ts.map +1 -0
  289. package/dist/navigation/repo.memory.js +95 -0
  290. package/dist/navigation/repo.memory.js.map +1 -0
  291. package/dist/navigation/resolver.d.ts +110 -0
  292. package/dist/navigation/resolver.d.ts.map +1 -0
  293. package/dist/navigation/resolver.js +131 -0
  294. package/dist/navigation/resolver.js.map +1 -0
  295. package/dist/navigation/tool-registrations.d.ts +43 -0
  296. package/dist/navigation/tool-registrations.d.ts.map +1 -0
  297. package/dist/navigation/tool-registrations.js +126 -0
  298. package/dist/navigation/tool-registrations.js.map +1 -0
  299. package/dist/navigation/types.d.ts +207 -0
  300. package/dist/navigation/types.d.ts.map +1 -0
  301. package/dist/navigation/types.js +14 -0
  302. package/dist/navigation/types.js.map +1 -0
  303. package/dist/presentation/index.d.ts +15 -0
  304. package/dist/presentation/index.d.ts.map +1 -0
  305. package/dist/presentation/index.js +15 -0
  306. package/dist/presentation/index.js.map +1 -0
  307. package/dist/presentation/presentation.d.ts +72 -0
  308. package/dist/presentation/presentation.d.ts.map +1 -0
  309. package/dist/presentation/presentation.js +51 -0
  310. package/dist/presentation/presentation.js.map +1 -0
  311. package/dist/presentation/repo.memory.d.ts +9 -0
  312. package/dist/presentation/repo.memory.d.ts.map +1 -0
  313. package/dist/presentation/repo.memory.js +21 -0
  314. package/dist/presentation/repo.memory.js.map +1 -0
  315. package/dist/server/index.d.ts +28 -0
  316. package/dist/server/index.d.ts.map +1 -0
  317. package/dist/server/index.js +28 -0
  318. package/dist/server/index.js.map +1 -0
  319. package/dist/settings/agent-tools.d.ts +83 -0
  320. package/dist/settings/agent-tools.d.ts.map +1 -0
  321. package/dist/settings/agent-tools.js +200 -0
  322. package/dist/settings/agent-tools.js.map +1 -0
  323. package/dist/settings/agent-writable-preferences.d.ts +67 -0
  324. package/dist/settings/agent-writable-preferences.d.ts.map +1 -0
  325. package/dist/settings/agent-writable-preferences.js +144 -0
  326. package/dist/settings/agent-writable-preferences.js.map +1 -0
  327. package/dist/settings/change-feed.d.ts +74 -0
  328. package/dist/settings/change-feed.d.ts.map +1 -0
  329. package/dist/settings/change-feed.js +61 -0
  330. package/dist/settings/change-feed.js.map +1 -0
  331. package/dist/settings/definitions-dispatch.d.ts +51 -0
  332. package/dist/settings/definitions-dispatch.d.ts.map +1 -0
  333. package/dist/settings/definitions-dispatch.js +86 -0
  334. package/dist/settings/definitions-dispatch.js.map +1 -0
  335. package/dist/settings/dictionaries/index.d.ts +45 -0
  336. package/dist/settings/dictionaries/index.d.ts.map +1 -0
  337. package/dist/settings/dictionaries/index.js +69 -0
  338. package/dist/settings/dictionaries/index.js.map +1 -0
  339. package/dist/settings/dictionaries/settings-dialog.ar.d.ts +3 -0
  340. package/dist/settings/dictionaries/settings-dialog.ar.d.ts.map +1 -0
  341. package/dist/settings/dictionaries/settings-dialog.ar.js +28 -0
  342. package/dist/settings/dictionaries/settings-dialog.ar.js.map +1 -0
  343. package/dist/settings/dictionaries/settings-dialog.bn.d.ts +3 -0
  344. package/dist/settings/dictionaries/settings-dialog.bn.d.ts.map +1 -0
  345. package/dist/settings/dictionaries/settings-dialog.bn.js +28 -0
  346. package/dist/settings/dictionaries/settings-dialog.bn.js.map +1 -0
  347. package/dist/settings/dictionaries/settings-dialog.de.d.ts +3 -0
  348. package/dist/settings/dictionaries/settings-dialog.de.d.ts.map +1 -0
  349. package/dist/settings/dictionaries/settings-dialog.de.js +28 -0
  350. package/dist/settings/dictionaries/settings-dialog.de.js.map +1 -0
  351. package/dist/settings/dictionaries/settings-dialog.es.d.ts +3 -0
  352. package/dist/settings/dictionaries/settings-dialog.es.d.ts.map +1 -0
  353. package/dist/settings/dictionaries/settings-dialog.es.js +28 -0
  354. package/dist/settings/dictionaries/settings-dialog.es.js.map +1 -0
  355. package/dist/settings/dictionaries/settings-dialog.fa.d.ts +3 -0
  356. package/dist/settings/dictionaries/settings-dialog.fa.d.ts.map +1 -0
  357. package/dist/settings/dictionaries/settings-dialog.fa.js +28 -0
  358. package/dist/settings/dictionaries/settings-dialog.fa.js.map +1 -0
  359. package/dist/settings/dictionaries/settings-dialog.fr.d.ts +3 -0
  360. package/dist/settings/dictionaries/settings-dialog.fr.d.ts.map +1 -0
  361. package/dist/settings/dictionaries/settings-dialog.fr.js +28 -0
  362. package/dist/settings/dictionaries/settings-dialog.fr.js.map +1 -0
  363. package/dist/settings/dictionaries/settings-dialog.hi.d.ts +3 -0
  364. package/dist/settings/dictionaries/settings-dialog.hi.d.ts.map +1 -0
  365. package/dist/settings/dictionaries/settings-dialog.hi.js +28 -0
  366. package/dist/settings/dictionaries/settings-dialog.hi.js.map +1 -0
  367. package/dist/settings/dictionaries/settings-dialog.hu.d.ts +3 -0
  368. package/dist/settings/dictionaries/settings-dialog.hu.d.ts.map +1 -0
  369. package/dist/settings/dictionaries/settings-dialog.hu.js +28 -0
  370. package/dist/settings/dictionaries/settings-dialog.hu.js.map +1 -0
  371. package/dist/settings/dictionaries/settings-dialog.id.d.ts +3 -0
  372. package/dist/settings/dictionaries/settings-dialog.id.d.ts.map +1 -0
  373. package/dist/settings/dictionaries/settings-dialog.id.js +28 -0
  374. package/dist/settings/dictionaries/settings-dialog.id.js.map +1 -0
  375. package/dist/settings/dictionaries/settings-dialog.it.d.ts +3 -0
  376. package/dist/settings/dictionaries/settings-dialog.it.d.ts.map +1 -0
  377. package/dist/settings/dictionaries/settings-dialog.it.js +28 -0
  378. package/dist/settings/dictionaries/settings-dialog.it.js.map +1 -0
  379. package/dist/settings/dictionaries/settings-dialog.ja.d.ts +3 -0
  380. package/dist/settings/dictionaries/settings-dialog.ja.d.ts.map +1 -0
  381. package/dist/settings/dictionaries/settings-dialog.ja.js +28 -0
  382. package/dist/settings/dictionaries/settings-dialog.ja.js.map +1 -0
  383. package/dist/settings/dictionaries/settings-dialog.ko.d.ts +3 -0
  384. package/dist/settings/dictionaries/settings-dialog.ko.d.ts.map +1 -0
  385. package/dist/settings/dictionaries/settings-dialog.ko.js +28 -0
  386. package/dist/settings/dictionaries/settings-dialog.ko.js.map +1 -0
  387. package/dist/settings/dictionaries/settings-dialog.pl.d.ts +3 -0
  388. package/dist/settings/dictionaries/settings-dialog.pl.d.ts.map +1 -0
  389. package/dist/settings/dictionaries/settings-dialog.pl.js +28 -0
  390. package/dist/settings/dictionaries/settings-dialog.pl.js.map +1 -0
  391. package/dist/settings/dictionaries/settings-dialog.pt-BR.d.ts +3 -0
  392. package/dist/settings/dictionaries/settings-dialog.pt-BR.d.ts.map +1 -0
  393. package/dist/settings/dictionaries/settings-dialog.pt-BR.js +28 -0
  394. package/dist/settings/dictionaries/settings-dialog.pt-BR.js.map +1 -0
  395. package/dist/settings/dictionaries/settings-dialog.ru.d.ts +3 -0
  396. package/dist/settings/dictionaries/settings-dialog.ru.d.ts.map +1 -0
  397. package/dist/settings/dictionaries/settings-dialog.ru.js +28 -0
  398. package/dist/settings/dictionaries/settings-dialog.ru.js.map +1 -0
  399. package/dist/settings/dictionaries/settings-dialog.th.d.ts +3 -0
  400. package/dist/settings/dictionaries/settings-dialog.th.d.ts.map +1 -0
  401. package/dist/settings/dictionaries/settings-dialog.th.js +28 -0
  402. package/dist/settings/dictionaries/settings-dialog.th.js.map +1 -0
  403. package/dist/settings/dictionaries/settings-dialog.tr.d.ts +3 -0
  404. package/dist/settings/dictionaries/settings-dialog.tr.d.ts.map +1 -0
  405. package/dist/settings/dictionaries/settings-dialog.tr.js +28 -0
  406. package/dist/settings/dictionaries/settings-dialog.tr.js.map +1 -0
  407. package/dist/settings/dictionaries/settings-dialog.uk.d.ts +3 -0
  408. package/dist/settings/dictionaries/settings-dialog.uk.d.ts.map +1 -0
  409. package/dist/settings/dictionaries/settings-dialog.uk.js +28 -0
  410. package/dist/settings/dictionaries/settings-dialog.uk.js.map +1 -0
  411. package/dist/settings/dictionaries/settings-dialog.ur.d.ts +3 -0
  412. package/dist/settings/dictionaries/settings-dialog.ur.d.ts.map +1 -0
  413. package/dist/settings/dictionaries/settings-dialog.ur.js +28 -0
  414. package/dist/settings/dictionaries/settings-dialog.ur.js.map +1 -0
  415. package/dist/settings/dictionaries/settings-dialog.zh-CN.d.ts +3 -0
  416. package/dist/settings/dictionaries/settings-dialog.zh-CN.d.ts.map +1 -0
  417. package/dist/settings/dictionaries/settings-dialog.zh-CN.js +28 -0
  418. package/dist/settings/dictionaries/settings-dialog.zh-CN.js.map +1 -0
  419. package/dist/settings/dictionaries/settings-dialog.zh-TW.d.ts +3 -0
  420. package/dist/settings/dictionaries/settings-dialog.zh-TW.d.ts.map +1 -0
  421. package/dist/settings/dictionaries/settings-dialog.zh-TW.js +28 -0
  422. package/dist/settings/dictionaries/settings-dialog.zh-TW.js.map +1 -0
  423. package/dist/settings/ensure-definitions.d.ts +88 -0
  424. package/dist/settings/ensure-definitions.d.ts.map +1 -0
  425. package/dist/settings/ensure-definitions.js +91 -0
  426. package/dist/settings/ensure-definitions.js.map +1 -0
  427. package/dist/settings/errors.d.ts +36 -0
  428. package/dist/settings/errors.d.ts.map +1 -0
  429. package/dist/settings/errors.js +40 -0
  430. package/dist/settings/errors.js.map +1 -0
  431. package/dist/settings/index.d.ts +37 -0
  432. package/dist/settings/index.d.ts.map +1 -0
  433. package/dist/settings/index.js +36 -0
  434. package/dist/settings/index.js.map +1 -0
  435. package/dist/settings/ports.d.ts +117 -0
  436. package/dist/settings/ports.d.ts.map +1 -0
  437. package/dist/settings/ports.js +2 -0
  438. package/dist/settings/ports.js.map +1 -0
  439. package/dist/settings/purge-service.d.ts +53 -0
  440. package/dist/settings/purge-service.d.ts.map +1 -0
  441. package/dist/settings/purge-service.js +105 -0
  442. package/dist/settings/purge-service.js.map +1 -0
  443. package/dist/settings/repo.memory.d.ts +119 -0
  444. package/dist/settings/repo.memory.d.ts.map +1 -0
  445. package/dist/settings/repo.memory.js +199 -0
  446. package/dist/settings/repo.memory.js.map +1 -0
  447. package/dist/settings/settings.d.ts +124 -0
  448. package/dist/settings/settings.d.ts.map +1 -0
  449. package/dist/settings/settings.js +238 -0
  450. package/dist/settings/settings.js.map +1 -0
  451. package/dist/settings/tool-registrations.d.ts +56 -0
  452. package/dist/settings/tool-registrations.d.ts.map +1 -0
  453. package/dist/settings/tool-registrations.js +240 -0
  454. package/dist/settings/tool-registrations.js.map +1 -0
  455. package/dist/settings/types.d.ts +125 -0
  456. package/dist/settings/types.d.ts.map +1 -0
  457. package/dist/settings/types.js +3 -0
  458. package/dist/settings/types.js.map +1 -0
  459. package/dist/settings/ui-tab-definitions.d.ts +41 -0
  460. package/dist/settings/ui-tab-definitions.d.ts.map +1 -0
  461. package/dist/settings/ui-tab-definitions.js +148 -0
  462. package/dist/settings/ui-tab-definitions.js.map +1 -0
  463. package/dist/settings/write-service.d.ts +314 -0
  464. package/dist/settings/write-service.d.ts.map +1 -0
  465. package/dist/settings/write-service.js +677 -0
  466. package/dist/settings/write-service.js.map +1 -0
  467. package/dist/taxonomy/agent-tools.d.ts +76 -0
  468. package/dist/taxonomy/agent-tools.d.ts.map +1 -0
  469. package/dist/taxonomy/agent-tools.js +178 -0
  470. package/dist/taxonomy/agent-tools.js.map +1 -0
  471. package/dist/taxonomy/content-lookup.d.ts +45 -0
  472. package/dist/taxonomy/content-lookup.d.ts.map +1 -0
  473. package/dist/taxonomy/content-lookup.js +9 -0
  474. package/dist/taxonomy/content-lookup.js.map +1 -0
  475. package/dist/taxonomy/index.d.ts +38 -0
  476. package/dist/taxonomy/index.d.ts.map +1 -0
  477. package/dist/taxonomy/index.js +38 -0
  478. package/dist/taxonomy/index.js.map +1 -0
  479. package/dist/taxonomy/list.d.ts +39 -0
  480. package/dist/taxonomy/list.d.ts.map +1 -0
  481. package/dist/taxonomy/list.js +19 -0
  482. package/dist/taxonomy/list.js.map +1 -0
  483. package/dist/taxonomy/merge-term.d.ts +94 -0
  484. package/dist/taxonomy/merge-term.d.ts.map +1 -0
  485. package/dist/taxonomy/merge-term.js +65 -0
  486. package/dist/taxonomy/merge-term.js.map +1 -0
  487. package/dist/taxonomy/repo.memory.d.ts +160 -0
  488. package/dist/taxonomy/repo.memory.d.ts.map +1 -0
  489. package/dist/taxonomy/repo.memory.js +171 -0
  490. package/dist/taxonomy/repo.memory.js.map +1 -0
  491. package/dist/taxonomy/validation-chain.d.ts +114 -0
  492. package/dist/taxonomy/validation-chain.d.ts.map +1 -0
  493. package/dist/taxonomy/validation-chain.js +152 -0
  494. package/dist/taxonomy/validation-chain.js.map +1 -0
  495. package/dist/taxonomy/write-service.d.ts +387 -0
  496. package/dist/taxonomy/write-service.d.ts.map +1 -0
  497. package/dist/taxonomy/write-service.js +350 -0
  498. package/dist/taxonomy/write-service.js.map +1 -0
  499. package/dist/workspace/agent-tools.d.ts +67 -0
  500. package/dist/workspace/agent-tools.d.ts.map +1 -0
  501. package/dist/workspace/agent-tools.js +103 -0
  502. package/dist/workspace/agent-tools.js.map +1 -0
  503. package/dist/workspace/create.d.ts +116 -0
  504. package/dist/workspace/create.d.ts.map +1 -0
  505. package/dist/workspace/create.js +69 -0
  506. package/dist/workspace/create.js.map +1 -0
  507. package/dist/workspace/delete.d.ts +50 -0
  508. package/dist/workspace/delete.d.ts.map +1 -0
  509. package/dist/workspace/delete.js +24 -0
  510. package/dist/workspace/delete.js.map +1 -0
  511. package/dist/workspace/index.d.ts +27 -0
  512. package/dist/workspace/index.d.ts.map +1 -0
  513. package/dist/workspace/index.js +27 -0
  514. package/dist/workspace/index.js.map +1 -0
  515. package/dist/workspace/repo.memory.d.ts +34 -0
  516. package/dist/workspace/repo.memory.d.ts.map +1 -0
  517. package/dist/workspace/repo.memory.js +50 -0
  518. package/dist/workspace/repo.memory.js.map +1 -0
  519. package/dist/workspace/tool-registrations.d.ts +38 -0
  520. package/dist/workspace/tool-registrations.d.ts.map +1 -0
  521. package/dist/workspace/tool-registrations.js +71 -0
  522. package/dist/workspace/tool-registrations.js.map +1 -0
  523. package/dist/workspace/update.d.ts +52 -0
  524. package/dist/workspace/update.d.ts.map +1 -0
  525. package/dist/workspace/update.js +41 -0
  526. package/dist/workspace/update.js.map +1 -0
  527. package/package.json +149 -0
@@ -0,0 +1,419 @@
1
+ /**
2
+ * @file Identity's half of the agent-tool authorization wiring: maps `agent-tools.ts`'s fifteen catalog
3
+ * entries onto the users/roles/policies transitions `grant-service.ts`/`admin-crud-service.ts`
4
+ * export, plus the three repo-backed reads, as `ToolRegistration`s.
5
+ *
6
+ * `ToolPolicy.authorize` is a pass-through for all fifteen (see `buildDomainRegistrations`) for the
7
+ * "one evaluator" reason: the gate is the domain layer's, reached identically by every
8
+ * tool kind — mutations through their own service function, which opens with the check, and reads
9
+ * through {@link assertIdentityReadAllowed}, which calls the domain's own exported
10
+ * `assertCallerHasAnyPermission` rather than re-deriving an OR gate. A second check here would be a
11
+ * duplicate evaluator, and one any non-tool caller of the same service function would bypass. See
12
+ * `assistant/__tests__/tool-registrations.identity-authorization.test.ts`.
13
+ */
14
+ import { buildDomainRegistrations, indexCatalogById, } from "../core/tools/registration-kit.js";
15
+ import { parseIdentityToolInput } from "./agent-tool-input.js";
16
+ import { identityAgentToolCatalog } from "./agent-tools.js";
17
+ import { assertCallerHasAnyPermission, assignRole, attachPolicy, createPolicy, createRole, createUser } from "./grant-service.js";
18
+ import { deletePolicy, deleteRole, disablePrincipal, enablePrincipal, updatePolicy, updateRole, updateUser } from "./admin-crud-service.js";
19
+ const CATALOG_BY_ID = indexCatalogById(identityAgentToolCatalog);
20
+ /**
21
+ * Assembles `auth-service.ts`'s `IdentityRepos` bag from {@link IdentityToolDeps}'s flat fields — a
22
+ * local duplicate of `server/routes/admin/users/deps.ts`'s `identityReposFrom` rather than an import
23
+ * of it, for the same reason `features/settings/tool-registrations.ts`'s header gives for
24
+ * duplicating `toWriteServiceDeps`: importing from the HTTP admin layer would invert this codebase's
25
+ * ports/adapters direction. It is a field mapping, not logic, so the two copies carry no behavioral
26
+ * drift risk.
27
+ */
28
+ function identityReposFrom(deps) {
29
+ return {
30
+ principals: deps.principalRepo,
31
+ users: deps.userRepo,
32
+ sessions: deps.sessionRepo,
33
+ roles: deps.roleRepo,
34
+ policies: deps.policyRepo,
35
+ policyPermissions: deps.policyPermissionRepo,
36
+ rolePolicies: deps.rolePolicyRepo,
37
+ principalRoles: deps.principalRoleRepo,
38
+ principalPolicies: deps.principalPolicyRepo,
39
+ };
40
+ }
41
+ /** Assembles `grant-service.ts`'s/`admin-crud-service.ts`'s `AuthServiceDeps` bag from
42
+ * {@link IdentityToolDeps} — the local twin of `identityReposFrom` just above. */
43
+ function identityServiceDepsFrom(deps) {
44
+ return {
45
+ repos: identityReposFrom(deps),
46
+ hasher: deps.passwordHasher,
47
+ clock: deps.clock,
48
+ idGen: deps.idGen,
49
+ };
50
+ }
51
+ /**
52
+ * This wiring layer's OWN risk classification, authored from what each handler below actually
53
+ * calls. See `DerivedRiskByToolId` in the kit for why it is independent of the catalog's own
54
+ * `sideEffects` declaration.
55
+ */
56
+ export const identityDerivedRisk = new Map([
57
+ // -> authorize() + repo reads only; no save on any path.
58
+ ["identity_user_list", "none"],
59
+ ["identity_role_list", "none"],
60
+ ["identity_policy_list", "none"],
61
+ // -> createUser (grant-service.ts): saves a principal row AND a users row (credential).
62
+ ["identity_user_create", "mutates-durable-state"],
63
+ // -> updateUser (admin-crud-service.ts): users.save, email field only.
64
+ ["identity_user_update_email", "mutates-durable-state"],
65
+ // -> disablePrincipal (admin-crud-service.ts): status flip, guarded by the INV-08 owner floor.
66
+ ["identity_user_disable", "mutates-durable-state"],
67
+ // -> enablePrincipal (admin-crud-service.ts): status flip back to active.
68
+ ["identity_user_enable", "mutates-durable-state"],
69
+ // -> createRole (grant-service.ts): roles.save, always isBuiltin=false.
70
+ ["identity_role_create", "mutates-durable-state"],
71
+ // -> assignRole (grant-service.ts): principalRoles.save behind the INV-07 grant clamp. The one
72
+ // identity tool that confers permissions, hence the heaviest of these.
73
+ ["identity_role_assign", "mutates-durable-state"],
74
+ // -> updateRole (admin-crud-service.ts): roles.save, refuses built-ins.
75
+ ["identity_role_rename", "mutates-durable-state"],
76
+ // -> deleteRole (admin-crud-service.ts): roles.delete, refuses built-ins and referenced roles.
77
+ ["identity_role_delete", "mutates-durable-state"],
78
+ // -> createPolicy (grant-service.ts): policies.save, always isBuiltin=false/isFrozen=false.
79
+ ["identity_policy_create", "mutates-durable-state"],
80
+ // -> updatePolicy (admin-crud-service.ts): policies.save, refuses built-in/frozen.
81
+ ["identity_policy_update", "mutates-durable-state"],
82
+ // -> deletePolicy (admin-crud-service.ts): policyPermissions.deleteByPolicyId + policies.delete,
83
+ // refuses built-in/frozen and still-referenced policies.
84
+ ["identity_policy_delete", "mutates-durable-state"],
85
+ // -> attachPolicy (grant-service.ts): principalPolicies.save behind the INV-07 grant clamp — the
86
+ // direct-grant counterpart to identity_role_assign, same weight.
87
+ ["identity_policy_attach", "mutates-durable-state"],
88
+ ]);
89
+ /**
90
+ * Upper bound on the roster `identity_user_list` will fan out over.
91
+ *
92
+ * `routes/admin/users/list.ts` does the same O(n) per-user fan-out uncapped, on the documented
93
+ * "operator-managed roster, not member/content scale" assumption. That assumption is fine for a
94
+ * human screen and NOT fine here for a different reason than scale: this result is spent as model
95
+ * context, so an unexpectedly large roster would silently consume the run's context window. The
96
+ * cap truncates and SAYS SO in the payload rather than failing, so a caller that hits it can still
97
+ * work with what it got and knows not to treat the list as complete.
98
+ */
99
+ const IDENTITY_USER_LIST_MAX = 200;
100
+ function requireIdentityCatalogEntry(toolId) {
101
+ const entry = CATALOG_BY_ID.get(toolId);
102
+ if (!entry)
103
+ throw new Error(`identity/tool-registrations.ts: catalog has no entry named '${toolId}' — identity/agent-tools.ts drifted`);
104
+ return entry;
105
+ }
106
+ function identityInput(toolId, input) {
107
+ const entry = requireIdentityCatalogEntry(toolId);
108
+ const parsed = parseIdentityToolInput({ schema: entry.inputSchema, input });
109
+ if (!parsed.ok) {
110
+ const recovery = "Fix the input and retry — this will not resolve on retry without an input change.";
111
+ throw new Error(`${parsed.error.message}. ${recovery} Schema for '${toolId}': ${JSON.stringify(entry.inputSchema)}`);
112
+ }
113
+ const value = parsed.value;
114
+ return {
115
+ req(field) {
116
+ const found = value[field];
117
+ if (found === undefined) {
118
+ throw new Error(`identity tool '${toolId}': the handler reads '${field}' as required, but the published inputSchema does not mark it required — add it to that schema's 'required' list, or read it with opt() and handle its absence`);
119
+ }
120
+ return found;
121
+ },
122
+ opt(field) {
123
+ return value[field];
124
+ },
125
+ };
126
+ }
127
+ /** The permission set a tool's catalog entry declares — both halves when the gate is an OR. */
128
+ function identityPermissionsFor(toolId) {
129
+ const { authorization } = requireIdentityCatalogEntry(toolId);
130
+ return authorization.orPermission ? [authorization.permission, authorization.orPermission] : [authorization.permission];
131
+ }
132
+ /**
133
+ * The gate for the two READ tools.
134
+ *
135
+ * The mutating tools need no equivalent: their domain function opens with this same
136
+ * `assertCallerHasAnyPermission` call itself. Reads have no service-layer function to inherit it
137
+ * from — `identity` exports grant-writing transitions, not read wrappers, which is why
138
+ * `routes/admin/users/list.ts` also gates in the route and then reads the repo ports directly.
139
+ * This calls the domain's own exported helper rather than re-deriving an OR gate (and rather than
140
+ * the kit's generic `requireToolPermission`, which cannot express an OR), so the single
141
+ * evaluator is reached by an identical path from both tool kinds.
142
+ */
143
+ async function assertIdentityReadAllowed(routeDeps, toolId, callerPrincipalId) {
144
+ await assertCallerHasAnyPermission({
145
+ deps: identityServiceDepsFrom(routeDeps),
146
+ workspaceId: routeDeps.workspaceId,
147
+ callerPrincipalId,
148
+ permissions: identityPermissionsFor(toolId),
149
+ });
150
+ }
151
+ /**
152
+ * Projects a principal + its credential row into the explicit model-facing shape.
153
+ *
154
+ * The load-bearing omission is `UserRecord.passwordHash`: INV-05 keeps hashed secrets server-side,
155
+ * and this view has no field for one, so there is nothing to forward by accident even if a future
156
+ * `UserRecord` field is added. `workspaceId` is dropped for the same reason content-types'
157
+ * `toContentTypeView` drops it — the agent is scoped to one workspace it cannot change, so echoing
158
+ * the id spends model attention on a value that can never inform a decision.
159
+ *
160
+ * @param record.roleIds - The principal's role assignments, passed in rather than resolved here so
161
+ * the projection stays pure and the caller decides whether the extra repo read is worth it.
162
+ * @returns The model-facing view. `email` is present only when set, so a user without one carries
163
+ * no always-undefined key.
164
+ * @complexity O(r) in the role count (the array is copied so the caller cannot alias domain state).
165
+ * @overallScore 100
166
+ */
167
+ function toIdentityUserView(record) {
168
+ const view = {
169
+ principalId: record.principal.id,
170
+ username: record.user.username,
171
+ status: record.principal.status,
172
+ roleIds: [...record.roleIds],
173
+ };
174
+ if (record.user.email)
175
+ view.email = record.user.email;
176
+ return view;
177
+ }
178
+ /** What an identity role tool returns to the model. `isBuiltin` is kept because it is what predicts a rename/delete refusal. */
179
+ function toIdentityRoleView(role) {
180
+ return { id: role.id, name: role.name, isBuiltin: role.isBuiltin };
181
+ }
182
+ /**
183
+ * What an identity policy tool returns to the model. `isBuiltin`/`isFrozen` are both kept because
184
+ * together they are what predicts an update/delete/write-permission refusal (mirrors
185
+ * `toIdentityRoleView`'s `isBuiltin`, extended for the second immutability flag policies carry that
186
+ * roles do not). `description` is present only when set, matching `toIdentityUserView`'s `email`.
187
+ */
188
+ function toIdentityPolicyView(policy) {
189
+ const view = {
190
+ id: policy.id,
191
+ name: policy.name,
192
+ isBuiltin: policy.isBuiltin,
193
+ isFrozen: policy.isFrozen,
194
+ };
195
+ if (policy.description)
196
+ view.description = policy.description;
197
+ return view;
198
+ }
199
+ /** Read a principal's role-assignment ids. Shared by every tool that returns a user view. */
200
+ async function roleIdsFor(routeDeps, principalId) {
201
+ const links = await routeDeps.principalRoleRepo.listByPrincipalId({ workspaceId: routeDeps.workspaceId, principalId });
202
+ return links.map((link) => link.roleId);
203
+ }
204
+ /**
205
+ * Load the `UserRecord` paired with a principal the domain just returned.
206
+ *
207
+ * Every `kind='user'` principal has one by construction (CREATE_USER's atomicity guarantee), so
208
+ * the miss is defensive rather than an expected path — the same reasoning `routes/admin/users/
209
+ * disable.ts` records for its identical second lookup.
210
+ */
211
+ async function requireUserRecord(routeDeps, principalId) {
212
+ const user = await routeDeps.userRepo.findByPrincipalId({ workspaceId: routeDeps.workspaceId, principalId });
213
+ if (!user)
214
+ throw new Error(`user '${principalId}' was not found`);
215
+ return user;
216
+ }
217
+ export function buildIdentityRegistrations(routeDeps) {
218
+ /** Assembled per call, not per handler, because every mutating handler needs the identical bag. */
219
+ const serviceDeps = () => identityServiceDepsFrom(routeDeps);
220
+ const handlers = {
221
+ identity_user_list: async (ctx) => {
222
+ identityInput("identity_user_list", ctx.input);
223
+ await assertIdentityReadAllowed(routeDeps, "identity_user_list", ctx.principal.id);
224
+ const principals = await routeDeps.principalRepo.list({ workspaceId: routeDeps.workspaceId });
225
+ // Humans only — `system`/`agent`/`api_key` principals (including the disabled `user-local`
226
+ // seed row) are not what "users" means on this surface, matching `routes/.../list.ts`.
227
+ const humans = principals.filter((principal) => principal.kind === "user");
228
+ const page = humans.slice(0, IDENTITY_USER_LIST_MAX);
229
+ const users = await Promise.all(page.map(async (principal) => {
230
+ const user = await routeDeps.userRepo.findByPrincipalId({ workspaceId: routeDeps.workspaceId, principalId: principal.id });
231
+ if (!user)
232
+ return null;
233
+ return toIdentityUserView({ principal, user, roleIds: await roleIdsFor(routeDeps, principal.id) });
234
+ }));
235
+ const listed = users.filter((user) => user !== null);
236
+ return humans.length > page.length
237
+ ? { users: listed, truncated: true, totalCount: humans.length }
238
+ : { users: listed };
239
+ },
240
+ identity_role_list: async (ctx) => {
241
+ identityInput("identity_role_list", ctx.input);
242
+ await assertIdentityReadAllowed(routeDeps, "identity_role_list", ctx.principal.id);
243
+ const roles = await routeDeps.roleRepo.list({ workspaceId: routeDeps.workspaceId });
244
+ return { roles: roles.map(toIdentityRoleView) };
245
+ },
246
+ identity_policy_list: async (ctx) => {
247
+ identityInput("identity_policy_list", ctx.input);
248
+ await assertIdentityReadAllowed(routeDeps, "identity_policy_list", ctx.principal.id);
249
+ const policies = await routeDeps.policyRepo.list({ workspaceId: routeDeps.workspaceId });
250
+ return { policies: policies.map(toIdentityPolicyView) };
251
+ },
252
+ identity_user_create: async (ctx) => {
253
+ const input = identityInput("identity_user_create", ctx.input);
254
+ const { principal, user } = await createUser({
255
+ deps: serviceDeps(),
256
+ input: {
257
+ workspaceId: routeDeps.workspaceId,
258
+ callerPrincipalId: ctx.principal.id,
259
+ username: input.req("username"),
260
+ email: input.opt("email"),
261
+ password: input.req("password"),
262
+ },
263
+ });
264
+ // A brand-new principal has no assignments yet, so this is [] by construction, not a read.
265
+ return { user: toIdentityUserView({ principal, user, roleIds: [] }) };
266
+ },
267
+ identity_user_update_email: async (ctx) => {
268
+ const input = identityInput("identity_user_update_email", ctx.input);
269
+ const { user } = await updateUser({
270
+ deps: serviceDeps(),
271
+ input: {
272
+ workspaceId: routeDeps.workspaceId,
273
+ callerPrincipalId: ctx.principal.id,
274
+ principalId: input.req("principalId"),
275
+ // Absent stays absent: `updateUser` treats a falsy email as "clear", which is exactly
276
+ // what this tool's description tells the model omitting it does.
277
+ email: input.opt("email"),
278
+ },
279
+ });
280
+ const principal = await routeDeps.principalRepo.findById({ workspaceId: routeDeps.workspaceId, id: input.req("principalId") });
281
+ if (!principal)
282
+ throw new Error(`principal '${input.req("principalId")}' was not found`);
283
+ return { user: toIdentityUserView({ principal, user, roleIds: await roleIdsFor(routeDeps, principal.id) }) };
284
+ },
285
+ identity_user_disable: async (ctx) => {
286
+ const input = identityInput("identity_user_disable", ctx.input);
287
+ const { principal } = await disablePrincipal({
288
+ deps: serviceDeps(),
289
+ input: {
290
+ workspaceId: routeDeps.workspaceId,
291
+ callerPrincipalId: ctx.principal.id,
292
+ principalId: input.req("principalId"),
293
+ // Resolved by the caller, per `disablePrincipal`'s own contract — the same
294
+ // `await deps.ownerPrincipalId` the human disable route performs.
295
+ seededOwnerPrincipalId: await routeDeps.ownerPrincipalId,
296
+ },
297
+ });
298
+ const user = await requireUserRecord(routeDeps, principal.id);
299
+ return { user: toIdentityUserView({ principal, user, roleIds: await roleIdsFor(routeDeps, principal.id) }) };
300
+ },
301
+ identity_user_enable: async (ctx) => {
302
+ const input = identityInput("identity_user_enable", ctx.input);
303
+ const { principal } = await enablePrincipal({
304
+ deps: serviceDeps(),
305
+ input: { workspaceId: routeDeps.workspaceId, callerPrincipalId: ctx.principal.id, principalId: input.req("principalId") },
306
+ });
307
+ const user = await requireUserRecord(routeDeps, principal.id);
308
+ return { user: toIdentityUserView({ principal, user, roleIds: await roleIdsFor(routeDeps, principal.id) }) };
309
+ },
310
+ identity_role_create: async (ctx) => {
311
+ const input = identityInput("identity_role_create", ctx.input);
312
+ const { role } = await createRole({
313
+ deps: serviceDeps(),
314
+ input: { workspaceId: routeDeps.workspaceId, callerPrincipalId: ctx.principal.id, name: input.req("name") },
315
+ });
316
+ return { role: toIdentityRoleView(role) };
317
+ },
318
+ identity_role_assign: async (ctx) => {
319
+ const input = identityInput("identity_role_assign", ctx.input);
320
+ const { assignment } = await assignRole({
321
+ deps: serviceDeps(),
322
+ input: {
323
+ workspaceId: routeDeps.workspaceId,
324
+ callerPrincipalId: ctx.principal.id,
325
+ principalId: input.req("principalId"),
326
+ roleId: input.req("roleId"),
327
+ },
328
+ });
329
+ // The join row's own id is not addressable by any other tool, so it is dropped; what the
330
+ // model needs back is confirmation of WHICH pair is now linked.
331
+ return { assigned: { principalId: assignment.principalId, roleId: assignment.roleId } };
332
+ },
333
+ identity_role_rename: async (ctx) => {
334
+ const input = identityInput("identity_role_rename", ctx.input);
335
+ const { role } = await updateRole({
336
+ deps: serviceDeps(),
337
+ input: { workspaceId: routeDeps.workspaceId, callerPrincipalId: ctx.principal.id, roleId: input.req("roleId"), name: input.req("name") },
338
+ });
339
+ return { role: toIdentityRoleView(role) };
340
+ },
341
+ identity_role_delete: async (ctx) => {
342
+ const input = identityInput("identity_role_delete", ctx.input);
343
+ await deleteRole({
344
+ deps: serviceDeps(),
345
+ input: { workspaceId: routeDeps.workspaceId, callerPrincipalId: ctx.principal.id, roleId: input.req("roleId") },
346
+ });
347
+ // `deleteRole` resolves void; an empty tool result would read to the model as "nothing
348
+ // happened", so the deleted id is echoed as the acknowledgement.
349
+ return { deleted: { roleId: input.req("roleId") } };
350
+ },
351
+ identity_policy_create: async (ctx) => {
352
+ const input = identityInput("identity_policy_create", ctx.input);
353
+ const { policy } = await createPolicy({
354
+ deps: serviceDeps(),
355
+ input: {
356
+ workspaceId: routeDeps.workspaceId,
357
+ callerPrincipalId: ctx.principal.id,
358
+ name: input.req("name"),
359
+ // Absent stays absent: `input.description` is only present when the caller supplied it
360
+ // (`parseIdentityToolInput` omits absent optional keys entirely), so this passes through
361
+ // unchanged rather than coercing a caller-supplied empty string to "no description".
362
+ description: input.opt("description"),
363
+ },
364
+ });
365
+ return { policy: toIdentityPolicyView(policy) };
366
+ },
367
+ identity_policy_update: async (ctx) => {
368
+ const input = identityInput("identity_policy_update", ctx.input);
369
+ const { policy } = await updatePolicy({
370
+ deps: serviceDeps(),
371
+ input: {
372
+ workspaceId: routeDeps.workspaceId,
373
+ callerPrincipalId: ctx.principal.id,
374
+ policyId: input.req("policyId"),
375
+ // Same absent-stays-absent reasoning as identity_policy_create — `updatePolicy` itself
376
+ // distinguishes undefined ("leave unchanged") from an explicit empty string.
377
+ name: input.opt("name"),
378
+ description: input.opt("description"),
379
+ },
380
+ });
381
+ return { policy: toIdentityPolicyView(policy) };
382
+ },
383
+ identity_policy_delete: async (ctx) => {
384
+ const input = identityInput("identity_policy_delete", ctx.input);
385
+ await deletePolicy({
386
+ deps: serviceDeps(),
387
+ input: { workspaceId: routeDeps.workspaceId, callerPrincipalId: ctx.principal.id, policyId: input.req("policyId") },
388
+ });
389
+ // `deletePolicy` resolves void; an empty tool result would read to the model as "nothing
390
+ // happened", so the deleted id is echoed as the acknowledgement (mirrors identity_role_delete).
391
+ return { deleted: { policyId: input.req("policyId") } };
392
+ },
393
+ identity_policy_attach: async (ctx) => {
394
+ const input = identityInput("identity_policy_attach", ctx.input);
395
+ const { attachment } = await attachPolicy({
396
+ deps: serviceDeps(),
397
+ input: {
398
+ workspaceId: routeDeps.workspaceId,
399
+ callerPrincipalId: ctx.principal.id,
400
+ principalId: input.req("principalId"),
401
+ policyId: input.req("policyId"),
402
+ },
403
+ });
404
+ // The join row's own id is not addressable by any other tool, so it is dropped; what the
405
+ // model needs back is confirmation of WHICH pair is now linked (mirrors identity_role_assign).
406
+ return { attached: { principalId: attachment.principalId, policyId: attachment.policyId } };
407
+ },
408
+ };
409
+ // No `unwiredToolIds`: identity wires its ENTIRE catalog (which is why its own
410
+ // `AgentToolDefinition` makes `inputSchema` required rather than optional).
411
+ return buildDomainRegistrations({
412
+ domain: "identity",
413
+ catalogModule: "identity/agent-tools.ts",
414
+ catalog: CATALOG_BY_ID,
415
+ handlers,
416
+ derivedRisk: identityDerivedRisk,
417
+ });
418
+ }
419
+ //# sourceMappingURL=tool-registrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrations.js","sourceRoot":"","sources":["../../src/identity/tool-registrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,185 @@
1
+ import type { ISODateTime, UUID } from "../core/ports.js";
2
+ /**
3
+ * @file Core domain types for the `identity` library.
4
+ *
5
+ * Purpose:
6
+ * Type-only definitions for the principal-centric identity & authorization
7
+ * model: every actor (human user, AI agent, API key, system) is rooted as a
8
+ * `PrincipalRecord`; humans get RBAC (`roles` -> `policies` -> permissions);
9
+ * machines get direct policy grants (`principal_policies`). Mirrors the
10
+ * `features/post` / `members` conventions: records + workspace-scoped ports
11
+ * live in `ports.ts`, no feature logic here.
12
+ *
13
+ * Scope note (core path, this pass):
14
+ * `agent`/`api_key` principal *lifecycle* transitions (CREATE_PRINCIPAL,
15
+ * ISSUE_API_KEY, ASSIGN_ROLE, ATTACH_POLICY, WRITE_POLICY_PERMISSION,
16
+ * DISABLE_PRINCIPAL) are OUT of scope for this pass (deferred — see the
17
+ * Programmer handoff). The `kind` enum and table shapes are still built to
18
+ * the full target schema so those transitions are additive later,
19
+ * not a repaint.
20
+ */
21
+ /** Every actor is one of these. Only `user`/`system` are populated this pass. */
22
+ export type PrincipalKind = "user" | "agent" | "api_key" | "system";
23
+ /** Disable-only lifecycle (REQ-11/INV-02) — there is no hard-delete state. */
24
+ export type PrincipalStatus = "active" | "disabled";
25
+ /**
26
+ * Root identity row for every actor (REQ-01). `change_set.actorId` references
27
+ * a principal by composite `(workspaceId, id)` (REQ-10/INV-01).
28
+ */
29
+ export interface PrincipalRecord {
30
+ id: UUID;
31
+ workspaceId: UUID;
32
+ kind: PrincipalKind;
33
+ displayName: string;
34
+ status: PrincipalStatus;
35
+ disabledAt?: ISODateTime | undefined;
36
+ createdAt: ISODateTime;
37
+ }
38
+ /**
39
+ * Human auth credentials. A `UserRecord` is only ever created together with a
40
+ * NEW `kind='user'` principal in the same transaction (REQ-01, MF-1) — never
41
+ * attached to a pre-existing principal. `username` is unique per workspace,
42
+ * compared case-insensitively and Unicode-NFC-normalized (behavior.spec §5).
43
+ */
44
+ export interface UserRecord {
45
+ principalId: UUID;
46
+ workspaceId: UUID;
47
+ /** Stored pre-normalized (NFC + lowercase) so lookups are direct equality. */
48
+ username: string;
49
+ email?: string | undefined;
50
+ /** argon2id hash; the raw password is never stored (INV-05). */
51
+ passwordHash: string;
52
+ lastLoginAt?: ISODateTime | undefined;
53
+ }
54
+ /**
55
+ * Revocable server-side session (REQ-06). `tokenHash` is a hash of the opaque
56
+ * bearer value carried by the `HttpOnly`/`SameSite=Strict` cookie; the raw
57
+ * token is never persisted (INV-05). Lifetime is an **absolute** expiry fixed
58
+ * at creation (behavior.spec §4, RT-004) — no sliding renewal in v1.
59
+ */
60
+ export interface SessionRecord {
61
+ id: UUID;
62
+ workspaceId: UUID;
63
+ principalId: UUID;
64
+ tokenHash: string;
65
+ createdAt: ISODateTime;
66
+ expiresAt: ISODateTime;
67
+ revokedAt?: ISODateTime;
68
+ ip?: string | undefined;
69
+ userAgent?: string | undefined;
70
+ }
71
+ /** Named RBAC role (REQ-02). Built-ins are seeded `isBuiltin=true`, immutable (INV-06). */
72
+ export interface RoleRecord {
73
+ id: UUID;
74
+ workspaceId: UUID;
75
+ name: string;
76
+ isBuiltin: boolean;
77
+ }
78
+ /**
79
+ * A permission bundle (REQ-02). `isFrozen` is reserved for the API-key
80
+ * issuance-snapshot mechanism (REQ-08/F-054-01) — out of scope this pass, so
81
+ * every policy built here is `isFrozen=false`; the field exists so the schema
82
+ * is additive-ready, not a later repaint.
83
+ */
84
+ export interface PolicyRecord {
85
+ id: UUID;
86
+ workspaceId: UUID;
87
+ name: string;
88
+ description?: string | undefined;
89
+ isBuiltin: boolean;
90
+ isFrozen: boolean;
91
+ }
92
+ /**
93
+ * A single permission carried by a policy (REQ-02/REQ-03). `resourceType`
94
+ * null = unscoped; non-null = matches only when it equals `context.entityType`
95
+ * (REQ-04/AC-14). `constraintJson` non-null and uninterpretable => fail-closed
96
+ * deny (INV-03/AC-09) — the v1 evaluator interprets no constraint shape, so any
97
+ * non-null value here is treated as "cannot interpret."
98
+ */
99
+ export interface PolicyPermissionRecord {
100
+ id: UUID;
101
+ workspaceId: UUID;
102
+ policyId: UUID;
103
+ /** Dotted catalog permission string, or `"*"` (owner built-in policy only). */
104
+ permission: string;
105
+ resourceType?: string | null;
106
+ constraintJson?: string | null;
107
+ }
108
+ /** Role -> policy join (REQ-02/REQ-10). Not user-writable in v1 (F-053-02) — seed-only rows. */
109
+ export interface RolePolicyRecord {
110
+ id: UUID;
111
+ workspaceId: UUID;
112
+ roleId: UUID;
113
+ policyId: UUID;
114
+ }
115
+ /** Principal -> role join, the human grant path (REQ-02/REQ-10). */
116
+ export interface PrincipalRoleRecord {
117
+ id: UUID;
118
+ workspaceId: UUID;
119
+ principalId: UUID;
120
+ roleId: UUID;
121
+ }
122
+ /** Principal -> policy direct grant, the machine grant path (REQ-02/REQ-08/REQ-10). */
123
+ export interface PrincipalPolicyRecord {
124
+ id: UUID;
125
+ workspaceId: UUID;
126
+ principalId: UUID;
127
+ policyId: UUID;
128
+ }
129
+ /** Raised on a malformed identity input (blank username, etc.). */
130
+ export declare class IdentityValidationError extends Error {
131
+ }
132
+ /** Raised when a referenced principal/user/role/policy is not found. */
133
+ export declare class IdentityNotFoundError extends Error {
134
+ }
135
+ /**
136
+ * Raised on a unique-constraint clash (duplicate `username` in a workspace, AC-19). Also
137
+ * raised by `deleteRole`/`deletePolicy` (`admin-crud-service.ts`) when the target still has
138
+ * live references (INV-09, AC-31) — the same 409 `RESOURCE_CONFLICT` shape, a `details.field`
139
+ * distinguishes the two cases at the route layer (errors.spec.md §3).
140
+ */
141
+ export declare class IdentityConflictError extends Error {
142
+ }
143
+ /** Raised by `login()` on bad credentials, a disabled principal, or a blank field (AC-02). */
144
+ export declare class AuthInvalidCredentialsError extends Error {
145
+ }
146
+ /**
147
+ * REQ-11/INV-08 — raised by `disablePrincipal` when the target is the seeded owner
148
+ * principal, or when disabling would drop the workspace's active owner-`*` count to zero. Maps to
149
+ * 409 `OWNER_REQUIRED` (errors.spec.md §2) — a pre-existing registered code that had no HTTP
150
+ * emission site until this amendment gave `DISABLE_PRINCIPAL` a route.
151
+ */
152
+ export declare class OwnerRequiredError extends Error {
153
+ }
154
+ /**
155
+ * REQ-03/INV-07 — raised by `writePolicyPermission` when the permission string is
156
+ * not in the registered catalog. Maps to 400 `PERMISSION_UNKNOWN` (errors.spec.md §2) — kept
157
+ * distinct from `IdentityValidationError` (plain `VALIDATION_ERROR`) so the route can emit the
158
+ * correct typed code without string-matching the message.
159
+ */
160
+ export declare class PermissionUnknownError extends Error {
161
+ }
162
+ /**
163
+ * Raised when a grant-writing transition's caller-permission gate fails
164
+ * (e.g. `ASSIGN_ROLE` called by a principal without `role.manage`). Maps to
165
+ * 403 `FORBIDDEN` (errors.spec.md §2) — distinct from `GrantExceedsIssuerError`,
166
+ * which is the INV-07 clamp on the *grant's contents*, not the base gate.
167
+ */
168
+ export declare class IdentityForbiddenError extends Error {
169
+ readonly permission: string;
170
+ readonly reason: string;
171
+ constructor(message: string, permission: string, reason: string);
172
+ }
173
+ /**
174
+ * Raised when a grant-writing transition (`ASSIGN_ROLE`, `ATTACH_POLICY`, and
175
+ * future `ISSUE_API_KEY`/`WRITE_POLICY_PERMISSION`) would confer a permission
176
+ * the caller does not itself hold unconstrained (INV-07 grant-authority
177
+ * clamp, feature.spec.md). Maps to 403 `GRANT_EXCEEDS_ISSUER`
178
+ * (errors.spec.md §2/§3) — `offendingPermissions` is the exact `details`
179
+ * payload shape that error code specifies.
180
+ */
181
+ export declare class GrantExceedsIssuerError extends Error {
182
+ readonly offendingPermissions: string[];
183
+ constructor(message: string, offendingPermissions: string[]);
184
+ }
185
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/identity/types.ts"],"names":[],"mappings":"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"}