@weave-kit/engine 0.4.0 → 0.6.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 (642) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +6 -6
  3. package/dist/adapters/auth/index.d.ts +4 -2
  4. package/dist/adapters/auth/index.d.ts.map +1 -1
  5. package/dist/adapters/auth/index.js +1 -0
  6. package/dist/adapters/auth/index.js.map +1 -1
  7. package/dist/adapters/auth/source.d.ts +4 -4
  8. package/dist/adapters/auth/source.d.ts.map +1 -1
  9. package/dist/adapters/auth/subject.d.ts +22 -0
  10. package/dist/adapters/auth/subject.d.ts.map +1 -0
  11. package/dist/adapters/auth/subject.js +42 -0
  12. package/dist/adapters/auth/subject.js.map +1 -0
  13. package/dist/adapters/auth/verify.d.ts +12 -0
  14. package/dist/adapters/auth/verify.d.ts.map +1 -0
  15. package/dist/adapters/auth/verify.js +2 -0
  16. package/dist/adapters/auth/verify.js.map +1 -0
  17. package/dist/adapters/events/index.d.ts +2 -1
  18. package/dist/adapters/events/index.d.ts.map +1 -1
  19. package/dist/adapters/events/index.js +2 -1
  20. package/dist/adapters/events/index.js.map +1 -1
  21. package/dist/adapters/mcp/generate.d.ts +3 -3
  22. package/dist/adapters/mcp/generate.d.ts.map +1 -1
  23. package/dist/adapters/mcp/generate.js +34 -11
  24. package/dist/adapters/mcp/generate.js.map +1 -1
  25. package/dist/adapters/mcp/guardrails.d.ts +1 -1
  26. package/dist/adapters/mcp/http.d.ts +3 -1
  27. package/dist/adapters/mcp/http.d.ts.map +1 -1
  28. package/dist/adapters/mcp/http.js +2 -2
  29. package/dist/adapters/mcp/http.js.map +1 -1
  30. package/dist/adapters/mcp/index.d.ts +13 -4
  31. package/dist/adapters/mcp/index.d.ts.map +1 -1
  32. package/dist/adapters/mcp/index.js +12 -8
  33. package/dist/adapters/mcp/index.js.map +1 -1
  34. package/dist/adapters/mcp/session.d.ts +5 -5
  35. package/dist/adapters/mcp/session.d.ts.map +1 -1
  36. package/dist/adapters/mcp/tools.d.ts +6 -0
  37. package/dist/adapters/mcp/tools.d.ts.map +1 -1
  38. package/dist/adapters/mcp/tools.js +38 -14
  39. package/dist/adapters/mcp/tools.js.map +1 -1
  40. package/dist/adapters/mcp/types.d.ts +3 -1
  41. package/dist/adapters/mcp/types.d.ts.map +1 -1
  42. package/dist/adapters/mcp/types.js +1 -1
  43. package/dist/adapters/mcp/types.js.map +1 -1
  44. package/dist/adapters/openapi/document.d.ts.map +1 -1
  45. package/dist/adapters/openapi/document.js +72 -2
  46. package/dist/adapters/openapi/document.js.map +1 -1
  47. package/dist/adapters/openapi/schema.d.ts.map +1 -1
  48. package/dist/adapters/openapi/schema.js +47 -7
  49. package/dist/adapters/openapi/schema.js.map +1 -1
  50. package/dist/adapters/openapi/types.d.ts +1 -0
  51. package/dist/adapters/openapi/types.d.ts.map +1 -1
  52. package/dist/adapters/openapi/types.js +2 -0
  53. package/dist/adapters/openapi/types.js.map +1 -1
  54. package/dist/adapters/rest/approvals.d.ts +2 -2
  55. package/dist/adapters/rest/approvals.js +2 -2
  56. package/dist/adapters/rest/audit.d.ts +2 -2
  57. package/dist/adapters/rest/audit.js +2 -2
  58. package/dist/adapters/rest/common.d.ts +3 -3
  59. package/dist/adapters/rest/common.d.ts.map +1 -1
  60. package/dist/adapters/rest/common.js +1 -1
  61. package/dist/adapters/rest/guardrails.d.ts +1 -1
  62. package/dist/adapters/rest/guardrails.js +1 -1
  63. package/dist/adapters/rest/identities.d.ts +4 -4
  64. package/dist/adapters/rest/identities.d.ts.map +1 -1
  65. package/dist/adapters/rest/identities.js +3 -3
  66. package/dist/adapters/rest/identities.js.map +1 -1
  67. package/dist/adapters/rest/identityAdmin.d.ts +18 -0
  68. package/dist/adapters/rest/identityAdmin.d.ts.map +1 -0
  69. package/dist/adapters/rest/identityAdmin.js +58 -0
  70. package/dist/adapters/rest/identityAdmin.js.map +1 -0
  71. package/dist/adapters/rest/index.d.ts +4 -0
  72. package/dist/adapters/rest/index.d.ts.map +1 -1
  73. package/dist/adapters/rest/index.js +3 -0
  74. package/dist/adapters/rest/index.js.map +1 -1
  75. package/dist/adapters/rest/metadata.d.ts +1 -1
  76. package/dist/adapters/rest/metadata.js +1 -1
  77. package/dist/adapters/rest/pages.d.ts +1 -1
  78. package/dist/adapters/rest/pages.d.ts.map +1 -1
  79. package/dist/adapters/rest/permissions.d.ts +1 -1
  80. package/dist/adapters/rest/permissions.js +1 -1
  81. package/dist/adapters/rest/plugin.d.ts +2 -2
  82. package/dist/adapters/rest/plugin.d.ts.map +1 -1
  83. package/dist/adapters/rest/schemas.d.ts +1 -1
  84. package/dist/adapters/rest/schemas.d.ts.map +1 -1
  85. package/dist/adapters/rest/workflow.d.ts +15 -0
  86. package/dist/adapters/rest/workflow.d.ts.map +1 -0
  87. package/dist/adapters/rest/workflow.js +89 -0
  88. package/dist/adapters/rest/workflow.js.map +1 -0
  89. package/dist/adapters/rest/workflowSource.d.ts +15 -0
  90. package/dist/adapters/rest/workflowSource.d.ts.map +1 -0
  91. package/dist/adapters/rest/workflowSource.js +63 -0
  92. package/dist/adapters/rest/workflowSource.js.map +1 -0
  93. package/dist/cli/commands/build.js +1 -1
  94. package/dist/cli/commands/build.js.map +1 -1
  95. package/dist/cli/commands/connect.d.ts +1 -1
  96. package/dist/cli/commands/default-view.d.ts +2 -2
  97. package/dist/cli/commands/default-view.js +2 -2
  98. package/dist/cli/commands/dev.d.ts.map +1 -1
  99. package/dist/cli/commands/dev.js +18 -9
  100. package/dist/cli/commands/dev.js.map +1 -1
  101. package/dist/cli/commands/field-add.d.ts.map +1 -1
  102. package/dist/cli/commands/field-add.js +12 -6
  103. package/dist/cli/commands/field-add.js.map +1 -1
  104. package/dist/cli/commands/field-types.d.ts.map +1 -1
  105. package/dist/cli/commands/field-types.js +10 -1
  106. package/dist/cli/commands/field-types.js.map +1 -1
  107. package/dist/cli/commands/identity.d.ts +15 -0
  108. package/dist/cli/commands/identity.d.ts.map +1 -0
  109. package/dist/cli/commands/identity.js +115 -0
  110. package/dist/cli/commands/identity.js.map +1 -0
  111. package/dist/cli/commands/introspect.d.ts.map +1 -1
  112. package/dist/cli/commands/introspect.js +23 -0
  113. package/dist/cli/commands/introspect.js.map +1 -1
  114. package/dist/cli/commands/mcp-config.js +1 -1
  115. package/dist/cli/commands/mcp-config.js.map +1 -1
  116. package/dist/cli/commands/migrate.js +2 -2
  117. package/dist/cli/commands/migrate.js.map +1 -1
  118. package/dist/cli/commands/module.d.ts +2 -2
  119. package/dist/cli/commands/module.d.ts.map +1 -1
  120. package/dist/cli/commands/module.js +2 -2
  121. package/dist/cli/commands/module.js.map +1 -1
  122. package/dist/cli/commands/object-create.d.ts.map +1 -1
  123. package/dist/cli/commands/object-create.js +15 -15
  124. package/dist/cli/commands/object-create.js.map +1 -1
  125. package/dist/cli/commands/schema-map.d.ts.map +1 -1
  126. package/dist/cli/commands/schema-map.js +6 -0
  127. package/dist/cli/commands/schema-map.js.map +1 -1
  128. package/dist/cli/commands/workflow-close.d.ts +9 -0
  129. package/dist/cli/commands/workflow-close.d.ts.map +1 -0
  130. package/dist/cli/commands/workflow-close.js +48 -0
  131. package/dist/cli/commands/workflow-close.js.map +1 -0
  132. package/dist/cli/commands/workflow-migrate.d.ts +11 -0
  133. package/dist/cli/commands/workflow-migrate.d.ts.map +1 -0
  134. package/dist/cli/commands/workflow-migrate.js +120 -0
  135. package/dist/cli/commands/workflow-migrate.js.map +1 -0
  136. package/dist/cli/commands/workflow-open.d.ts +10 -0
  137. package/dist/cli/commands/workflow-open.d.ts.map +1 -0
  138. package/dist/cli/commands/workflow-open.js +112 -0
  139. package/dist/cli/commands/workflow-open.js.map +1 -0
  140. package/dist/cli/commands/workflow-starter.d.ts +10 -0
  141. package/dist/cli/commands/workflow-starter.d.ts.map +1 -0
  142. package/dist/cli/commands/workflow-starter.js +29 -0
  143. package/dist/cli/commands/workflow-starter.js.map +1 -0
  144. package/dist/cli/commands/workflow-switch.d.ts +10 -0
  145. package/dist/cli/commands/workflow-switch.d.ts.map +1 -0
  146. package/dist/cli/commands/workflow-switch.js +60 -0
  147. package/dist/cli/commands/workflow-switch.js.map +1 -0
  148. package/dist/cli/commands/workflow-upgrade.d.ts +12 -0
  149. package/dist/cli/commands/workflow-upgrade.d.ts.map +1 -0
  150. package/dist/cli/commands/workflow-upgrade.js +116 -0
  151. package/dist/cli/commands/workflow-upgrade.js.map +1 -0
  152. package/dist/cli/index.js +74 -3
  153. package/dist/cli/index.js.map +1 -1
  154. package/dist/cli/project-types/manifest.d.ts +25 -0
  155. package/dist/cli/project-types/manifest.d.ts.map +1 -0
  156. package/dist/cli/project-types/manifest.js +40 -0
  157. package/dist/cli/project-types/manifest.js.map +1 -0
  158. package/dist/cli/ready-screen.js +1 -1
  159. package/dist/cli/ready-screen.js.map +1 -1
  160. package/dist/cli/scaffold.d.ts.map +1 -1
  161. package/dist/cli/scaffold.js +21 -34
  162. package/dist/cli/scaffold.js.map +1 -1
  163. package/dist/cli/types/commands.d.ts +48 -0
  164. package/dist/cli/types/commands.d.ts.map +1 -1
  165. package/dist/cli/types/index.d.ts +1 -1
  166. package/dist/cli/types/index.d.ts.map +1 -1
  167. package/dist/cli/types/values.d.ts +9 -0
  168. package/dist/cli/types/values.d.ts.map +1 -1
  169. package/dist/cli/types/values.js +9 -0
  170. package/dist/cli/types/values.js.map +1 -1
  171. package/dist/core/api/error.d.ts.map +1 -1
  172. package/dist/core/api/error.js +7 -4
  173. package/dist/core/api/error.js.map +1 -1
  174. package/dist/core/audit/types.d.ts +4 -2
  175. package/dist/core/audit/types.d.ts.map +1 -1
  176. package/dist/core/audit/types.js +2 -0
  177. package/dist/core/audit/types.js.map +1 -1
  178. package/dist/core/formula/validate.d.ts.map +1 -1
  179. package/dist/core/formula/validate.js +6 -0
  180. package/dist/core/formula/validate.js.map +1 -1
  181. package/dist/core/i18n/ar.d.ts.map +1 -1
  182. package/dist/core/i18n/ar.js +59 -3
  183. package/dist/core/i18n/ar.js.map +1 -1
  184. package/dist/core/i18n/de.d.ts.map +1 -1
  185. package/dist/core/i18n/de.js +59 -3
  186. package/dist/core/i18n/de.js.map +1 -1
  187. package/dist/core/i18n/en.d.ts +60 -4
  188. package/dist/core/i18n/en.d.ts.map +1 -1
  189. package/dist/core/i18n/en.js +60 -4
  190. package/dist/core/i18n/en.js.map +1 -1
  191. package/dist/core/i18n/es.d.ts.map +1 -1
  192. package/dist/core/i18n/es.js +59 -3
  193. package/dist/core/i18n/es.js.map +1 -1
  194. package/dist/core/i18n/fr.d.ts.map +1 -1
  195. package/dist/core/i18n/fr.js +59 -3
  196. package/dist/core/i18n/fr.js.map +1 -1
  197. package/dist/core/i18n/hi.d.ts.map +1 -1
  198. package/dist/core/i18n/hi.js +59 -3
  199. package/dist/core/i18n/hi.js.map +1 -1
  200. package/dist/core/i18n/id.d.ts.map +1 -1
  201. package/dist/core/i18n/id.js +59 -3
  202. package/dist/core/i18n/id.js.map +1 -1
  203. package/dist/core/i18n/ja.d.ts.map +1 -1
  204. package/dist/core/i18n/ja.js +59 -3
  205. package/dist/core/i18n/ja.js.map +1 -1
  206. package/dist/core/i18n/ko.d.ts.map +1 -1
  207. package/dist/core/i18n/ko.js +59 -3
  208. package/dist/core/i18n/ko.js.map +1 -1
  209. package/dist/core/i18n/pt.d.ts.map +1 -1
  210. package/dist/core/i18n/pt.js +59 -3
  211. package/dist/core/i18n/pt.js.map +1 -1
  212. package/dist/core/i18n/ru.d.ts.map +1 -1
  213. package/dist/core/i18n/ru.js +59 -3
  214. package/dist/core/i18n/ru.js.map +1 -1
  215. package/dist/core/i18n/vi.d.ts.map +1 -1
  216. package/dist/core/i18n/vi.js +59 -3
  217. package/dist/core/i18n/vi.js.map +1 -1
  218. package/dist/core/i18n/zh-hant.d.ts.map +1 -1
  219. package/dist/core/i18n/zh-hant.js +59 -3
  220. package/dist/core/i18n/zh-hant.js.map +1 -1
  221. package/dist/core/i18n/zh.d.ts.map +1 -1
  222. package/dist/core/i18n/zh.js +60 -4
  223. package/dist/core/i18n/zh.js.map +1 -1
  224. package/dist/core/object/describe.d.ts +62 -3
  225. package/dist/core/object/describe.d.ts.map +1 -1
  226. package/dist/core/object/describe.js +81 -11
  227. package/dist/core/object/describe.js.map +1 -1
  228. package/dist/core/object/gen-types.d.ts.map +1 -1
  229. package/dist/core/object/gen-types.js +14 -1
  230. package/dist/core/object/gen-types.js.map +1 -1
  231. package/dist/core/object/graph.d.ts +3 -0
  232. package/dist/core/object/graph.d.ts.map +1 -1
  233. package/dist/core/object/graph.js +90 -14
  234. package/dist/core/object/graph.js.map +1 -1
  235. package/dist/core/object/index.d.ts +6 -2
  236. package/dist/core/object/index.d.ts.map +1 -1
  237. package/dist/core/object/index.js +5 -1
  238. package/dist/core/object/index.js.map +1 -1
  239. package/dist/core/object/migrations.d.ts.map +1 -1
  240. package/dist/core/object/migrations.js +45 -0
  241. package/dist/core/object/migrations.js.map +1 -1
  242. package/dist/core/object/parse.d.ts +7 -0
  243. package/dist/core/object/parse.d.ts.map +1 -1
  244. package/dist/core/object/parse.js +32 -1
  245. package/dist/core/object/parse.js.map +1 -1
  246. package/dist/core/object/record-key.d.ts +19 -0
  247. package/dist/core/object/record-key.d.ts.map +1 -0
  248. package/dist/core/object/record-key.js +100 -0
  249. package/dist/core/object/record-key.js.map +1 -0
  250. package/dist/core/object/registry.js +1 -1
  251. package/dist/core/object/registry.js.map +1 -1
  252. package/dist/core/object/schema-version.d.ts +1 -1
  253. package/dist/core/object/schema-version.js +1 -1
  254. package/dist/core/object/system-objects.d.ts +16 -0
  255. package/dist/core/object/system-objects.d.ts.map +1 -0
  256. package/dist/core/object/system-objects.js +72 -0
  257. package/dist/core/object/system-objects.js.map +1 -0
  258. package/dist/core/object/validate/constraints.d.ts +9 -0
  259. package/dist/core/object/validate/constraints.d.ts.map +1 -0
  260. package/dist/core/object/validate/constraints.js +45 -0
  261. package/dist/core/object/validate/constraints.js.map +1 -0
  262. package/dist/core/object/validate/field.d.ts.map +1 -1
  263. package/dist/core/object/validate/field.js +339 -66
  264. package/dist/core/object/validate/field.js.map +1 -1
  265. package/dist/core/object/validate/formulas.d.ts.map +1 -1
  266. package/dist/core/object/validate/formulas.js +6 -0
  267. package/dist/core/object/validate/formulas.js.map +1 -1
  268. package/dist/core/object/validate/object.d.ts +2 -0
  269. package/dist/core/object/validate/object.d.ts.map +1 -1
  270. package/dist/core/object/validate/object.js +54 -19
  271. package/dist/core/object/validate/object.js.map +1 -1
  272. package/dist/core/object/validate/permissions.d.ts.map +1 -1
  273. package/dist/core/object/validate/permissions.js +4 -0
  274. package/dist/core/object/validate/permissions.js.map +1 -1
  275. package/dist/core/object/validate/primitives.d.ts +0 -1
  276. package/dist/core/object/validate/primitives.d.ts.map +1 -1
  277. package/dist/core/object/validate/primitives.js +1 -2
  278. package/dist/core/object/validate/primitives.js.map +1 -1
  279. package/dist/core/object/validate/workflow.d.ts +10 -0
  280. package/dist/core/object/validate/workflow.d.ts.map +1 -0
  281. package/dist/core/object/validate/workflow.js +143 -0
  282. package/dist/core/object/validate/workflow.js.map +1 -0
  283. package/dist/core/object/workflow-hash.d.ts +10 -0
  284. package/dist/core/object/workflow-hash.d.ts.map +1 -0
  285. package/dist/core/object/workflow-hash.js +27 -0
  286. package/dist/core/object/workflow-hash.js.map +1 -0
  287. package/dist/core/object/workflow-migrations.d.ts +27 -0
  288. package/dist/core/object/workflow-migrations.d.ts.map +1 -0
  289. package/dist/core/object/workflow-migrations.js +125 -0
  290. package/dist/core/object/workflow-migrations.js.map +1 -0
  291. package/dist/core/provider/event/index.d.ts +1 -1
  292. package/dist/core/provider/event/index.d.ts.map +1 -1
  293. package/dist/core/provider/event/index.js.map +1 -1
  294. package/dist/core/provider/event/types.d.ts +17 -2
  295. package/dist/core/provider/event/types.d.ts.map +1 -1
  296. package/dist/core/provider/event/types.js +2 -1
  297. package/dist/core/provider/event/types.js.map +1 -1
  298. package/dist/core/provider/identity/directory.d.ts +90 -0
  299. package/dist/core/provider/identity/directory.d.ts.map +1 -0
  300. package/dist/core/provider/identity/directory.js +3 -0
  301. package/dist/core/provider/identity/directory.js.map +1 -0
  302. package/dist/core/provider/identity/index.d.ts +5 -1
  303. package/dist/core/provider/identity/index.d.ts.map +1 -1
  304. package/dist/core/provider/identity/index.js +2 -1
  305. package/dist/core/provider/identity/index.js.map +1 -1
  306. package/dist/core/provider/identity/source.d.ts +22 -0
  307. package/dist/core/provider/identity/source.d.ts.map +1 -0
  308. package/dist/core/provider/identity/source.js +3 -0
  309. package/dist/core/provider/identity/source.js.map +1 -0
  310. package/dist/core/provider/identity/types.d.ts +62 -7
  311. package/dist/core/provider/identity/types.d.ts.map +1 -1
  312. package/dist/core/provider/identity/types.js +13 -0
  313. package/dist/core/provider/identity/types.js.map +1 -1
  314. package/dist/core/proxy/types.d.ts +4 -4
  315. package/dist/core/proxy/types.d.ts.map +1 -1
  316. package/dist/core/rbac/authorize.d.ts +10 -9
  317. package/dist/core/rbac/authorize.d.ts.map +1 -1
  318. package/dist/core/rbac/authorize.js +23 -18
  319. package/dist/core/rbac/authorize.js.map +1 -1
  320. package/dist/core/rbac/details.d.ts +33 -0
  321. package/dist/core/rbac/details.d.ts.map +1 -0
  322. package/dist/core/rbac/details.js +74 -0
  323. package/dist/core/rbac/details.js.map +1 -0
  324. package/dist/core/rbac/fields.d.ts +2 -1
  325. package/dist/core/rbac/fields.d.ts.map +1 -1
  326. package/dist/core/rbac/fields.js +3 -2
  327. package/dist/core/rbac/fields.js.map +1 -1
  328. package/dist/core/rbac/index.d.ts +3 -2
  329. package/dist/core/rbac/index.d.ts.map +1 -1
  330. package/dist/core/rbac/index.js +2 -1
  331. package/dist/core/rbac/index.js.map +1 -1
  332. package/dist/core/rbac/resolve.d.ts +3 -1
  333. package/dist/core/rbac/resolve.d.ts.map +1 -1
  334. package/dist/core/rbac/resolve.js +17 -9
  335. package/dist/core/rbac/resolve.js.map +1 -1
  336. package/dist/core/rbac/rls.d.ts +6 -0
  337. package/dist/core/rbac/rls.d.ts.map +1 -1
  338. package/dist/core/rbac/rls.js +52 -7
  339. package/dist/core/rbac/rls.js.map +1 -1
  340. package/dist/core/rbac/rowScope.d.ts +13 -6
  341. package/dist/core/rbac/rowScope.d.ts.map +1 -1
  342. package/dist/core/rbac/rowScope.js +88 -16
  343. package/dist/core/rbac/rowScope.js.map +1 -1
  344. package/dist/core/rbac/types.d.ts +6 -7
  345. package/dist/core/rbac/types.d.ts.map +1 -1
  346. package/dist/core/script/types.d.ts +1 -1
  347. package/dist/core/script/types.d.ts.map +1 -1
  348. package/dist/core/storage/diff.d.ts +10 -2
  349. package/dist/core/storage/diff.d.ts.map +1 -1
  350. package/dist/core/storage/diff.js +40 -18
  351. package/dist/core/storage/diff.js.map +1 -1
  352. package/dist/core/storage/index.d.ts +7 -1
  353. package/dist/core/storage/index.d.ts.map +1 -1
  354. package/dist/core/storage/index.js +6 -1
  355. package/dist/core/storage/index.js.map +1 -1
  356. package/dist/core/storage/inspect.d.ts +12 -3
  357. package/dist/core/storage/inspect.d.ts.map +1 -1
  358. package/dist/core/storage/inspect.js +39 -22
  359. package/dist/core/storage/inspect.js.map +1 -1
  360. package/dist/core/storage/introspect.d.ts +9 -2
  361. package/dist/core/storage/introspect.d.ts.map +1 -1
  362. package/dist/core/storage/introspect.js +100 -43
  363. package/dist/core/storage/introspect.js.map +1 -1
  364. package/dist/core/storage/link-table.d.ts +47 -0
  365. package/dist/core/storage/link-table.d.ts.map +1 -0
  366. package/dist/core/storage/link-table.js +110 -0
  367. package/dist/core/storage/link-table.js.map +1 -0
  368. package/dist/core/storage/map.d.ts +14 -5
  369. package/dist/core/storage/map.d.ts.map +1 -1
  370. package/dist/core/storage/map.js +207 -39
  371. package/dist/core/storage/map.js.map +1 -1
  372. package/dist/core/storage/meta.d.ts +6 -3
  373. package/dist/core/storage/meta.d.ts.map +1 -1
  374. package/dist/core/storage/meta.js +9 -5
  375. package/dist/core/storage/meta.js.map +1 -1
  376. package/dist/core/storage/migrate.d.ts.map +1 -1
  377. package/dist/core/storage/migrate.js +144 -11
  378. package/dist/core/storage/migrate.js.map +1 -1
  379. package/dist/core/storage/record-key-sql.d.ts +19 -0
  380. package/dist/core/storage/record-key-sql.d.ts.map +1 -0
  381. package/dist/core/storage/record-key-sql.js +43 -0
  382. package/dist/core/storage/record-key-sql.js.map +1 -0
  383. package/dist/core/storage/record-meta.d.ts +68 -0
  384. package/dist/core/storage/record-meta.d.ts.map +1 -0
  385. package/dist/core/storage/record-meta.js +108 -0
  386. package/dist/core/storage/record-meta.js.map +1 -0
  387. package/dist/core/storage/report.d.ts +10 -0
  388. package/dist/core/storage/report.d.ts.map +1 -1
  389. package/dist/core/storage/report.js +31 -9
  390. package/dist/core/storage/report.js.map +1 -1
  391. package/dist/core/storage/sql-literals.d.ts +9 -0
  392. package/dist/core/storage/sql-literals.d.ts.map +1 -0
  393. package/dist/core/storage/sql-literals.js +13 -0
  394. package/dist/core/storage/sql-literals.js.map +1 -0
  395. package/dist/core/storage/system-tables.d.ts +44 -0
  396. package/dist/core/storage/system-tables.d.ts.map +1 -0
  397. package/dist/core/storage/system-tables.js +268 -0
  398. package/dist/core/storage/system-tables.js.map +1 -0
  399. package/dist/core/tools/policies.d.ts +2 -2
  400. package/dist/core/tools/policies.js +2 -2
  401. package/dist/core/tools/types.d.ts +6 -6
  402. package/dist/core/tools/types.d.ts.map +1 -1
  403. package/dist/core/tools/values.d.ts +5 -0
  404. package/dist/core/tools/values.d.ts.map +1 -1
  405. package/dist/core/tools/values.js +9 -1
  406. package/dist/core/tools/values.js.map +1 -1
  407. package/dist/core/types/currency.d.ts +9 -0
  408. package/dist/core/types/currency.d.ts.map +1 -0
  409. package/dist/core/types/currency.js +28 -0
  410. package/dist/core/types/currency.js.map +1 -0
  411. package/dist/core/types/field-type.d.ts +60 -6
  412. package/dist/core/types/field-type.d.ts.map +1 -1
  413. package/dist/core/types/field-type.js +19 -3
  414. package/dist/core/types/field-type.js.map +1 -1
  415. package/dist/core/types/fields.d.ts +118 -20
  416. package/dist/core/types/fields.d.ts.map +1 -1
  417. package/dist/core/types/index.d.ts +11 -9
  418. package/dist/core/types/index.d.ts.map +1 -1
  419. package/dist/core/types/index.js +5 -4
  420. package/dist/core/types/index.js.map +1 -1
  421. package/dist/core/types/object.d.ts +27 -2
  422. package/dist/core/types/object.d.ts.map +1 -1
  423. package/dist/core/types/permission.d.ts +5 -0
  424. package/dist/core/types/permission.d.ts.map +1 -1
  425. package/dist/core/types/primaryField.d.ts +6 -1
  426. package/dist/core/types/primaryField.d.ts.map +1 -1
  427. package/dist/core/types/primaryField.js +8 -1
  428. package/dist/core/types/primaryField.js.map +1 -1
  429. package/dist/core/types/registry.d.ts +6 -4
  430. package/dist/core/types/registry.d.ts.map +1 -1
  431. package/dist/core/types/registry.js +40 -30
  432. package/dist/core/types/registry.js.map +1 -1
  433. package/dist/core/types/values.d.ts +102 -27
  434. package/dist/core/types/values.d.ts.map +1 -1
  435. package/dist/core/types/values.js +68 -29
  436. package/dist/core/types/values.js.map +1 -1
  437. package/dist/core/types/workflow.d.ts +140 -0
  438. package/dist/core/types/workflow.d.ts.map +1 -0
  439. package/dist/core/types/workflow.js +49 -0
  440. package/dist/core/types/workflow.js.map +1 -0
  441. package/dist/index.d.ts +2 -0
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/index.js +5 -3
  444. package/dist/index.js.map +1 -1
  445. package/dist/infrastructure/event/bus.d.ts.map +1 -1
  446. package/dist/infrastructure/event/bus.js +14 -0
  447. package/dist/infrastructure/event/bus.js.map +1 -1
  448. package/dist/infrastructure/identity.d.ts +2 -2
  449. package/dist/infrastructure/identity.d.ts.map +1 -1
  450. package/dist/infrastructure/identity.js.map +1 -1
  451. package/dist/layout-format.d.ts +6 -6
  452. package/dist/layout-format.js +4 -4
  453. package/dist/runtime/data-access/builder.d.ts +15 -5
  454. package/dist/runtime/data-access/builder.d.ts.map +1 -1
  455. package/dist/runtime/data-access/builder.js +222 -30
  456. package/dist/runtime/data-access/builder.js.map +1 -1
  457. package/dist/runtime/data-access/details.d.ts.map +1 -1
  458. package/dist/runtime/data-access/details.js +7 -2
  459. package/dist/runtime/data-access/details.js.map +1 -1
  460. package/dist/runtime/data-access/formula.d.ts +11 -3
  461. package/dist/runtime/data-access/formula.d.ts.map +1 -1
  462. package/dist/runtime/data-access/formula.js +82 -19
  463. package/dist/runtime/data-access/formula.js.map +1 -1
  464. package/dist/runtime/data-access/index.d.ts +1 -1
  465. package/dist/runtime/data-access/index.d.ts.map +1 -1
  466. package/dist/runtime/data-access/index.js +1 -1
  467. package/dist/runtime/data-access/index.js.map +1 -1
  468. package/dist/runtime/data-access/link.d.ts +7 -0
  469. package/dist/runtime/data-access/link.d.ts.map +1 -0
  470. package/dist/runtime/data-access/link.js +80 -0
  471. package/dist/runtime/data-access/link.js.map +1 -0
  472. package/dist/runtime/data-access/query.d.ts +48 -3
  473. package/dist/runtime/data-access/query.d.ts.map +1 -1
  474. package/dist/runtime/data-access/query.js +399 -45
  475. package/dist/runtime/data-access/query.js.map +1 -1
  476. package/dist/runtime/data-access/rbac.d.ts.map +1 -1
  477. package/dist/runtime/data-access/rbac.js +134 -16
  478. package/dist/runtime/data-access/rbac.js.map +1 -1
  479. package/dist/runtime/data-access/seqno.d.ts +0 -2
  480. package/dist/runtime/data-access/seqno.d.ts.map +1 -1
  481. package/dist/runtime/data-access/seqno.js +0 -9
  482. package/dist/runtime/data-access/seqno.js.map +1 -1
  483. package/dist/runtime/data-access/sql-executor.d.ts +13 -3
  484. package/dist/runtime/data-access/sql-executor.d.ts.map +1 -1
  485. package/dist/runtime/data-access/sql-executor.js +20 -14
  486. package/dist/runtime/data-access/sql-executor.js.map +1 -1
  487. package/dist/runtime/data-access/sql-gate.d.ts +4 -4
  488. package/dist/runtime/data-access/sql-gate.d.ts.map +1 -1
  489. package/dist/runtime/data-access/sql-gate.js +5 -5
  490. package/dist/runtime/data-access/sql-gate.js.map +1 -1
  491. package/dist/runtime/data-access/tx.d.ts +1 -1
  492. package/dist/runtime/data-access/tx.js +1 -1
  493. package/dist/runtime/data-access/types.d.ts +31 -3
  494. package/dist/runtime/data-access/types.d.ts.map +1 -1
  495. package/dist/runtime/data-access/validate.d.ts.map +1 -1
  496. package/dist/runtime/data-access/validate.js +186 -39
  497. package/dist/runtime/data-access/validate.js.map +1 -1
  498. package/dist/runtime/data-access/workflow.d.ts +146 -0
  499. package/dist/runtime/data-access/workflow.d.ts.map +1 -0
  500. package/dist/runtime/data-access/workflow.js +636 -0
  501. package/dist/runtime/data-access/workflow.js.map +1 -0
  502. package/dist/runtime/engine.d.ts +89 -14
  503. package/dist/runtime/engine.d.ts.map +1 -1
  504. package/dist/runtime/engine.js +123 -26
  505. package/dist/runtime/engine.js.map +1 -1
  506. package/dist/runtime/fieldtypes/loader.d.ts.map +1 -1
  507. package/dist/runtime/fieldtypes/loader.js +84 -2
  508. package/dist/runtime/fieldtypes/loader.js.map +1 -1
  509. package/dist/runtime/git/guardrailSource.d.ts +1 -1
  510. package/dist/runtime/git/index.d.ts +4 -2
  511. package/dist/runtime/git/index.d.ts.map +1 -1
  512. package/dist/runtime/git/index.js +2 -1
  513. package/dist/runtime/git/index.js.map +1 -1
  514. package/dist/runtime/git/layoutSource.d.ts +1 -1
  515. package/dist/runtime/git/loader.d.ts.map +1 -1
  516. package/dist/runtime/git/loader.js +18 -6
  517. package/dist/runtime/git/loader.js.map +1 -1
  518. package/dist/runtime/git/pageCatalog.d.ts +1 -1
  519. package/dist/runtime/git/schemaChange.d.ts +22 -0
  520. package/dist/runtime/git/schemaChange.d.ts.map +1 -1
  521. package/dist/runtime/git/schemaChange.js +28 -2
  522. package/dist/runtime/git/schemaChange.js.map +1 -1
  523. package/dist/runtime/git/schemaSource.d.ts +1 -1
  524. package/dist/runtime/git/sourceFile.d.ts +1 -1
  525. package/dist/runtime/git/sourceFile.js +1 -1
  526. package/dist/runtime/git/sourceTransaction.d.ts +1 -1
  527. package/dist/runtime/git/workflowSource.d.ts +40 -0
  528. package/dist/runtime/git/workflowSource.d.ts.map +1 -0
  529. package/dist/runtime/git/workflowSource.js +45 -0
  530. package/dist/runtime/git/workflowSource.js.map +1 -0
  531. package/dist/runtime/identity/admin.d.ts +18 -0
  532. package/dist/runtime/identity/admin.d.ts.map +1 -0
  533. package/dist/runtime/identity/admin.js +27 -0
  534. package/dist/runtime/identity/admin.js.map +1 -0
  535. package/dist/runtime/identity/directory.d.ts +12 -0
  536. package/dist/runtime/identity/directory.d.ts.map +1 -0
  537. package/dist/runtime/identity/directory.js +22 -0
  538. package/dist/runtime/identity/directory.js.map +1 -0
  539. package/dist/runtime/identity/index.d.ts +11 -0
  540. package/dist/runtime/identity/index.d.ts.map +1 -0
  541. package/dist/runtime/identity/index.js +8 -0
  542. package/dist/runtime/identity/index.js.map +1 -0
  543. package/dist/runtime/identity/resolve.d.ts +10 -0
  544. package/dist/runtime/identity/resolve.d.ts.map +1 -0
  545. package/dist/runtime/identity/resolve.js +16 -0
  546. package/dist/runtime/identity/resolve.js.map +1 -0
  547. package/dist/runtime/identity/sources/function.d.ts +10 -0
  548. package/dist/runtime/identity/sources/function.d.ts.map +1 -0
  549. package/dist/runtime/identity/sources/function.js +9 -0
  550. package/dist/runtime/identity/sources/function.js.map +1 -0
  551. package/dist/runtime/identity/sources/pg.d.ts +42 -0
  552. package/dist/runtime/identity/sources/pg.d.ts.map +1 -0
  553. package/dist/runtime/identity/sources/pg.js +121 -0
  554. package/dist/runtime/identity/sources/pg.js.map +1 -0
  555. package/dist/runtime/identity/store.d.ts +27 -0
  556. package/dist/runtime/identity/store.d.ts.map +1 -0
  557. package/dist/runtime/identity/store.js +139 -0
  558. package/dist/runtime/identity/store.js.map +1 -0
  559. package/dist/runtime/identity/sync.d.ts +34 -0
  560. package/dist/runtime/identity/sync.d.ts.map +1 -0
  561. package/dist/runtime/identity/sync.js +149 -0
  562. package/dist/runtime/identity/sync.js.map +1 -0
  563. package/dist/runtime/metadata/cache.d.ts +0 -2
  564. package/dist/runtime/metadata/cache.d.ts.map +1 -1
  565. package/dist/runtime/metadata/cache.js +0 -11
  566. package/dist/runtime/metadata/cache.js.map +1 -1
  567. package/dist/runtime/metadata/index.d.ts +1 -1
  568. package/dist/runtime/metadata/index.d.ts.map +1 -1
  569. package/dist/runtime/metadata/index.js +1 -1
  570. package/dist/runtime/metadata/index.js.map +1 -1
  571. package/dist/runtime/record-meta/index.d.ts +2 -0
  572. package/dist/runtime/record-meta/index.d.ts.map +1 -0
  573. package/dist/runtime/record-meta/index.js +2 -0
  574. package/dist/runtime/record-meta/index.js.map +1 -0
  575. package/dist/runtime/record-meta/store.d.ts +43 -0
  576. package/dist/runtime/record-meta/store.d.ts.map +1 -0
  577. package/dist/runtime/record-meta/store.js +88 -0
  578. package/dist/runtime/record-meta/store.js.map +1 -0
  579. package/dist/runtime/sql-analyzer/index.d.ts.map +1 -1
  580. package/dist/runtime/sql-analyzer/index.js +59 -0
  581. package/dist/runtime/sql-analyzer/index.js.map +1 -1
  582. package/dist/runtime/tools/executor.d.ts +11 -11
  583. package/dist/runtime/tools/executor.d.ts.map +1 -1
  584. package/dist/runtime/tools/executor.js +6 -6
  585. package/dist/runtime/tools/executor.js.map +1 -1
  586. package/dist/runtime/tools/index.d.ts +2 -0
  587. package/dist/runtime/tools/index.d.ts.map +1 -1
  588. package/dist/runtime/tools/index.js +1 -0
  589. package/dist/runtime/tools/index.js.map +1 -1
  590. package/dist/runtime/tools/policies.d.ts +22 -5
  591. package/dist/runtime/tools/policies.d.ts.map +1 -1
  592. package/dist/runtime/tools/policies.js +42 -12
  593. package/dist/runtime/tools/policies.js.map +1 -1
  594. package/dist/runtime/tunnel/connector.d.ts +1 -1
  595. package/dist/runtime/tunnel/forwarder.js +1 -1
  596. package/dist/runtime/tunnel/framing.d.ts +1 -1
  597. package/dist/runtime/tunnel/server.d.ts +1 -1
  598. package/dist/subsystems/approvals/index.d.ts +4 -4
  599. package/dist/subsystems/approvals/index.d.ts.map +1 -1
  600. package/dist/subsystems/approvals/index.js +5 -6
  601. package/dist/subsystems/approvals/index.js.map +1 -1
  602. package/dist/subsystems/approvals/store.d.ts +1 -3
  603. package/dist/subsystems/approvals/store.d.ts.map +1 -1
  604. package/dist/subsystems/approvals/store.js +1 -16
  605. package/dist/subsystems/approvals/store.js.map +1 -1
  606. package/dist/subsystems/audit/index.d.ts +1 -1
  607. package/dist/subsystems/audit/index.d.ts.map +1 -1
  608. package/dist/subsystems/audit/index.js +2 -3
  609. package/dist/subsystems/audit/index.js.map +1 -1
  610. package/dist/subsystems/audit/store.d.ts +0 -2
  611. package/dist/subsystems/audit/store.d.ts.map +1 -1
  612. package/dist/subsystems/audit/store.js +0 -21
  613. package/dist/subsystems/audit/store.js.map +1 -1
  614. package/dist/subsystems/quota/store.d.ts +9 -0
  615. package/dist/subsystems/quota/store.d.ts.map +1 -1
  616. package/dist/subsystems/quota/store.js +0 -8
  617. package/dist/subsystems/quota/store.js.map +1 -1
  618. package/dist/subsystems/script/backend/isolated-vm.js +1 -1
  619. package/dist/subsystems/script/backend/types.d.ts +2 -2
  620. package/dist/subsystems/script/backend/types.d.ts.map +1 -1
  621. package/dist/subsystems/script/bridge.d.ts +1 -1
  622. package/dist/subsystems/script/bridge.d.ts.map +1 -1
  623. package/dist/subsystems/script/bridge.js +6 -4
  624. package/dist/subsystems/script/bridge.js.map +1 -1
  625. package/dist/subsystems/script/dispatcher.d.ts.map +1 -1
  626. package/dist/subsystems/script/dispatcher.js +3 -1
  627. package/dist/subsystems/script/dispatcher.js.map +1 -1
  628. package/dist/subsystems/workflow/index.d.ts +4 -0
  629. package/dist/subsystems/workflow/index.d.ts.map +1 -0
  630. package/dist/subsystems/workflow/index.js +3 -0
  631. package/dist/subsystems/workflow/index.js.map +1 -0
  632. package/dist/subsystems/workflow/scheduler.d.ts +27 -0
  633. package/dist/subsystems/workflow/scheduler.d.ts.map +1 -0
  634. package/dist/subsystems/workflow/scheduler.js +109 -0
  635. package/dist/subsystems/workflow/scheduler.js.map +1 -0
  636. package/dist/subsystems/workflow/store.d.ts +10 -0
  637. package/dist/subsystems/workflow/store.d.ts.map +1 -0
  638. package/dist/subsystems/workflow/store.js +44 -0
  639. package/dist/subsystems/workflow/store.js.map +1 -0
  640. package/dist/version.d.ts +1 -1
  641. package/dist/version.js +1 -1
  642. package/package.json +7 -3
@@ -1,11 +1,64 @@
1
+ import { systemObjects } from '../object/index.js';
1
2
  import { FIELD_TYPES } from '../types/index.js';
2
3
  import { SchemaError, primaryKeyOf } from '../types/index.js';
3
4
  import { applyStatements } from './apply.js';
4
5
  import { buildExpectedTable, diffAll, diffRls, diffTable } from './diff.js';
5
6
  import { inspectSchema } from './inspect.js';
6
- import { ensureMetaTable, setMeta } from './meta.js';
7
+ import { buildLinkTables } from './link-table.js';
8
+ import { setMeta } from './meta.js';
7
9
  import { createPool } from './pool.js';
8
- const RLS_ROLE_RE = /^[a-z_][a-z0-9_]*$/;
10
+ import { buildRecordMetaTable } from './record-meta.js';
11
+ import { sqlIdent, sqlLiteral } from './sql-literals.js';
12
+ import { SYSTEM_TABLES, buildSystemTables, systemHardeningStatements } from './system-tables.js';
13
+ import { isSafeRlsRole } from '../rbac/index.js';
14
+ const q = (id) => `"${id}"`;
15
+ /**
16
+ * DDL to ensure the native enum types referenced by managed objects exist.
17
+ * `CREATE TYPE` when the type is missing; `ALTER TYPE … ADD VALUE IF NOT EXISTS`
18
+ * only for managed (created / `alter: true`) objects — never for adopted,
19
+ * read-only tables (the engine must not ALTER a customer's type).
20
+ */
21
+ async function buildEnumStatements(pool, defs, managed) {
22
+ const declared = new Map();
23
+ for (const def of defs.values()) {
24
+ if (!managed.has(def.name))
25
+ continue;
26
+ for (const field of def.fields) {
27
+ const e = field;
28
+ if (e.type !== FIELD_TYPES.ENUM || e.enumType === undefined || !Array.isArray(e.options))
29
+ continue;
30
+ const set = declared.get(e.enumType) ?? new Set();
31
+ for (const option of e.options)
32
+ set.add(String(option));
33
+ declared.set(e.enumType, set);
34
+ }
35
+ }
36
+ if (declared.size === 0)
37
+ return [];
38
+ const res = await pool.query(`SELECT t.typname AS name, e.enumlabel AS label
39
+ FROM pg_type t JOIN pg_enum e ON e.enumtypid = t.oid
40
+ WHERE t.typtype = 'e'`);
41
+ const existing = new Map();
42
+ for (const row of res.rows) {
43
+ const set = existing.get(row.name) ?? new Set();
44
+ set.add(row.label);
45
+ existing.set(row.name, set);
46
+ }
47
+ const statements = [];
48
+ for (const [name, options] of declared) {
49
+ const labels = existing.get(name);
50
+ if (labels === undefined) {
51
+ statements.push(`CREATE TYPE ${q(name)} AS ENUM (${[...options].map(sqlLiteral).join(', ')})`);
52
+ }
53
+ else {
54
+ for (const option of options) {
55
+ if (!labels.has(option))
56
+ statements.push(`ALTER TYPE ${q(name)} ADD VALUE IF NOT EXISTS ${sqlLiteral(option)}`);
57
+ }
58
+ }
59
+ }
60
+ return statements;
61
+ }
9
62
  /**
10
63
  * Best-effort provisioning of the restricted-SQL role: `CREATE ROLE` (needs
11
64
  * CREATEROLE; failure → warning + false) and `GRANT` membership for
@@ -16,7 +69,7 @@ async function provisionRlsRole(pool, role, warnings) {
16
69
  const existing = await pool.query('SELECT 1 FROM pg_roles WHERE rolname = $1', [role]);
17
70
  if (existing.rows.length === 0) {
18
71
  try {
19
- await pool.query(`CREATE ROLE ${role}`);
72
+ await pool.query(`CREATE ROLE ${sqlIdent(role)}`);
20
73
  }
21
74
  catch {
22
75
  warnings.push(`could not create role "${role}" (needs CREATEROLE) — create it manually to enable RLS`);
@@ -24,13 +77,30 @@ async function provisionRlsRole(pool, role, warnings) {
24
77
  }
25
78
  }
26
79
  try {
27
- await pool.query(`DO $$ BEGIN IF NOT pg_has_role(current_user, '${role}', 'MEMBER') THEN EXECUTE 'GRANT ${role} TO current_user'; END IF; END $$;`);
80
+ // no dynamic SQL: decide membership in JS, then GRANT with a quoted identifier
81
+ const res = await pool.query(`SELECT pg_has_role(current_user, $1, 'MEMBER') AS member`, [role]);
82
+ if (res.rows[0].member !== true) {
83
+ await pool.query(`GRANT ${sqlIdent(role)} TO current_user`);
84
+ }
28
85
  }
29
86
  catch (error) {
30
87
  warnings.push(`could not grant role "${role}" to current user: ${String(error.message)}`);
31
88
  }
32
89
  return true;
33
90
  }
91
+ /**
92
+ * True when `PUBLIC` still holds `TRUNCATE` on `table`, i.e. the append-only
93
+ * hardening `REVOKE` is worth emitting. New tables grant nothing to `PUBLIC`
94
+ * by default, so a clean run emits no hardening statement (keeps migrate
95
+ * idempotent).
96
+ */
97
+ async function publicHasTruncate(pool, table) {
98
+ const res = await pool.query(`SELECT EXISTS (
99
+ SELECT 1 FROM pg_class c, aclexplode(coalesce(c.relacl, acldefault('r', c.relowner))) a
100
+ WHERE c.oid = to_regclass($1) AND a.grantee = 0 AND a.privilege_type = 'TRUNCATE'
101
+ ) AS needs`, [table]);
102
+ return res.rows[0]?.needs === true;
103
+ }
34
104
  /**
35
105
  * State-diff migration: compare each engine-managed object's expected table
36
106
  * against the live `information_schema`, generate DDL, apply inside a
@@ -52,9 +122,9 @@ export async function migrate(registry, options = {}) {
52
122
  const warnings = [];
53
123
  const pool = createPool(url);
54
124
  try {
55
- const defs = new Map(registry.list().map((d) => [d.name, d]));
125
+ const defs = new Map([...systemObjects(), ...registry.list()].map((d) => [d.name, d]));
56
126
  const actual = await inspectSchema(pool);
57
- if (options.rls !== undefined && !RLS_ROLE_RE.test(options.rls.role)) {
127
+ if (options.rls !== undefined && !isSafeRlsRole(options.rls.role)) {
58
128
  throw new Error(`invalid RLS role name "${options.rls.role}"`);
59
129
  }
60
130
  // new objects (no live table by that name) are diffed and created; objects
@@ -64,6 +134,31 @@ export async function migrate(registry, options = {}) {
64
134
  .filter((d) => d.alter === true || actual.get(d.name) === undefined)
65
135
  .map((d) => buildExpectedTable(d, defs, registry.fieldTypes));
66
136
  const statements = diffAll(expected, actual);
137
+ // native enum types must exist before the tables that reference them
138
+ const enumStatements = await buildEnumStatements(pool, defs, new Set(expected.map((t) => t.name)));
139
+ // engine-owned per-object record metadata side tables: one per object (R1),
140
+ // created idempotently for every object regardless of `alter`/ownership —
141
+ // they never touch the customer's own table
142
+ const metaTables = [...defs.keys()].map((name) => buildRecordMetaTable(name));
143
+ const metaStatements = diffAll(metaTables, actual);
144
+ // engine-owned many-to-many link tables for every `multiRelation` field:
145
+ // one per (object, field), created idempotently regardless of `alter`.
146
+ const linkTables = buildLinkTables(defs, registry.fieldTypes);
147
+ const linkStatements = diffAll(linkTables, actual);
148
+ // engine-owned system tables (metadata cache / seq / audit / approvals /
149
+ // timers / counters) + their ACL hardening: provisioned here (and only
150
+ // here) so the runtime never runs DDL and can be least-privileged.
151
+ // one-time reshape of the legacy workflow timer table
152
+ // (id/state/workflow_version -> record_key/node_id): engine-owned and
153
+ // transient, so drop+recreate is safe (there are no users yet).
154
+ const legacyTimers = actual.get(SYSTEM_TABLES.WORKFLOW_TIMERS);
155
+ const dropLegacyTimers = legacyTimers !== undefined &&
156
+ legacyTimers.columns.some((c) => c.name === 'state') &&
157
+ !legacyTimers.columns.some((c) => c.name === 'record_key');
158
+ if (dropLegacyTimers)
159
+ actual.delete(SYSTEM_TABLES.WORKFLOW_TIMERS);
160
+ const systemStatements = diffAll(buildSystemTables(), actual);
161
+ const hardening = (await publicHasTruncate(pool, SYSTEM_TABLES.AUDIT)) ? systemHardeningStatements() : [];
67
162
  // existing tables are read-only unless the object opted in (`alter: true`):
68
163
  // verify every declared field is a live column (prevents REST/MCP pointing
69
164
  // at ghost columns). With `alter: true`, missing fields become ADD COLUMN
@@ -83,8 +178,9 @@ export async function migrate(registry, options = {}) {
83
178
  continue;
84
179
  for (const field of def.fields) {
85
180
  // details fields have no column on the parent (the child table carries
86
- // parent_id/parent_type/parent_idx) — never a ghost-column check
87
- if (field.type === FIELD_TYPES.DETAILS)
181
+ // parent_id/parent_type/parent_idx); multiRelation fields have no column
182
+ // either (a link table carries the pairs) — never ghost-column checks
183
+ if (field.type === FIELD_TYPES.DETAILS || field.type === FIELD_TYPES.MULTI_RELATION)
88
184
  continue;
89
185
  if (!cols.has(field.name)) {
90
186
  throw new SchemaError('object.field.columnMissing', { object: def.name, table: def.name, field: field.name });
@@ -103,7 +199,7 @@ export async function migrate(registry, options = {}) {
103
199
  if (roleReady) {
104
200
  const { rows } = await pool.query('SELECT current_user AS u');
105
201
  const currentUser = String(rows[0].u);
106
- for (const def of defs.values()) {
202
+ for (const def of registry.list()) {
107
203
  const actualTable = actual.get(def.name);
108
204
  const applies = actualTable === undefined || (def.alter === true && actualTable.owner === currentUser);
109
205
  if (!applies) {
@@ -114,20 +210,57 @@ export async function migrate(registry, options = {}) {
114
210
  }
115
211
  rlsStatements = rlsStatements.concat(diffRls(def, actualTable, options.rls.role));
116
212
  }
213
+ // link tables are engine plumbing (never registry-visible): enable
214
+ // RLS with no policy so the restricted role reads 0 rows even if it is
215
+ // ever granted, a second layer behind the sql-gate. The engine runs as
216
+ // the owner and bypasses RLS, so its own reads are unaffected.
217
+ for (const table of linkTables) {
218
+ if (actual.get(table.name)?.rlsEnabled !== true) {
219
+ rlsStatements.push(`ALTER TABLE ${q(table.name)} ENABLE ROW LEVEL SECURITY;`);
220
+ }
221
+ }
117
222
  }
118
223
  }
119
- const allStatements = [...statements, ...rlsStatements];
224
+ const allStatements = [
225
+ ...enumStatements,
226
+ ...(dropLegacyTimers ? [`DROP TABLE ${q(SYSTEM_TABLES.WORKFLOW_TIMERS)};`] : []),
227
+ ...statements,
228
+ ...metaStatements,
229
+ ...linkStatements,
230
+ ...systemStatements,
231
+ ...rlsStatements,
232
+ ...hardening,
233
+ ];
120
234
  if (!dryRun && allStatements.length > 0) {
121
- await ensureMetaTable(pool);
122
235
  await applyStatements(pool, allStatements);
123
236
  const ts = new Date().toISOString();
124
237
  for (const name of applied)
125
238
  await setMeta(pool, `schema.applied.${name}`, ts);
126
239
  }
240
+ // content-address every object's workflow definition (append-only, idempotent)
241
+ // so running instances can resolve the exact revision they were pinned to.
242
+ if (!dryRun)
243
+ await registerWorkflowDefinitions(pool, defs);
127
244
  return { statements: allStatements, applied, dryRun, warnings };
128
245
  }
129
246
  finally {
130
247
  await pool.end();
131
248
  }
132
249
  }
250
+ /**
251
+ * Upsert each object's current workflow definition into
252
+ * `weavekit_workflow_definitions` (keyed by content hash). Idempotent; the
253
+ * `version_seq` is a monotonic display/switch ordinal. Never rewrites or drops
254
+ * an existing row (append-only revision history for instance pinning).
255
+ */
256
+ async function registerWorkflowDefinitions(pool, defs) {
257
+ const table = q(SYSTEM_TABLES.WORKFLOW_DEFINITIONS);
258
+ for (const def of defs.values()) {
259
+ if (def.workflow === undefined || def.workflowHash === undefined)
260
+ continue;
261
+ await pool.query(`INSERT INTO ${table} (object, hash, version_seq, definition)
262
+ VALUES ($1, $2, (SELECT COALESCE(MAX(version_seq), 0) + 1 FROM ${table} WHERE object = $1), $3::jsonb)
263
+ ON CONFLICT (object, hash) DO NOTHING`, [def.name, def.workflowHash, JSON.stringify(def.workflow)]);
264
+ }
265
+ }
133
266
  //# sourceMappingURL=migrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/storage/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/core/storage/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { FieldDefinition, ObjectDefinition } from '../types/index.js';
2
+ import { type FieldTypeRegistry } from '../types/index.js';
3
+ /**
4
+ * SQL-side canonical text of a primary-key value, byte-for-byte equal to the JS
5
+ * `canonicalizePrimaryValue` (see the contract test). Temporal values are
6
+ * formatted with `to_char` (session-independent, microsecond precision) so a
7
+ * record_key computed in SQL equals one computed in JS — required for the
8
+ * record-metadata JOIN and any SQL-side key comparison.
9
+ *
10
+ * `ref` is the (already qualified) column reference, e.g. `t."created_at"`.
11
+ */
12
+ export declare function pkValueTextSql(field: FieldDefinition, ref: string, registry?: FieldTypeRegistry): string;
13
+ /**
14
+ * SQL expression producing a row's `record_key` from its primary columns:
15
+ * `concat( octet_length(v1) || ':' || v1, … )` — the length-prefixed encoding
16
+ * (`octet_length` is the UTF-8 byte length, matching `TextEncoder`).
17
+ */
18
+ export declare function recordKeySql(def: ObjectDefinition, ref: (fieldName: string) => string, registry?: FieldTypeRegistry): string;
19
+ //# sourceMappingURL=record-key-sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-key-sql.d.ts","sourceRoot":"","sources":["../../../src/core/storage/record-key-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,iBAA+C,GACxD,MAAM,CAkBR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAClC,QAAQ,GAAE,iBAA+C,GACxD,MAAM,CAMR"}
@@ -0,0 +1,43 @@
1
+ import { DEFAULT_FIELD_TYPE_REGISTRY, fieldBase, primaryFieldsOf, } from '../types/index.js';
2
+ import { FIELD_TYPES } from '../types/values.js';
3
+ /**
4
+ * SQL-side canonical text of a primary-key value, byte-for-byte equal to the JS
5
+ * `canonicalizePrimaryValue` (see the contract test). Temporal values are
6
+ * formatted with `to_char` (session-independent, microsecond precision) so a
7
+ * record_key computed in SQL equals one computed in JS — required for the
8
+ * record-metadata JOIN and any SQL-side key comparison.
9
+ *
10
+ * `ref` is the (already qualified) column reference, e.g. `t."created_at"`.
11
+ */
12
+ export function pkValueTextSql(field, ref, registry = DEFAULT_FIELD_TYPE_REGISTRY) {
13
+ const base = fieldBase(registry, field.type);
14
+ switch (base) {
15
+ case FIELD_TYPES.UUID:
16
+ return `lower(${ref}::text)`;
17
+ case FIELD_TYPES.DATE:
18
+ return `to_char(${ref}, 'YYYY-MM-DD')`;
19
+ case FIELD_TYPES.TIME:
20
+ return `to_char(${ref}, 'HH24:MI:SS.US')`;
21
+ case FIELD_TYPES.TIMETZ:
22
+ return `to_char(${ref}, 'HH24:MI:SS.USOF')`;
23
+ case FIELD_TYPES.TIMESTAMP:
24
+ return `to_char(${ref}, 'YYYY-MM-DD"T"HH24:MI:SS.US')`;
25
+ case FIELD_TYPES.TIMESTAMPTZ:
26
+ return `(to_char(${ref} AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US') || 'Z')`;
27
+ default:
28
+ return `${ref}::text`;
29
+ }
30
+ }
31
+ /**
32
+ * SQL expression producing a row's `record_key` from its primary columns:
33
+ * `concat( octet_length(v1) || ':' || v1, … )` — the length-prefixed encoding
34
+ * (`octet_length` is the UTF-8 byte length, matching `TextEncoder`).
35
+ */
36
+ export function recordKeySql(def, ref, registry = DEFAULT_FIELD_TYPE_REGISTRY) {
37
+ const parts = primaryFieldsOf(def).map((field) => {
38
+ const expr = pkValueTextSql(field, ref(field.name), registry);
39
+ return `(octet_length(${expr})::text || ':' || ${expr})`;
40
+ });
41
+ return `concat(${parts.join(', ')})`;
42
+ }
43
+ //# sourceMappingURL=record-key-sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-key-sql.js","sourceRoot":"","sources":["../../../src/core/storage/record-key-sql.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,SAAS,EACT,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAsB,EACtB,GAAW,EACX,WAA8B,2BAA2B;IAEzD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,IAAI;YACnB,OAAO,SAAS,GAAG,SAAS,CAAC;QAC/B,KAAK,WAAW,CAAC,IAAI;YACnB,OAAO,WAAW,GAAG,iBAAiB,CAAC;QACzC,KAAK,WAAW,CAAC,IAAI;YACnB,OAAO,WAAW,GAAG,oBAAoB,CAAC;QAC5C,KAAK,WAAW,CAAC,MAAM;YACrB,OAAO,WAAW,GAAG,sBAAsB,CAAC;QAC9C,KAAK,WAAW,CAAC,SAAS;YACxB,OAAO,WAAW,GAAG,iCAAiC,CAAC;QACzD,KAAK,WAAW,CAAC,WAAW;YAC1B,OAAO,YAAY,GAAG,4DAA4D,CAAC;QACrF;YACE,OAAO,GAAG,GAAG,QAAQ,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAqB,EACrB,GAAkC,EAClC,WAA8B,2BAA2B;IAEzD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9D,OAAO,iBAAiB,IAAI,qBAAqB,IAAI,GAAG,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { ExpectedTable } from './diff.js';
2
+ /**
3
+ * Engine-owned per-object record metadata ("side table").
4
+ *
5
+ * The iron rule is that the engine never touches a customer table. System
6
+ * metadata (status / ownership / timestamps / workflow binding) therefore lives
7
+ * in an engine-owned table named `weavekit_record__<object>`, keyed by the
8
+ * `record_key` encoding of the record's (possibly composite) primary key
9
+ * (see `core/object/record-key.ts`).
10
+ *
11
+ * One table exists per object (R1: every object, no opt-in) and rows are
12
+ * **sparse** — a record with no engine metadata has no row, so a table only
13
+ * holds entries that actually carry system state.
14
+ */
15
+ export declare const RECORD_META_TABLE_PREFIX = "weavekit_record__";
16
+ /** column names of a record metadata side table (single source) */
17
+ export declare const RECORD_META_COLUMNS: {
18
+ readonly RECORD_KEY: "record_key";
19
+ readonly STATUS: "status";
20
+ readonly OWNER_ID: "owner_id";
21
+ readonly CREATED_BY: "created_by";
22
+ readonly MODIFIED_BY: "modified_by";
23
+ readonly CREATED_TIME: "created_time";
24
+ readonly MODIFIED_TIME: "modified_time";
25
+ readonly WORKFLOW_INSTANCE_ID: "workflow_instance_id";
26
+ };
27
+ /** default `status` for a record with a metadata row */
28
+ export declare const RECORD_META_DEFAULT_STATUS: "draft";
29
+ /** reserved prefix for record-metadata virtual fields exposed on reads */
30
+ export declare const RECORD_META_VIRTUAL_PREFIX = "weave_";
31
+ /**
32
+ * the identity virtual field: every record's external id — its `record_key`.
33
+ * Derived from the customer primary key (never a stored column), so clients and
34
+ * agents can round-trip a row back into `REST /:id` / MCP `id`.
35
+ */
36
+ export declare const RECORD_META_ID_FIELD = "weave_id";
37
+ /** one virtual system field exposed on reads / `describe` (type semantics only) */
38
+ export interface RecordMetaVirtualFieldSpec {
39
+ name: string;
40
+ type: string;
41
+ options?: readonly string[];
42
+ multiple?: boolean;
43
+ }
44
+ /**
45
+ * Virtual system fields exposed on reads and in `describe`, in stable order
46
+ * (`weave_id` first). `weave_id` is computed from the customer primary key;
47
+ * the rest live in the side table. Names are reserved so they never collide
48
+ * with a customer's business fields.
49
+ */
50
+ export declare const RECORD_META_VIRTUAL_FIELD_SPECS: readonly RecordMetaVirtualFieldSpec[];
51
+ /** virtual system field names (derived from the specs — single source) */
52
+ export declare const RECORD_META_VIRTUAL_FIELDS: readonly string[];
53
+ /** true when a requested field name is a record-metadata virtual field */
54
+ export declare function isRecordMetaVirtualField(name: string): boolean;
55
+ /** true when a virtual field is backed by the side table (all but the derived `weave_id`) */
56
+ export declare function isSideTableVirtualField(name: string): boolean;
57
+ /** side-table name for an object */
58
+ export declare function recordMetaTableName(object: string): string;
59
+ /** true when a live table name is an engine record-metadata side table */
60
+ export declare function isRecordMetaTable(name: string): boolean;
61
+ /**
62
+ * The expected (DDL) shape of an object's record metadata side table. `owner_id`
63
+ * / `created_by` / `modified_by` are intentionally FK-less here: the identity
64
+ * tables (`weavekit_user`) land with the identity subsystem, and orphan cleanup
65
+ * is handled at the data-access layer, not by a hard FK.
66
+ */
67
+ export declare function buildRecordMetaTable(object: string): ExpectedTable;
68
+ //# sourceMappingURL=record-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-meta.d.ts","sourceRoot":"","sources":["../../../src/core/storage/record-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,SAAqB,CAAC;AAE7D,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B,WAAW,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,aAAoC,CAAC;AAEtE,mFAAmF;AACnF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAAS,0BAA0B,EAShF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAAuD,CAAC;AAEhH,0EAA0E;AAC1E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,oCAAoC;AACpC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA8BlE"}
@@ -0,0 +1,108 @@
1
+ import { FIELD_TYPES, WEAVE_STATUS } from '../types/index.js';
2
+ /**
3
+ * Engine-owned per-object record metadata ("side table").
4
+ *
5
+ * The iron rule is that the engine never touches a customer table. System
6
+ * metadata (status / ownership / timestamps / workflow binding) therefore lives
7
+ * in an engine-owned table named `weavekit_record__<object>`, keyed by the
8
+ * `record_key` encoding of the record's (possibly composite) primary key
9
+ * (see `core/object/record-key.ts`).
10
+ *
11
+ * One table exists per object (R1: every object, no opt-in) and rows are
12
+ * **sparse** — a record with no engine metadata has no row, so a table only
13
+ * holds entries that actually carry system state.
14
+ */
15
+ export const RECORD_META_TABLE_PREFIX = 'weavekit_record__';
16
+ /** column names of a record metadata side table (single source) */
17
+ export const RECORD_META_COLUMNS = {
18
+ RECORD_KEY: 'record_key',
19
+ STATUS: 'status',
20
+ OWNER_ID: 'owner_id',
21
+ CREATED_BY: 'created_by',
22
+ MODIFIED_BY: 'modified_by',
23
+ CREATED_TIME: 'created_time',
24
+ MODIFIED_TIME: 'modified_time',
25
+ WORKFLOW_INSTANCE_ID: 'workflow_instance_id',
26
+ };
27
+ /** default `status` for a record with a metadata row */
28
+ export const RECORD_META_DEFAULT_STATUS = WEAVE_STATUS.DRAFT;
29
+ /** reserved prefix for record-metadata virtual fields exposed on reads */
30
+ export const RECORD_META_VIRTUAL_PREFIX = 'weave_';
31
+ /**
32
+ * the identity virtual field: every record's external id — its `record_key`.
33
+ * Derived from the customer primary key (never a stored column), so clients and
34
+ * agents can round-trip a row back into `REST /:id` / MCP `id`.
35
+ */
36
+ export const RECORD_META_ID_FIELD = `${RECORD_META_VIRTUAL_PREFIX}id`;
37
+ /**
38
+ * Virtual system fields exposed on reads and in `describe`, in stable order
39
+ * (`weave_id` first). `weave_id` is computed from the customer primary key;
40
+ * the rest live in the side table. Names are reserved so they never collide
41
+ * with a customer's business fields.
42
+ */
43
+ export const RECORD_META_VIRTUAL_FIELD_SPECS = [
44
+ { name: RECORD_META_ID_FIELD, type: FIELD_TYPES.STRING },
45
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.STATUS}`, type: FIELD_TYPES.ENUM, options: Object.values(WEAVE_STATUS) },
46
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.OWNER_ID}`, type: FIELD_TYPES.STRING },
47
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.CREATED_BY}`, type: FIELD_TYPES.STRING },
48
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.MODIFIED_BY}`, type: FIELD_TYPES.STRING },
49
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.CREATED_TIME}`, type: FIELD_TYPES.TIMESTAMPTZ },
50
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.MODIFIED_TIME}`, type: FIELD_TYPES.TIMESTAMPTZ },
51
+ { name: `${RECORD_META_VIRTUAL_PREFIX}${RECORD_META_COLUMNS.WORKFLOW_INSTANCE_ID}`, type: FIELD_TYPES.STRING },
52
+ ];
53
+ /** virtual system field names (derived from the specs — single source) */
54
+ export const RECORD_META_VIRTUAL_FIELDS = RECORD_META_VIRTUAL_FIELD_SPECS.map((s) => s.name);
55
+ /** true when a requested field name is a record-metadata virtual field */
56
+ export function isRecordMetaVirtualField(name) {
57
+ return RECORD_META_VIRTUAL_FIELDS.includes(name);
58
+ }
59
+ /** true when a virtual field is backed by the side table (all but the derived `weave_id`) */
60
+ export function isSideTableVirtualField(name) {
61
+ return isRecordMetaVirtualField(name) && name !== RECORD_META_ID_FIELD;
62
+ }
63
+ /** side-table name for an object */
64
+ export function recordMetaTableName(object) {
65
+ return `${RECORD_META_TABLE_PREFIX}${object}`;
66
+ }
67
+ /** true when a live table name is an engine record-metadata side table */
68
+ export function isRecordMetaTable(name) {
69
+ return name.startsWith(RECORD_META_TABLE_PREFIX);
70
+ }
71
+ /**
72
+ * The expected (DDL) shape of an object's record metadata side table. `owner_id`
73
+ * / `created_by` / `modified_by` are intentionally FK-less here: the identity
74
+ * tables (`weavekit_user`) land with the identity subsystem, and orphan cleanup
75
+ * is handled at the data-access layer, not by a hard FK.
76
+ */
77
+ export function buildRecordMetaTable(object) {
78
+ const name = recordMetaTableName(object);
79
+ const text = { type: 'TEXT', notNull: false, primary: false, unique: false };
80
+ const ts = { type: 'TIMESTAMPTZ', notNull: false, primary: false, unique: false };
81
+ return {
82
+ name,
83
+ columns: [
84
+ { name: RECORD_META_COLUMNS.RECORD_KEY, type: 'TEXT', notNull: true, primary: true, unique: false },
85
+ {
86
+ name: RECORD_META_COLUMNS.STATUS,
87
+ type: 'TEXT',
88
+ notNull: true,
89
+ default: `'${RECORD_META_DEFAULT_STATUS}'`,
90
+ primary: false,
91
+ unique: false,
92
+ },
93
+ { name: RECORD_META_COLUMNS.OWNER_ID, ...text },
94
+ { name: RECORD_META_COLUMNS.CREATED_BY, ...text },
95
+ { name: RECORD_META_COLUMNS.MODIFIED_BY, ...text },
96
+ { name: RECORD_META_COLUMNS.CREATED_TIME, ...ts },
97
+ { name: RECORD_META_COLUMNS.MODIFIED_TIME, ...ts },
98
+ { name: RECORD_META_COLUMNS.WORKFLOW_INSTANCE_ID, type: 'TEXT', notNull: false, primary: false, unique: false },
99
+ ],
100
+ fks: [],
101
+ indexes: [
102
+ { name: `${name}_status_idx`, method: 'btree', columns: [RECORD_META_COLUMNS.STATUS] },
103
+ { name: `${name}_owner_idx`, method: 'btree', columns: [RECORD_META_COLUMNS.OWNER_ID] },
104
+ ],
105
+ uniques: [],
106
+ };
107
+ }
108
+ //# sourceMappingURL=record-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-meta.js","sourceRoot":"","sources":["../../../src/core/storage/record-meta.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,13 @@ export interface MappingFk {
62
62
  /** the FK constraint exists on the live table */
63
63
  present: boolean;
64
64
  }
65
+ /** a declared table-level UNIQUE constraint (composite/scoped) */
66
+ export interface MappingConstraint {
67
+ name: string;
68
+ columns: string[];
69
+ /** the backing unique index/constraint exists on the live table */
70
+ present: boolean;
71
+ }
65
72
  export interface MappingRls {
66
73
  enabled: boolean;
67
74
  owner: string;
@@ -77,6 +84,8 @@ export interface MappingTable {
77
84
  columns: MappingColumn[];
78
85
  indexes: MappingIndex[];
79
86
  fks: MappingFk[];
87
+ /** declared table-level UNIQUE constraints (composite/scoped) */
88
+ constraints: MappingConstraint[];
80
89
  /** `details` edges declared on the object (no column on the parent table) */
81
90
  details: Array<{
82
91
  field: string;
@@ -99,6 +108,7 @@ export interface MappingTotals {
99
108
  columnsExtra: number;
100
109
  indexDrift: number;
101
110
  fkDrift: number;
111
+ constraintDrift: number;
102
112
  }
103
113
  export interface MappingReport {
104
114
  tables: MappingTable[];
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/core/storage/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAErG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,cAAc,CAAC;AAG9D;;;;;;;GAOG;AAEH,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,mFAAmF;IACnF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,6EAA6E;IAC7E,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,sEAAsE;IACtE,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qEAAqE;IACrE,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;CACvB;AAqCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EACxC,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,GAAE,iBAA+C,GACxD,aAAa,CAwJf"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/core/storage/report.ts"],"names":[],"mappings":"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"}