@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 @@
1
+ {"version":3,"file":"repo.memory.js","sourceRoot":"","sources":["../../src/entries/repo.memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @file Entries' half of the shared agent-tool-registration convention: maps `agent-tools.ts`'s 5
3
+ * catalog entries onto `write-service.ts`'s create/update/publish/unpublish and `list.ts`'s read, as
4
+ * `ToolRegistration`s. The entire catalog is wired — there is no delete/purge function to exclude
5
+ * and no cleanup ceremony in this domain (see `agent-tools.ts`'s own header for the 3 deliberate
6
+ * scope exclusions, none of which withhold a whole tool).
7
+ *
8
+ * Authorization shape, mixed and deliberately so: `createEntry`/`updateEntry`/`publishEntry`/
9
+ * `unpublishEntry` each call `deps.authorize({ permission: 'admin.collections.manage', ... })` as
10
+ * their own first line (confirmed directly against `write-service.ts`), so those four handlers must
11
+ * NOT re-check (the "one evaluator" rule). `listEntries` (`list.ts`) has no such call of its own —
12
+ * its file header says so explicitly ("no authorization of its own; the caller route checks
13
+ * `admin.collections.read` first") — so `collections_entry_list`'s handler performs that identical
14
+ * inline check itself, mirroring `entries/list.ts`'s admin route.
15
+ */
16
+ import type { AuthorizeFn } from "../core/commands/command.js";
17
+ import type { OutboxPort } from "../core/ports.js";
18
+ import { type DerivedRiskByToolId, type ToolRegistration } from "../core/tools/registration-kit.js";
19
+ import { type EntryListPort } from "./list.js";
20
+ import { type ContentTypeLookupPort, type EntryRepoPort } from "./write-service.js";
21
+ /**
22
+ * The exact slice of the route-deps bag Entries' tool handlers read. Declared structurally (rather
23
+ * than importing `server/routes/types`'s `RouteDeps`) so this module carries no back-edge into the
24
+ * composition root. `server/routes/*` satisfies this structurally by passing its existing
25
+ * `RouteDeps` object; nothing there changes.
26
+ *
27
+ * `contentTypeRepo` is typed as `write-service.ts`'s own `ContentTypeLookupPort` — the narrow
28
+ * lookup contract Entries itself declares, not content-types' full `ContentTypeRepoPort` — mirroring
29
+ * `RouteDeps`'s own doc comment on this field ("satisfies entries' `ContentTypeLookupPort`
30
+ * structurally").
31
+ */
32
+ export interface EntriesToolDeps {
33
+ authorize: AuthorizeFn;
34
+ workspaceId: string;
35
+ clock: {
36
+ nowIso(): string;
37
+ };
38
+ idGen: {
39
+ newId(): string;
40
+ };
41
+ outbox: OutboxPort;
42
+ entryRepo: EntryRepoPort & EntryListPort;
43
+ contentTypeRepo: ContentTypeLookupPort;
44
+ }
45
+ /**
46
+ * This wiring layer's OWN risk classification, authored from what each handler below actually
47
+ * calls. See `DerivedRiskByToolId` in the kit for why it is independent of the catalog's own
48
+ * `sideEffects` declaration.
49
+ */
50
+ export declare const entriesDerivedRisk: DerivedRiskByToolId;
51
+ export declare function buildEntriesRegistrations(routeDeps: EntriesToolDeps): ToolRegistration[];
52
+ //# sourceMappingURL=tool-registrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrations.d.ts","sourceRoot":"","sources":["../../src/entries/tool-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAYL,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAA0D,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAK5I;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,MAAM,IAAI,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,EAAE;QAAE,KAAK,IAAI,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,GAAG,aAAa,CAAC;IACzC,eAAe,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,mBAW/B,CAAC;AA8DH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,GAAG,gBAAgB,EAAE,CA4FxF"}
@@ -0,0 +1,141 @@
1
+ import { AGENT_TOOL_PRINCIPAL_KIND, buildDomainRegistrations, fromResult, indexCatalogById, optionalString, requireInputRecord, requireNumber, requireString, requireToolPermission, withSchemaOnRejection, } from "../core/tools/registration-kit.js";
2
+ import { entriesAgentToolCatalog } from "./agent-tools.js";
3
+ import { EntryFieldValidationError } from "./errors.js";
4
+ import { listEntries } from "./list.js";
5
+ import { createEntry, publishEntry, unpublishEntry, updateEntry } from "./write-service.js";
6
+ import { toEntryOutbox } from "./repo.memory.js";
7
+ const CATALOG_BY_ID = indexCatalogById(entriesAgentToolCatalog);
8
+ /**
9
+ * This wiring layer's OWN risk classification, authored from what each handler below actually
10
+ * calls. See `DerivedRiskByToolId` in the kit for why it is independent of the catalog's own
11
+ * `sideEffects` declaration.
12
+ */
13
+ export const entriesDerivedRisk = new Map([
14
+ // -> listEntries (list.ts): entryRepo.listByWorkspace only, no write.
15
+ ["collections_entry_list", "none"],
16
+ // -> createEntry (write-service.ts): entryRepo.save + appendRevision in one tx.
17
+ ["collections_entry_create", "mutates-durable-state"],
18
+ // -> updateEntry (write-service.ts): entryRepo.save + appendRevision in one tx.
19
+ ["collections_entry_update", "mutates-durable-state"],
20
+ // -> publishEntry (write-service.ts): status flip, save + appendRevision.
21
+ ["collections_entry_publish", "mutates-durable-state"],
22
+ // -> unpublishEntry (write-service.ts): status flip, save + appendRevision.
23
+ ["collections_entry_unpublish", "mutates-durable-state"],
24
+ ]);
25
+ /**
26
+ * The Entries rejections worth decorating with the published schema: `fieldsJson` SHAPE problems
27
+ * only. A not-found, a tombstoned-type rejection, or a version conflict is not a shape problem
28
+ * retrying the SAME input would ever resolve.
29
+ */
30
+ function isEntriesShapeRejection(error) {
31
+ return error instanceof EntryFieldValidationError;
32
+ }
33
+ /** Shared dependency bag for `write-service.ts` calls — every mutating handler here takes this
34
+ * identical shape (a superset of what `updateEntry`/`publishEntry`/`unpublishEntry` individually
35
+ * need; passing the extra `ids` field to those is harmless since none of them declare it). */
36
+ function entriesDeps(routeDeps) {
37
+ return {
38
+ entryRepo: routeDeps.entryRepo,
39
+ contentTypeRepo: routeDeps.contentTypeRepo,
40
+ clock: routeDeps.clock,
41
+ ids: routeDeps.idGen,
42
+ authorize: routeDeps.authorize,
43
+ outbox: toEntryOutbox(routeDeps),
44
+ };
45
+ }
46
+ /** Projects an `EntryRecord` into the explicit model-facing shape — `workspaceId` is dropped: the
47
+ * agent is already scoped to one workspace it did not choose and cannot change. */
48
+ function toEntryToolView(entry) {
49
+ return {
50
+ id: entry.id,
51
+ type: entry.type,
52
+ slug: entry.slug,
53
+ status: entry.status,
54
+ title: entry.title,
55
+ fieldsJson: entry.fieldsJson,
56
+ bodyJson: entry.bodyJson,
57
+ publishedAt: entry.publishedAt,
58
+ createdAt: entry.createdAt,
59
+ updatedAt: entry.updatedAt,
60
+ version: entry.version,
61
+ };
62
+ }
63
+ function fromEntryResult(fn) {
64
+ return fromResult(fn).then(({ entry }) => ({ entry: toEntryToolView(entry) }));
65
+ }
66
+ export function buildEntriesRegistrations(routeDeps) {
67
+ const handlers = {
68
+ collections_entry_list: async (ctx) => {
69
+ const input = ctx.input !== undefined ? requireInputRecord(ctx.input) : {};
70
+ await requireToolPermission(routeDeps, { principalId: ctx.principal.id, permission: "admin.collections.read", entityType: "entry" });
71
+ const { items } = await listEntries({ repo: routeDeps.entryRepo, workspaceId: routeDeps.workspaceId, type: optionalString(input, "type") });
72
+ return { items: items.map(toEntryToolView) };
73
+ },
74
+ collections_entry_create: async (ctx) => {
75
+ const input = requireInputRecord(ctx.input);
76
+ return withSchemaOnRejection({ toolId: "collections_entry_create", catalog: CATALOG_BY_ID, isShapeRejection: isEntriesShapeRejection }, () => fromEntryResult(() => createEntry({
77
+ deps: entriesDeps(routeDeps),
78
+ input: {
79
+ actorId: ctx.principal.id,
80
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
81
+ workspaceId: routeDeps.workspaceId,
82
+ type: requireString(input, "type"),
83
+ slug: requireString(input, "slug"),
84
+ title: requireString(input, "title"),
85
+ fieldsJson: input.fieldsJson ?? { ext: { site: {} } },
86
+ bodyJson: input.bodyJson,
87
+ },
88
+ })));
89
+ },
90
+ collections_entry_update: async (ctx) => {
91
+ const input = requireInputRecord(ctx.input);
92
+ return withSchemaOnRejection({ toolId: "collections_entry_update", catalog: CATALOG_BY_ID, isShapeRejection: isEntriesShapeRejection }, () => fromEntryResult(() => updateEntry({
93
+ deps: entriesDeps(routeDeps),
94
+ input: {
95
+ actorId: ctx.principal.id,
96
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
97
+ workspaceId: routeDeps.workspaceId,
98
+ id: requireString(input, "id"),
99
+ title: typeof input.title === "string" ? input.title : undefined,
100
+ fieldsJson: input.fieldsJson,
101
+ expectedVersion: requireNumber(input, "expectedVersion"),
102
+ },
103
+ })));
104
+ },
105
+ collections_entry_publish: async (ctx) => {
106
+ const input = requireInputRecord(ctx.input);
107
+ return fromEntryResult(() => publishEntry({
108
+ deps: entriesDeps(routeDeps),
109
+ input: {
110
+ actorId: ctx.principal.id,
111
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
112
+ workspaceId: routeDeps.workspaceId,
113
+ id: requireString(input, "id"),
114
+ expectedVersion: requireNumber(input, "expectedVersion"),
115
+ },
116
+ }));
117
+ },
118
+ collections_entry_unpublish: async (ctx) => {
119
+ const input = requireInputRecord(ctx.input);
120
+ return fromEntryResult(() => unpublishEntry({
121
+ deps: entriesDeps(routeDeps),
122
+ input: {
123
+ actorId: ctx.principal.id,
124
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
125
+ workspaceId: routeDeps.workspaceId,
126
+ id: requireString(input, "id"),
127
+ expectedVersion: requireNumber(input, "expectedVersion"),
128
+ },
129
+ }));
130
+ },
131
+ };
132
+ // No `unwiredToolIds`: Entries wires its ENTIRE catalog, same tripwire discipline as Widgets/Forms.
133
+ return buildDomainRegistrations({
134
+ domain: "entries",
135
+ catalogModule: "features/entries/agent-tools.ts",
136
+ catalog: CATALOG_BY_ID,
137
+ handlers,
138
+ derivedRisk: entriesDerivedRisk,
139
+ });
140
+ }
141
+ //# sourceMappingURL=tool-registrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrations.js","sourceRoot":"","sources":["../../src/entries/tool-registrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { ContentTypeFieldDef, ContentTypeStatus } from "../content-types/types.js";
2
+ /**
3
+ * @file Shared vocabulary for the `entries` package.
4
+ *
5
+ * Purpose:
6
+ * The `EntryRecord` shape (the universal columns + the namespaced `fields.ext.{owner}.*`
7
+ * bag) and the read-only slice of a content type this package needs (`fields`/`status`/
8
+ * `workspaceId`) — imported by type only from `features/content-types`, never a runtime value, so
9
+ * this package never calls into content-types' write path directly.
10
+ *
11
+ * Architectural role:
12
+ * `features/entries` domain vocabulary. Type-only dependency on `features/content-types/types`.
13
+ */
14
+ export type EntryStatus = "draft" | "published" | "unpublished";
15
+ /** The validated, namespaced field-extension envelope: `{ ext: { site: {...} } }`. */
16
+ export interface EntryFieldsJson {
17
+ ext: {
18
+ site: Record<string, unknown>;
19
+ };
20
+ }
21
+ export interface EntryRecord {
22
+ id: string;
23
+ workspaceId: string;
24
+ type: string;
25
+ slug: string;
26
+ status: EntryStatus;
27
+ title: string;
28
+ bodyJson: unknown | null;
29
+ fieldsJson: unknown;
30
+ publishedAt: string | null;
31
+ createdAt: string;
32
+ updatedAt: string;
33
+ version: number;
34
+ }
35
+ /** The read-only slice of a `content_types` row entries need — never entries' own write authority. */
36
+ export interface OwningContentType {
37
+ workspaceId: string;
38
+ key: string;
39
+ status: ContentTypeStatus;
40
+ fields: ContentTypeFieldDef[];
41
+ }
42
+ export interface ActorIdentityInput {
43
+ actorId: string;
44
+ principalKind?: "user" | "agent" | "api_key";
45
+ delegatedByWorkspaceId?: string | null;
46
+ delegatedById?: string | null;
47
+ }
48
+ export type Result<T, E> = {
49
+ ok: true;
50
+ value: T;
51
+ } | {
52
+ ok: false;
53
+ error: E;
54
+ };
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entries/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAExF;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhE,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sGAAsG;AACtG,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entries/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,202 @@
1
+ import type { ClockPort } from "../core/ports.js";
2
+ import type { ActorIdentityInput, EntryRecord, OwningContentType, Result } from "./types.js";
3
+ /**
4
+ * @file The `entries` write chokepoint: `createEntry`,
5
+ * `updateEntry`, `publishEntry`, `unpublishEntry`.
6
+ *
7
+ * Purpose:
8
+ * The ONLY path that creates or mutates an `entries` row. `createEntry` validates the owning
9
+ * content type exists IN THIS WORKSPACE (a soft polymorphic reference, so a same-key type
10
+ * owned by a different workspace must never be silently accepted), is `active` (new-entry
11
+ * creation is blocked for both `deprecated` and `tombstone` owning types), and that `(workspaceId,
12
+ * type, slug)` is unique before writing.
13
+ *
14
+ * `updateEntry`/`publishEntry`/`unpublishEntry` invert that rule: only a
15
+ * `tombstone` owning type blocks these; `deprecated` blocks none of them —
16
+ * deprecation only ever stops NEW entries, never touches entries that already exist.
17
+ *
18
+ * How it relates to the project:
19
+ * `deps.watermark` and the actor-identity delegation fields mirror
20
+ * `features/content-types/write-service.ts`'s identical optional/additive shape —
21
+ * `watermark-stamping.integration.test.ts` exercises both packages side by side to prove they
22
+ * share the same chokepoint discipline.
23
+ *
24
+ * Architectural role:
25
+ * `features/entries` domain logic. Depends only on `core/ports` and this package's own
26
+ * `errors.ts`/`field-validation.ts`/`types.ts` — never on `features/content-types`' write path,
27
+ * only its read-only `OwningContentType` type shape.
28
+ */
29
+ export type AuthorizeFn = (params: {
30
+ principalId: string;
31
+ permission: string;
32
+ workspaceId: string;
33
+ }) => Promise<{
34
+ allowed: boolean;
35
+ reason: string;
36
+ }>;
37
+ export interface EntryRevisionInput {
38
+ entryId: string;
39
+ workspaceId: string;
40
+ op: "create" | "update" | "publish" | "unpublish";
41
+ stateJson: EntryRecord;
42
+ actorId: string;
43
+ delegatedByWorkspaceId: string | null;
44
+ delegatedById: string | null;
45
+ recordedAt: string;
46
+ }
47
+ export interface EntryRepoPort {
48
+ findBySlug(params: {
49
+ workspaceId: string;
50
+ type: string;
51
+ slug: string;
52
+ }): Promise<EntryRecord | null>;
53
+ findById(params: {
54
+ workspaceId: string;
55
+ id: string;
56
+ }): Promise<EntryRecord | null>;
57
+ save(row: EntryRecord): Promise<void>;
58
+ appendRevision(revision: EntryRevisionInput): Promise<void>;
59
+ transaction<T>(fn: () => Promise<T>): Promise<T>;
60
+ }
61
+ export interface ContentTypeLookupPort {
62
+ findByKey(params: {
63
+ workspaceId: string;
64
+ key: string;
65
+ }): Promise<OwningContentType | null>;
66
+ }
67
+ export interface OutboxPort {
68
+ enqueue(event: {
69
+ name: string;
70
+ payload: Record<string, unknown>;
71
+ }): Promise<void>;
72
+ }
73
+ /** Optional — advances `database_write_watermark` by exactly 1 when supplied. */
74
+ export interface WatermarkPort {
75
+ stampWatermark(input: {
76
+ workspaceId: string;
77
+ }): Promise<number>;
78
+ }
79
+ export interface CreateEntryRequired {
80
+ deps: {
81
+ entryRepo: EntryRepoPort;
82
+ contentTypeRepo: ContentTypeLookupPort;
83
+ clock: ClockPort;
84
+ ids: {
85
+ newId: () => string;
86
+ };
87
+ authorize: AuthorizeFn;
88
+ outbox: OutboxPort;
89
+ watermark?: WatermarkPort;
90
+ /**
91
+ * Optional same-transaction side effect (e.g. a feature's `entry_refs` extractor), invoked
92
+ * inside the write's own `entryRepo.transaction()` block, after `save`/`appendRevision` but
93
+ * before commit — so a failure here rolls back the whole write, same unit of work, not a
94
+ * best-effort follow-up call. Purely additive: omit it and behavior is unchanged.
95
+ */
96
+ onWritten?: (entry: EntryRecord) => Promise<void>;
97
+ };
98
+ input: ActorIdentityInput & {
99
+ workspaceId: string;
100
+ type: string;
101
+ slug: string;
102
+ title: string;
103
+ fieldsJson: unknown;
104
+ bodyJson?: unknown;
105
+ /** The `ext` sub-key `fieldsJson` is namespaced under. Defaults to `"site"` — see `field-validation.ts`'s `validateFieldsAgainstSchema`. */
106
+ owner?: string | undefined;
107
+ };
108
+ }
109
+ /**
110
+ * REQ-13/14/19 — creates a new entry. Order: authorize -> owning-type exists AND is owned by this
111
+ * workspace (INV-01) -> owning-type is `active` (REQ-10) -> `fieldsJson` validates against the
112
+ * type's current schema -> `(workspaceId, type, slug)` uniqueness (AC-21) -> same-tx write +
113
+ * revision + watermark + optional `deps.onWritten` side effect -> `entry.created` outbox event
114
+ * (AC-27).
115
+ *
116
+ * @complexity O(1) plus one content-type read, one field-validation pass, one slug lookup, and one
117
+ * same-tx write pair.
118
+ * @overallScore 100
119
+ */
120
+ export declare function createEntry(required: CreateEntryRequired): Promise<Result<{
121
+ entry: EntryRecord;
122
+ }, Error>>;
123
+ interface ExistingEntryTransitionDeps {
124
+ entryRepo: EntryRepoPort;
125
+ contentTypeRepo: ContentTypeLookupPort;
126
+ clock: ClockPort;
127
+ authorize: AuthorizeFn;
128
+ outbox: OutboxPort;
129
+ watermark?: WatermarkPort;
130
+ /** Optional same-transaction side effect — see `CreateEntryRequired.deps.onWritten`. Only `updateEntry` invokes it; `publishEntry`/`unpublishEntry` don't change `fieldsJson`/`bodyJson`, so they have nothing to re-extract. */
131
+ onWritten?: (entry: EntryRecord) => Promise<void>;
132
+ }
133
+ export interface UpdateEntryRequired {
134
+ deps: ExistingEntryTransitionDeps;
135
+ input: ActorIdentityInput & {
136
+ workspaceId: string;
137
+ id: string;
138
+ title?: string | undefined;
139
+ fieldsJson?: unknown;
140
+ /**
141
+ * Additive-only, optional. Every pre-existing caller omits this and is byte-for-byte
142
+ * unaffected (verified via a full-suite run before/after this change — see the widgets
143
+ * implementation report's identical `onWritten` precedent for the same verification
144
+ * discipline). Closes a real, previously-disclosed gap: no path existed to change an entry's
145
+ * `bodyJson` after creation (only `createEntry` accepted it), which blocked a server-side,
146
+ * versioned document-mutation command for widgetEmbed nodes — that command IS an
147
+ * `updateEntry` call with a mutated `bodyJson`, through the SAME chokepoint, `expectedVersion`
148
+ * guard, and revision machinery every other update already uses, not a second mutation path.
149
+ * No schema validation is applied to `bodyJson` here (none is applied anywhere else in this
150
+ * codebase either — every existing `bodyJson` writer, e.g. `CollectionEntryEditor.tsx`'s
151
+ * create call, already writes arbitrary TipTap JSON unchecked); `widgets/embed-service.ts` is
152
+ * responsible for its own guardrail check (`validateWidgetEmbedMutation`) before ever calling
153
+ * this.
154
+ */
155
+ bodyJson?: unknown;
156
+ expectedVersion: number;
157
+ /** The `ext` sub-key `fieldsJson` is namespaced under. Defaults to `"site"` — see `field-validation.ts`'s `validateFieldsAgainstSchema`. */
158
+ owner?: string | undefined;
159
+ };
160
+ }
161
+ /**
162
+ * REQ-28 — updates an existing entry's `title`/`fieldsJson`/`bodyJson` (only the fields supplied
163
+ * are changed). Rejected `ContentTypeNotActiveError` only if the owning type is `tombstone`
164
+ * (AC-44/EC-13); a `deprecated` owning type is fine (AC-46).
165
+ *
166
+ * @complexity O(1) plus the shared resolve step and, when `fieldsJson` is supplied, one
167
+ * field-validation pass.
168
+ * @overallScore 100
169
+ */
170
+ export declare function updateEntry(required: UpdateEntryRequired): Promise<Result<{
171
+ entry: EntryRecord;
172
+ }, Error>>;
173
+ export interface PublishUnpublishEntryRequired {
174
+ deps: ExistingEntryTransitionDeps;
175
+ input: ActorIdentityInput & {
176
+ workspaceId: string;
177
+ id: string;
178
+ expectedVersion: number;
179
+ };
180
+ }
181
+ /**
182
+ * REQ-28 — flips an entry to `published`. Rejected `ContentTypeNotActiveError` only if the owning
183
+ * type is `tombstone` (AC-45), with NO outbox event enqueued on rejection.
184
+ *
185
+ * @complexity O(1) plus the shared resolve step and one same-tx write pair.
186
+ * @overallScore 100
187
+ */
188
+ export declare function publishEntry(required: PublishUnpublishEntryRequired): Promise<Result<{
189
+ entry: EntryRecord;
190
+ }, Error>>;
191
+ /**
192
+ * REQ-28 — flips an entry to `unpublished`. Rejected `ContentTypeNotActiveError` only if the
193
+ * owning type is `tombstone` (AC-45), with NO outbox event enqueued on rejection.
194
+ *
195
+ * @complexity O(1) plus the shared resolve step and one same-tx write pair.
196
+ * @overallScore 100
197
+ */
198
+ export declare function unpublishEntry(required: PublishUnpublishEntryRequired): Promise<Result<{
199
+ entry: EntryRecord;
200
+ }, Error>>;
201
+ export {};
202
+ //# sourceMappingURL=write-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-service.d.ts","sourceRoot":"","sources":["../../src/entries/write-service.ts"],"names":[],"mappings":"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"}