@weave-kit/engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (851) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/dist/adapters/auth/index.d.ts +14 -0
  4. package/dist/adapters/auth/index.d.ts.map +1 -0
  5. package/dist/adapters/auth/index.js +21 -0
  6. package/dist/adapters/auth/index.js.map +1 -0
  7. package/dist/adapters/auth/source.d.ts +24 -0
  8. package/dist/adapters/auth/source.d.ts.map +1 -0
  9. package/dist/adapters/auth/source.js +19 -0
  10. package/dist/adapters/auth/source.js.map +1 -0
  11. package/dist/adapters/events/index.d.ts +41 -0
  12. package/dist/adapters/events/index.d.ts.map +1 -0
  13. package/dist/adapters/events/index.js +70 -0
  14. package/dist/adapters/events/index.js.map +1 -0
  15. package/dist/adapters/events/stream.d.ts +29 -0
  16. package/dist/adapters/events/stream.d.ts.map +1 -0
  17. package/dist/adapters/events/stream.js +67 -0
  18. package/dist/adapters/events/stream.js.map +1 -0
  19. package/dist/adapters/mcp/generate.d.ts +21 -0
  20. package/dist/adapters/mcp/generate.d.ts.map +1 -0
  21. package/dist/adapters/mcp/generate.js +287 -0
  22. package/dist/adapters/mcp/generate.js.map +1 -0
  23. package/dist/adapters/mcp/guardrails.d.ts +39 -0
  24. package/dist/adapters/mcp/guardrails.d.ts.map +1 -0
  25. package/dist/adapters/mcp/guardrails.js +45 -0
  26. package/dist/adapters/mcp/guardrails.js.map +1 -0
  27. package/dist/adapters/mcp/http.d.ts +32 -0
  28. package/dist/adapters/mcp/http.d.ts.map +1 -0
  29. package/dist/adapters/mcp/http.js +206 -0
  30. package/dist/adapters/mcp/http.js.map +1 -0
  31. package/dist/adapters/mcp/index.d.ts +78 -0
  32. package/dist/adapters/mcp/index.d.ts.map +1 -0
  33. package/dist/adapters/mcp/index.js +46 -0
  34. package/dist/adapters/mcp/index.js.map +1 -0
  35. package/dist/adapters/mcp/introspection.d.ts +4 -0
  36. package/dist/adapters/mcp/introspection.d.ts.map +1 -0
  37. package/dist/adapters/mcp/introspection.js +20 -0
  38. package/dist/adapters/mcp/introspection.js.map +1 -0
  39. package/dist/adapters/mcp/session.d.ts +46 -0
  40. package/dist/adapters/mcp/session.d.ts.map +1 -0
  41. package/dist/adapters/mcp/session.js +43 -0
  42. package/dist/adapters/mcp/session.js.map +1 -0
  43. package/dist/adapters/mcp/tools.d.ts +8 -0
  44. package/dist/adapters/mcp/tools.d.ts.map +1 -0
  45. package/dist/adapters/mcp/tools.js +149 -0
  46. package/dist/adapters/mcp/tools.js.map +1 -0
  47. package/dist/adapters/mcp/types.d.ts +46 -0
  48. package/dist/adapters/mcp/types.d.ts.map +1 -0
  49. package/dist/adapters/mcp/types.js +3 -0
  50. package/dist/adapters/mcp/types.js.map +1 -0
  51. package/dist/adapters/ops/index.d.ts +20 -0
  52. package/dist/adapters/ops/index.d.ts.map +1 -0
  53. package/dist/adapters/ops/index.js +20 -0
  54. package/dist/adapters/ops/index.js.map +1 -0
  55. package/dist/adapters/rest/approvals.d.ts +15 -0
  56. package/dist/adapters/rest/approvals.d.ts.map +1 -0
  57. package/dist/adapters/rest/approvals.js +83 -0
  58. package/dist/adapters/rest/approvals.js.map +1 -0
  59. package/dist/adapters/rest/audit.d.ts +15 -0
  60. package/dist/adapters/rest/audit.d.ts.map +1 -0
  61. package/dist/adapters/rest/audit.js +81 -0
  62. package/dist/adapters/rest/audit.js.map +1 -0
  63. package/dist/adapters/rest/common.d.ts +30 -0
  64. package/dist/adapters/rest/common.d.ts.map +1 -0
  65. package/dist/adapters/rest/common.js +62 -0
  66. package/dist/adapters/rest/common.js.map +1 -0
  67. package/dist/adapters/rest/errorHandler.d.ts +9 -0
  68. package/dist/adapters/rest/errorHandler.d.ts.map +1 -0
  69. package/dist/adapters/rest/errorHandler.js +18 -0
  70. package/dist/adapters/rest/errorHandler.js.map +1 -0
  71. package/dist/adapters/rest/guardrails.d.ts +22 -0
  72. package/dist/adapters/rest/guardrails.d.ts.map +1 -0
  73. package/dist/adapters/rest/guardrails.js +77 -0
  74. package/dist/adapters/rest/guardrails.js.map +1 -0
  75. package/dist/adapters/rest/identities.d.ts +20 -0
  76. package/dist/adapters/rest/identities.d.ts.map +1 -0
  77. package/dist/adapters/rest/identities.js +27 -0
  78. package/dist/adapters/rest/identities.js.map +1 -0
  79. package/dist/adapters/rest/index.d.ts +17 -0
  80. package/dist/adapters/rest/index.d.ts.map +1 -0
  81. package/dist/adapters/rest/index.js +14 -0
  82. package/dist/adapters/rest/index.js.map +1 -0
  83. package/dist/adapters/rest/ingress.d.ts +13 -0
  84. package/dist/adapters/rest/ingress.d.ts.map +1 -0
  85. package/dist/adapters/rest/ingress.js +49 -0
  86. package/dist/adapters/rest/ingress.js.map +1 -0
  87. package/dist/adapters/rest/metadata.d.ts +11 -0
  88. package/dist/adapters/rest/metadata.d.ts.map +1 -0
  89. package/dist/adapters/rest/metadata.js +32 -0
  90. package/dist/adapters/rest/metadata.js.map +1 -0
  91. package/dist/adapters/rest/pages.d.ts +15 -0
  92. package/dist/adapters/rest/pages.d.ts.map +1 -0
  93. package/dist/adapters/rest/pages.js +241 -0
  94. package/dist/adapters/rest/pages.js.map +1 -0
  95. package/dist/adapters/rest/permissions.d.ts +11 -0
  96. package/dist/adapters/rest/permissions.d.ts.map +1 -0
  97. package/dist/adapters/rest/permissions.js +20 -0
  98. package/dist/adapters/rest/permissions.js.map +1 -0
  99. package/dist/adapters/rest/plugin.d.ts +42 -0
  100. package/dist/adapters/rest/plugin.d.ts.map +1 -0
  101. package/dist/adapters/rest/plugin.js +199 -0
  102. package/dist/adapters/rest/plugin.js.map +1 -0
  103. package/dist/adapters/rest/proxy.d.ts +27 -0
  104. package/dist/adapters/rest/proxy.d.ts.map +1 -0
  105. package/dist/adapters/rest/proxy.js +149 -0
  106. package/dist/adapters/rest/proxy.js.map +1 -0
  107. package/dist/adapters/rest/schemas.d.ts +15 -0
  108. package/dist/adapters/rest/schemas.d.ts.map +1 -0
  109. package/dist/adapters/rest/schemas.js +59 -0
  110. package/dist/adapters/rest/schemas.js.map +1 -0
  111. package/dist/adapters/rest/scripts.d.ts +14 -0
  112. package/dist/adapters/rest/scripts.d.ts.map +1 -0
  113. package/dist/adapters/rest/scripts.js +65 -0
  114. package/dist/adapters/rest/scripts.js.map +1 -0
  115. package/dist/cli/commands/build.d.ts +4 -0
  116. package/dist/cli/commands/build.d.ts.map +1 -0
  117. package/dist/cli/commands/build.js +56 -0
  118. package/dist/cli/commands/build.js.map +1 -0
  119. package/dist/cli/commands/connect.d.ts +22 -0
  120. package/dist/cli/commands/connect.d.ts.map +1 -0
  121. package/dist/cli/commands/connect.js +37 -0
  122. package/dist/cli/commands/connect.js.map +1 -0
  123. package/dist/cli/commands/default-view.d.ts +41 -0
  124. package/dist/cli/commands/default-view.d.ts.map +1 -0
  125. package/dist/cli/commands/default-view.js +114 -0
  126. package/dist/cli/commands/default-view.js.map +1 -0
  127. package/dist/cli/commands/dev.d.ts +4 -0
  128. package/dist/cli/commands/dev.d.ts.map +1 -0
  129. package/dist/cli/commands/dev.js +251 -0
  130. package/dist/cli/commands/dev.js.map +1 -0
  131. package/dist/cli/commands/field-add.d.ts +8 -0
  132. package/dist/cli/commands/field-add.d.ts.map +1 -0
  133. package/dist/cli/commands/field-add.js +117 -0
  134. package/dist/cli/commands/field-add.js.map +1 -0
  135. package/dist/cli/commands/introspect.d.ts +8 -0
  136. package/dist/cli/commands/introspect.d.ts.map +1 -0
  137. package/dist/cli/commands/introspect.js +102 -0
  138. package/dist/cli/commands/introspect.js.map +1 -0
  139. package/dist/cli/commands/mcp-config.d.ts +9 -0
  140. package/dist/cli/commands/mcp-config.d.ts.map +1 -0
  141. package/dist/cli/commands/mcp-config.js +45 -0
  142. package/dist/cli/commands/mcp-config.js.map +1 -0
  143. package/dist/cli/commands/migrate.d.ts +4 -0
  144. package/dist/cli/commands/migrate.d.ts.map +1 -0
  145. package/dist/cli/commands/migrate.js +75 -0
  146. package/dist/cli/commands/migrate.js.map +1 -0
  147. package/dist/cli/commands/module.d.ts +12 -0
  148. package/dist/cli/commands/module.d.ts.map +1 -0
  149. package/dist/cli/commands/module.js +93 -0
  150. package/dist/cli/commands/module.js.map +1 -0
  151. package/dist/cli/commands/object-create.d.ts +11 -0
  152. package/dist/cli/commands/object-create.d.ts.map +1 -0
  153. package/dist/cli/commands/object-create.js +214 -0
  154. package/dist/cli/commands/object-create.js.map +1 -0
  155. package/dist/cli/commands/pages-migrate.d.ts +13 -0
  156. package/dist/cli/commands/pages-migrate.d.ts.map +1 -0
  157. package/dist/cli/commands/pages-migrate.js +132 -0
  158. package/dist/cli/commands/pages-migrate.js.map +1 -0
  159. package/dist/cli/commands/schema-map.d.ts +8 -0
  160. package/dist/cli/commands/schema-map.d.ts.map +1 -0
  161. package/dist/cli/commands/schema-map.js +133 -0
  162. package/dist/cli/commands/schema-map.js.map +1 -0
  163. package/dist/cli/commands/schema-upgrade.d.ts +10 -0
  164. package/dist/cli/commands/schema-upgrade.d.ts.map +1 -0
  165. package/dist/cli/commands/schema-upgrade.js +101 -0
  166. package/dist/cli/commands/schema-upgrade.js.map +1 -0
  167. package/dist/cli/commands/test.d.ts +4 -0
  168. package/dist/cli/commands/test.d.ts.map +1 -0
  169. package/dist/cli/commands/test.js +17 -0
  170. package/dist/cli/commands/test.js.map +1 -0
  171. package/dist/cli/commands/types.d.ts +4 -0
  172. package/dist/cli/commands/types.d.ts.map +1 -0
  173. package/dist/cli/commands/types.js +21 -0
  174. package/dist/cli/commands/types.js.map +1 -0
  175. package/dist/cli/env.d.ts +8 -0
  176. package/dist/cli/env.d.ts.map +1 -0
  177. package/dist/cli/env.js +31 -0
  178. package/dist/cli/env.js.map +1 -0
  179. package/dist/cli/exec.d.ts +8 -0
  180. package/dist/cli/exec.d.ts.map +1 -0
  181. package/dist/cli/exec.js +14 -0
  182. package/dist/cli/exec.js.map +1 -0
  183. package/dist/cli/facts.d.ts +7 -0
  184. package/dist/cli/facts.d.ts.map +1 -0
  185. package/dist/cli/facts.js +12 -0
  186. package/dist/cli/facts.js.map +1 -0
  187. package/dist/cli/index.d.ts +3 -0
  188. package/dist/cli/index.d.ts.map +1 -0
  189. package/dist/cli/index.js +198 -0
  190. package/dist/cli/index.js.map +1 -0
  191. package/dist/cli/load-config.d.ts +12 -0
  192. package/dist/cli/load-config.d.ts.map +1 -0
  193. package/dist/cli/load-config.js +40 -0
  194. package/dist/cli/load-config.js.map +1 -0
  195. package/dist/cli/mcp-config-snippets.d.ts +33 -0
  196. package/dist/cli/mcp-config-snippets.d.ts.map +1 -0
  197. package/dist/cli/mcp-config-snippets.js +54 -0
  198. package/dist/cli/mcp-config-snippets.js.map +1 -0
  199. package/dist/cli/ready-screen.d.ts +47 -0
  200. package/dist/cli/ready-screen.d.ts.map +1 -0
  201. package/dist/cli/ready-screen.js +71 -0
  202. package/dist/cli/ready-screen.js.map +1 -0
  203. package/dist/cli/render.d.ts +27 -0
  204. package/dist/cli/render.d.ts.map +1 -0
  205. package/dist/cli/render.js +54 -0
  206. package/dist/cli/render.js.map +1 -0
  207. package/dist/cli/scaffold.d.ts +20 -0
  208. package/dist/cli/scaffold.d.ts.map +1 -0
  209. package/dist/cli/scaffold.js +204 -0
  210. package/dist/cli/scaffold.js.map +1 -0
  211. package/dist/cli/types/commands.d.ts +102 -0
  212. package/dist/cli/types/commands.d.ts.map +1 -0
  213. package/dist/cli/types/commands.js +2 -0
  214. package/dist/cli/types/commands.js.map +1 -0
  215. package/dist/cli/types/index.d.ts +4 -0
  216. package/dist/cli/types/index.d.ts.map +1 -0
  217. package/dist/cli/types/index.js +2 -0
  218. package/dist/cli/types/index.js.map +1 -0
  219. package/dist/cli/types/values.d.ts +33 -0
  220. package/dist/cli/types/values.d.ts.map +1 -0
  221. package/dist/cli/types/values.js +31 -0
  222. package/dist/cli/types/values.js.map +1 -0
  223. package/dist/core/api/error.d.ts +10 -0
  224. package/dist/core/api/error.d.ts.map +1 -0
  225. package/dist/core/api/error.js +74 -0
  226. package/dist/core/api/error.js.map +1 -0
  227. package/dist/core/api/index.d.ts +4 -0
  228. package/dist/core/api/index.d.ts.map +1 -0
  229. package/dist/core/api/index.js +3 -0
  230. package/dist/core/api/index.js.map +1 -0
  231. package/dist/core/api/params.d.ts +10 -0
  232. package/dist/core/api/params.d.ts.map +1 -0
  233. package/dist/core/api/params.js +84 -0
  234. package/dist/core/api/params.js.map +1 -0
  235. package/dist/core/api/types.d.ts +40 -0
  236. package/dist/core/api/types.d.ts.map +1 -0
  237. package/dist/core/api/types.js +7 -0
  238. package/dist/core/api/types.js.map +1 -0
  239. package/dist/core/audit/index.d.ts +3 -0
  240. package/dist/core/audit/index.d.ts.map +1 -0
  241. package/dist/core/audit/index.js +2 -0
  242. package/dist/core/audit/index.js.map +1 -0
  243. package/dist/core/audit/types.d.ts +109 -0
  244. package/dist/core/audit/types.d.ts.map +1 -0
  245. package/dist/core/audit/types.js +39 -0
  246. package/dist/core/audit/types.js.map +1 -0
  247. package/dist/core/formula/ast.d.ts +54 -0
  248. package/dist/core/formula/ast.d.ts.map +1 -0
  249. package/dist/core/formula/ast.js +2 -0
  250. package/dist/core/formula/ast.js.map +1 -0
  251. package/dist/core/formula/errors.d.ts +12 -0
  252. package/dist/core/formula/errors.d.ts.map +1 -0
  253. package/dist/core/formula/errors.js +21 -0
  254. package/dist/core/formula/errors.js.map +1 -0
  255. package/dist/core/formula/evaluate.d.ts +21 -0
  256. package/dist/core/formula/evaluate.d.ts.map +1 -0
  257. package/dist/core/formula/evaluate.js +160 -0
  258. package/dist/core/formula/evaluate.js.map +1 -0
  259. package/dist/core/formula/index.d.ts +12 -0
  260. package/dist/core/formula/index.d.ts.map +1 -0
  261. package/dist/core/formula/index.js +7 -0
  262. package/dist/core/formula/index.js.map +1 -0
  263. package/dist/core/formula/lexer.d.ts +10 -0
  264. package/dist/core/formula/lexer.d.ts.map +1 -0
  265. package/dist/core/formula/lexer.js +97 -0
  266. package/dist/core/formula/lexer.js.map +1 -0
  267. package/dist/core/formula/parser.d.ts +24 -0
  268. package/dist/core/formula/parser.d.ts.map +1 -0
  269. package/dist/core/formula/parser.js +205 -0
  270. package/dist/core/formula/parser.js.map +1 -0
  271. package/dist/core/formula/validate.d.ts +29 -0
  272. package/dist/core/formula/validate.d.ts.map +1 -0
  273. package/dist/core/formula/validate.js +250 -0
  274. package/dist/core/formula/validate.js.map +1 -0
  275. package/dist/core/formula/values.d.ts +103 -0
  276. package/dist/core/formula/values.d.ts.map +1 -0
  277. package/dist/core/formula/values.js +94 -0
  278. package/dist/core/formula/values.js.map +1 -0
  279. package/dist/core/i18n/ar.d.ts +4 -0
  280. package/dist/core/i18n/ar.d.ts.map +1 -0
  281. package/dist/core/i18n/ar.js +194 -0
  282. package/dist/core/i18n/ar.js.map +1 -0
  283. package/dist/core/i18n/de.d.ts +4 -0
  284. package/dist/core/i18n/de.d.ts.map +1 -0
  285. package/dist/core/i18n/de.js +194 -0
  286. package/dist/core/i18n/de.js.map +1 -0
  287. package/dist/core/i18n/en.d.ts +194 -0
  288. package/dist/core/i18n/en.d.ts.map +1 -0
  289. package/dist/core/i18n/en.js +193 -0
  290. package/dist/core/i18n/en.js.map +1 -0
  291. package/dist/core/i18n/es.d.ts +4 -0
  292. package/dist/core/i18n/es.d.ts.map +1 -0
  293. package/dist/core/i18n/es.js +194 -0
  294. package/dist/core/i18n/es.js.map +1 -0
  295. package/dist/core/i18n/fr.d.ts +4 -0
  296. package/dist/core/i18n/fr.d.ts.map +1 -0
  297. package/dist/core/i18n/fr.js +194 -0
  298. package/dist/core/i18n/fr.js.map +1 -0
  299. package/dist/core/i18n/hi.d.ts +4 -0
  300. package/dist/core/i18n/hi.d.ts.map +1 -0
  301. package/dist/core/i18n/hi.js +194 -0
  302. package/dist/core/i18n/hi.js.map +1 -0
  303. package/dist/core/i18n/id.d.ts +4 -0
  304. package/dist/core/i18n/id.d.ts.map +1 -0
  305. package/dist/core/i18n/id.js +194 -0
  306. package/dist/core/i18n/id.js.map +1 -0
  307. package/dist/core/i18n/index.d.ts +50 -0
  308. package/dist/core/i18n/index.d.ts.map +1 -0
  309. package/dist/core/i18n/index.js +84 -0
  310. package/dist/core/i18n/index.js.map +1 -0
  311. package/dist/core/i18n/ja.d.ts +4 -0
  312. package/dist/core/i18n/ja.d.ts.map +1 -0
  313. package/dist/core/i18n/ja.js +194 -0
  314. package/dist/core/i18n/ja.js.map +1 -0
  315. package/dist/core/i18n/ko.d.ts +4 -0
  316. package/dist/core/i18n/ko.d.ts.map +1 -0
  317. package/dist/core/i18n/ko.js +194 -0
  318. package/dist/core/i18n/ko.js.map +1 -0
  319. package/dist/core/i18n/pt.d.ts +4 -0
  320. package/dist/core/i18n/pt.d.ts.map +1 -0
  321. package/dist/core/i18n/pt.js +194 -0
  322. package/dist/core/i18n/pt.js.map +1 -0
  323. package/dist/core/i18n/ru.d.ts +4 -0
  324. package/dist/core/i18n/ru.d.ts.map +1 -0
  325. package/dist/core/i18n/ru.js +194 -0
  326. package/dist/core/i18n/ru.js.map +1 -0
  327. package/dist/core/i18n/vi.d.ts +4 -0
  328. package/dist/core/i18n/vi.d.ts.map +1 -0
  329. package/dist/core/i18n/vi.js +194 -0
  330. package/dist/core/i18n/vi.js.map +1 -0
  331. package/dist/core/i18n/zh-hant.d.ts +4 -0
  332. package/dist/core/i18n/zh-hant.d.ts.map +1 -0
  333. package/dist/core/i18n/zh-hant.js +194 -0
  334. package/dist/core/i18n/zh-hant.js.map +1 -0
  335. package/dist/core/i18n/zh.d.ts +3 -0
  336. package/dist/core/i18n/zh.d.ts.map +1 -0
  337. package/dist/core/i18n/zh.js +193 -0
  338. package/dist/core/i18n/zh.js.map +1 -0
  339. package/dist/core/index.d.ts +13 -0
  340. package/dist/core/index.d.ts.map +1 -0
  341. package/dist/core/index.js +13 -0
  342. package/dist/core/index.js.map +1 -0
  343. package/dist/core/limiter/counter.d.ts +39 -0
  344. package/dist/core/limiter/counter.d.ts.map +1 -0
  345. package/dist/core/limiter/counter.js +16 -0
  346. package/dist/core/limiter/counter.js.map +1 -0
  347. package/dist/core/limiter/index.d.ts +7 -0
  348. package/dist/core/limiter/index.d.ts.map +1 -0
  349. package/dist/core/limiter/index.js +4 -0
  350. package/dist/core/limiter/index.js.map +1 -0
  351. package/dist/core/limiter/quota.d.ts +45 -0
  352. package/dist/core/limiter/quota.d.ts.map +1 -0
  353. package/dist/core/limiter/quota.js +41 -0
  354. package/dist/core/limiter/quota.js.map +1 -0
  355. package/dist/core/limiter/sliding-window.d.ts +20 -0
  356. package/dist/core/limiter/sliding-window.d.ts.map +1 -0
  357. package/dist/core/limiter/sliding-window.js +29 -0
  358. package/dist/core/limiter/sliding-window.js.map +1 -0
  359. package/dist/core/object/describe.d.ts +76 -0
  360. package/dist/core/object/describe.d.ts.map +1 -0
  361. package/dist/core/object/describe.js +97 -0
  362. package/dist/core/object/describe.js.map +1 -0
  363. package/dist/core/object/gen-types.d.ts +4 -0
  364. package/dist/core/object/gen-types.d.ts.map +1 -0
  365. package/dist/core/object/gen-types.js +88 -0
  366. package/dist/core/object/gen-types.js.map +1 -0
  367. package/dist/core/object/graph.d.ts +35 -0
  368. package/dist/core/object/graph.d.ts.map +1 -0
  369. package/dist/core/object/graph.js +256 -0
  370. package/dist/core/object/graph.js.map +1 -0
  371. package/dist/core/object/index.d.ts +9 -0
  372. package/dist/core/object/index.d.ts.map +1 -0
  373. package/dist/core/object/index.js +9 -0
  374. package/dist/core/object/index.js.map +1 -0
  375. package/dist/core/object/migrations.d.ts +24 -0
  376. package/dist/core/object/migrations.d.ts.map +1 -0
  377. package/dist/core/object/migrations.js +48 -0
  378. package/dist/core/object/migrations.js.map +1 -0
  379. package/dist/core/object/parse.d.ts +10 -0
  380. package/dist/core/object/parse.d.ts.map +1 -0
  381. package/dist/core/object/parse.js +23 -0
  382. package/dist/core/object/parse.js.map +1 -0
  383. package/dist/core/object/registry.d.ts +24 -0
  384. package/dist/core/object/registry.d.ts.map +1 -0
  385. package/dist/core/object/registry.js +39 -0
  386. package/dist/core/object/registry.js.map +1 -0
  387. package/dist/core/object/schema-version.d.ts +14 -0
  388. package/dist/core/object/schema-version.d.ts.map +1 -0
  389. package/dist/core/object/schema-version.js +13 -0
  390. package/dist/core/object/schema-version.js.map +1 -0
  391. package/dist/core/object/validate.d.ts +21 -0
  392. package/dist/core/object/validate.d.ts.map +1 -0
  393. package/dist/core/object/validate.js +818 -0
  394. package/dist/core/object/validate.js.map +1 -0
  395. package/dist/core/provider/alerts/index.d.ts +3 -0
  396. package/dist/core/provider/alerts/index.d.ts.map +1 -0
  397. package/dist/core/provider/alerts/index.js +2 -0
  398. package/dist/core/provider/alerts/index.js.map +1 -0
  399. package/dist/core/provider/alerts/types.d.ts +27 -0
  400. package/dist/core/provider/alerts/types.d.ts.map +1 -0
  401. package/dist/core/provider/alerts/types.js +12 -0
  402. package/dist/core/provider/alerts/types.js.map +1 -0
  403. package/dist/core/provider/event/index.d.ts +3 -0
  404. package/dist/core/provider/event/index.d.ts.map +1 -0
  405. package/dist/core/provider/event/index.js +2 -0
  406. package/dist/core/provider/event/index.js.map +1 -0
  407. package/dist/core/provider/event/ingress.d.ts +61 -0
  408. package/dist/core/provider/event/ingress.d.ts.map +1 -0
  409. package/dist/core/provider/event/ingress.js +2 -0
  410. package/dist/core/provider/event/ingress.js.map +1 -0
  411. package/dist/core/provider/event/types.d.ts +96 -0
  412. package/dist/core/provider/event/types.d.ts.map +1 -0
  413. package/dist/core/provider/event/types.js +21 -0
  414. package/dist/core/provider/event/types.js.map +1 -0
  415. package/dist/core/provider/identity/index.d.ts +2 -0
  416. package/dist/core/provider/identity/index.d.ts.map +1 -0
  417. package/dist/core/provider/identity/index.js +2 -0
  418. package/dist/core/provider/identity/index.js.map +1 -0
  419. package/dist/core/provider/identity/types.d.ts +11 -0
  420. package/dist/core/provider/identity/types.d.ts.map +1 -0
  421. package/dist/core/provider/identity/types.js +2 -0
  422. package/dist/core/provider/identity/types.js.map +1 -0
  423. package/dist/core/provider/index.d.ts +4 -0
  424. package/dist/core/provider/index.d.ts.map +1 -0
  425. package/dist/core/provider/index.js +4 -0
  426. package/dist/core/provider/index.js.map +1 -0
  427. package/dist/core/proxy/index.d.ts +3 -0
  428. package/dist/core/proxy/index.d.ts.map +1 -0
  429. package/dist/core/proxy/index.js +2 -0
  430. package/dist/core/proxy/index.js.map +1 -0
  431. package/dist/core/proxy/types.d.ts +100 -0
  432. package/dist/core/proxy/types.d.ts.map +1 -0
  433. package/dist/core/proxy/types.js +72 -0
  434. package/dist/core/proxy/types.js.map +1 -0
  435. package/dist/core/rbac/authorize.d.ts +13 -0
  436. package/dist/core/rbac/authorize.d.ts.map +1 -0
  437. package/dist/core/rbac/authorize.js +45 -0
  438. package/dist/core/rbac/authorize.js.map +1 -0
  439. package/dist/core/rbac/fields.d.ts +4 -0
  440. package/dist/core/rbac/fields.d.ts.map +1 -0
  441. package/dist/core/rbac/fields.js +6 -0
  442. package/dist/core/rbac/fields.js.map +1 -0
  443. package/dist/core/rbac/index.d.ts +9 -0
  444. package/dist/core/rbac/index.d.ts.map +1 -0
  445. package/dist/core/rbac/index.js +6 -0
  446. package/dist/core/rbac/index.js.map +1 -0
  447. package/dist/core/rbac/resolve.d.ts +22 -0
  448. package/dist/core/rbac/resolve.d.ts.map +1 -0
  449. package/dist/core/rbac/resolve.js +55 -0
  450. package/dist/core/rbac/resolve.js.map +1 -0
  451. package/dist/core/rbac/rls.d.ts +12 -0
  452. package/dist/core/rbac/rls.d.ts.map +1 -0
  453. package/dist/core/rbac/rls.js +77 -0
  454. package/dist/core/rbac/rls.js.map +1 -0
  455. package/dist/core/rbac/rowScope.d.ts +15 -0
  456. package/dist/core/rbac/rowScope.d.ts.map +1 -0
  457. package/dist/core/rbac/rowScope.js +28 -0
  458. package/dist/core/rbac/rowScope.js.map +1 -0
  459. package/dist/core/rbac/types.d.ts +8 -0
  460. package/dist/core/rbac/types.d.ts.map +1 -0
  461. package/dist/core/rbac/types.js +2 -0
  462. package/dist/core/rbac/types.js.map +1 -0
  463. package/dist/core/script/index.d.ts +6 -0
  464. package/dist/core/script/index.d.ts.map +1 -0
  465. package/dist/core/script/index.js +4 -0
  466. package/dist/core/script/index.js.map +1 -0
  467. package/dist/core/script/source.d.ts +6 -0
  468. package/dist/core/script/source.d.ts.map +1 -0
  469. package/dist/core/script/source.js +31 -0
  470. package/dist/core/script/source.js.map +1 -0
  471. package/dist/core/script/types.d.ts +189 -0
  472. package/dist/core/script/types.d.ts.map +1 -0
  473. package/dist/core/script/types.js +29 -0
  474. package/dist/core/script/types.js.map +1 -0
  475. package/dist/core/script/values.d.ts +8 -0
  476. package/dist/core/script/values.d.ts.map +1 -0
  477. package/dist/core/script/values.js +7 -0
  478. package/dist/core/script/values.js.map +1 -0
  479. package/dist/core/storage/apply.d.ts +4 -0
  480. package/dist/core/storage/apply.d.ts.map +1 -0
  481. package/dist/core/storage/apply.js +20 -0
  482. package/dist/core/storage/apply.js.map +1 -0
  483. package/dist/core/storage/diff.d.ts +45 -0
  484. package/dist/core/storage/diff.d.ts.map +1 -0
  485. package/dist/core/storage/diff.js +208 -0
  486. package/dist/core/storage/diff.js.map +1 -0
  487. package/dist/core/storage/index.d.ts +15 -0
  488. package/dist/core/storage/index.d.ts.map +1 -0
  489. package/dist/core/storage/index.js +10 -0
  490. package/dist/core/storage/index.js.map +1 -0
  491. package/dist/core/storage/inspect.d.ts +55 -0
  492. package/dist/core/storage/inspect.d.ts.map +1 -0
  493. package/dist/core/storage/inspect.js +163 -0
  494. package/dist/core/storage/inspect.js.map +1 -0
  495. package/dist/core/storage/introspect.d.ts +36 -0
  496. package/dist/core/storage/introspect.d.ts.map +1 -0
  497. package/dist/core/storage/introspect.js +223 -0
  498. package/dist/core/storage/introspect.js.map +1 -0
  499. package/dist/core/storage/map.d.ts +30 -0
  500. package/dist/core/storage/map.d.ts.map +1 -0
  501. package/dist/core/storage/map.js +157 -0
  502. package/dist/core/storage/map.js.map +1 -0
  503. package/dist/core/storage/meta.d.ts +6 -0
  504. package/dist/core/storage/meta.d.ts.map +1 -0
  505. package/dist/core/storage/meta.js +11 -0
  506. package/dist/core/storage/meta.js.map +1 -0
  507. package/dist/core/storage/migrate.d.ts +42 -0
  508. package/dist/core/storage/migrate.d.ts.map +1 -0
  509. package/dist/core/storage/migrate.js +133 -0
  510. package/dist/core/storage/migrate.js.map +1 -0
  511. package/dist/core/storage/pool.d.ts +4 -0
  512. package/dist/core/storage/pool.d.ts.map +1 -0
  513. package/dist/core/storage/pool.js +6 -0
  514. package/dist/core/storage/pool.js.map +1 -0
  515. package/dist/core/storage/report.d.ts +111 -0
  516. package/dist/core/storage/report.d.ts.map +1 -0
  517. package/dist/core/storage/report.js +189 -0
  518. package/dist/core/storage/report.js.map +1 -0
  519. package/dist/core/tools/approvals-backend.d.ts +9 -0
  520. package/dist/core/tools/approvals-backend.d.ts.map +1 -0
  521. package/dist/core/tools/approvals-backend.js +58 -0
  522. package/dist/core/tools/approvals-backend.js.map +1 -0
  523. package/dist/core/tools/index.d.ts +5 -0
  524. package/dist/core/tools/index.d.ts.map +1 -0
  525. package/dist/core/tools/index.js +5 -0
  526. package/dist/core/tools/index.js.map +1 -0
  527. package/dist/core/tools/policies.d.ts +10 -0
  528. package/dist/core/tools/policies.d.ts.map +1 -0
  529. package/dist/core/tools/policies.js +33 -0
  530. package/dist/core/tools/policies.js.map +1 -0
  531. package/dist/core/tools/types.d.ts +181 -0
  532. package/dist/core/tools/types.d.ts.map +1 -0
  533. package/dist/core/tools/types.js +2 -0
  534. package/dist/core/tools/types.js.map +1 -0
  535. package/dist/core/tools/values.d.ts +34 -0
  536. package/dist/core/tools/values.d.ts.map +1 -0
  537. package/dist/core/tools/values.js +36 -0
  538. package/dist/core/tools/values.js.map +1 -0
  539. package/dist/core/types/errors.d.ts +21 -0
  540. package/dist/core/types/errors.d.ts.map +1 -0
  541. package/dist/core/types/errors.js +29 -0
  542. package/dist/core/types/errors.js.map +1 -0
  543. package/dist/core/types/fields.d.ts +182 -0
  544. package/dist/core/types/fields.d.ts.map +1 -0
  545. package/dist/core/types/fields.js +2 -0
  546. package/dist/core/types/fields.js.map +1 -0
  547. package/dist/core/types/index.d.ts +12 -0
  548. package/dist/core/types/index.d.ts.map +1 -0
  549. package/dist/core/types/index.js +5 -0
  550. package/dist/core/types/index.js.map +1 -0
  551. package/dist/core/types/object.d.ts +36 -0
  552. package/dist/core/types/object.d.ts.map +1 -0
  553. package/dist/core/types/object.js +2 -0
  554. package/dist/core/types/object.js.map +1 -0
  555. package/dist/core/types/permission.d.ts +22 -0
  556. package/dist/core/types/permission.d.ts.map +1 -0
  557. package/dist/core/types/permission.js +2 -0
  558. package/dist/core/types/permission.js.map +1 -0
  559. package/dist/core/types/primaryField.d.ts +15 -0
  560. package/dist/core/types/primaryField.d.ts.map +1 -0
  561. package/dist/core/types/primaryField.js +17 -0
  562. package/dist/core/types/primaryField.js.map +1 -0
  563. package/dist/core/types/registry.d.ts +39 -0
  564. package/dist/core/types/registry.d.ts.map +1 -0
  565. package/dist/core/types/registry.js +78 -0
  566. package/dist/core/types/registry.js.map +1 -0
  567. package/dist/core/types/relation.d.ts +41 -0
  568. package/dist/core/types/relation.d.ts.map +1 -0
  569. package/dist/core/types/relation.js +2 -0
  570. package/dist/core/types/relation.js.map +1 -0
  571. package/dist/core/types/values.d.ts +107 -0
  572. package/dist/core/types/values.d.ts.map +1 -0
  573. package/dist/core/types/values.js +100 -0
  574. package/dist/core/types/values.js.map +1 -0
  575. package/dist/experimental.d.ts +14 -0
  576. package/dist/experimental.d.ts.map +1 -0
  577. package/dist/experimental.js +14 -0
  578. package/dist/experimental.js.map +1 -0
  579. package/dist/index.d.ts +30 -0
  580. package/dist/index.d.ts.map +1 -0
  581. package/dist/index.js +72 -0
  582. package/dist/index.js.map +1 -0
  583. package/dist/infrastructure/alerts/console.d.ts +4 -0
  584. package/dist/infrastructure/alerts/console.d.ts.map +1 -0
  585. package/dist/infrastructure/alerts/console.js +15 -0
  586. package/dist/infrastructure/alerts/console.js.map +1 -0
  587. package/dist/infrastructure/alerts/index.d.ts +34 -0
  588. package/dist/infrastructure/alerts/index.d.ts.map +1 -0
  589. package/dist/infrastructure/alerts/index.js +34 -0
  590. package/dist/infrastructure/alerts/index.js.map +1 -0
  591. package/dist/infrastructure/alerts/slack.d.ts +20 -0
  592. package/dist/infrastructure/alerts/slack.d.ts.map +1 -0
  593. package/dist/infrastructure/alerts/slack.js +30 -0
  594. package/dist/infrastructure/alerts/slack.js.map +1 -0
  595. package/dist/infrastructure/alerts/webhook.d.ts +18 -0
  596. package/dist/infrastructure/alerts/webhook.d.ts.map +1 -0
  597. package/dist/infrastructure/alerts/webhook.js +24 -0
  598. package/dist/infrastructure/alerts/webhook.js.map +1 -0
  599. package/dist/infrastructure/event/bus.d.ts +18 -0
  600. package/dist/infrastructure/event/bus.d.ts.map +1 -0
  601. package/dist/infrastructure/event/bus.js +86 -0
  602. package/dist/infrastructure/event/bus.js.map +1 -0
  603. package/dist/infrastructure/event/index.d.ts +3 -0
  604. package/dist/infrastructure/event/index.d.ts.map +1 -0
  605. package/dist/infrastructure/event/index.js +2 -0
  606. package/dist/infrastructure/event/index.js.map +1 -0
  607. package/dist/infrastructure/identity.d.ts +10 -0
  608. package/dist/infrastructure/identity.d.ts.map +1 -0
  609. package/dist/infrastructure/identity.js +10 -0
  610. package/dist/infrastructure/identity.js.map +1 -0
  611. package/dist/infrastructure/index.d.ts +8 -0
  612. package/dist/infrastructure/index.d.ts.map +1 -0
  613. package/dist/infrastructure/index.js +5 -0
  614. package/dist/infrastructure/index.js.map +1 -0
  615. package/dist/layout-format.d.ts +283 -0
  616. package/dist/layout-format.d.ts.map +1 -0
  617. package/dist/layout-format.js +435 -0
  618. package/dist/layout-format.js.map +1 -0
  619. package/dist/runtime/data-access/builder.d.ts +40 -0
  620. package/dist/runtime/data-access/builder.d.ts.map +1 -0
  621. package/dist/runtime/data-access/builder.js +203 -0
  622. package/dist/runtime/data-access/builder.js.map +1 -0
  623. package/dist/runtime/data-access/details.d.ts +10 -0
  624. package/dist/runtime/data-access/details.d.ts.map +1 -0
  625. package/dist/runtime/data-access/details.js +56 -0
  626. package/dist/runtime/data-access/details.js.map +1 -0
  627. package/dist/runtime/data-access/formula.d.ts +8 -0
  628. package/dist/runtime/data-access/formula.d.ts.map +1 -0
  629. package/dist/runtime/data-access/formula.js +101 -0
  630. package/dist/runtime/data-access/formula.js.map +1 -0
  631. package/dist/runtime/data-access/index.d.ts +18 -0
  632. package/dist/runtime/data-access/index.d.ts.map +1 -0
  633. package/dist/runtime/data-access/index.js +12 -0
  634. package/dist/runtime/data-access/index.js.map +1 -0
  635. package/dist/runtime/data-access/query.d.ts +53 -0
  636. package/dist/runtime/data-access/query.d.ts.map +1 -0
  637. package/dist/runtime/data-access/query.js +435 -0
  638. package/dist/runtime/data-access/query.js.map +1 -0
  639. package/dist/runtime/data-access/rbac.d.ts +15 -0
  640. package/dist/runtime/data-access/rbac.d.ts.map +1 -0
  641. package/dist/runtime/data-access/rbac.js +172 -0
  642. package/dist/runtime/data-access/rbac.js.map +1 -0
  643. package/dist/runtime/data-access/seqno.d.ts +11 -0
  644. package/dist/runtime/data-access/seqno.d.ts.map +1 -0
  645. package/dist/runtime/data-access/seqno.js +37 -0
  646. package/dist/runtime/data-access/seqno.js.map +1 -0
  647. package/dist/runtime/data-access/sql-executor.d.ts +45 -0
  648. package/dist/runtime/data-access/sql-executor.d.ts.map +1 -0
  649. package/dist/runtime/data-access/sql-executor.js +76 -0
  650. package/dist/runtime/data-access/sql-executor.js.map +1 -0
  651. package/dist/runtime/data-access/sql-gate.d.ts +35 -0
  652. package/dist/runtime/data-access/sql-gate.d.ts.map +1 -0
  653. package/dist/runtime/data-access/sql-gate.js +70 -0
  654. package/dist/runtime/data-access/sql-gate.js.map +1 -0
  655. package/dist/runtime/data-access/tx.d.ts +12 -0
  656. package/dist/runtime/data-access/tx.d.ts.map +1 -0
  657. package/dist/runtime/data-access/tx.js +30 -0
  658. package/dist/runtime/data-access/tx.js.map +1 -0
  659. package/dist/runtime/data-access/types.d.ts +82 -0
  660. package/dist/runtime/data-access/types.d.ts.map +1 -0
  661. package/dist/runtime/data-access/types.js +2 -0
  662. package/dist/runtime/data-access/types.js.map +1 -0
  663. package/dist/runtime/data-access/validate.d.ts +17 -0
  664. package/dist/runtime/data-access/validate.d.ts.map +1 -0
  665. package/dist/runtime/data-access/validate.js +180 -0
  666. package/dist/runtime/data-access/validate.js.map +1 -0
  667. package/dist/runtime/data-access/values.d.ts +39 -0
  668. package/dist/runtime/data-access/values.d.ts.map +1 -0
  669. package/dist/runtime/data-access/values.js +36 -0
  670. package/dist/runtime/data-access/values.js.map +1 -0
  671. package/dist/runtime/engine.d.ts +253 -0
  672. package/dist/runtime/engine.d.ts.map +1 -0
  673. package/dist/runtime/engine.js +368 -0
  674. package/dist/runtime/engine.js.map +1 -0
  675. package/dist/runtime/git/autoCommit.d.ts +43 -0
  676. package/dist/runtime/git/autoCommit.d.ts.map +1 -0
  677. package/dist/runtime/git/autoCommit.js +100 -0
  678. package/dist/runtime/git/autoCommit.js.map +1 -0
  679. package/dist/runtime/git/guardrailSource.d.ts +55 -0
  680. package/dist/runtime/git/guardrailSource.d.ts.map +1 -0
  681. package/dist/runtime/git/guardrailSource.js +140 -0
  682. package/dist/runtime/git/guardrailSource.js.map +1 -0
  683. package/dist/runtime/git/index.d.ts +22 -0
  684. package/dist/runtime/git/index.d.ts.map +1 -0
  685. package/dist/runtime/git/index.js +12 -0
  686. package/dist/runtime/git/index.js.map +1 -0
  687. package/dist/runtime/git/layoutSource.d.ts +41 -0
  688. package/dist/runtime/git/layoutSource.d.ts.map +1 -0
  689. package/dist/runtime/git/layoutSource.js +67 -0
  690. package/dist/runtime/git/layoutSource.js.map +1 -0
  691. package/dist/runtime/git/loader.d.ts +22 -0
  692. package/dist/runtime/git/loader.d.ts.map +1 -0
  693. package/dist/runtime/git/loader.js +57 -0
  694. package/dist/runtime/git/loader.js.map +1 -0
  695. package/dist/runtime/git/pageCatalog.d.ts +66 -0
  696. package/dist/runtime/git/pageCatalog.d.ts.map +1 -0
  697. package/dist/runtime/git/pageCatalog.js +183 -0
  698. package/dist/runtime/git/pageCatalog.js.map +1 -0
  699. package/dist/runtime/git/pageScripts.d.ts +43 -0
  700. package/dist/runtime/git/pageScripts.d.ts.map +1 -0
  701. package/dist/runtime/git/pageScripts.js +89 -0
  702. package/dist/runtime/git/pageScripts.js.map +1 -0
  703. package/dist/runtime/git/runner.d.ts +25 -0
  704. package/dist/runtime/git/runner.d.ts.map +1 -0
  705. package/dist/runtime/git/runner.js +26 -0
  706. package/dist/runtime/git/runner.js.map +1 -0
  707. package/dist/runtime/git/schemaChange.d.ts +70 -0
  708. package/dist/runtime/git/schemaChange.d.ts.map +1 -0
  709. package/dist/runtime/git/schemaChange.js +241 -0
  710. package/dist/runtime/git/schemaChange.js.map +1 -0
  711. package/dist/runtime/git/schemaSource.d.ts +38 -0
  712. package/dist/runtime/git/schemaSource.d.ts.map +1 -0
  713. package/dist/runtime/git/schemaSource.js +38 -0
  714. package/dist/runtime/git/schemaSource.js.map +1 -0
  715. package/dist/runtime/git/scriptSource.d.ts +24 -0
  716. package/dist/runtime/git/scriptSource.d.ts.map +1 -0
  717. package/dist/runtime/git/scriptSource.js +80 -0
  718. package/dist/runtime/git/scriptSource.js.map +1 -0
  719. package/dist/runtime/git/sourceFile.d.ts +15 -0
  720. package/dist/runtime/git/sourceFile.d.ts.map +1 -0
  721. package/dist/runtime/git/sourceFile.js +41 -0
  722. package/dist/runtime/git/sourceFile.js.map +1 -0
  723. package/dist/runtime/git/sourceTransaction.d.ts +56 -0
  724. package/dist/runtime/git/sourceTransaction.d.ts.map +1 -0
  725. package/dist/runtime/git/sourceTransaction.js +176 -0
  726. package/dist/runtime/git/sourceTransaction.js.map +1 -0
  727. package/dist/runtime/git/sync.d.ts +33 -0
  728. package/dist/runtime/git/sync.d.ts.map +1 -0
  729. package/dist/runtime/git/sync.js +42 -0
  730. package/dist/runtime/git/sync.js.map +1 -0
  731. package/dist/runtime/metadata/cache.d.ts +29 -0
  732. package/dist/runtime/metadata/cache.d.ts.map +1 -0
  733. package/dist/runtime/metadata/cache.js +70 -0
  734. package/dist/runtime/metadata/cache.js.map +1 -0
  735. package/dist/runtime/metadata/index.d.ts +3 -0
  736. package/dist/runtime/metadata/index.d.ts.map +1 -0
  737. package/dist/runtime/metadata/index.js +2 -0
  738. package/dist/runtime/metadata/index.js.map +1 -0
  739. package/dist/runtime/proxy/fetch.d.ts +36 -0
  740. package/dist/runtime/proxy/fetch.d.ts.map +1 -0
  741. package/dist/runtime/proxy/fetch.js +136 -0
  742. package/dist/runtime/proxy/fetch.js.map +1 -0
  743. package/dist/runtime/proxy/index.d.ts +3 -0
  744. package/dist/runtime/proxy/index.d.ts.map +1 -0
  745. package/dist/runtime/proxy/index.js +2 -0
  746. package/dist/runtime/proxy/index.js.map +1 -0
  747. package/dist/runtime/sql-analyzer/index.d.ts +47 -0
  748. package/dist/runtime/sql-analyzer/index.d.ts.map +1 -0
  749. package/dist/runtime/sql-analyzer/index.js +58 -0
  750. package/dist/runtime/sql-analyzer/index.js.map +1 -0
  751. package/dist/runtime/tools/executor.d.ts +69 -0
  752. package/dist/runtime/tools/executor.d.ts.map +1 -0
  753. package/dist/runtime/tools/executor.js +204 -0
  754. package/dist/runtime/tools/executor.js.map +1 -0
  755. package/dist/runtime/tools/index.d.ts +5 -0
  756. package/dist/runtime/tools/index.d.ts.map +1 -0
  757. package/dist/runtime/tools/index.js +3 -0
  758. package/dist/runtime/tools/index.js.map +1 -0
  759. package/dist/runtime/tools/loader.d.ts +14 -0
  760. package/dist/runtime/tools/loader.d.ts.map +1 -0
  761. package/dist/runtime/tools/loader.js +98 -0
  762. package/dist/runtime/tools/loader.js.map +1 -0
  763. package/dist/runtime/tools/policies.d.ts +46 -0
  764. package/dist/runtime/tools/policies.d.ts.map +1 -0
  765. package/dist/runtime/tools/policies.js +107 -0
  766. package/dist/runtime/tools/policies.js.map +1 -0
  767. package/dist/runtime/tunnel/connector.d.ts +31 -0
  768. package/dist/runtime/tunnel/connector.d.ts.map +1 -0
  769. package/dist/runtime/tunnel/connector.js +114 -0
  770. package/dist/runtime/tunnel/connector.js.map +1 -0
  771. package/dist/runtime/tunnel/forwarder.d.ts +12 -0
  772. package/dist/runtime/tunnel/forwarder.d.ts.map +1 -0
  773. package/dist/runtime/tunnel/forwarder.js +64 -0
  774. package/dist/runtime/tunnel/forwarder.js.map +1 -0
  775. package/dist/runtime/tunnel/framing.d.ts +63 -0
  776. package/dist/runtime/tunnel/framing.d.ts.map +1 -0
  777. package/dist/runtime/tunnel/framing.js +86 -0
  778. package/dist/runtime/tunnel/framing.js.map +1 -0
  779. package/dist/runtime/tunnel/index.d.ts +11 -0
  780. package/dist/runtime/tunnel/index.d.ts.map +1 -0
  781. package/dist/runtime/tunnel/index.js +6 -0
  782. package/dist/runtime/tunnel/index.js.map +1 -0
  783. package/dist/runtime/tunnel/registry.d.ts +36 -0
  784. package/dist/runtime/tunnel/registry.d.ts.map +1 -0
  785. package/dist/runtime/tunnel/registry.js +167 -0
  786. package/dist/runtime/tunnel/registry.js.map +1 -0
  787. package/dist/runtime/tunnel/server.d.ts +24 -0
  788. package/dist/runtime/tunnel/server.d.ts.map +1 -0
  789. package/dist/runtime/tunnel/server.js +70 -0
  790. package/dist/runtime/tunnel/server.js.map +1 -0
  791. package/dist/subsystems/approvals/index.d.ts +11 -0
  792. package/dist/subsystems/approvals/index.d.ts.map +1 -0
  793. package/dist/subsystems/approvals/index.js +12 -0
  794. package/dist/subsystems/approvals/index.js.map +1 -0
  795. package/dist/subsystems/approvals/store.d.ts +12 -0
  796. package/dist/subsystems/approvals/store.d.ts.map +1 -0
  797. package/dist/subsystems/approvals/store.js +108 -0
  798. package/dist/subsystems/approvals/store.js.map +1 -0
  799. package/dist/subsystems/audit/index.d.ts +37 -0
  800. package/dist/subsystems/audit/index.d.ts.map +1 -0
  801. package/dist/subsystems/audit/index.js +125 -0
  802. package/dist/subsystems/audit/index.js.map +1 -0
  803. package/dist/subsystems/audit/store.d.ts +12 -0
  804. package/dist/subsystems/audit/store.d.ts.map +1 -0
  805. package/dist/subsystems/audit/store.js +215 -0
  806. package/dist/subsystems/audit/store.js.map +1 -0
  807. package/dist/subsystems/quota/index.d.ts +2 -0
  808. package/dist/subsystems/quota/index.d.ts.map +1 -0
  809. package/dist/subsystems/quota/index.js +2 -0
  810. package/dist/subsystems/quota/index.js.map +1 -0
  811. package/dist/subsystems/quota/store.d.ts +4 -0
  812. package/dist/subsystems/quota/store.d.ts.map +1 -0
  813. package/dist/subsystems/quota/store.js +44 -0
  814. package/dist/subsystems/quota/store.js.map +1 -0
  815. package/dist/subsystems/script/backend/isolated-vm.d.ts +8 -0
  816. package/dist/subsystems/script/backend/isolated-vm.d.ts.map +1 -0
  817. package/dist/subsystems/script/backend/isolated-vm.js +380 -0
  818. package/dist/subsystems/script/backend/isolated-vm.js.map +1 -0
  819. package/dist/subsystems/script/backend/types.d.ts +61 -0
  820. package/dist/subsystems/script/backend/types.d.ts.map +1 -0
  821. package/dist/subsystems/script/backend/types.js +2 -0
  822. package/dist/subsystems/script/backend/types.js.map +1 -0
  823. package/dist/subsystems/script/bridge.d.ts +29 -0
  824. package/dist/subsystems/script/bridge.d.ts.map +1 -0
  825. package/dist/subsystems/script/bridge.js +106 -0
  826. package/dist/subsystems/script/bridge.js.map +1 -0
  827. package/dist/subsystems/script/dispatcher.d.ts +46 -0
  828. package/dist/subsystems/script/dispatcher.d.ts.map +1 -0
  829. package/dist/subsystems/script/dispatcher.js +143 -0
  830. package/dist/subsystems/script/dispatcher.js.map +1 -0
  831. package/dist/subsystems/script/index.d.ts +13 -0
  832. package/dist/subsystems/script/index.d.ts.map +1 -0
  833. package/dist/subsystems/script/index.js +7 -0
  834. package/dist/subsystems/script/index.js.map +1 -0
  835. package/dist/subsystems/script/loader.d.ts +18 -0
  836. package/dist/subsystems/script/loader.d.ts.map +1 -0
  837. package/dist/subsystems/script/loader.js +44 -0
  838. package/dist/subsystems/script/loader.js.map +1 -0
  839. package/dist/subsystems/script/services.d.ts +14 -0
  840. package/dist/subsystems/script/services.d.ts.map +1 -0
  841. package/dist/subsystems/script/services.js +48 -0
  842. package/dist/subsystems/script/services.js.map +1 -0
  843. package/dist/values.d.ts +18 -0
  844. package/dist/values.d.ts.map +1 -0
  845. package/dist/values.js +18 -0
  846. package/dist/values.js.map +1 -0
  847. package/dist/version.d.ts +3 -0
  848. package/dist/version.d.ts.map +1 -0
  849. package/dist/version.js +3 -0
  850. package/dist/version.js.map +1 -0
  851. package/package.json +89 -0
@@ -0,0 +1,380 @@
1
+ import { createRequire } from 'node:module';
2
+ import { Worker } from 'node:worker_threads';
3
+ import { SchemaError } from '../../../core/index.js';
4
+ /**
5
+ * `isolated-vm` sandbox backend (Node / V8 isolates).
6
+ *
7
+ * Isolation model:
8
+ * - each `*.server.js` runs in its own worker thread hosting its own V8 isolate
9
+ * (`new ivm.Isolate({ memoryLimit })`) — real heap isolation, no host
10
+ * capability globals reachable (no require/process/fetch/Function escapes)
11
+ * - `this.db` / `this.services` / `console` are **synchronous Callbacks** whose
12
+ * implementations bridge to the engine main process over a SharedArrayBuffer +
13
+ * `Atomics.wait/notify` message channel — the sandbox posts an RPC, the main
14
+ * process runs the async data-access/providers and replies, the sandbox
15
+ * resumes synchronously
16
+ * - wall-clock timeout is enforced host-side (race → `worker.terminate()`); the
17
+ * isolate eval timeout additionally kills CPU-bound sync loops
18
+ * - v7.0.1 resolves `evalClosure` with `undefined` for a promise that never
19
+ * settles, so hook completion is tracked with an in-isolate `__done` sentinel
20
+ * instead of the completion value alone — a hook still pending when evalClosure
21
+ * returns can never resolve (no timers/IO in the sandbox), so it is reported
22
+ * as a timeout and the sandbox is poisoned (lazily respawned on next call)
23
+ *
24
+ * The worker code is an inlined string (`eval: true`) with `isolated-vm`
25
+ * resolved at runtime, so the backend works from source (tsx) and from the
26
+ * compiled `dist`, and survives `weave build` bundling.
27
+ */
28
+ const require = createRequire(import.meta.url);
29
+ /**
30
+ * Resolve `isolated-vm` lazily — it is an **optional** dependency (a native
31
+ * addon). Users without the script subsystem must be able to install and load
32
+ * the engine; the missing-module error is only raised when the backend is
33
+ * actually created, and the dispatcher turns it into an actionable message.
34
+ */
35
+ let cachedIvmPath;
36
+ function resolveIvmPath() {
37
+ if (cachedIvmPath !== undefined)
38
+ return cachedIvmPath;
39
+ try {
40
+ cachedIvmPath = require.resolve('isolated-vm');
41
+ }
42
+ catch {
43
+ throw new Error('isolated-vm is not installed (required by the script sandbox backend)');
44
+ }
45
+ return cachedIvmPath;
46
+ }
47
+ /** reply buffer size (JSON payloads, capped) */
48
+ const DATA_BYTES = 8 * 1024 * 1024;
49
+ const WORKER_CODE = String.raw `
50
+ const { parentPort, workerData } = require('node:worker_threads');
51
+ const ivm = require(workerData.ivmPath);
52
+
53
+ const DATA_BYTES = workerData.dataBytes;
54
+ const sab = workerData.sab;
55
+ const genView = new Int32Array(sab, 0, 1);
56
+ const lenView = new Int32Array(sab, 4, 1);
57
+ const dataView = new Uint8Array(sab, 8, DATA_BYTES);
58
+ const td = new TextDecoder();
59
+ const te = new TextEncoder();
60
+ let currentUser = { id: 'system', roles: [], teamId: undefined as string | undefined };
61
+ let isolate, context, exportsRef;
62
+
63
+ function rpcSync(ns, method, args, user) {
64
+ const gen = Atomics.load(genView, 0);
65
+ parentPort.postMessage({ type: 'rpc', ns, method, args, user });
66
+ const res = Atomics.wait(genView, 0, gen, workerData.queryTimeoutMs);
67
+ if (res === 'timed-out') throw new Error('query timeout after ' + workerData.queryTimeoutMs + 'ms');
68
+ const parsed = JSON.parse(td.decode(dataView.subarray(0, lenView[0])));
69
+ if (parsed.ok) return parsed.value;
70
+ const err = new Error(parsed.error);
71
+ if (parsed.errorCode !== undefined) err.code = parsed.errorCode;
72
+ throw err;
73
+ }
74
+
75
+ function transform(src) {
76
+ return src
77
+ .replace(/export\s+(async\s+)?function\s+(\w+)/g, '__exports.$2 = $1function $2')
78
+ .replace(/export\s+(const|let|var)\s+(\w+)/g, '__exports.$2 = ')
79
+ .replace(/export\s+default\s+/g, '__exports.default = ');
80
+ }
81
+
82
+ async function init() {
83
+ isolate = new ivm.Isolate({ memoryLimit: workerData.memoryLimitMb });
84
+ context = await isolate.createContext();
85
+ await context.eval('globalThis.__exports = {}');
86
+ exportsRef = await context.global.get('__exports', { reference: true });
87
+ const rpcCb = new ivm.Callback((ns, method, args) => rpcSync(ns, method, args, currentUser));
88
+ await context.global.set('__rpc', rpcCb);
89
+ await context.eval(transform(workerData.source), { timeout: workerData.timeoutMs });
90
+ }
91
+
92
+ async function callHook(hook, args) {
93
+ currentUser = args.user;
94
+ await context.evalClosure(
95
+ 'globalThis.__ctx = ({ record: $0, records: $5, changes: $1, user: $2, transition: $3, state: $4, ' +
96
+ 'db: { objects: (n) => ({ find: (o) => __rpc("objects","find",[n,"find",o]), ' +
97
+ 'findOne: (id) => __rpc("objects","findOne",[n,"findOne",id]), ' +
98
+ 'create: (d) => __rpc("objects","create",[n,"create",d]), ' +
99
+ 'update: (id, ch) => __rpc("objects","update",[n,"update",id,ch]), ' +
100
+ 'delete: (id) => __rpc("objects","delete",[n,"delete",id]) }), ' +
101
+ 'query: (sql, p) => __rpc("query","run",[sql,p]) }, ' +
102
+ 'services: { email: { send: (o) => __rpc("services","email.send",[o]) }, ' +
103
+ 'slack: { post: (o) => __rpc("services","slack.post",[o]) }, ' +
104
+ 'webhook: { call: (o) => __rpc("services","webhook.call",[o]) } }, ' +
105
+ 'console: { log: (...a) => __rpc("console","log",a.map(String)), ' +
106
+ 'warn: (...a) => __rpc("console","warn",a.map(String)), ' +
107
+ 'error: (...a) => __rpc("console","error",a.map(String)), ' +
108
+ 'info: (...a) => __rpc("console","info",a.map(String)) } })',
109
+ [args.record, args.changes, args.user, args.transition === undefined ? null : args.transition, args.state === undefined ? null : args.state, args.records === undefined ? null : args.records],
110
+ { arguments: { copy: true } },
111
+ );
112
+ const hookRef = await exportsRef.get(hook, { reference: true });
113
+ // v7.0.1 returns a Reference even for missing properties — verify it is a function
114
+ if (!hookRef || hookRef.typeof !== 'function') return { ok: false, error: { message: 'no hook: ' + hook } };
115
+ try {
116
+ // isolated-vm v7.0.1 resolves evalClosure with undefined for a promise that
117
+ // never settles, so the completion value alone is ambiguous — record completion
118
+ // inside the isolate and read the __done sentinel back
119
+ await context.evalClosure(
120
+ '(async () => { globalThis.__done = false; globalThis.__result = undefined; try { ' +
121
+ 'globalThis.__result = { ok: true, value: await __exports[$0].call(__ctx) }; } ' +
122
+ 'catch (e) { globalThis.__result = { ok: false, error: { message: String((e && e.message) || e), code: (e && e.code) || "abort" } }; } ' +
123
+ 'finally { globalThis.__done = true; } })()',
124
+ [hook],
125
+ { arguments: { copy: true }, result: { promise: true, copy: true }, timeout: workerData.timeoutMs },
126
+ );
127
+ const done = await context.global.get('__done', { copy: true });
128
+ if (done !== true) {
129
+ // the hook is logically still pending — this sandbox has no timers/IO, so
130
+ // it can never resolve; poison the isolate and report a timeout (the host
131
+ // tears the sandbox down and it respawns on the next call)
132
+ return { ok: false, error: { message: 'script timed out (async hook did not settle)', code: 'timeout' }, poisoned: true };
133
+ }
134
+ const value = await context.global.get('__result', { copy: true });
135
+ if (value !== undefined && typeof value === 'object' && value.ok === false) {
136
+ const rawError = (value as { error?: { message?: string; code?: string } }).error;
137
+ return { ok: false, error: { message: String(rawError?.message ?? 'script error'), code: (rawError?.code as 'abort' | 'timeout' | 'sandbox' | undefined) ?? 'abort' } };
138
+ }
139
+ return { ok: true, value: value !== undefined && typeof value === 'object' && value.ok === true ? value.value : value };
140
+ } catch (e) {
141
+ const m = String((e && e.message) || e);
142
+ const timedOut = /timed out|timeout/i.test(m);
143
+ return { ok: false, error: { message: m, code: timedOut ? 'timeout' : 'abort' } };
144
+ }
145
+ }
146
+
147
+ parentPort.on('message', async (msg) => {
148
+ if (msg.type === 'shutdown') {
149
+ try {
150
+ await isolate.dispose();
151
+ } catch {}
152
+ // drop the message listener so the worker's event loop drains and the
153
+ // thread exits — isolated-vm's background V8 threads are only released on
154
+ // a clean isolate dispose, which worker.terminate() would otherwise leak
155
+ parentPort.removeAllListeners();
156
+ parentPort.postMessage({ type: 'closed' });
157
+ return;
158
+ }
159
+ if (msg.type === 'init') {
160
+ try {
161
+ await init();
162
+ parentPort.postMessage({ type: 'ready' });
163
+ } catch (e) {
164
+ parentPort.postMessage({ type: 'initError', error: String((e && e.message) || e) });
165
+ }
166
+ return;
167
+ }
168
+ if (msg.type === 'call') {
169
+ try {
170
+ const r = await callHook(msg.hook, msg.args);
171
+ parentPort.postMessage({ type: 'callResult', id: msg.id, ...r });
172
+ } catch (e) {
173
+ parentPort.postMessage({ type: 'callResult', id: msg.id, ok: false, error: { message: String((e && e.message) || e) } });
174
+ }
175
+ }
176
+ });
177
+ `;
178
+ class IsolatedVmSandboxInstance {
179
+ entry;
180
+ executor;
181
+ opts;
182
+ worker;
183
+ ready;
184
+ pending = new Map();
185
+ nextCallId = 1;
186
+ closed = false;
187
+ sab = new SharedArrayBuffer(8 + DATA_BYTES);
188
+ genView = new Int32Array(this.sab, 0, 1);
189
+ lenView = new Int32Array(this.sab, 4, 1);
190
+ dataView = new Uint8Array(this.sab, 8, DATA_BYTES);
191
+ constructor(entry, executor, opts) {
192
+ this.entry = entry;
193
+ this.executor = executor;
194
+ this.opts = opts;
195
+ }
196
+ ensureReady() {
197
+ if (this.ready === undefined) {
198
+ this.ready = this.spawn();
199
+ }
200
+ return this.ready;
201
+ }
202
+ spawn() {
203
+ return new Promise((resolve, reject) => {
204
+ const worker = new Worker(WORKER_CODE, {
205
+ eval: true,
206
+ workerData: {
207
+ source: this.entry.source,
208
+ timeoutMs: this.opts.timeoutMs,
209
+ queryTimeoutMs: this.opts.queryTimeoutMs,
210
+ memoryLimitMb: this.opts.memoryLimitMb,
211
+ dataBytes: DATA_BYTES,
212
+ sab: this.sab,
213
+ ivmPath: resolveIvmPath(),
214
+ },
215
+ });
216
+ // the worker hosts a V8 isolate with background threads that would keep
217
+ // the process alive after the sandbox is closed — decouple its lifetime
218
+ // (calls are awaited explicitly, so the main event loop stays alive
219
+ // while a hook runs)
220
+ worker.unref();
221
+ this.worker = worker;
222
+ const onMessage = (message) => {
223
+ if (message.type === 'ready') {
224
+ resolve();
225
+ return;
226
+ }
227
+ if (message.type === 'initError') {
228
+ this.destroy();
229
+ reject(new SchemaError('script.compile', { file: `${this.entry.name}.server.js`, detail: message.error }));
230
+ return;
231
+ }
232
+ if (message.type === 'rpc') {
233
+ void this.handleRpc(message);
234
+ return;
235
+ }
236
+ if (message.type === 'callResult') {
237
+ const pending = this.pending.get(message.id);
238
+ if (pending !== undefined) {
239
+ this.pending.delete(message.id);
240
+ clearTimeout(pending.timer);
241
+ pending.resolve(message.ok ? { ok: true, value: message.value } : { ok: false, error: message.error });
242
+ }
243
+ if (!message.ok && message.poisoned) {
244
+ // the hook left a never-settling promise behind — the isolate can
245
+ // never resolve it, so tear the sandbox down (it respawns on demand)
246
+ this.destroy();
247
+ }
248
+ }
249
+ };
250
+ worker.on('message', onMessage);
251
+ worker.on('error', (error) => {
252
+ this.destroy();
253
+ reject(error);
254
+ });
255
+ worker.postMessage({ type: 'init' });
256
+ });
257
+ }
258
+ writeReply(payload) {
259
+ const bytes = new TextEncoder().encode(JSON.stringify(payload));
260
+ if (bytes.length > DATA_BYTES) {
261
+ throw new Error(`rpc reply exceeds ${DATA_BYTES} bytes`);
262
+ }
263
+ this.lenView[0] = bytes.length;
264
+ this.dataView.set(bytes);
265
+ }
266
+ async handleRpc(message) {
267
+ try {
268
+ const value = await this.executor({ ns: message.ns, method: message.method, args: message.args, user: message.user }, this.opts.queryTimeoutMs);
269
+ this.writeReply({ ok: true, value });
270
+ }
271
+ catch (error) {
272
+ // carry the engine SchemaError code across the RPC bridge so a script
273
+ // hook can inspect `e.code` (e.g. rbac.denied) instead of parsing text
274
+ this.writeReply({
275
+ ok: false,
276
+ error: error instanceof Error ? error.message : String(error),
277
+ errorCode: error instanceof SchemaError ? error.code : undefined,
278
+ });
279
+ }
280
+ Atomics.add(this.genView, 0, 1);
281
+ Atomics.notify(this.genView, 0, 1);
282
+ }
283
+ async call(hook, args) {
284
+ await this.ensureReady();
285
+ if (this.closed || this.worker === undefined) {
286
+ return { ok: false, error: { message: 'sandbox is closed', code: 'sandbox' } };
287
+ }
288
+ const id = this.nextCallId++;
289
+ return new Promise((resolve) => {
290
+ const timer = setTimeout(() => {
291
+ this.pending.delete(id);
292
+ resolve({ ok: false, error: { message: 'script timed out', code: 'timeout' } });
293
+ void this.destroy();
294
+ }, this.opts.timeoutMs);
295
+ this.pending.set(id, { resolve, timer });
296
+ this.worker?.postMessage({ type: 'call', id, hook, args });
297
+ });
298
+ }
299
+ failAll(error) {
300
+ for (const [, pending] of this.pending) {
301
+ clearTimeout(pending.timer);
302
+ pending.resolve({ ok: false, error });
303
+ }
304
+ this.pending.clear();
305
+ }
306
+ /**
307
+ * Ask the worker to dispose its isolate (releasing isolated-vm's background
308
+ * V8 threads) and exit cleanly; `worker.terminate()` alone leaks those
309
+ * threads and can keep the process alive. Returns `true` when the worker
310
+ * acknowledged `closed` (isolate dispose confirmed); `false` when the
311
+ * handshake timed out and we fell back to a forced terminate (release not
312
+ * confirmed — caller should surface it).
313
+ */
314
+ async gracefulShutdown(worker) {
315
+ let confirmed = false;
316
+ const closed = new Promise((resolve) => {
317
+ const onMessage = (message) => {
318
+ if (message.type === 'closed') {
319
+ confirmed = true;
320
+ worker.off('message', onMessage);
321
+ resolve();
322
+ }
323
+ };
324
+ worker.on('message', onMessage);
325
+ setTimeout(() => {
326
+ worker.off('message', onMessage);
327
+ resolve();
328
+ }, 1000);
329
+ });
330
+ try {
331
+ worker.postMessage({ type: 'shutdown' });
332
+ }
333
+ catch {
334
+ // worker already dead
335
+ }
336
+ await closed;
337
+ worker.removeAllListeners();
338
+ await worker.terminate().catch(() => { });
339
+ return confirmed;
340
+ }
341
+ destroy() {
342
+ const worker = this.worker;
343
+ this.worker = undefined;
344
+ this.ready = undefined;
345
+ if (worker !== undefined) {
346
+ worker.removeAllListeners();
347
+ try {
348
+ worker.postMessage({ type: 'shutdown' });
349
+ }
350
+ catch {
351
+ // worker already dead
352
+ }
353
+ setTimeout(() => {
354
+ void worker.terminate().catch(() => { });
355
+ }, 100);
356
+ }
357
+ this.failAll({ message: 'sandbox destroyed', code: 'sandbox' });
358
+ }
359
+ async close() {
360
+ this.closed = true;
361
+ this.failAll({ message: 'sandbox closed', code: 'sandbox' });
362
+ const worker = this.worker;
363
+ this.worker = undefined;
364
+ if (worker !== undefined) {
365
+ return this.gracefulShutdown(worker);
366
+ }
367
+ return true;
368
+ }
369
+ }
370
+ export function createIsolatedVmSandboxBackend(options) {
371
+ // fail fast when the optional native dependency is missing
372
+ resolveIvmPath();
373
+ return {
374
+ create(entry, executor) {
375
+ return new IsolatedVmSandboxInstance(entry, executor, options);
376
+ },
377
+ async close() { },
378
+ };
379
+ }
380
+ //# sourceMappingURL=isolated-vm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolated-vm.js","sourceRoot":"","sources":["../../../../src/subsystems/script/backend/isolated-vm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { ScriptDispatchArgs, ScriptHook } from '../../../core/index.js';
2
+ /**
3
+ * Sandbox backend contract — the pluggable isolation engine.
4
+ *
5
+ * `create()` spawns an isolated runtime for one `*.server.js` file and returns
6
+ * a handle that executes hooks with a script-visible `this` (plain data +
7
+ * RPC proxies). Today the backend is `node:worker_threads` (Bun-compatible,
8
+ * Node escape path intact); a V8-isolate backend (e.g. isolated-vm) can be
9
+ * swapped in later without touching the dispatcher.
10
+ */
11
+ /** a data-access / service call the sandbox delegates to the engine main process */
12
+ export interface RpcRequest {
13
+ /** 'objects' | 'services' | 'console' */
14
+ ns: string;
15
+ /** method name (e.g. 'find', 'email.send', 'log') */
16
+ method: string;
17
+ /** arguments after the object name (for 'objects': [objectName, method, ...args]) */
18
+ args: unknown[];
19
+ /** the script author (this.user) driving the call — rebuilt as an RbacSubject */
20
+ user: {
21
+ id: string;
22
+ name?: string;
23
+ roles: string[];
24
+ teamId?: string;
25
+ };
26
+ }
27
+ export type RpcExecutor = (req: RpcRequest, timeoutMs: number) => Promise<unknown>;
28
+ export interface SandboxCallResult {
29
+ ok: boolean;
30
+ /** resolved return value of the hook (structured-clone safe) */
31
+ value?: unknown;
32
+ /** thrown error, serialized to { message }; code distinguishes user-thrown vs sandbox failure */
33
+ error?: {
34
+ message: string;
35
+ code?: 'abort' | 'timeout' | 'sandbox';
36
+ };
37
+ }
38
+ export interface SandboxEntry {
39
+ /** object name (also the worker/instance key) */
40
+ name: string;
41
+ /** raw source of the *.server.js file */
42
+ source: string;
43
+ /** hook names detected at load (drives fast-path registration) */
44
+ hooks: ScriptHook[];
45
+ }
46
+ export interface SandboxInstance {
47
+ /** run one hook; resolves when done, on timeout, or on sandbox crash */
48
+ call(hook: ScriptHook, args: ScriptDispatchArgs): Promise<SandboxCallResult>;
49
+ /**
50
+ * Release the sandbox. Returns whether the shutdown handshake **confirmed**
51
+ * a clean release (`true`) or fell back to a forced terminate on timeout
52
+ * (`false` — the isolate release was not confirmed). `false` only happens on
53
+ * a wedged worker; the dispatcher surfaces it as a warning.
54
+ */
55
+ close(): Promise<boolean>;
56
+ }
57
+ export interface SandboxBackend {
58
+ create(entry: SandboxEntry, executor: RpcExecutor): SandboxInstance;
59
+ close(): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/subsystems/script/backend/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE7E;;;;;;;;GAQG;AAEH,oFAAoF;AACpF,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,iFAAiF;IACjF,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iGAAiG;IACjG,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7E;;;;;OAKG;IACH,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,GAAG,eAAe,CAAC;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/subsystems/script/backend/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import type { Pool } from 'pg';
2
+ import type { Locale, ObjectRegistry, ScriptServices } from '../../core/index.js';
3
+ import type { ObjectDataAccess } from '../../runtime/data-access/index.js';
4
+ import type { RpcExecutor } from './backend/types.js';
5
+ export interface ScriptBridgeOptions {
6
+ pool: Pool;
7
+ registry: ObjectRegistry;
8
+ /** RBAC-decorated object data-access — `this.db.objects` runs through it */
9
+ dataAccess: ObjectDataAccess;
10
+ /** main-process service implementations (`this.services`) */
11
+ services: ScriptServices;
12
+ /** per-call timeout in ms (`queryTimeout`) */
13
+ queryTimeoutMs: number;
14
+ /** non-owner role `this.db.query` switches to for row-level security (RLS) */
15
+ rlsRole: string;
16
+ /** cap on rows a script may fetch per `db.objects(...).find()` call */
17
+ maxObjectsPerQuery: number;
18
+ /** restricted SQL row cap */
19
+ maxRows?: number;
20
+ locale?: Locale;
21
+ }
22
+ /**
23
+ * The main-process executor for sandbox RPCs. Receives a call posted by the
24
+ * worker and runs it against the real engine resources, always with the
25
+ * script author's identity rebuilt as an `RbacSubject` so `withRbac` enforces
26
+ * permissions on every `this.db.objects` call.
27
+ */
28
+ export declare function createScriptRpcExecutor(options: ScriptBridgeOptions): RpcExecutor;
29
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/subsystems/script/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAqB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG9F,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,4EAA4E;IAC5E,UAAU,EAAE,gBAAgB,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,EAAE,cAAc,CAAC;IACzB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CAyFjF"}
@@ -0,0 +1,106 @@
1
+ import { enforceSqlGates, executeRestrictedSql } from '../../runtime/data-access/index.js';
2
+ import { createSqlAnalyzer } from '../../runtime/sql-analyzer/index.js';
3
+ /** time-box an async call — rejects with a plain error after `ms` */
4
+ function withTimeout(promise, ms) {
5
+ return new Promise((resolve, reject) => {
6
+ const timer = setTimeout(() => reject(new Error(`query timeout after ${ms}ms`)), ms);
7
+ promise.then((value) => {
8
+ clearTimeout(timer);
9
+ resolve(value);
10
+ }, (error) => {
11
+ clearTimeout(timer);
12
+ reject(error);
13
+ });
14
+ });
15
+ }
16
+ /**
17
+ * The main-process executor for sandbox RPCs. Receives a call posted by the
18
+ * worker and runs it against the real engine resources, always with the
19
+ * script author's identity rebuilt as an `RbacSubject` so `withRbac` enforces
20
+ * permissions on every `this.db.objects` call.
21
+ */
22
+ export function createScriptRpcExecutor(options) {
23
+ const { pool, registry, dataAccess, services, locale } = options;
24
+ const analyzer = createSqlAnalyzer();
25
+ // warm up the WASM module at engine startup so the first db.query has no cold start
26
+ void analyzer.ensureLoaded();
27
+ async function handleObjects(req, timeoutMs) {
28
+ const [objectName, method, ...rest] = req.args;
29
+ // clamp the rows a script may request per find call (findOne uses limit 1)
30
+ if (method === 'find' && rest[0] !== undefined && typeof rest[0] === 'object' && !Array.isArray(rest[0])) {
31
+ const opts = rest[0];
32
+ const cap = options.maxObjectsPerQuery;
33
+ if (cap !== undefined)
34
+ opts.limit = Math.max(1, Math.min(opts.limit ?? cap, cap));
35
+ }
36
+ const ctx = {
37
+ pool,
38
+ registry,
39
+ subject: { id: req.user.id, roles: req.user.roles, teamId: req.user.teamId },
40
+ locale,
41
+ };
42
+ const fn = dataAccess[method];
43
+ if (typeof fn !== 'function') {
44
+ throw new Error(`unknown db.objects method: ${method}`);
45
+ }
46
+ return withTimeout(fn.call(dataAccess, objectName, ...rest, ctx), timeoutMs);
47
+ }
48
+ async function handleQuery(req, timeoutMs) {
49
+ const [sql, params] = req.args;
50
+ // RBAC gates: read permission + team scope + field exclude over the parsed
51
+ // table/column references (row-level scope is PostgreSQL RLS, see C2 design)
52
+ const analysis = await analyzer.analyzeSelect(sql, locale);
53
+ enforceSqlGates({
54
+ analysis,
55
+ registry,
56
+ roles: req.user.roles,
57
+ teamId: req.user.teamId,
58
+ locale,
59
+ });
60
+ return executeRestrictedSql(pool, sql, params, {
61
+ maxRows: options.maxRows,
62
+ timeoutMs,
63
+ rls: {
64
+ role: options.rlsRole,
65
+ subject: { id: req.user.id, roles: req.user.roles, teamId: req.user.teamId },
66
+ },
67
+ });
68
+ }
69
+ async function handleServices(req, timeoutMs) {
70
+ const args = (req.args[0] ?? {});
71
+ let call;
72
+ switch (req.method) {
73
+ case 'email.send':
74
+ call = services.email.send(args);
75
+ break;
76
+ case 'slack.post':
77
+ call = services.slack.post(args);
78
+ break;
79
+ case 'webhook.call':
80
+ call = services.webhook.call(args);
81
+ break;
82
+ default:
83
+ throw new Error(`unknown service: ${req.method}`);
84
+ }
85
+ return withTimeout(call, timeoutMs);
86
+ }
87
+ return async (req, timeoutMs) => {
88
+ switch (req.ns) {
89
+ case 'objects':
90
+ return handleObjects(req, timeoutMs);
91
+ case 'query':
92
+ return handleQuery(req, timeoutMs);
93
+ case 'services':
94
+ return handleServices(req, timeoutMs);
95
+ case 'console': {
96
+ const level = req.method;
97
+ const logger = console[level] ?? console.log;
98
+ logger(...req.args);
99
+ return undefined;
100
+ }
101
+ default:
102
+ throw new Error(`unknown rpc namespace: ${req.ns}`);
103
+ }
104
+ };
105
+ }
106
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/subsystems/script/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Pool } from 'pg';
2
+ import { type EngineScriptConfig, type Locale, type ObjectRegistry, type ScriptDispatcher, type ScriptServices } from '../../core/index.js';
3
+ import type { ObjectDataAccess } from '../../runtime/data-access/index.js';
4
+ export interface ScriptDispatcherOptions {
5
+ /** path to the project `objects/` directory */
6
+ objectsDir: string;
7
+ registry: ObjectRegistry;
8
+ pool: Pool;
9
+ /** RBAC-decorated data-access used by `this.db.objects` */
10
+ dataAccess: ObjectDataAccess;
11
+ /** main-process service implementations; defaults to webhook-capable stubs */
12
+ services?: ScriptServices;
13
+ config?: EngineScriptConfig;
14
+ locale?: Locale;
15
+ }
16
+ export interface ResolvedScriptConfig {
17
+ timeout: number;
18
+ queryTimeout: number;
19
+ memoryLimit: number;
20
+ maxConcurrentScripts: number;
21
+ /** non-owner role `this.db.query` switches to for row-level security */
22
+ rlsRole: string;
23
+ /** cap on rows a script may fetch per `db.objects(...).find()` call */
24
+ maxObjectsPerQuery: number;
25
+ }
26
+ /** sandbox resource defaults (`weavekit.config.ts → subsystems.script.sandbox`) */
27
+ export declare const SCRIPT_DEFAULTS: {
28
+ readonly timeout: 5000;
29
+ readonly queryTimeout: 2000;
30
+ readonly memoryLimit: number;
31
+ readonly maxConcurrentScripts: 10;
32
+ };
33
+ export declare const RLS_ROLE_DEFAULT = "weavekit_query";
34
+ export declare function resolveScriptConfig(config?: EngineScriptConfig): ResolvedScriptConfig;
35
+ /**
36
+ * Assemble the write-path hook dispatcher.
37
+ *
38
+ * - discovers `objects/<name>/server.js` (only for registered objects)
39
+ * - lazily spawns one sandbox per script on first dispatch
40
+ * - enforces resource limits (timeout / queryTimeout / memory / concurrency)
41
+ * - before-hook errors throw (data-access aborts); after-hook errors are
42
+ * caught by data-access and surfaced as warnings — the dispatcher itself
43
+ * always throws on a hook failure and lets the caller decide
44
+ */
45
+ export declare function createScriptDispatcher(options: ScriptDispatcherOptions): Promise<ScriptDispatcher>;
46
+ //# sourceMappingURL=dispatcher.d.ts.map