@aotter/mantle-runtime 0.1.0-alpha.7 → 0.1.0-alpha.8

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 (257) hide show
  1. package/README.md +37 -4
  2. package/dist/MantleRuntime.d.ts +96 -0
  3. package/dist/MantleRuntime.d.ts.map +1 -0
  4. package/dist/MantleRuntime.js +197 -0
  5. package/dist/MantleRuntime.js.map +1 -0
  6. package/dist/domain/model/HandlerContext.d.ts +3 -4
  7. package/dist/domain/model/HandlerContext.d.ts.map +1 -1
  8. package/dist/domain/model/PreparedMantleRevision.d.ts +14 -0
  9. package/dist/domain/model/PreparedMantleRevision.d.ts.map +1 -0
  10. package/dist/domain/model/PreparedMantleRevision.js +8 -0
  11. package/dist/domain/model/PreparedMantleRevision.js.map +1 -0
  12. package/dist/domain/model/index.d.ts +1 -2
  13. package/dist/domain/model/index.d.ts.map +1 -1
  14. package/dist/domain/model/index.js +0 -1
  15. package/dist/domain/model/index.js.map +1 -1
  16. package/dist/domain/port/Clock.d.ts +1 -2
  17. package/dist/domain/port/Clock.d.ts.map +1 -1
  18. package/dist/domain/port/Clock.js.map +1 -1
  19. package/dist/domain/port/DatabaseDriver.d.ts +13 -21
  20. package/dist/domain/port/DatabaseDriver.d.ts.map +1 -1
  21. package/dist/domain/port/HandlerRegistry.d.ts +1 -1
  22. package/dist/domain/port/IdGenerator.d.ts +1 -2
  23. package/dist/domain/port/IdGenerator.d.ts.map +1 -1
  24. package/dist/domain/port/IdGenerator.js.map +1 -1
  25. package/dist/domain/port/MantleStorageAdapter.d.ts +23 -0
  26. package/dist/domain/port/MantleStorageAdapter.d.ts.map +1 -0
  27. package/dist/domain/port/MantleStorageAdapter.js +2 -0
  28. package/dist/domain/port/MantleStorageAdapter.js.map +1 -0
  29. package/dist/domain/port/SiteConfigRepository.d.ts +10 -8
  30. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
  31. package/dist/domain/port/ViewQueryExecutor.d.ts +29 -0
  32. package/dist/domain/port/ViewQueryExecutor.d.ts.map +1 -0
  33. package/dist/domain/port/ViewQueryExecutor.js +2 -0
  34. package/dist/domain/port/ViewQueryExecutor.js.map +1 -0
  35. package/dist/domain/port/index.d.ts +5 -2
  36. package/dist/domain/port/index.d.ts.map +1 -1
  37. package/dist/domain/port/index.js.map +1 -1
  38. package/dist/domain/service/RuntimePlanCompiler.d.ts +89 -0
  39. package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -0
  40. package/dist/domain/service/RuntimePlanCompiler.js +230 -0
  41. package/dist/domain/service/RuntimePlanCompiler.js.map +1 -0
  42. package/dist/domain/service/TriggerIndex.d.ts +3 -0
  43. package/dist/domain/service/TriggerIndex.d.ts.map +1 -1
  44. package/dist/domain/service/TriggerIndex.js +14 -1
  45. package/dist/domain/service/TriggerIndex.js.map +1 -1
  46. package/dist/domain/service/index.d.ts +1 -9
  47. package/dist/domain/service/index.d.ts.map +1 -1
  48. package/dist/domain/service/index.js +1 -9
  49. package/dist/domain/service/index.js.map +1 -1
  50. package/dist/domain/service/io/EntryWriteGuard.d.ts +2 -2
  51. package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -1
  52. package/dist/domain/service/io/EntryWriteGuard.js +1 -3
  53. package/dist/domain/service/io/EntryWriteGuard.js.map +1 -1
  54. package/dist/index.d.ts +15 -11
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +9 -11
  57. package/dist/index.js.map +1 -1
  58. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts +10 -0
  59. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts.map +1 -0
  60. package/dist/infrastructure/boot/SqliteMigrationRunner.js +41 -0
  61. package/dist/infrastructure/boot/SqliteMigrationRunner.js.map +1 -0
  62. package/dist/infrastructure/boot/bootState.d.ts +2 -4
  63. package/dist/infrastructure/boot/bootState.d.ts.map +1 -1
  64. package/dist/infrastructure/boot/bootState.js +1 -1
  65. package/dist/infrastructure/boot/bootState.js.map +1 -1
  66. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  67. package/dist/infrastructure/boot/canonicalMigrations.js +124 -60
  68. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  69. package/dist/infrastructure/boot/index.d.ts +1 -0
  70. package/dist/infrastructure/boot/index.d.ts.map +1 -1
  71. package/dist/infrastructure/boot/index.js +1 -0
  72. package/dist/infrastructure/boot/index.js.map +1 -1
  73. package/dist/infrastructure/http/createMantleRequestHandler.d.ts +12 -0
  74. package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -0
  75. package/dist/infrastructure/http/createMantleRequestHandler.js +127 -0
  76. package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -0
  77. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +2 -2
  78. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  79. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +1 -1
  80. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  81. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
  82. package/dist/infrastructure/mcp/McpToolCatalog.js +6 -7
  83. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
  84. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +1 -1
  85. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  86. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +1 -1
  87. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  88. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +3 -3
  89. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +22 -0
  90. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -0
  91. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +86 -0
  92. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -0
  93. package/dist/{domain/service/ViewSqlCompiler.d.ts → infrastructure/storage/SqliteViewCompiler.d.ts} +9 -20
  94. package/dist/infrastructure/storage/SqliteViewCompiler.d.ts.map +1 -0
  95. package/dist/infrastructure/storage/SqliteViewCompiler.js +307 -0
  96. package/dist/infrastructure/storage/SqliteViewCompiler.js.map +1 -0
  97. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +2 -2
  98. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -1
  99. package/dist/infrastructure/testing/IndexCoverageHarness.js +4 -4
  100. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -1
  101. package/dist/usecase/boot/ValidateBootUseCase.d.ts +15 -38
  102. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
  103. package/dist/usecase/boot/ValidateBootUseCase.js +79 -274
  104. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
  105. package/dist/usecase/boot/index.d.ts +1 -1
  106. package/dist/usecase/boot/index.d.ts.map +1 -1
  107. package/dist/usecase/boot/index.js +1 -1
  108. package/dist/usecase/boot/index.js.map +1 -1
  109. package/dist/usecase/content/CreateDraftUseCase.d.ts +2 -2
  110. package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -1
  111. package/dist/usecase/content/CreateDraftUseCase.js.map +1 -1
  112. package/dist/usecase/content/RequestPublishUseCase.d.ts +2 -2
  113. package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -1
  114. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
  115. package/dist/usecase/content/UpdateDraftUseCase.d.ts +2 -2
  116. package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -1
  117. package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -1
  118. package/dist/usecase/dto/index.d.ts +0 -1
  119. package/dist/usecase/dto/index.d.ts.map +1 -1
  120. package/dist/usecase/dto/index.js +0 -1
  121. package/dist/usecase/dto/index.js.map +1 -1
  122. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +2 -2
  123. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -1
  124. package/dist/usecase/index.d.ts +0 -1
  125. package/dist/usecase/index.d.ts.map +1 -1
  126. package/dist/usecase/index.js +0 -1
  127. package/dist/usecase/index.js.map +1 -1
  128. package/dist/usecase/media/diagnostics.js +1 -1
  129. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +2 -2
  130. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
  131. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
  132. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
  133. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +8 -1
  134. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
  135. package/dist/usecase/view/ExecuteViewUseCase.d.ts +8 -16
  136. package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -1
  137. package/dist/usecase/view/ExecuteViewUseCase.js +19 -95
  138. package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -1
  139. package/dist/usecase/view/index.d.ts +2 -1
  140. package/dist/usecase/view/index.d.ts.map +1 -1
  141. package/dist/usecase/view/index.js.map +1 -1
  142. package/package.json +4 -4
  143. package/dist/domain/model/SeoMeta.d.ts +0 -47
  144. package/dist/domain/model/SeoMeta.d.ts.map +0 -1
  145. package/dist/domain/model/SeoMeta.js +0 -2
  146. package/dist/domain/model/SeoMeta.js.map +0 -1
  147. package/dist/domain/model/TemplateRegistry.d.ts +0 -49
  148. package/dist/domain/model/TemplateRegistry.d.ts.map +0 -1
  149. package/dist/domain/model/TemplateRegistry.js +0 -17
  150. package/dist/domain/model/TemplateRegistry.js.map +0 -1
  151. package/dist/domain/port/AssetServer.d.ts +0 -22
  152. package/dist/domain/port/AssetServer.d.ts.map +0 -1
  153. package/dist/domain/port/AssetServer.js +0 -2
  154. package/dist/domain/port/AssetServer.js.map +0 -1
  155. package/dist/domain/service/AbsoluteUrl.d.ts +0 -6
  156. package/dist/domain/service/AbsoluteUrl.d.ts.map +0 -1
  157. package/dist/domain/service/AbsoluteUrl.js +0 -33
  158. package/dist/domain/service/AbsoluteUrl.js.map +0 -1
  159. package/dist/domain/service/HtmlEscaping.d.ts +0 -2
  160. package/dist/domain/service/HtmlEscaping.d.ts.map +0 -1
  161. package/dist/domain/service/HtmlEscaping.js +0 -9
  162. package/dist/domain/service/HtmlEscaping.js.map +0 -1
  163. package/dist/domain/service/HtmlRenderer.d.ts +0 -38
  164. package/dist/domain/service/HtmlRenderer.d.ts.map +0 -1
  165. package/dist/domain/service/HtmlRenderer.js +0 -73
  166. package/dist/domain/service/HtmlRenderer.js.map +0 -1
  167. package/dist/domain/service/MarkdownSerializer.d.ts +0 -45
  168. package/dist/domain/service/MarkdownSerializer.d.ts.map +0 -1
  169. package/dist/domain/service/MarkdownSerializer.js +0 -154
  170. package/dist/domain/service/MarkdownSerializer.js.map +0 -1
  171. package/dist/domain/service/McpToolNaming.d.ts +0 -31
  172. package/dist/domain/service/McpToolNaming.d.ts.map +0 -1
  173. package/dist/domain/service/McpToolNaming.js +0 -48
  174. package/dist/domain/service/McpToolNaming.js.map +0 -1
  175. package/dist/domain/service/PreviewBanner.d.ts +0 -10
  176. package/dist/domain/service/PreviewBanner.d.ts.map +0 -1
  177. package/dist/domain/service/PreviewBanner.js +0 -30
  178. package/dist/domain/service/PreviewBanner.js.map +0 -1
  179. package/dist/domain/service/PublicPathResolver.d.ts +0 -46
  180. package/dist/domain/service/PublicPathResolver.d.ts.map +0 -1
  181. package/dist/domain/service/PublicPathResolver.js +0 -36
  182. package/dist/domain/service/PublicPathResolver.js.map +0 -1
  183. package/dist/domain/service/SeoMetaComposer.d.ts +0 -60
  184. package/dist/domain/service/SeoMetaComposer.d.ts.map +0 -1
  185. package/dist/domain/service/SeoMetaComposer.js +0 -213
  186. package/dist/domain/service/SeoMetaComposer.js.map +0 -1
  187. package/dist/domain/service/SitemapSerializer.d.ts +0 -19
  188. package/dist/domain/service/SitemapSerializer.d.ts.map +0 -1
  189. package/dist/domain/service/SitemapSerializer.js +0 -27
  190. package/dist/domain/service/SitemapSerializer.js.map +0 -1
  191. package/dist/domain/service/ViewSqlCompiler.d.ts.map +0 -1
  192. package/dist/domain/service/ViewSqlCompiler.js +0 -244
  193. package/dist/domain/service/ViewSqlCompiler.js.map +0 -1
  194. package/dist/domain/service/io/MediaAssetReferences.d.ts +0 -13
  195. package/dist/domain/service/io/MediaAssetReferences.d.ts.map +0 -1
  196. package/dist/domain/service/io/MediaAssetReferences.js +0 -48
  197. package/dist/domain/service/io/MediaAssetReferences.js.map +0 -1
  198. package/dist/runtime.d.ts +0 -145
  199. package/dist/runtime.d.ts.map +0 -1
  200. package/dist/runtime.js +0 -224
  201. package/dist/runtime.js.map +0 -1
  202. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +0 -18
  203. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +0 -1
  204. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +0 -2
  205. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +0 -1
  206. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +0 -13
  207. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +0 -1
  208. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +0 -2
  209. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +0 -1
  210. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +0 -13
  211. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +0 -1
  212. package/dist/usecase/dto/render/ComposeSitemapRequest.js +0 -2
  213. package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +0 -1
  214. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +0 -18
  215. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +0 -1
  216. package/dist/usecase/dto/render/PreviewEntryRequest.js +0 -2
  217. package/dist/usecase/dto/render/PreviewEntryRequest.js.map +0 -1
  218. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +0 -19
  219. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +0 -1
  220. package/dist/usecase/dto/render/RenderEntryLiveRequest.js +0 -2
  221. package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +0 -1
  222. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +0 -15
  223. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +0 -1
  224. package/dist/usecase/dto/render/RenderListLiveRequest.js +0 -2
  225. package/dist/usecase/dto/render/RenderListLiveRequest.js.map +0 -1
  226. package/dist/usecase/dto/render/index.d.ts +0 -7
  227. package/dist/usecase/dto/render/index.d.ts.map +0 -1
  228. package/dist/usecase/dto/render/index.js +0 -7
  229. package/dist/usecase/dto/render/index.js.map +0 -1
  230. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +0 -28
  231. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +0 -1
  232. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +0 -66
  233. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +0 -1
  234. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +0 -18
  235. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +0 -1
  236. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +0 -47
  237. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +0 -1
  238. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +0 -15
  239. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +0 -1
  240. package/dist/usecase/render/ComposeSitemapUseCase.js +0 -38
  241. package/dist/usecase/render/ComposeSitemapUseCase.js.map +0 -1
  242. package/dist/usecase/render/PreviewEntryUseCase.d.ts +0 -28
  243. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +0 -1
  244. package/dist/usecase/render/PreviewEntryUseCase.js +0 -72
  245. package/dist/usecase/render/PreviewEntryUseCase.js.map +0 -1
  246. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +0 -36
  247. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +0 -1
  248. package/dist/usecase/render/RenderEntryLiveUseCase.js +0 -62
  249. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +0 -1
  250. package/dist/usecase/render/RenderListLiveUseCase.d.ts +0 -25
  251. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +0 -1
  252. package/dist/usecase/render/RenderListLiveUseCase.js +0 -46
  253. package/dist/usecase/render/RenderListLiveUseCase.js.map +0 -1
  254. package/dist/usecase/render/index.d.ts +0 -7
  255. package/dist/usecase/render/index.d.ts.map +0 -1
  256. package/dist/usecase/render/index.js +0 -7
  257. package/dist/usecase/render/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MantleStorageAdapter.js","sourceRoot":"","sources":["../../../src/domain/port/MantleStorageAdapter.ts"],"names":[],"mappings":""}
@@ -1,34 +1,36 @@
1
1
  import type { MediaPurposePolicy, SiteConfig, SiteDefaults } from "@aotter/mantle-spec";
2
2
  /**
3
3
  * `SiteConfigRepository` — the `site_config` row read/write surface
4
- * the runtime exposes to render paths and `bootInit`.
4
+ * optional modules and Core locale policy consume semantically.
5
5
  *
6
- * `seed` runs on every `bootInit` with the config-supplied
6
+ * `seed` runs during selected storage preparation with the config-supplied
7
7
  * `siteDefaults`, but treats keys differently depending on ownership:
8
8
  * UI-editable keys (brand/title/description/…) seed once (INSERT …
9
9
  * ON CONFLICT DO NOTHING) so operator edits are preserved; keys with
10
10
  * no admin-UI edit path (`origin`, `locales`, `mediaPurposes`) are synced from
11
- * config on every boot (upsert when the value differs) since code is
11
+ * config on every changed revision (upsert when the value differs) since code is
12
12
  * their only source of truth. See `DatabaseSiteConfigRepository`'s
13
13
  * header comment for the full rationale (#441).
14
14
  *
15
15
  * `load` returns the merged view template authors and adapters see.
16
- * `readLocales` exists separately because boot-time validation needs
16
+ * `readLocales` exists separately because preparation validation needs
17
17
  * the locales list before the rest of the row is meaningful.
18
18
  *
19
19
  * The DB-backed implementation is in
20
20
  * `infrastructure/persistence/DatabaseSiteConfigRepository`.
21
21
  */
22
- export interface SiteConfigRepository {
22
+ export interface LocalePolicyReader {
23
+ readLocales(): Promise<readonly string[]>;
24
+ }
25
+ export interface SiteConfigRepository extends LocalePolicyReader {
23
26
  seed(defaults: SiteDefaults | undefined): Promise<void>;
24
27
  load(): Promise<SiteConfig>;
25
28
  /** Persist the operator-owned subset exposed by the Admin settings UI.
26
29
  * Omitted fields are unchanged; an empty string intentionally clears a
27
30
  * value. Code-canonical origin, locales, and media purposes are never writable
28
- * through this path. Optional during the `CmsRuntime.db` compatibility
29
- * window; canonical Mantle runtimes always provide it. */
31
+ * through this path. Optional when the selected storage adapter does not
32
+ * expose operator settings. */
30
33
  updateEditable?(args: UpdateEditableSiteConfigArgs): Promise<void>;
31
- readLocales(): Promise<readonly string[]>;
32
34
  /** Declared media purpose taxonomy (`SiteConfig.media.purposes`).
33
35
  * Empty array when the deployment didn't declare any — symmetric
34
36
  * with "no `MediaStorage` configured" and used by the MCP tool
@@ -1 +1 @@
1
- {"version":3,"file":"SiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/SiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B;;;;+DAI2D;IAC3D,cAAc,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1C;;;yEAGqE;IACrE,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC"}
1
+ {"version":3,"file":"SiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/port/SiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B;;;;oCAIgC;IAChC,cAAc,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE;;;yEAGqE;IACrE,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC"}
@@ -0,0 +1,29 @@
1
+ /** Request values bound to a View query that was prepared for one RuntimePlan. */
2
+ export interface ViewQueryOptions {
3
+ readonly params?: Readonly<Record<string, unknown>>;
4
+ readonly page?: number;
5
+ readonly show?: number;
6
+ readonly ctxUserId?: string;
7
+ readonly search?: {
8
+ readonly term: string;
9
+ readonly fields: readonly string[];
10
+ };
11
+ readonly filters?: ReadonlyArray<{
12
+ readonly field: string;
13
+ readonly value: string;
14
+ }>;
15
+ }
16
+ export interface ViewQueryRequest extends ViewQueryOptions {
17
+ readonly view: string;
18
+ }
19
+ export interface ViewQueryResult<R = Record<string, unknown>> {
20
+ readonly rows: readonly R[];
21
+ readonly page: number;
22
+ readonly show: number;
23
+ readonly hasMore: boolean;
24
+ }
25
+ /** Storage-owned execution of already-compiled logical Views. */
26
+ export interface ViewQueryExecutor {
27
+ execute<R = Record<string, unknown>>(request: ViewQueryRequest): Promise<ViewQueryResult<R>>;
28
+ }
29
+ //# sourceMappingURL=ViewQueryExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewQueryExecutor.d.ts","sourceRoot":"","sources":["../../../src/domain/port/ViewQueryExecutor.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IAChF,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ViewQueryExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewQueryExecutor.js","sourceRoot":"","sources":["../../../src/domain/port/ViewQueryExecutor.ts"],"names":[],"mappings":""}
@@ -3,7 +3,9 @@
3
3
  * Concrete implementations live in `infrastructure/` (or in adapter
4
4
  * packages like `@aotter/mantle-cloudflare`).
5
5
  *
6
- * Required adapter ports — `DatabaseDriver`, `AssetServer`.
6
+ * Portable storage boundary — `MantleStorageAdapter`, which prepares existing
7
+ * `EntryRepository` / `EntryReader` and `ViewQueryExecutor` semantic ports.
8
+ * `DatabaseDriver` is the SQLite/D1 implementation seam, not a universal DB API.
7
9
  * Optional feature ports — `MediaStorage` (public-bucket media
8
10
  * uploads), `EmailSender` (transactional email — passwordless auth,
9
11
  * receipts). Dispatcher-internal seams — `Clock`, `IdGenerator`,
@@ -14,9 +16,10 @@
14
16
  * ports are discoverable by the package alone.
15
17
  */
16
18
  export type { DatabaseDriver, PreparedStatement, RunResult, BatchResult, MigrationRunner, Migration, } from "./DatabaseDriver.js";
17
- export type { AssetServer } from "./AssetServer.js";
18
19
  export type { EntryRepository, CreateEntryArgs, UpdateEntryArgs, DeleteEntryArgs, TransitionStatusArgs, ListEntriesArgs, ListEntriesResult, FindEntryByDataFieldArgs, FindEntryByDataFieldsArgs, MutationHookFields, } from "./EntryRepository.js";
19
20
  export type { EntryReader, EntryDataScalar, ReadEntryBySlugArgs, ReadEntryByDataFieldArgs, ReadEntriesByDataFieldInArgs, ReadPublishedEntriesArgs, FindManyEntriesByDataFieldArgs, } from "./EntryReader.js";
21
+ export type { ViewQueryExecutor, ViewQueryOptions, ViewQueryRequest, ViewQueryResult, } from "./ViewQueryExecutor.js";
22
+ export type { MantleStorageAdapter, PreparedMantleStorage, } from "./MantleStorageAdapter.js";
20
23
  export type { SiteConfigRepository, UpdateEditableSiteConfigArgs, } from "./SiteConfigRepository.js";
21
24
  export type { MediaStorage, CreateUploadArgs, CreateUploadVariantSpec, CreateUploadResult, UploadCapability, CommitUploadArgs, CommitUploadVariantSpec, GetPublicUrlArgs, DeleteObjectArgs, MediaAsset, MediaVariant, MediaVariantRole, } from "./MediaStorage.js";
22
25
  export { pickPrimaryVariant } from "./MediaStorage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,KAAK,eAAe,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,KAAK,eAAe,EACpB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AA+DA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAavD,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAEL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/port/index.ts"],"names":[],"mappings":"AA0EA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAavD,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAc,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAEL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { type AuthPredicate, type FilterAst, type HttpMethod, type JsonSchema, type LifecycleHook, type LinkResult, type LinkedManifestSet, type ProcedureManifest, type SchemaManifest, type TriggerManifest, type ViewManifest } from "@aotter/mantle-spec";
2
+ export declare const RUNTIME_PLAN_VERSION: 1;
3
+ export interface RuntimeSchemaPlan {
4
+ readonly name: string;
5
+ readonly manifest: SchemaManifest;
6
+ readonly translationParent?: string;
7
+ }
8
+ export interface AuthorizationPlan {
9
+ readonly all: readonly AuthPredicate[];
10
+ }
11
+ export interface RuntimeProcedurePlan {
12
+ readonly name: string;
13
+ readonly manifest: ProcedureManifest;
14
+ readonly authorization?: AuthorizationPlan;
15
+ readonly guard?: string;
16
+ readonly builtinSchema?: string;
17
+ readonly collectionActionSchema?: string;
18
+ }
19
+ export type LogicalViewPlan = {
20
+ readonly kind: "declarative";
21
+ readonly from: string;
22
+ readonly fields?: readonly string[];
23
+ readonly filter?: FilterAst;
24
+ readonly orderBy: readonly {
25
+ readonly field: string;
26
+ readonly direction: "asc" | "desc";
27
+ }[];
28
+ readonly limit?: number;
29
+ readonly params?: JsonSchema;
30
+ } | {
31
+ readonly kind: "native";
32
+ readonly dialect: "sqlite";
33
+ readonly statement: string;
34
+ readonly limit?: number;
35
+ readonly params?: JsonSchema;
36
+ };
37
+ export interface RuntimeViewPlan {
38
+ readonly name: string;
39
+ readonly manifest: ViewManifest;
40
+ readonly query: LogicalViewPlan;
41
+ readonly authorization?: AuthorizationPlan;
42
+ readonly guard?: string;
43
+ }
44
+ export interface RuntimeTriggerPlan {
45
+ readonly name: string;
46
+ readonly manifest: TriggerManifest;
47
+ readonly target: string;
48
+ readonly lifecycleSchema?: string;
49
+ }
50
+ export interface LifecycleHookPlan {
51
+ readonly schema: string;
52
+ readonly hook: LifecycleHook;
53
+ readonly triggerNames: readonly string[];
54
+ }
55
+ export interface HttpRoutePlan {
56
+ readonly trigger: string;
57
+ readonly method: HttpMethod;
58
+ readonly path: string;
59
+ readonly procedure: string;
60
+ }
61
+ export interface McpToolPlan {
62
+ readonly name: string;
63
+ readonly ownerKind: "Schema" | "View" | "Procedure";
64
+ readonly ownerName: string;
65
+ readonly surface: "staff" | "public";
66
+ }
67
+ declare const runtimePlanBrand: unique symbol;
68
+ export interface RuntimePlanData {
69
+ readonly version: typeof RUNTIME_PLAN_VERSION;
70
+ readonly semanticFingerprint: string;
71
+ readonly schemas: Readonly<Record<string, RuntimeSchemaPlan>>;
72
+ readonly views: Readonly<Record<string, RuntimeViewPlan>>;
73
+ readonly procedures: Readonly<Record<string, RuntimeProcedurePlan>>;
74
+ readonly triggers: Readonly<Record<string, RuntimeTriggerPlan>>;
75
+ readonly lifecycleHooks: readonly LifecycleHookPlan[];
76
+ readonly httpRoutes: readonly HttpRoutePlan[];
77
+ readonly mcpTools: readonly McpToolPlan[];
78
+ }
79
+ export interface RuntimePlan extends RuntimePlanData {
80
+ readonly [runtimePlanBrand]: true;
81
+ }
82
+ export type CompileResult<T> = LinkResult<T>;
83
+ /** Pure projection from sealed semantics to the adapter-neutral runtime contract. */
84
+ export declare function compileRuntimePlan(linked: LinkedManifestSet): CompileResult<RuntimePlan>;
85
+ /** Restore the brand and immutability of a generated, JSON-safe plan. */
86
+ export declare function sealRuntimePlan(data: RuntimePlanData): RuntimePlan;
87
+ export declare function compileLogicalView(view: ViewManifest): LogicalViewPlan;
88
+ export {};
89
+ //# sourceMappingURL=RuntimePlanCompiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimePlanCompiler.d.ts","sourceRoot":"","sources":["../../../src/domain/service/RuntimePlanCompiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ import { MCP_CREATE_DRAFT_PREFIX, MCP_CREATE_RECORD_PREFIX, MCP_QUERY_VIEW_PREFIX, MCP_UPDATE_DRAFT_PREFIX, MCP_UPDATE_RECORD_PREFIX, mcpToolNameSegment, resolveLifecycle, } from "@aotter/mantle-spec";
2
+ export const RUNTIME_PLAN_VERSION = 1;
3
+ /** Pure projection from sealed semantics to the adapter-neutral runtime contract. */
4
+ export function compileRuntimePlan(linked) {
5
+ const schemas = toRecord(linked.schemas.map(({ manifest, translationParent }) => {
6
+ const copy = canonicalClone(manifest);
7
+ return {
8
+ name: copy.metadata.name,
9
+ manifest: copy,
10
+ ...(translationParent
11
+ ? { translationParent: translationParent.manifest.metadata.name }
12
+ : {}),
13
+ };
14
+ }));
15
+ const procedures = toRecord(linked.procedures.map((procedure) => {
16
+ const manifest = canonicalClone(procedure.manifest);
17
+ return {
18
+ name: manifest.metadata.name,
19
+ manifest,
20
+ ...authorization(manifest.spec.requires?.auth?.all),
21
+ ...(procedure.guard ? { guard: procedure.guard.manifest.metadata.name } : {}),
22
+ ...(procedure.builtinSchema
23
+ ? { builtinSchema: procedure.builtinSchema.manifest.metadata.name }
24
+ : {}),
25
+ ...(procedure.collectionActionSchema
26
+ ? { collectionActionSchema: procedure.collectionActionSchema.manifest.metadata.name }
27
+ : {}),
28
+ };
29
+ }));
30
+ const views = toRecord(linked.views.map((view) => {
31
+ const manifest = canonicalClone(view.manifest);
32
+ return {
33
+ name: manifest.metadata.name,
34
+ manifest,
35
+ query: compileLogicalView(manifest),
36
+ ...authorization(manifest.spec.requires?.auth?.all),
37
+ ...(view.guard ? { guard: view.guard.manifest.metadata.name } : {}),
38
+ };
39
+ }));
40
+ const triggers = toRecord(linked.triggers.map((trigger) => {
41
+ const manifest = canonicalClone(trigger.manifest);
42
+ return {
43
+ name: manifest.metadata.name,
44
+ manifest,
45
+ target: trigger.target.manifest.metadata.name,
46
+ ...(trigger.lifecycleSchema
47
+ ? { lifecycleSchema: trigger.lifecycleSchema.manifest.metadata.name }
48
+ : {}),
49
+ };
50
+ }));
51
+ const lifecycleHooks = compileLifecycleHooks(Object.values(triggers));
52
+ const httpRoutes = Object.values(triggers)
53
+ .flatMap((trigger) => trigger.manifest.spec.source.kind === "http"
54
+ ? [{
55
+ trigger: trigger.name,
56
+ method: trigger.manifest.spec.source.method,
57
+ path: trigger.manifest.spec.source.path,
58
+ procedure: trigger.target,
59
+ }]
60
+ : [])
61
+ .sort((a, b) => compareText(`${a.method} ${a.path}`, `${b.method} ${b.path}`));
62
+ const mcpTools = compileMcpTools(schemas, views, triggers);
63
+ const semantics = {
64
+ version: RUNTIME_PLAN_VERSION,
65
+ schemas,
66
+ views,
67
+ procedures,
68
+ triggers,
69
+ lifecycleHooks,
70
+ httpRoutes,
71
+ mcpTools,
72
+ };
73
+ return {
74
+ ok: true,
75
+ value: sealRuntimePlan({
76
+ ...semantics,
77
+ semanticFingerprint: semanticFingerprint(semantics),
78
+ }),
79
+ diagnostics: [],
80
+ };
81
+ }
82
+ /** Restore the brand and immutability of a generated, JSON-safe plan. */
83
+ export function sealRuntimePlan(data) {
84
+ const copy = canonicalClone(data);
85
+ const { semanticFingerprint: declared, ...semantics } = copy;
86
+ if (copy.version !== RUNTIME_PLAN_VERSION || semanticFingerprint(semantics) !== declared) {
87
+ throw new Error("Generated RuntimePlan fingerprint is invalid; run `mantle generate` again.");
88
+ }
89
+ return deepFreeze(copy);
90
+ }
91
+ export function compileLogicalView(view) {
92
+ if (view.spec.sql) {
93
+ return {
94
+ kind: "native",
95
+ dialect: "sqlite",
96
+ statement: view.spec.sql,
97
+ ...(view.spec.limit === undefined ? {} : { limit: view.spec.limit }),
98
+ ...(view.spec.params === undefined ? {} : { params: view.spec.params }),
99
+ };
100
+ }
101
+ return {
102
+ kind: "declarative",
103
+ from: view.spec.from,
104
+ ...(view.spec.fields === undefined ? {} : { fields: view.spec.fields }),
105
+ ...(view.spec.filter === undefined ? {} : { filter: view.spec.filter }),
106
+ orderBy: (view.spec.orderBy ?? []).map((order) => ({
107
+ field: order.field,
108
+ direction: order.direction ?? "asc",
109
+ })),
110
+ ...(view.spec.limit === undefined ? {} : { limit: view.spec.limit }),
111
+ ...(view.spec.params === undefined ? {} : { params: view.spec.params }),
112
+ };
113
+ }
114
+ function authorization(all) {
115
+ return all && all.length > 0 ? { authorization: { all } } : {};
116
+ }
117
+ function compileLifecycleHooks(triggers) {
118
+ const groups = new Map();
119
+ for (const trigger of triggers) {
120
+ const source = trigger.manifest.spec.source;
121
+ if (source.kind !== "lifecycle")
122
+ continue;
123
+ for (const hook of source.on) {
124
+ const key = `${source.schema}\0${hook}`;
125
+ const group = groups.get(key) ?? { schema: source.schema, hook, names: [] };
126
+ group.names.push(trigger.name);
127
+ groups.set(key, group);
128
+ }
129
+ }
130
+ return [...groups.values()]
131
+ .sort((a, b) => compareText(`${a.schema}\0${a.hook}`, `${b.schema}\0${b.hook}`))
132
+ .map(({ schema, hook, names }) => ({
133
+ schema,
134
+ hook,
135
+ triggerNames: names.sort(compareText),
136
+ }));
137
+ }
138
+ function compileMcpTools(schemas, views, triggers) {
139
+ const tools = [];
140
+ for (const schema of Object.values(schemas)) {
141
+ if (schema.manifest.spec.schema.readOnly === true)
142
+ continue;
143
+ const segment = mcpToolNameSegment(schema.name);
144
+ const operational = resolveLifecycle(schema.manifest) === "operational";
145
+ tools.push({
146
+ name: `${operational ? MCP_CREATE_RECORD_PREFIX : MCP_CREATE_DRAFT_PREFIX}${segment}`,
147
+ ownerKind: "Schema",
148
+ ownerName: schema.name,
149
+ surface: "staff",
150
+ }, {
151
+ name: `${operational ? MCP_UPDATE_RECORD_PREFIX : MCP_UPDATE_DRAFT_PREFIX}${segment}`,
152
+ ownerKind: "Schema",
153
+ ownerName: schema.name,
154
+ surface: "staff",
155
+ });
156
+ }
157
+ for (const view of Object.values(views)) {
158
+ tools.push({
159
+ name: `${MCP_QUERY_VIEW_PREFIX}${mcpToolNameSegment(view.name)}`,
160
+ ownerKind: "View",
161
+ ownerName: view.name,
162
+ surface: view.manifest.spec.surface,
163
+ });
164
+ }
165
+ for (const trigger of Object.values(triggers)) {
166
+ const source = trigger.manifest.spec.source;
167
+ if (source.kind !== "mcp")
168
+ continue;
169
+ tools.push({
170
+ name: mcpToolNameSegment(trigger.target),
171
+ ownerKind: "Procedure",
172
+ ownerName: trigger.target,
173
+ surface: source.surface,
174
+ });
175
+ }
176
+ return [...new Map(tools.map((tool) => [`${tool.surface}\0${tool.name}`, tool])).values()]
177
+ .sort((a, b) => compareText(`${a.surface}\0${a.name}\0${a.ownerName}`, `${b.surface}\0${b.name}\0${b.ownerName}`));
178
+ }
179
+ function toRecord(values) {
180
+ const record = Object.create(null);
181
+ for (const value of [...values].sort((a, b) => compareText(a.name, b.name))) {
182
+ record[value.name] = value;
183
+ }
184
+ return record;
185
+ }
186
+ function compareText(a, b) {
187
+ return a < b ? -1 : a > b ? 1 : 0;
188
+ }
189
+ function canonicalClone(value) {
190
+ if (Array.isArray(value))
191
+ return value.map(canonicalClone);
192
+ if (!value || typeof value !== "object")
193
+ return value;
194
+ const record = value;
195
+ return Object.fromEntries(Object.keys(record)
196
+ .filter((key) => record[key] !== undefined)
197
+ .sort()
198
+ .map((key) => [key, canonicalClone(record[key])]));
199
+ }
200
+ function semanticFingerprint(value) {
201
+ const json = canonicalJson(value);
202
+ let hash = 0xcbf29ce484222325n;
203
+ for (const byte of new TextEncoder().encode(json)) {
204
+ hash ^= BigInt(byte);
205
+ hash = BigInt.asUintN(64, hash * 0x100000001b3n);
206
+ }
207
+ // ponytail: non-security cache identity; switch to async SHA-256 if fingerprints cross a trust boundary.
208
+ return `fnv1a64:${hash.toString(16).padStart(16, "0")}`;
209
+ }
210
+ function canonicalJson(value) {
211
+ if (Array.isArray(value))
212
+ return `[${value.map(canonicalJson).join(",")}]`;
213
+ if (value && typeof value === "object") {
214
+ const record = value;
215
+ const keys = Object.keys(record)
216
+ .filter((key) => record[key] !== undefined)
217
+ .sort();
218
+ return `{${keys.map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
219
+ }
220
+ return JSON.stringify(value) ?? "null";
221
+ }
222
+ function deepFreeze(value) {
223
+ if (!value || typeof value !== "object" || Object.isFrozen(value))
224
+ return value;
225
+ Object.freeze(value);
226
+ for (const child of Object.values(value))
227
+ deepFreeze(child);
228
+ return value;
229
+ }
230
+ //# sourceMappingURL=RuntimePlanCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimePlanCompiler.js","sourceRoot":"","sources":["../../../src/domain/service/RuntimePlanCompiler.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LifecycleHook, TriggerManifest } from "@aotter/mantle-spec";
2
+ import type { LifecycleHookPlan, RuntimeTriggerPlan } from "./RuntimePlanCompiler.js";
2
3
  /**
3
4
  * Pre-built `(schema, hook) → Trigger[]` index for the lifecycle hook
4
5
  * runner. Built once at boot from the parsed manifest set; the
@@ -15,6 +16,8 @@ import type { LifecycleHook, TriggerManifest } from "@aotter/mantle-spec";
15
16
  export declare class TriggerIndex {
16
17
  private readonly bySchemaAndHook;
17
18
  constructor(triggers: readonly TriggerManifest[]);
19
+ /** Runtime acceleration over the compiler-owned value index. */
20
+ static fromPlan(groups: readonly LifecycleHookPlan[], triggers: Readonly<Record<string, RuntimeTriggerPlan>>): TriggerIndex;
18
21
  /** Triggers bound to (schema, hook), in firing order. Empty array
19
22
  * when nothing matches — callers don't need a null check. */
20
23
  forHook(schema: string, hook: LifecycleHook): readonly TriggerManifest[];
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerIndex.d.ts","sourceRoot":"","sources":["../../../src/domain/service/TriggerIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;gBAEzE,QAAQ,EAAE,SAAS,eAAe,EAAE;IAuBhD;kEAC8D;IAC9D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,SAAS,eAAe,EAAE;CAGzE"}
1
+ {"version":3,"file":"TriggerIndex.d.ts","sourceRoot":"","sources":["../../../src/domain/service/TriggerIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;gBAEzE,QAAQ,EAAE,SAAS,eAAe,EAAE;IAyBhD,gEAAgE;IAChE,MAAM,CAAC,QAAQ,CACb,MAAM,EAAE,SAAS,iBAAiB,EAAE,EACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,GACrD,YAAY;IAaf;kEAC8D;IAC9D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,SAAS,eAAe,EAAE;CAGzE"}
@@ -32,10 +32,23 @@ export class TriggerIndex {
32
32
  }
33
33
  for (const inner of this.bySchemaAndHook.values()) {
34
34
  for (const list of inner.values()) {
35
- list.sort((a, b) => a.metadata.name.localeCompare(b.metadata.name));
35
+ list.sort((a, b) => a.metadata.name < b.metadata.name ? -1 : a.metadata.name > b.metadata.name ? 1 : 0);
36
36
  }
37
37
  }
38
38
  }
39
+ /** Runtime acceleration over the compiler-owned value index. */
40
+ static fromPlan(groups, triggers) {
41
+ const index = new TriggerIndex([]);
42
+ for (const group of groups) {
43
+ let inner = index.bySchemaAndHook.get(group.schema);
44
+ if (!inner) {
45
+ inner = new Map();
46
+ index.bySchemaAndHook.set(group.schema, inner);
47
+ }
48
+ inner.set(group.hook, group.triggerNames.map((name) => triggers[name].manifest));
49
+ }
50
+ return index;
51
+ }
39
52
  /** Triggers bound to (schema, hook), in firing order. Empty array
40
53
  * when nothing matches — callers don't need a null check. */
41
54
  forHook(schema, hook) {
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerIndex.js","sourceRoot":"","sources":["../../../src/domain/service/TriggerIndex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,YAAY;IACN,eAAe,CAAqD;IAErF,YAAY,QAAoC;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YACjD,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED;kEAC8D;IAC9D,OAAO,CAAC,MAAc,EAAE,IAAmB;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"TriggerIndex.js","sourceRoot":"","sources":["../../../src/domain/service/TriggerIndex.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,YAAY;IACN,eAAe,CAAqD;IAErF,YAAY,QAAoC;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YACjD,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,QAAQ,CACb,MAAoC,EACpC,QAAsD;QAEtD,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;gBAClB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;kEAC8D;IAC9D,OAAO,CAAC,MAAc,EAAE,IAAmB;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC;CACF"}
@@ -6,20 +6,12 @@
6
6
  * directly by their consumers — NOT re-exported here, so the barrel's
7
7
  * purity claim above holds.
8
8
  */
9
- export * from "./MarkdownSerializer.js";
10
- export * from "./SitemapSerializer.js";
11
- export * from "./HtmlRenderer.js";
12
- export * from "./PreviewBanner.js";
13
- export * from "./PublicPathResolver.js";
14
9
  export * from "./LocaleNegotiator.js";
15
- export * from "./AbsoluteUrl.js";
16
- export * from "./SeoMetaComposer.js";
17
- export * from "./ViewSqlCompiler.js";
18
10
  export * from "./Pagination.js";
19
11
  export * from "./ViewParamCoercer.js";
20
12
  export * from "./PathMatcher.js";
21
13
  export * from "./TriggerIndex.js";
14
+ export * from "./RuntimePlanCompiler.js";
22
15
  export * from "./BuiltinProjector.js";
23
- export * from "./McpToolNaming.js";
24
16
  export * from "./AuthPredicateEvaluator.js";
25
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
@@ -6,20 +6,12 @@
6
6
  * directly by their consumers — NOT re-exported here, so the barrel's
7
7
  * purity claim above holds.
8
8
  */
9
- export * from "./MarkdownSerializer.js";
10
- export * from "./SitemapSerializer.js";
11
- export * from "./HtmlRenderer.js";
12
- export * from "./PreviewBanner.js";
13
- export * from "./PublicPathResolver.js";
14
9
  export * from "./LocaleNegotiator.js";
15
- export * from "./AbsoluteUrl.js";
16
- export * from "./SeoMetaComposer.js";
17
- export * from "./ViewSqlCompiler.js";
18
10
  export * from "./Pagination.js";
19
11
  export * from "./ViewParamCoercer.js";
20
12
  export * from "./PathMatcher.js";
21
13
  export * from "./TriggerIndex.js";
14
+ export * from "./RuntimePlanCompiler.js";
22
15
  export * from "./BuiltinProjector.js";
23
- export * from "./McpToolNaming.js";
24
16
  export * from "./AuthPredicateEvaluator.js";
25
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/service/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { EntryDataValidator, type SchemaManifest } from "@aotter/mantle-spec";
2
2
  import type { EntryRepository } from "../../port/EntryRepository.js";
3
- import type { SiteConfigRepository } from "../../port/SiteConfigRepository.js";
3
+ import type { LocalePolicyReader } from "../../port/SiteConfigRepository.js";
4
4
  export interface AssertEntryWritableArgs {
5
5
  readonly opPath: string;
6
6
  readonly entries: EntryRepository;
@@ -8,7 +8,7 @@ export interface AssertEntryWritableArgs {
8
8
  readonly data: Record<string, unknown>;
9
9
  readonly validator: EntryDataValidator;
10
10
  readonly excludeId?: string;
11
- readonly siteConfig?: SiteConfigRepository;
11
+ readonly siteConfig?: LocalePolicyReader;
12
12
  /** Draft mode: skip required-field + locale-presence checks so a
13
13
  * work-in-progress entry can be saved incomplete. Publish paths
14
14
  * omit this, so completeness is enforced before an entry goes live. */
@@ -1 +1 @@
1
- {"version":3,"file":"EntryWriteGuard.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/EntryWriteGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGlB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C;;4EAEwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF"}
1
+ {"version":3,"file":"EntryWriteGuard.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/EntryWriteGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAGlB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IACzC;;4EAEwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF"}