@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,44 @@
1
+ import type { ContentTypeRecord } from "./types.js";
2
+ /**
3
+ * @file Admin-UI backend-gap closure (design-spec.md §1.9) — the `content_types` registry's
4
+ * missing read side. `write-service.ts`/`lifecycle.ts` were fully built and tested with no way to
5
+ * list what had been written; this is that read.
6
+ *
7
+ * Purpose:
8
+ * `listContentTypes` mirrors `features/database/timeline.ts`'s `getTimeline` shape exactly: a thin
9
+ * pass-through over an injected read port, no authorization/business logic of its own (the caller
10
+ * route checks `admin.collections.read` before calling this, same division of labor
11
+ * `routes/admin/database/timeline.ts` already established).
12
+ *
13
+ * How it relates to the project:
14
+ * `ContentTypeListPort` is deliberately a NEW, narrower port — not an addition to
15
+ * `write-service.ts`'s `ContentTypeRepoPort` — so a caller who only needs read access
16
+ * (`routes/admin/content-types/list.ts`) can be typed against just this port, matching this
17
+ * codebase's port-segregation convention (`LedgerReadPort` vs `BootLedgerPort` on the same
18
+ * underlying table, `db/sqlite/database-journal-repo.ts`). The concrete adapter
19
+ * (`repo.memory.ts`'s `InMemoryContentTypeRepo`) implements both this and `ContentTypeRepoPort`.
20
+ *
21
+ * Architectural role:
22
+ * `features/content-types` domain logic. Depends only on this package's own `types.ts`.
23
+ */
24
+ export interface ContentTypeListPort {
25
+ /** Every content type registered for `workspaceId`, in no particular guaranteed order (the
26
+ * route layer is free to sort for display; the original design does not specify a canonical list order). */
27
+ listByWorkspace(params: {
28
+ workspaceId: string;
29
+ }): Promise<ContentTypeRecord[]>;
30
+ }
31
+ /**
32
+ * Lists every content type registered in `workspaceId`.
33
+ *
34
+ * @complexity O(1) plus one `ContentTypeListPort.listByWorkspace()` call (the port owns the actual
35
+ * scan cost).
36
+ * @overallScore 100
37
+ */
38
+ export declare function listContentTypes(required: {
39
+ repo: ContentTypeListPort;
40
+ workspaceId: string;
41
+ }, _optional?: Record<string, never>): Promise<{
42
+ items: ContentTypeRecord[];
43
+ }>;
44
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/content-types/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,mBAAmB;IAClC;gHAC4G;IAC5G,eAAe,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;CAChF;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAC5D,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GACpC,OAAO,CAAC;IAAE,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAIzC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Lists every content type registered in `workspaceId`.
3
+ *
4
+ * @complexity O(1) plus one `ContentTypeListPort.listByWorkspace()` call (the port owns the actual
5
+ * scan cost).
6
+ * @overallScore 100
7
+ */
8
+ export async function listContentTypes(required, _optional = {}) {
9
+ const { repo, workspaceId } = required;
10
+ const items = await repo.listByWorkspace({ workspaceId });
11
+ return { items };
12
+ }
13
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/content-types/list.ts"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA4D,EAC5D,YAAmC,EAAE;IAErC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { ContentTypeRepoPort, ContentTypeRevisionInput, IndexProvisionerPort, OutboxPort } from "./write-service.js";
2
+ import type { TeardownIndexProvisionerPort } from "./lifecycle.js";
3
+ import type { ContentTypeListPort } from "./list.js";
4
+ import type { ContentTypeRecord } from "./types.js";
5
+ /**
6
+ * @file In-memory adapters for the `content-types` package's write/list ports (port/adapter rule-of-two
7
+ * "one being built now" half). Backs `server/app.ts`'s hermetic test/dev composition AND, until a
8
+ * real SQLite adapter is built for this domain (a disclosed gap — see this dispatch's handoff),
9
+ * `server/deps.ts`'s real running-server composition too — the same precedent `mediaRepo`/
10
+ * `transformDefinitionRepo`/`memberRepo` already establish in both those files (in-process,
11
+ * non-persistent-across-restarts rows are an accepted stand-in until each domain gets its own
12
+ * `repo.sqlite.ts`).
13
+ */
14
+ /** In-memory `ContentTypeRepoPort` + `ContentTypeListPort` double, keyed by `(workspaceId, key)`. */
15
+ export declare class InMemoryContentTypeRepo implements ContentTypeRepoPort, ContentTypeListPort {
16
+ private readonly rows;
17
+ private readonly revisions;
18
+ private static key;
19
+ save(row: ContentTypeRecord): Promise<void>;
20
+ appendRevision(revision: ContentTypeRevisionInput): Promise<void>;
21
+ /**
22
+ * The append-only revision log, oldest first. Not part of `ContentTypeRepoPort` — the domain only
23
+ * ever appends. Exposed so route-level tests can assert what provenance
24
+ * (`actorId`/`principalKind`) a write actually recorded, which is otherwise unobservable in the
25
+ * hermetic in-memory composition; `SqliteContentTypeRepo`'s equivalent is a plain table read.
26
+ *
27
+ * @complexity O(n) in the number of recorded revisions (defensive copy).
28
+ * @overallScore 100
29
+ */
30
+ listRevisions(): ContentTypeRevisionInput[];
31
+ findByKey(params: {
32
+ workspaceId: string;
33
+ key: string;
34
+ }): Promise<ContentTypeRecord | null>;
35
+ transaction<T>(fn: () => Promise<T>): Promise<T>;
36
+ listByWorkspace(params: {
37
+ workspaceId: string;
38
+ }): Promise<ContentTypeRecord[]>;
39
+ }
40
+ /** In-memory `IndexProvisionerPort` + `TeardownIndexProvisionerPort` no-op double. Real DDL index
41
+ * provisioning (`index-provisioning.ts`'s CAST-mapping) targets `content.db` tables this domain
42
+ * has no SQLite adapter for yet (see this file's header) — a no-op here is honest given that, not
43
+ * a shortcut around a working implementation. */
44
+ export declare class NoopContentTypeIndexProvisioner implements IndexProvisionerPort, TeardownIndexProvisionerPort {
45
+ provisionIndexesForNewContentType(): Promise<void>;
46
+ applyFieldIndexTransitions(): Promise<void>;
47
+ tearDownAllIndexesForContentType(): Promise<void>;
48
+ }
49
+ /** Adapts a real `core/ports` `OutboxPort` (`{name,payload}` -> full `DomainEvent`) into the
50
+ * narrower `{enqueue({name,payload})}` shape this package's write-service/lifecycle modules
51
+ * declare locally (mirrors their own "no shared import, kept decoupled" convention). */
52
+ export declare function toContentTypeOutbox(deps: {
53
+ outbox: {
54
+ enqueue(event: {
55
+ id: string;
56
+ workspaceId: string;
57
+ name: string;
58
+ occurredAt: string;
59
+ payload: Record<string, unknown>;
60
+ }): Promise<void>;
61
+ };
62
+ clock: {
63
+ nowIso(): string;
64
+ };
65
+ idGen: {
66
+ newId(): string;
67
+ };
68
+ /** Required — see `entries/repo.memory.ts`'s `toEntryOutbox` for the full rationale (workspace
69
+ * tenant boundary, NOT NULL in persistent adapters, previously under-declared and omitted). */
70
+ workspaceId: string;
71
+ }): OutboxPort;
72
+ //# sourceMappingURL=repo.memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.memory.d.ts","sourceRoot":"","sources":["../../src/content-types/repo.memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;GAQG;AAEH,qGAAqG;AACrG,qBAAa,uBAAwB,YAAW,mBAAmB,EAAE,mBAAmB;IACtF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAE5D,OAAO,CAAC,MAAM,CAAC,GAAG;IAIZ,IAAI,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,cAAc,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE;;;;;;;;OAQG;IACH,aAAa,IAAI,wBAAwB,EAAE;IAIrC,SAAS,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAK1F,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,eAAe,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAGrF;AAED;;;iDAGiD;AACjD,qBAAa,+BAAgC,YAAW,oBAAoB,EAAE,4BAA4B;IAClG,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAClD,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3C,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;CACxD;AAED;;wFAEwF;AACxF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE;QACN,OAAO,CAAC,KAAK,EAAE;YACb,EAAE,EAAE,MAAM,CAAC;YACX,WAAW,EAAE,MAAM,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QAAE,MAAM,IAAI,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,EAAE;QAAE,KAAK,IAAI,MAAM,CAAA;KAAE,CAAC;IAC3B;mGAC+F;IAC/F,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,UAAU,CAYb"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @file In-memory adapters for the `content-types` package's write/list ports (port/adapter rule-of-two
3
+ * "one being built now" half). Backs `server/app.ts`'s hermetic test/dev composition AND, until a
4
+ * real SQLite adapter is built for this domain (a disclosed gap — see this dispatch's handoff),
5
+ * `server/deps.ts`'s real running-server composition too — the same precedent `mediaRepo`/
6
+ * `transformDefinitionRepo`/`memberRepo` already establish in both those files (in-process,
7
+ * non-persistent-across-restarts rows are an accepted stand-in until each domain gets its own
8
+ * `repo.sqlite.ts`).
9
+ */
10
+ /** In-memory `ContentTypeRepoPort` + `ContentTypeListPort` double, keyed by `(workspaceId, key)`. */
11
+ export class InMemoryContentTypeRepo {
12
+ rows = new Map();
13
+ revisions = [];
14
+ static key(workspaceId, key) {
15
+ return `${workspaceId}::${key}`;
16
+ }
17
+ async save(row) {
18
+ this.rows.set(InMemoryContentTypeRepo.key(row.workspaceId, row.key), { ...row });
19
+ }
20
+ async appendRevision(revision) {
21
+ this.revisions.push(revision);
22
+ }
23
+ /**
24
+ * The append-only revision log, oldest first. Not part of `ContentTypeRepoPort` — the domain only
25
+ * ever appends. Exposed so route-level tests can assert what provenance
26
+ * (`actorId`/`principalKind`) a write actually recorded, which is otherwise unobservable in the
27
+ * hermetic in-memory composition; `SqliteContentTypeRepo`'s equivalent is a plain table read.
28
+ *
29
+ * @complexity O(n) in the number of recorded revisions (defensive copy).
30
+ * @overallScore 100
31
+ */
32
+ listRevisions() {
33
+ return this.revisions.map((revision) => ({ ...revision }));
34
+ }
35
+ async findByKey(params) {
36
+ const row = this.rows.get(InMemoryContentTypeRepo.key(params.workspaceId, params.key));
37
+ return row ? { ...row } : null;
38
+ }
39
+ async transaction(fn) {
40
+ return fn();
41
+ }
42
+ async listByWorkspace(params) {
43
+ return [...this.rows.values()].filter((row) => row.workspaceId === params.workspaceId).map((row) => ({ ...row }));
44
+ }
45
+ }
46
+ /** In-memory `IndexProvisionerPort` + `TeardownIndexProvisionerPort` no-op double. Real DDL index
47
+ * provisioning (`index-provisioning.ts`'s CAST-mapping) targets `content.db` tables this domain
48
+ * has no SQLite adapter for yet (see this file's header) — a no-op here is honest given that, not
49
+ * a shortcut around a working implementation. */
50
+ export class NoopContentTypeIndexProvisioner {
51
+ async provisionIndexesForNewContentType() { }
52
+ async applyFieldIndexTransitions() { }
53
+ async tearDownAllIndexesForContentType() { }
54
+ }
55
+ /** Adapts a real `core/ports` `OutboxPort` (`{name,payload}` -> full `DomainEvent`) into the
56
+ * narrower `{enqueue({name,payload})}` shape this package's write-service/lifecycle modules
57
+ * declare locally (mirrors their own "no shared import, kept decoupled" convention). */
58
+ export function toContentTypeOutbox(deps) {
59
+ return {
60
+ enqueue: async (event) => {
61
+ await deps.outbox.enqueue({
62
+ id: deps.idGen.newId(),
63
+ workspaceId: deps.workspaceId,
64
+ name: event.name,
65
+ occurredAt: deps.clock.nowIso(),
66
+ payload: event.payload,
67
+ });
68
+ },
69
+ };
70
+ }
71
+ //# sourceMappingURL=repo.memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.memory.js","sourceRoot":"","sources":["../../src/content-types/repo.memory.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AAEH,qGAAqG;AACrG,MAAM,OAAO,uBAAuB;IACjB,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5C,SAAS,GAA+B,EAAE,CAAC;IAEpD,MAAM,CAAC,GAAG,CAAC,WAAmB,EAAE,GAAW;QACjD,OAAO,GAAG,WAAW,KAAK,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAsB;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAkC;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;OAQG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAA4C;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvF,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,EAAoB;QACvC,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA+B;QACnD,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC;CACF;AAED;;;iDAGiD;AACjD,MAAM,OAAO,+BAA+B;IAC1C,KAAK,CAAC,iCAAiC,KAAmB,CAAC;IAC3D,KAAK,CAAC,0BAA0B,KAAmB,CAAC;IACpD,KAAK,CAAC,gCAAgC,KAAmB,CAAC;CAC3D;AAED;;wFAEwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,IAenC;IACC,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBACtB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @file Content-types' half of the agent-tool authorization wiring: maps `agent-tools.ts`'s catalog entries onto the
3
+ * `write-service.ts`/`lifecycle.ts` functions the admin HTTP routes call, as `ToolRegistration`s.
4
+ *
5
+ * Colocated with the domain rather than in `assistant/`, so the knowledge this file depends on —
6
+ * which domain function each tool id runs, and therefore what it actually costs — lives next to
7
+ * those functions. `assistant/tool-registrations.ts` only assembles what every domain returns.
8
+ *
9
+ * Scope: 6 of 7 entries are wired — the 5 non-cleanup mutations plus the read-only
10
+ * `collections_content_type_list`. `collections_plan_cleanup`/`collections_execute_cleanup` are
11
+ * declared unwired — the destructive token-gated ceremony, whose mapping is deferred per this
12
+ * catalog's own deferred list. `ToolRegistry.list()` will not show them, which is intentional: no silent stub
13
+ * registrations that could look like a bug if ever actually invoked.
14
+ *
15
+ * `ToolPolicy.authorize` is a pass-through for every entry here (see `buildDomainRegistrations`).
16
+ * For the five mutations, that is the "one evaluator" rule: each domain entrypoint —
17
+ * `registerContentType`, `updateContentTypeFields` (`write-service.ts`), `deprecateContentType`,
18
+ * `reactivateContentType`, `tombstoneContentType` (`lifecycle.ts`) — opens with an
19
+ * `await deps.authorize({ permission: 'admin.collections.manage', ... })` that returns
20
+ * `ForbiddenError` before any repo read, repo write, or index-provisioner call, and
21
+ * `admin.collections.manage` is exactly what each of their five catalog entries declares under
22
+ * `authorization.permission`. `assistant/__tests__/tool-registrations.authorization.test.ts` drives
23
+ * all five through a denying `authorize` and asserts each refuses and writes nothing, deriving its
24
+ * expectations from the catalog itself — so a future tool wired here whose handler does NOT
25
+ * self-enforce fails rather than silently inheriting the pass-through.
26
+ *
27
+ * `collections_content_type_list` is the exception: `listContentTypes` (`list.ts`) is a pure
28
+ * pass-through read with no `authorize()` call of its own — exactly like `routes/admin/content-
29
+ * types/list.ts`, which checks `admin.collections.read` in the route BEFORE calling it. Its handler
30
+ * below does the identical explicit `requireToolPermission` check, in the route's place, the same
31
+ * pattern `comments/tool-registrations.ts` uses for `comments_list_moderation_queue`.
32
+ */
33
+ import type { AuthorizeFn } from "../core/commands/command.js";
34
+ import type { OutboxPort } from "../core/ports.js";
35
+ import { type DerivedRiskByToolId, type ToolRegistration } from "../core/tools/registration-kit.js";
36
+ import { type ContentTypeListPort } from "./list.js";
37
+ import { type TeardownIndexProvisionerPort } from "./lifecycle.js";
38
+ import { type ContentTypeRepoPort, type IndexProvisionerPort } from "./write-service.js";
39
+ /**
40
+ * The exact slice of the route-deps bag Content-Types' tool handlers read. Declared structurally
41
+ * (rather than importing `server/routes/types`'s `RouteDeps`) so this module carries no back-edge
42
+ * into the composition root. `server/routes/*` satisfies this structurally by passing its existing
43
+ * `RouteDeps` object; nothing there changes.
44
+ */
45
+ export interface ContentTypesToolDeps {
46
+ authorize: AuthorizeFn;
47
+ workspaceId: string;
48
+ clock: {
49
+ nowIso(): string;
50
+ };
51
+ idGen: {
52
+ newId(): string;
53
+ };
54
+ outbox: OutboxPort;
55
+ contentTypeRepo: ContentTypeRepoPort & ContentTypeListPort;
56
+ contentTypeIndexProvisioner: IndexProvisionerPort & TeardownIndexProvisionerPort;
57
+ }
58
+ /**
59
+ * This wiring layer's OWN risk classification, authored from what each handler below actually
60
+ * calls — deliberately a second, independent source rather than a read of the catalog's own
61
+ * `sideEffects` field. See `DerivedRiskByToolId` in the kit for why that independence matters.
62
+ */
63
+ export declare const contentTypesDerivedRisk: DerivedRiskByToolId;
64
+ export declare function buildContentTypesRegistrations(routeDeps: ContentTypesToolDeps): ToolRegistration[];
65
+ //# sourceMappingURL=tool-registrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrations.d.ts","sourceRoot":"","sources":["../../src/content-types/tool-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;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,EAAoB,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAqE,KAAK,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAEtI,OAAO,EAAgD,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAIvI;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,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,eAAe,EAAE,mBAAmB,GAAG,mBAAmB,CAAC;IAC3D,2BAA2B,EAAE,oBAAoB,GAAG,4BAA4B,CAAC;CAClF;AAKD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAcpC,CAAC;AA6EH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,oBAAoB,GAAG,gBAAgB,EAAE,CAmGlG"}
@@ -0,0 +1,180 @@
1
+ import { AGENT_TOOL_PRINCIPAL_KIND, buildDomainRegistrations, decorateWithSchema, fromResult, indexCatalogById, requireInputRecord, requireNoInput, requireNumber, requireString, requireToolPermission, } from "../core/tools/registration-kit.js";
2
+ import { contentTypesAgentToolCatalog } from "./agent-tools.js";
3
+ import { parseContentTypeFieldDefs } from "./field-defs.js";
4
+ import { listContentTypes } from "./list.js";
5
+ import { deprecateContentType, reactivateContentType, tombstoneContentType } from "./lifecycle.js";
6
+ import { registerContentType, updateContentTypeFields } from "./write-service.js";
7
+ const CATALOG_BY_ID = indexCatalogById(contentTypesAgentToolCatalog);
8
+ /** Descriptors for the 2 cleanup tools this pass does not wire — see file header. */
9
+ const UNWIRED_CONTENT_TYPES_TOOL_IDS = new Set(["collections_plan_cleanup", "collections_execute_cleanup"]);
10
+ /**
11
+ * This wiring layer's OWN risk classification, authored from what each handler below actually
12
+ * calls — deliberately a second, independent source rather than a read of the catalog's own
13
+ * `sideEffects` field. See `DerivedRiskByToolId` in the kit for why that independence matters.
14
+ */
15
+ export const contentTypesDerivedRisk = new Map([
16
+ // -> listContentTypes (list.ts): one repo.listByWorkspace read, no write of any kind.
17
+ ["collections_content_type_list", "none"],
18
+ // -> registerContentType (write-service.ts): repo.save + appendRevision in one tx.
19
+ ["collections_content_type_define", "mutates-durable-state"],
20
+ // -> updateContentTypeFields (write-service.ts): full field-schema replace + index transitions.
21
+ ["collections_content_type_update_fields", "mutates-durable-state"],
22
+ // -> deprecateContentType (lifecycle.ts): status flip + revision.
23
+ ["collections_content_type_deprecate", "mutates-durable-state"],
24
+ // -> reactivateContentType (lifecycle.ts): status flip + revision.
25
+ ["collections_content_type_reactivate", "mutates-durable-state"],
26
+ // -> tombstoneContentType (lifecycle.ts): one-way terminal transition that tears down every
27
+ // provisioned index BEFORE persisting the flip. The heaviest of the five.
28
+ ["collections_content_type_tombstone", "mutates-durable-state"],
29
+ ]);
30
+ /**
31
+ * Validates `input.fields` through the SAME boundary parser the admin HTTP routes use
32
+ * (`field-defs.ts`), then re-throws any rejection with the tool's published `inputSchema` appended.
33
+ *
34
+ * The appended schema is the error-recovery half of the contract: a model that gets back only
35
+ * "fields[0].queryable must be a boolean" has to guess the rest of the shape, whereas one that
36
+ * gets the schema alongside it can correct the call in a single turn.
37
+ *
38
+ * @complexity O(f) in the field count, delegated to the parser.
39
+ * @overallScore 100
40
+ */
41
+ function requireFields(input, toolId) {
42
+ const parsed = parseContentTypeFieldDefs(input.fields);
43
+ if (parsed.ok)
44
+ return parsed.value;
45
+ throw decorateWithSchema({ toolId, catalog: CATALOG_BY_ID, message: parsed.error.message });
46
+ }
47
+ /**
48
+ * Projects a `ContentTypeRecord` into the explicit model-facing shape, instead of returning the
49
+ * domain record verbatim.
50
+ *
51
+ * Two reasons this is a named projection rather than a pass-through. `workspaceId` is dropped: the
52
+ * agent is already scoped to one workspace it did not choose and cannot change, so echoing the id
53
+ * back spends model attention on a value that can never inform a decision. And an explicit view
54
+ * means a future field added to `ContentTypeRecord` — for a plugin, an internal counter, an
55
+ * operator note — does not silently begin flowing to the model as a side effect of a domain change.
56
+ *
57
+ * `version` is deliberately kept: every mutating tool requires `expectedVersion`, so the model
58
+ * needs the post-write value to make a correct follow-up call without re-reading.
59
+ *
60
+ * @param record - The content type as the domain returned it.
61
+ * @returns The model-facing view. `tombstonedAt` is present only when set, so an active type's
62
+ * payload carries no always-null key.
63
+ * @complexity O(f) in the field count (the array is copied so the caller cannot alias domain state).
64
+ * @overallScore 100
65
+ */
66
+ function toContentTypeView(record) {
67
+ const view = {
68
+ key: record.key,
69
+ label: record.label,
70
+ status: record.status,
71
+ version: record.version,
72
+ fields: [...record.fields],
73
+ };
74
+ if (record.tombstonedAt)
75
+ view.tombstonedAt = record.tombstonedAt;
76
+ return view;
77
+ }
78
+ function fromContentTypeResult(fn) {
79
+ return fromResult(fn).then(({ contentType }) => ({ contentType: toContentTypeView(contentType) }));
80
+ }
81
+ function contentTypesDeps(routeDeps) {
82
+ return {
83
+ repo: routeDeps.contentTypeRepo,
84
+ clock: routeDeps.clock,
85
+ ids: routeDeps.idGen,
86
+ authorize: routeDeps.authorize,
87
+ outbox: routeDeps.outbox,
88
+ indexProvisioner: routeDeps.contentTypeIndexProvisioner,
89
+ };
90
+ }
91
+ export function buildContentTypesRegistrations(routeDeps) {
92
+ const handlers = {
93
+ collections_content_type_list: async (ctx) => {
94
+ requireNoInput(ctx.input);
95
+ await requireToolPermission(routeDeps, {
96
+ principalId: ctx.principal.id,
97
+ permission: "admin.collections.read",
98
+ entityType: "content-type",
99
+ });
100
+ const { items } = await listContentTypes({ repo: routeDeps.contentTypeRepo, workspaceId: routeDeps.workspaceId });
101
+ return { contentTypes: items.map(toContentTypeView) };
102
+ },
103
+ collections_content_type_define: async (ctx) => {
104
+ const input = requireInputRecord(ctx.input);
105
+ return fromContentTypeResult(() => registerContentType({
106
+ deps: contentTypesDeps(routeDeps),
107
+ input: {
108
+ actorId: ctx.principal.id,
109
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
110
+ workspaceId: routeDeps.workspaceId,
111
+ key: requireString(input, "key"),
112
+ label: requireString(input, "label"),
113
+ fields: requireFields(input, "collections_content_type_define"),
114
+ },
115
+ }));
116
+ },
117
+ collections_content_type_update_fields: async (ctx) => {
118
+ const input = requireInputRecord(ctx.input);
119
+ return fromContentTypeResult(() => updateContentTypeFields({
120
+ deps: contentTypesDeps(routeDeps),
121
+ input: {
122
+ actorId: ctx.principal.id,
123
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
124
+ workspaceId: routeDeps.workspaceId,
125
+ key: requireString(input, "key"),
126
+ fields: requireFields(input, "collections_content_type_update_fields"),
127
+ expectedVersion: requireNumber(input, "expectedVersion"),
128
+ },
129
+ }));
130
+ },
131
+ collections_content_type_deprecate: async (ctx) => {
132
+ const input = requireInputRecord(ctx.input);
133
+ return fromContentTypeResult(() => deprecateContentType({
134
+ deps: contentTypesDeps(routeDeps),
135
+ input: {
136
+ actorId: ctx.principal.id,
137
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
138
+ workspaceId: routeDeps.workspaceId,
139
+ key: requireString(input, "key"),
140
+ expectedVersion: requireNumber(input, "expectedVersion"),
141
+ },
142
+ }));
143
+ },
144
+ collections_content_type_reactivate: async (ctx) => {
145
+ const input = requireInputRecord(ctx.input);
146
+ return fromContentTypeResult(() => reactivateContentType({
147
+ deps: contentTypesDeps(routeDeps),
148
+ input: {
149
+ actorId: ctx.principal.id,
150
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
151
+ workspaceId: routeDeps.workspaceId,
152
+ key: requireString(input, "key"),
153
+ expectedVersion: requireNumber(input, "expectedVersion"),
154
+ },
155
+ }));
156
+ },
157
+ collections_content_type_tombstone: async (ctx) => {
158
+ const input = requireInputRecord(ctx.input);
159
+ return fromContentTypeResult(() => tombstoneContentType({
160
+ deps: contentTypesDeps(routeDeps),
161
+ input: {
162
+ actorId: ctx.principal.id,
163
+ principalKind: AGENT_TOOL_PRINCIPAL_KIND,
164
+ workspaceId: routeDeps.workspaceId,
165
+ key: requireString(input, "key"),
166
+ expectedVersion: requireNumber(input, "expectedVersion"),
167
+ },
168
+ }));
169
+ },
170
+ };
171
+ return buildDomainRegistrations({
172
+ domain: "content-types",
173
+ catalogModule: "features/content-types/agent-tools.ts",
174
+ catalog: CATALOG_BY_ID,
175
+ handlers,
176
+ derivedRisk: contentTypesDerivedRisk,
177
+ unwiredToolIds: UNWIRED_CONTENT_TYPES_TOOL_IDS,
178
+ });
179
+ }
180
+ //# sourceMappingURL=tool-registrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrations.js","sourceRoot":"","sources":["../../src/content-types/tool-registrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @file Shared vocabulary for the `content-types` package.
3
+ *
4
+ * Purpose:
5
+ * The closed field-kind enum, the content-type record shape, and the generic `Result<T,E>`
6
+ * envelope every write-service/lifecycle/cleanup export in this package returns. Kept as plain
7
+ * data types with no I/O so every other module in this package (and `features/entries`, which
8
+ * consumes a content type's `fields` to validate an entry's `fieldsJson`) can depend on it
9
+ * without pulling in any adapter.
10
+ *
11
+ * How it relates to the project:
12
+ * The expression-index query surface requires the field-kind enum to be closed and
13
+ * mapped through a fixed lookup table (`index-provisioning.ts`), never interpolated — this file
14
+ * is that enum's single source of truth so the write-service's validation and the index
15
+ * provisioner's CAST-mapping can never drift apart.
16
+ *
17
+ * Architectural role:
18
+ * `features/content-types` domain vocabulary. No dependencies.
19
+ */
20
+ /** CIC U-001-B1 — the closed, 5-entry field-kind enum. Never extend ad hoc. */
21
+ export declare const CONTENT_TYPE_FIELD_KINDS: readonly ["text", "integer", "real", "boolean", "datetime"];
22
+ export type ContentTypeFieldKind = (typeof CONTENT_TYPE_FIELD_KINDS)[number];
23
+ /**
24
+ * Type guard for {@link ContentTypeFieldKind}. The single gate every kind value must pass before
25
+ * it is trusted anywhere near DDL construction (`index-provisioning.ts`) or write validation.
26
+ *
27
+ * @complexity O(1).
28
+ * @overallScore 100
29
+ */
30
+ export declare function isContentTypeFieldKind(value: unknown): value is ContentTypeFieldKind;
31
+ export interface ContentTypeFieldDef {
32
+ name: string;
33
+ kind: ContentTypeFieldKind;
34
+ required: boolean;
35
+ queryable: boolean;
36
+ }
37
+ export type ContentTypeStatus = "active" | "deprecated" | "tombstone";
38
+ /** Sample schema, expressed as the package's in-memory record shape (repo-agnostic). */
39
+ export interface ContentTypeRecord {
40
+ workspaceId: string;
41
+ key: string;
42
+ label: string;
43
+ fields: ContentTypeFieldDef[];
44
+ status: ContentTypeStatus;
45
+ version: number;
46
+ tombstonedAt?: string | null;
47
+ }
48
+ /**
49
+ * Actor classes a chokepoint write can be attributed to. Structurally identical to
50
+ * `identity.PrincipalKind`, deliberately redeclared here rather than imported so this package
51
+ * stays dependency-free (the same "no shared import, kept decoupled" convention `write-service.ts`
52
+ * applies to `AuthorizeFn`). `identity.PrincipalRecord.kind` assigns to it directly.
53
+ */
54
+ export type ActorPrincipalKind = "user" | "agent" | "api_key" | "system";
55
+ /** The actor-identity envelope every chokepoint write in this package accepts (REQ-01/02/16). */
56
+ export interface ActorIdentityInput {
57
+ actorId: string;
58
+ /**
59
+ * Provenance for the audit trail: WHICH CLASS of actor performed this write. `actorId` alone
60
+ * cannot answer "was this the human admin, or the AI assistant acting for them?" — the assistant
61
+ * typically runs under that same human's principal id (a host's assistant proxy stamps it into
62
+ * the run's `contextRef`), so both paths record an identical `actorId`. Recorded onto
63
+ * the revision row by the write chokepoint; optional so pre-existing call sites are unaffected
64
+ * (they persist `NULL`, honestly meaning "not recorded" rather than a fabricated default).
65
+ */
66
+ principalKind?: ActorPrincipalKind;
67
+ delegatedByWorkspaceId?: string | null;
68
+ delegatedById?: string | null;
69
+ }
70
+ /** Generic success/failure envelope used across this package instead of throwing for expected rejections. */
71
+ export type Result<T, E> = {
72
+ ok: true;
73
+ value: T;
74
+ } | {
75
+ ok: false;
76
+ error: E;
77
+ };
78
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/content-types/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,6DAA8D,CAAC;AAEpG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,CAAC;AAEtE,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,iGAAiG;AACjG,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,6GAA6G;AAC7G,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,32 @@
1
+ /**
2
+ * @file Shared vocabulary for the `content-types` package.
3
+ *
4
+ * Purpose:
5
+ * The closed field-kind enum, the content-type record shape, and the generic `Result<T,E>`
6
+ * envelope every write-service/lifecycle/cleanup export in this package returns. Kept as plain
7
+ * data types with no I/O so every other module in this package (and `features/entries`, which
8
+ * consumes a content type's `fields` to validate an entry's `fieldsJson`) can depend on it
9
+ * without pulling in any adapter.
10
+ *
11
+ * How it relates to the project:
12
+ * The expression-index query surface requires the field-kind enum to be closed and
13
+ * mapped through a fixed lookup table (`index-provisioning.ts`), never interpolated — this file
14
+ * is that enum's single source of truth so the write-service's validation and the index
15
+ * provisioner's CAST-mapping can never drift apart.
16
+ *
17
+ * Architectural role:
18
+ * `features/content-types` domain vocabulary. No dependencies.
19
+ */
20
+ /** CIC U-001-B1 — the closed, 5-entry field-kind enum. Never extend ad hoc. */
21
+ export const CONTENT_TYPE_FIELD_KINDS = ["text", "integer", "real", "boolean", "datetime"];
22
+ /**
23
+ * Type guard for {@link ContentTypeFieldKind}. The single gate every kind value must pass before
24
+ * it is trusted anywhere near DDL construction (`index-provisioning.ts`) or write validation.
25
+ *
26
+ * @complexity O(1).
27
+ * @overallScore 100
28
+ */
29
+ export function isContentTypeFieldKind(value) {
30
+ return typeof value === "string" && CONTENT_TYPE_FIELD_KINDS.includes(value);
31
+ }
32
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/content-types/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAIpG;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,wBAA8C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtG,CAAC"}