beddel 0.2.3 → 1.0.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 (542) hide show
  1. package/README.md +138 -595
  2. package/dist/client.d.ts +10 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +9 -0
  5. package/dist/core/parser.d.ts +25 -0
  6. package/dist/core/parser.d.ts.map +1 -0
  7. package/dist/core/parser.js +31 -0
  8. package/dist/core/variable-resolver.d.ts +23 -0
  9. package/dist/core/variable-resolver.d.ts.map +1 -0
  10. package/dist/core/variable-resolver.js +98 -0
  11. package/dist/core/workflow.d.ts +39 -0
  12. package/dist/core/workflow.d.ts.map +1 -0
  13. package/dist/core/workflow.js +64 -0
  14. package/dist/index.d.ts +14 -36
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +15 -130
  17. package/dist/primitives/index.d.ts +37 -0
  18. package/dist/primitives/index.d.ts.map +1 -0
  19. package/dist/primitives/index.js +72 -0
  20. package/dist/primitives/llm.d.ts +56 -0
  21. package/dist/primitives/llm.d.ts.map +1 -0
  22. package/dist/primitives/llm.js +156 -0
  23. package/dist/primitives/output.d.ts +28 -0
  24. package/dist/primitives/output.d.ts.map +1 -0
  25. package/dist/primitives/output.js +39 -0
  26. package/dist/server/handler.d.ts +7 -0
  27. package/dist/server/handler.d.ts.map +1 -0
  28. package/dist/server/handler.js +55 -0
  29. package/dist/server.d.ts +10 -0
  30. package/dist/server.d.ts.map +1 -0
  31. package/dist/server.js +9 -0
  32. package/dist/tools/index.d.ts +49 -0
  33. package/dist/tools/index.d.ts.map +1 -0
  34. package/dist/tools/index.js +96 -0
  35. package/dist/types/index.d.ts +54 -0
  36. package/dist/types/index.d.ts.map +1 -0
  37. package/dist/types/index.js +5 -0
  38. package/docs/architecture/api-reference.md +307 -0
  39. package/docs/architecture/components.md +246 -0
  40. package/docs/architecture/core-workflows.md +236 -0
  41. package/docs/architecture/high-level-architecture.md +76 -0
  42. package/docs/architecture/index.md +31 -0
  43. package/docs/architecture/source-tree.md +92 -0
  44. package/docs/architecture/tech-stack.md +25 -0
  45. package/docs/prd/epic-list.md +101 -0
  46. package/docs/prd/goals-context.md +23 -0
  47. package/docs/prd/index.md +21 -0
  48. package/docs/prd/requirements.md +25 -0
  49. package/docs/prd/technical-assumptions.md +35 -0
  50. package/package.json +31 -118
  51. package/src/client.ts +18 -0
  52. package/src/core/parser.ts +36 -0
  53. package/src/core/variable-resolver.ts +114 -0
  54. package/src/core/workflow.ts +77 -0
  55. package/src/index.ts +25 -159
  56. package/src/primitives/index.ts +83 -0
  57. package/src/primitives/llm.ts +210 -0
  58. package/src/primitives/output.ts +65 -0
  59. package/src/server/handler.ts +80 -0
  60. package/src/server.ts +10 -0
  61. package/src/tools/index.ts +118 -0
  62. package/src/types/index.ts +62 -0
  63. package/tsconfig.json +27 -0
  64. package/CHANGELOG.md +0 -78
  65. package/LICENSE +0 -21
  66. package/dist/agents/chat/chat.handler.d.ts +0 -12
  67. package/dist/agents/chat/chat.handler.d.ts.map +0 -1
  68. package/dist/agents/chat/chat.handler.js +0 -143
  69. package/dist/agents/chat/chat.handler.js.map +0 -1
  70. package/dist/agents/chat/chat.schema.d.ts +0 -38
  71. package/dist/agents/chat/chat.schema.d.ts.map +0 -1
  72. package/dist/agents/chat/chat.schema.js +0 -31
  73. package/dist/agents/chat/chat.schema.js.map +0 -1
  74. package/dist/agents/chat/chat.types.d.ts +0 -42
  75. package/dist/agents/chat/chat.types.d.ts.map +0 -1
  76. package/dist/agents/chat/chat.types.js +0 -6
  77. package/dist/agents/chat/chat.types.js.map +0 -1
  78. package/dist/agents/chat/chat.yaml +0 -150
  79. package/dist/agents/chat/index.d.ts +0 -16
  80. package/dist/agents/chat/index.d.ts.map +0 -1
  81. package/dist/agents/chat/index.js +0 -21
  82. package/dist/agents/chat/index.js.map +0 -1
  83. package/dist/agents/chromadb/chromadb.handler.d.ts +0 -12
  84. package/dist/agents/chromadb/chromadb.handler.d.ts.map +0 -1
  85. package/dist/agents/chromadb/chromadb.handler.js +0 -139
  86. package/dist/agents/chromadb/chromadb.handler.js.map +0 -1
  87. package/dist/agents/chromadb/chromadb.schema.d.ts +0 -36
  88. package/dist/agents/chromadb/chromadb.schema.d.ts.map +0 -1
  89. package/dist/agents/chromadb/chromadb.schema.js +0 -33
  90. package/dist/agents/chromadb/chromadb.schema.js.map +0 -1
  91. package/dist/agents/chromadb/chromadb.types.d.ts +0 -49
  92. package/dist/agents/chromadb/chromadb.types.d.ts.map +0 -1
  93. package/dist/agents/chromadb/chromadb.types.js +0 -6
  94. package/dist/agents/chromadb/chromadb.types.js.map +0 -1
  95. package/dist/agents/chromadb/chromadb.yaml +0 -128
  96. package/dist/agents/chromadb/index.d.ts +0 -15
  97. package/dist/agents/chromadb/index.d.ts.map +0 -1
  98. package/dist/agents/chromadb/index.js +0 -20
  99. package/dist/agents/chromadb/index.js.map +0 -1
  100. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.d.ts +0 -8
  101. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.d.ts.map +0 -1
  102. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.js +0 -58
  103. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.js.map +0 -1
  104. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.d.ts +0 -22
  105. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.d.ts.map +0 -1
  106. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.js +0 -20
  107. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.js.map +0 -1
  108. package/dist/agents/gemini-vectorize/gemini-vectorize.types.d.ts +0 -32
  109. package/dist/agents/gemini-vectorize/gemini-vectorize.types.d.ts.map +0 -1
  110. package/dist/agents/gemini-vectorize/gemini-vectorize.types.js +0 -6
  111. package/dist/agents/gemini-vectorize/gemini-vectorize.types.js.map +0 -1
  112. package/dist/agents/gemini-vectorize/gemini-vectorize.yaml +0 -84
  113. package/dist/agents/gemini-vectorize/index.d.ts +0 -15
  114. package/dist/agents/gemini-vectorize/index.d.ts.map +0 -1
  115. package/dist/agents/gemini-vectorize/index.js +0 -20
  116. package/dist/agents/gemini-vectorize/index.js.map +0 -1
  117. package/dist/agents/gitmcp/gitmcp.handler.d.ts +0 -12
  118. package/dist/agents/gitmcp/gitmcp.handler.d.ts.map +0 -1
  119. package/dist/agents/gitmcp/gitmcp.handler.js +0 -95
  120. package/dist/agents/gitmcp/gitmcp.handler.js.map +0 -1
  121. package/dist/agents/gitmcp/gitmcp.schema.d.ts +0 -17
  122. package/dist/agents/gitmcp/gitmcp.schema.d.ts.map +0 -1
  123. package/dist/agents/gitmcp/gitmcp.schema.js +0 -18
  124. package/dist/agents/gitmcp/gitmcp.schema.js.map +0 -1
  125. package/dist/agents/gitmcp/gitmcp.types.d.ts +0 -31
  126. package/dist/agents/gitmcp/gitmcp.types.d.ts.map +0 -1
  127. package/dist/agents/gitmcp/gitmcp.types.js +0 -6
  128. package/dist/agents/gitmcp/gitmcp.types.js.map +0 -1
  129. package/dist/agents/gitmcp/gitmcp.yaml +0 -71
  130. package/dist/agents/gitmcp/index.d.ts +0 -16
  131. package/dist/agents/gitmcp/index.d.ts.map +0 -1
  132. package/dist/agents/gitmcp/index.js +0 -21
  133. package/dist/agents/gitmcp/index.js.map +0 -1
  134. package/dist/agents/image/image.handler.d.ts +0 -8
  135. package/dist/agents/image/image.handler.d.ts.map +0 -1
  136. package/dist/agents/image/image.handler.js +0 -66
  137. package/dist/agents/image/image.handler.js.map +0 -1
  138. package/dist/agents/image/image.schema.d.ts +0 -29
  139. package/dist/agents/image/image.schema.d.ts.map +0 -1
  140. package/dist/agents/image/image.schema.js +0 -26
  141. package/dist/agents/image/image.schema.js.map +0 -1
  142. package/dist/agents/image/image.types.d.ts +0 -42
  143. package/dist/agents/image/image.types.d.ts.map +0 -1
  144. package/dist/agents/image/image.types.js +0 -6
  145. package/dist/agents/image/image.types.js.map +0 -1
  146. package/dist/agents/image/image.yaml +0 -86
  147. package/dist/agents/image/index.d.ts +0 -14
  148. package/dist/agents/image/index.d.ts.map +0 -1
  149. package/dist/agents/image/index.js +0 -19
  150. package/dist/agents/image/index.js.map +0 -1
  151. package/dist/agents/index.d.ts +0 -95
  152. package/dist/agents/index.d.ts.map +0 -1
  153. package/dist/agents/index.js +0 -76
  154. package/dist/agents/index.js.map +0 -1
  155. package/dist/agents/joker/index.d.ts +0 -14
  156. package/dist/agents/joker/index.d.ts.map +0 -1
  157. package/dist/agents/joker/index.js +0 -19
  158. package/dist/agents/joker/index.js.map +0 -1
  159. package/dist/agents/joker/joker.handler.d.ts +0 -8
  160. package/dist/agents/joker/joker.handler.d.ts.map +0 -1
  161. package/dist/agents/joker/joker.handler.js +0 -48
  162. package/dist/agents/joker/joker.handler.js.map +0 -1
  163. package/dist/agents/joker/joker.schema.d.ts +0 -12
  164. package/dist/agents/joker/joker.schema.d.ts.map +0 -1
  165. package/dist/agents/joker/joker.schema.js +0 -13
  166. package/dist/agents/joker/joker.schema.js.map +0 -1
  167. package/dist/agents/joker/joker.types.d.ts +0 -35
  168. package/dist/agents/joker/joker.types.d.ts.map +0 -1
  169. package/dist/agents/joker/joker.types.js +0 -6
  170. package/dist/agents/joker/joker.types.js.map +0 -1
  171. package/dist/agents/joker/joker.yaml +0 -47
  172. package/dist/agents/mcp-tool/index.d.ts +0 -14
  173. package/dist/agents/mcp-tool/index.d.ts.map +0 -1
  174. package/dist/agents/mcp-tool/index.js +0 -19
  175. package/dist/agents/mcp-tool/index.js.map +0 -1
  176. package/dist/agents/mcp-tool/mcp-tool.handler.d.ts +0 -12
  177. package/dist/agents/mcp-tool/mcp-tool.handler.d.ts.map +0 -1
  178. package/dist/agents/mcp-tool/mcp-tool.handler.js +0 -116
  179. package/dist/agents/mcp-tool/mcp-tool.handler.js.map +0 -1
  180. package/dist/agents/mcp-tool/mcp-tool.schema.d.ts +0 -19
  181. package/dist/agents/mcp-tool/mcp-tool.schema.d.ts.map +0 -1
  182. package/dist/agents/mcp-tool/mcp-tool.schema.js +0 -20
  183. package/dist/agents/mcp-tool/mcp-tool.schema.js.map +0 -1
  184. package/dist/agents/mcp-tool/mcp-tool.types.d.ts +0 -31
  185. package/dist/agents/mcp-tool/mcp-tool.types.d.ts.map +0 -1
  186. package/dist/agents/mcp-tool/mcp-tool.types.js +0 -6
  187. package/dist/agents/mcp-tool/mcp-tool.types.js.map +0 -1
  188. package/dist/agents/mcp-tool/mcp-tool.yaml +0 -71
  189. package/dist/agents/rag/index.d.ts +0 -15
  190. package/dist/agents/rag/index.d.ts.map +0 -1
  191. package/dist/agents/rag/index.js +0 -20
  192. package/dist/agents/rag/index.js.map +0 -1
  193. package/dist/agents/rag/rag.handler.d.ts +0 -8
  194. package/dist/agents/rag/rag.handler.d.ts.map +0 -1
  195. package/dist/agents/rag/rag.handler.js +0 -101
  196. package/dist/agents/rag/rag.handler.js.map +0 -1
  197. package/dist/agents/rag/rag.schema.d.ts +0 -27
  198. package/dist/agents/rag/rag.schema.d.ts.map +0 -1
  199. package/dist/agents/rag/rag.schema.js +0 -24
  200. package/dist/agents/rag/rag.schema.js.map +0 -1
  201. package/dist/agents/rag/rag.types.d.ts +0 -47
  202. package/dist/agents/rag/rag.types.d.ts.map +0 -1
  203. package/dist/agents/rag/rag.types.js +0 -6
  204. package/dist/agents/rag/rag.types.js.map +0 -1
  205. package/dist/agents/rag/rag.yaml +0 -89
  206. package/dist/agents/registry/agentRegistry.d.ts +0 -117
  207. package/dist/agents/registry/agentRegistry.d.ts.map +0 -1
  208. package/dist/agents/registry/agentRegistry.js +0 -551
  209. package/dist/agents/registry/agentRegistry.js.map +0 -1
  210. package/dist/agents/registry/index.d.ts +0 -6
  211. package/dist/agents/registry/index.d.ts.map +0 -1
  212. package/dist/agents/registry/index.js +0 -10
  213. package/dist/agents/registry/index.js.map +0 -1
  214. package/dist/agents/translator/index.d.ts +0 -14
  215. package/dist/agents/translator/index.d.ts.map +0 -1
  216. package/dist/agents/translator/index.js +0 -19
  217. package/dist/agents/translator/index.js.map +0 -1
  218. package/dist/agents/translator/translator.handler.d.ts +0 -8
  219. package/dist/agents/translator/translator.handler.d.ts.map +0 -1
  220. package/dist/agents/translator/translator.handler.js +0 -83
  221. package/dist/agents/translator/translator.handler.js.map +0 -1
  222. package/dist/agents/translator/translator.schema.d.ts +0 -27
  223. package/dist/agents/translator/translator.schema.d.ts.map +0 -1
  224. package/dist/agents/translator/translator.schema.js +0 -28
  225. package/dist/agents/translator/translator.schema.js.map +0 -1
  226. package/dist/agents/translator/translator.types.d.ts +0 -40
  227. package/dist/agents/translator/translator.types.d.ts.map +0 -1
  228. package/dist/agents/translator/translator.types.js +0 -6
  229. package/dist/agents/translator/translator.types.js.map +0 -1
  230. package/dist/agents/translator/translator.yaml +0 -80
  231. package/dist/audit/auditTrail.d.ts +0 -55
  232. package/dist/audit/auditTrail.d.ts.map +0 -1
  233. package/dist/audit/auditTrail.js +0 -93
  234. package/dist/audit/auditTrail.js.map +0 -1
  235. package/dist/client/index.d.ts +0 -89
  236. package/dist/client/index.d.ts.map +0 -1
  237. package/dist/client/index.js +0 -93
  238. package/dist/client/index.js.map +0 -1
  239. package/dist/client/types.d.ts +0 -17
  240. package/dist/client/types.d.ts.map +0 -1
  241. package/dist/client/types.js +0 -7
  242. package/dist/client/types.js.map +0 -1
  243. package/dist/compliance/gdprEngine.d.ts +0 -44
  244. package/dist/compliance/gdprEngine.d.ts.map +0 -1
  245. package/dist/compliance/gdprEngine.js +0 -178
  246. package/dist/compliance/gdprEngine.js.map +0 -1
  247. package/dist/compliance/lgpdEngine.d.ts +0 -51
  248. package/dist/compliance/lgpdEngine.d.ts.map +0 -1
  249. package/dist/compliance/lgpdEngine.js +0 -221
  250. package/dist/compliance/lgpdEngine.js.map +0 -1
  251. package/dist/config.d.ts +0 -78
  252. package/dist/config.d.ts.map +0 -1
  253. package/dist/config.js +0 -77
  254. package/dist/config.js.map +0 -1
  255. package/dist/errors.d.ts +0 -17
  256. package/dist/errors.d.ts.map +0 -1
  257. package/dist/errors.js +0 -40
  258. package/dist/errors.js.map +0 -1
  259. package/dist/firebase/tenantManager.d.ts +0 -116
  260. package/dist/firebase/tenantManager.d.ts.map +0 -1
  261. package/dist/firebase/tenantManager.js +0 -444
  262. package/dist/firebase/tenantManager.js.map +0 -1
  263. package/dist/index.js.map +0 -1
  264. package/dist/integration/secure-yaml-runtime.d.ts +0 -68
  265. package/dist/integration/secure-yaml-runtime.d.ts.map +0 -1
  266. package/dist/integration/secure-yaml-runtime.js +0 -245
  267. package/dist/integration/secure-yaml-runtime.js.map +0 -1
  268. package/dist/parser/secure-yaml-parser.d.ts +0 -62
  269. package/dist/parser/secure-yaml-parser.d.ts.map +0 -1
  270. package/dist/parser/secure-yaml-parser.js +0 -234
  271. package/dist/parser/secure-yaml-parser.js.map +0 -1
  272. package/dist/performance/autoscaling.d.ts +0 -100
  273. package/dist/performance/autoscaling.d.ts.map +0 -1
  274. package/dist/performance/autoscaling.js +0 -339
  275. package/dist/performance/autoscaling.js.map +0 -1
  276. package/dist/performance/benchmark.d.ts +0 -104
  277. package/dist/performance/benchmark.d.ts.map +0 -1
  278. package/dist/performance/benchmark.js +0 -514
  279. package/dist/performance/benchmark.js.map +0 -1
  280. package/dist/performance/index.d.ts +0 -14
  281. package/dist/performance/index.d.ts.map +0 -1
  282. package/dist/performance/index.js +0 -35
  283. package/dist/performance/index.js.map +0 -1
  284. package/dist/performance/monitor.d.ts +0 -126
  285. package/dist/performance/monitor.d.ts.map +0 -1
  286. package/dist/performance/monitor.js +0 -324
  287. package/dist/performance/monitor.js.map +0 -1
  288. package/dist/performance/streaming.d.ts +0 -82
  289. package/dist/performance/streaming.d.ts.map +0 -1
  290. package/dist/performance/streaming.js +0 -287
  291. package/dist/performance/streaming.js.map +0 -1
  292. package/dist/runtime/audit.d.ts +0 -240
  293. package/dist/runtime/audit.d.ts.map +0 -1
  294. package/dist/runtime/audit.js +0 -641
  295. package/dist/runtime/audit.js.map +0 -1
  296. package/dist/runtime/declarativeAgentRuntime.d.ts +0 -92
  297. package/dist/runtime/declarativeAgentRuntime.d.ts.map +0 -1
  298. package/dist/runtime/declarativeAgentRuntime.js +0 -512
  299. package/dist/runtime/declarativeAgentRuntime.js.map +0 -1
  300. package/dist/runtime/index.d.ts +0 -12
  301. package/dist/runtime/index.d.ts.map +0 -1
  302. package/dist/runtime/index.js +0 -33
  303. package/dist/runtime/index.js.map +0 -1
  304. package/dist/runtime/isolatedRuntime.d.ts +0 -119
  305. package/dist/runtime/isolatedRuntime.d.ts.map +0 -1
  306. package/dist/runtime/isolatedRuntime.js +0 -425
  307. package/dist/runtime/isolatedRuntime.js.map +0 -1
  308. package/dist/runtime/schemaCompiler.d.ts +0 -35
  309. package/dist/runtime/schemaCompiler.d.ts.map +0 -1
  310. package/dist/runtime/schemaCompiler.js +0 -152
  311. package/dist/runtime/schemaCompiler.js.map +0 -1
  312. package/dist/runtime/simpleRuntime.d.ts +0 -57
  313. package/dist/runtime/simpleRuntime.d.ts.map +0 -1
  314. package/dist/runtime/simpleRuntime.js +0 -187
  315. package/dist/runtime/simpleRuntime.js.map +0 -1
  316. package/dist/runtime/workflowExecutor.d.ts +0 -30
  317. package/dist/runtime/workflowExecutor.d.ts.map +0 -1
  318. package/dist/runtime/workflowExecutor.js +0 -70
  319. package/dist/runtime/workflowExecutor.js.map +0 -1
  320. package/dist/security/dashboard.d.ts +0 -89
  321. package/dist/security/dashboard.d.ts.map +0 -1
  322. package/dist/security/dashboard.js +0 -300
  323. package/dist/security/dashboard.js.map +0 -1
  324. package/dist/security/hardening.d.ts +0 -130
  325. package/dist/security/hardening.d.ts.map +0 -1
  326. package/dist/security/hardening.js +0 -414
  327. package/dist/security/hardening.js.map +0 -1
  328. package/dist/security/index.d.ts +0 -128
  329. package/dist/security/index.d.ts.map +0 -1
  330. package/dist/security/index.js +0 -353
  331. package/dist/security/index.js.map +0 -1
  332. package/dist/security/monitor.d.ts +0 -88
  333. package/dist/security/monitor.d.ts.map +0 -1
  334. package/dist/security/monitor.js +0 -356
  335. package/dist/security/monitor.js.map +0 -1
  336. package/dist/security/scanner.d.ts +0 -104
  337. package/dist/security/scanner.d.ts.map +0 -1
  338. package/dist/security/scanner.js +0 -298
  339. package/dist/security/scanner.js.map +0 -1
  340. package/dist/security/score.d.ts +0 -150
  341. package/dist/security/score.d.ts.map +0 -1
  342. package/dist/security/score.js +0 -983
  343. package/dist/security/score.js.map +0 -1
  344. package/dist/security/threatDetector.d.ts +0 -39
  345. package/dist/security/threatDetector.d.ts.map +0 -1
  346. package/dist/security/threatDetector.js +0 -354
  347. package/dist/security/threatDetector.js.map +0 -1
  348. package/dist/security/validation.d.ts +0 -69
  349. package/dist/security/validation.d.ts.map +0 -1
  350. package/dist/security/validation.js +0 -286
  351. package/dist/security/validation.js.map +0 -1
  352. package/dist/server/api/clientsRoute.d.ts +0 -9
  353. package/dist/server/api/clientsRoute.d.ts.map +0 -1
  354. package/dist/server/api/clientsRoute.js +0 -71
  355. package/dist/server/api/clientsRoute.js.map +0 -1
  356. package/dist/server/api/endpointsRoute.d.ts +0 -8
  357. package/dist/server/api/endpointsRoute.d.ts.map +0 -1
  358. package/dist/server/api/endpointsRoute.js +0 -76
  359. package/dist/server/api/endpointsRoute.js.map +0 -1
  360. package/dist/server/api/graphql.d.ts +0 -9
  361. package/dist/server/api/graphql.d.ts.map +0 -1
  362. package/dist/server/api/graphql.js +0 -222
  363. package/dist/server/api/graphql.js.map +0 -1
  364. package/dist/server/errors.d.ts +0 -19
  365. package/dist/server/errors.d.ts.map +0 -1
  366. package/dist/server/errors.js +0 -42
  367. package/dist/server/errors.js.map +0 -1
  368. package/dist/server/index.d.ts +0 -7
  369. package/dist/server/index.d.ts.map +0 -1
  370. package/dist/server/index.js +0 -24
  371. package/dist/server/index.js.map +0 -1
  372. package/dist/server/kvStore.d.ts +0 -27
  373. package/dist/server/kvStore.d.ts.map +0 -1
  374. package/dist/server/kvStore.js +0 -128
  375. package/dist/server/kvStore.js.map +0 -1
  376. package/dist/server/runtimeSecurity.d.ts +0 -28
  377. package/dist/server/runtimeSecurity.d.ts.map +0 -1
  378. package/dist/server/runtimeSecurity.js +0 -85
  379. package/dist/server/runtimeSecurity.js.map +0 -1
  380. package/dist/server/types.d.ts +0 -53
  381. package/dist/server/types.d.ts.map +0 -1
  382. package/dist/server/types.js +0 -8
  383. package/dist/server/types.js.map +0 -1
  384. package/dist/shared/index.d.ts +0 -7
  385. package/dist/shared/index.d.ts.map +0 -1
  386. package/dist/shared/index.js +0 -23
  387. package/dist/shared/index.js.map +0 -1
  388. package/dist/shared/types/agent.types.d.ts +0 -50
  389. package/dist/shared/types/agent.types.d.ts.map +0 -1
  390. package/dist/shared/types/agent.types.js +0 -7
  391. package/dist/shared/types/agent.types.js.map +0 -1
  392. package/dist/shared/types/execution.types.d.ts +0 -42
  393. package/dist/shared/types/execution.types.d.ts.map +0 -1
  394. package/dist/shared/types/execution.types.js +0 -7
  395. package/dist/shared/types/execution.types.js.map +0 -1
  396. package/dist/shared/types/index.d.ts +0 -7
  397. package/dist/shared/types/index.d.ts.map +0 -1
  398. package/dist/shared/types/index.js +0 -23
  399. package/dist/shared/types/index.js.map +0 -1
  400. package/dist/shared/types/schema.types.d.ts +0 -52
  401. package/dist/shared/types/schema.types.d.ts.map +0 -1
  402. package/dist/shared/types/schema.types.js +0 -7
  403. package/dist/shared/types/schema.types.js.map +0 -1
  404. package/dist/shared/utils/index.d.ts +0 -5
  405. package/dist/shared/utils/index.d.ts.map +0 -1
  406. package/dist/shared/utils/index.js +0 -21
  407. package/dist/shared/utils/index.js.map +0 -1
  408. package/dist/shared/utils/validation.d.ts +0 -42
  409. package/dist/shared/utils/validation.d.ts.map +0 -1
  410. package/dist/shared/utils/validation.js +0 -93
  411. package/dist/shared/utils/validation.js.map +0 -1
  412. package/dist/tenant/TenantManager.d.ts +0 -152
  413. package/dist/tenant/TenantManager.d.ts.map +0 -1
  414. package/dist/tenant/TenantManager.js +0 -392
  415. package/dist/tenant/TenantManager.js.map +0 -1
  416. package/dist/tenant/index.d.ts +0 -47
  417. package/dist/tenant/index.d.ts.map +0 -1
  418. package/dist/tenant/index.js +0 -74
  419. package/dist/tenant/index.js.map +0 -1
  420. package/dist/tenant/interfaces.d.ts +0 -170
  421. package/dist/tenant/interfaces.d.ts.map +0 -1
  422. package/dist/tenant/interfaces.js +0 -67
  423. package/dist/tenant/interfaces.js.map +0 -1
  424. package/dist/tenant/providerFactory.d.ts +0 -43
  425. package/dist/tenant/providerFactory.d.ts.map +0 -1
  426. package/dist/tenant/providerFactory.js +0 -70
  427. package/dist/tenant/providerFactory.js.map +0 -1
  428. package/dist/tenant/providerRegistry.d.ts +0 -47
  429. package/dist/tenant/providerRegistry.d.ts.map +0 -1
  430. package/dist/tenant/providerRegistry.js +0 -79
  431. package/dist/tenant/providerRegistry.js.map +0 -1
  432. package/dist/tenant/providers/FirebaseTenantProvider.d.ts +0 -41
  433. package/dist/tenant/providers/FirebaseTenantProvider.d.ts.map +0 -1
  434. package/dist/tenant/providers/FirebaseTenantProvider.js +0 -290
  435. package/dist/tenant/providers/FirebaseTenantProvider.js.map +0 -1
  436. package/dist/tenant/providers/InMemoryTenantProvider.d.ts +0 -18
  437. package/dist/tenant/providers/InMemoryTenantProvider.d.ts.map +0 -1
  438. package/dist/tenant/providers/InMemoryTenantProvider.js +0 -137
  439. package/dist/tenant/providers/InMemoryTenantProvider.js.map +0 -1
  440. package/dist/types/executionContext.d.ts +0 -16
  441. package/dist/types/executionContext.d.ts.map +0 -1
  442. package/dist/types/executionContext.js +0 -3
  443. package/dist/types/executionContext.js.map +0 -1
  444. package/src/agents/chat/chat.handler.ts +0 -209
  445. package/src/agents/chat/chat.schema.ts +0 -33
  446. package/src/agents/chat/chat.types.ts +0 -46
  447. package/src/agents/chat/chat.yaml +0 -150
  448. package/src/agents/chat/index.ts +0 -21
  449. package/src/agents/chromadb/chromadb.handler.ts +0 -130
  450. package/src/agents/chromadb/chromadb.schema.ts +0 -35
  451. package/src/agents/chromadb/chromadb.types.ts +0 -52
  452. package/src/agents/chromadb/chromadb.yaml +0 -128
  453. package/src/agents/chromadb/index.ts +0 -20
  454. package/src/agents/gemini-vectorize/gemini-vectorize.handler.ts +0 -72
  455. package/src/agents/gemini-vectorize/gemini-vectorize.schema.ts +0 -22
  456. package/src/agents/gemini-vectorize/gemini-vectorize.types.ts +0 -34
  457. package/src/agents/gemini-vectorize/gemini-vectorize.yaml +0 -84
  458. package/src/agents/gemini-vectorize/index.ts +0 -20
  459. package/src/agents/gitmcp/gitmcp.handler.ts +0 -122
  460. package/src/agents/gitmcp/gitmcp.schema.ts +0 -20
  461. package/src/agents/gitmcp/gitmcp.types.ts +0 -33
  462. package/src/agents/gitmcp/gitmcp.yaml +0 -71
  463. package/src/agents/gitmcp/index.ts +0 -21
  464. package/src/agents/image/image.handler.ts +0 -82
  465. package/src/agents/image/image.schema.ts +0 -28
  466. package/src/agents/image/image.types.ts +0 -45
  467. package/src/agents/image/image.yaml +0 -86
  468. package/src/agents/image/index.ts +0 -19
  469. package/src/agents/index.ts +0 -59
  470. package/src/agents/joker/index.ts +0 -19
  471. package/src/agents/joker/joker.handler.ts +0 -60
  472. package/src/agents/joker/joker.schema.ts +0 -15
  473. package/src/agents/joker/joker.types.ts +0 -37
  474. package/src/agents/joker/joker.yaml +0 -47
  475. package/src/agents/mcp-tool/index.ts +0 -19
  476. package/src/agents/mcp-tool/mcp-tool.handler.ts +0 -112
  477. package/src/agents/mcp-tool/mcp-tool.schema.ts +0 -22
  478. package/src/agents/mcp-tool/mcp-tool.types.ts +0 -33
  479. package/src/agents/mcp-tool/mcp-tool.yaml +0 -71
  480. package/src/agents/rag/index.ts +0 -20
  481. package/src/agents/rag/rag.handler.ts +0 -119
  482. package/src/agents/rag/rag.schema.ts +0 -26
  483. package/src/agents/rag/rag.types.ts +0 -51
  484. package/src/agents/rag/rag.yaml +0 -89
  485. package/src/agents/registry/agentRegistry.ts +0 -598
  486. package/src/agents/registry/index.ts +0 -6
  487. package/src/agents/translator/index.ts +0 -19
  488. package/src/agents/translator/translator.handler.ts +0 -99
  489. package/src/agents/translator/translator.schema.ts +0 -30
  490. package/src/agents/translator/translator.types.ts +0 -42
  491. package/src/agents/translator/translator.yaml +0 -80
  492. package/src/audit/auditTrail.ts +0 -134
  493. package/src/client/index.ts +0 -53
  494. package/src/client/types.ts +0 -38
  495. package/src/compliance/gdprEngine.ts +0 -209
  496. package/src/compliance/lgpdEngine.ts +0 -268
  497. package/src/config.ts +0 -179
  498. package/src/errors.ts +0 -35
  499. package/src/integration/secure-yaml-runtime.ts +0 -341
  500. package/src/parser/secure-yaml-parser.ts +0 -273
  501. package/src/performance/autoscaling.ts +0 -495
  502. package/src/performance/benchmark.ts +0 -644
  503. package/src/performance/index.ts +0 -34
  504. package/src/performance/monitor.ts +0 -469
  505. package/src/performance/streaming.ts +0 -317
  506. package/src/runtime/audit.ts +0 -907
  507. package/src/runtime/declarativeAgentRuntime.ts +0 -772
  508. package/src/runtime/index.ts +0 -31
  509. package/src/runtime/isolatedRuntime.ts +0 -572
  510. package/src/runtime/schemaCompiler.ts +0 -228
  511. package/src/runtime/simpleRuntime.ts +0 -201
  512. package/src/runtime/workflowExecutor.ts +0 -94
  513. package/src/security/dashboard.ts +0 -462
  514. package/src/security/hardening.ts +0 -560
  515. package/src/security/index.ts +0 -439
  516. package/src/security/monitor.ts +0 -490
  517. package/src/security/scanner.ts +0 -368
  518. package/src/security/score.ts +0 -1138
  519. package/src/security/threatDetector.ts +0 -481
  520. package/src/security/validation.ts +0 -365
  521. package/src/server/api/clientsRoute.ts +0 -92
  522. package/src/server/api/endpointsRoute.ts +0 -97
  523. package/src/server/api/graphql.ts +0 -284
  524. package/src/server/errors.ts +0 -38
  525. package/src/server/index.ts +0 -6
  526. package/src/server/kvStore.ts +0 -152
  527. package/src/server/runtimeSecurity.ts +0 -102
  528. package/src/server/types.ts +0 -60
  529. package/src/shared/index.ts +0 -7
  530. package/src/shared/types/agent.types.ts +0 -80
  531. package/src/shared/types/execution.types.ts +0 -45
  532. package/src/shared/types/index.ts +0 -7
  533. package/src/shared/types/schema.types.ts +0 -55
  534. package/src/shared/utils/index.ts +0 -5
  535. package/src/shared/utils/validation.ts +0 -100
  536. package/src/tenant/TenantManager.ts +0 -488
  537. package/src/tenant/index.ts +0 -101
  538. package/src/tenant/interfaces.ts +0 -231
  539. package/src/tenant/providerFactory.ts +0 -75
  540. package/src/tenant/providerRegistry.ts +0 -86
  541. package/src/tenant/providers/InMemoryTenantProvider.ts +0 -168
  542. package/src/types/executionContext.ts +0 -16
@@ -1,31 +0,0 @@
1
- /**
2
- * Runtime Module - Server-only exports
3
- *
4
- * This module provides the declarative agent runtime and workflow execution.
5
- * All exports in this module are server-only.
6
- */
7
-
8
- // Main runtime exports
9
- export { DeclarativeAgentInterpreter, declarativeInterpreter } from './declarativeAgentRuntime';
10
- export type { YamlAgentDefinition, YamlAgentInterpreterOptions, YamlExecutionResult } from './declarativeAgentRuntime';
11
-
12
- // Workflow executor exports
13
- export {
14
- executeWorkflowStep,
15
- getAvailableStepTypes,
16
- isStepTypeSupported,
17
- // Individual handlers for direct use
18
- executeJokeHandler,
19
- executeTranslationHandler,
20
- executeImageHandler,
21
- executeMcpToolHandler,
22
- executeVectorizeHandler,
23
- executeChromaDBHandler,
24
- executeGitMcpHandler,
25
- executeRagHandler,
26
- executeChatHandler,
27
- } from './workflowExecutor';
28
-
29
- // Schema compiler exports
30
- export { DeclarativeSchemaCompiler, DeclarativeSchemaValidationError } from './schemaCompiler';
31
- export type { DeclarativeSchemaPhase } from './schemaCompiler';
@@ -1,572 +0,0 @@
1
- /**
2
- * Isolated Runtime Manager - Isolated VM v5 Implementation
3
- * Provides ultra-secure isolated execution environment with zero-trust architecture
4
- */
5
- import * as ivm from "isolated-vm";
6
- import {
7
- runtimeConfig,
8
- securityProfiles,
9
- RuntimeConfig,
10
- SecurityProfile,
11
- } from "../config";
12
- import { EventEmitter } from "events";
13
- import * as crypto from "crypto";
14
- import { SecurityScanner } from "../security/scanner";
15
-
16
- export interface RuntimeContext {
17
- isolate: ivm.Isolate;
18
- context: ivm.Context;
19
- jail: ivm.Reference;
20
- executionCount: number;
21
- createdAt: Date;
22
- lastUsedAt: Date;
23
- memoryUsage: number;
24
- securityProfile: SecurityProfile;
25
- }
26
-
27
- export interface ExecutionResult<T = any> {
28
- success: boolean;
29
- result?: T;
30
- error?: Error;
31
- executionTime: number;
32
- memoryUsed: number;
33
- auditHash?: string;
34
- timestamp: Date;
35
- securityScore?: number;
36
- warnings?: string[];
37
- }
38
-
39
- export interface ExecutionOptions {
40
- code: string;
41
- context?: Record<string, any>;
42
- securityProfile?: string;
43
- timeout?: number;
44
- memoryLimit?: number;
45
- tenantId?: string;
46
- auditData?: any;
47
- scanForSecurity?: boolean;
48
- }
49
-
50
- export class IsolatedRuntimeError extends Error {
51
- constructor(
52
- message: string,
53
- public readonly code: string,
54
- public readonly context?: any
55
- ) {
56
- super(message);
57
- this.name = "IsolatedRuntimeError";
58
- }
59
- }
60
-
61
- export class IsolatedRuntimeManager extends EventEmitter {
62
- private isolates: Map<string, RuntimeContext> = new Map();
63
- private pool: RuntimeContext[] = [];
64
- private activeExecutions: Map<string, Promise<ExecutionResult>> = new Map();
65
- private metrics: Map<string, number[]> = new Map();
66
-
67
- private readonly maxPoolSize: number;
68
- private readonly minPoolSize: number;
69
- private readonly cleanupInterval: NodeJS.Timeout;
70
-
71
- constructor(private config: RuntimeConfig = runtimeConfig) {
72
- super();
73
- this.maxPoolSize = config.maxPoolSize;
74
- this.minPoolSize = config.minPoolSize;
75
-
76
- // Initialize pool with minimum isolates
77
- this.initializePool();
78
-
79
- // Setup periodic cleanup
80
- this.cleanupInterval = setInterval(
81
- () => this.cleanupPool(),
82
- config.metricsInterval
83
- );
84
- }
85
-
86
- /**
87
- * Initialize the isolate pool with minimum required isolates
88
- */
89
- private async initializePool(): Promise<void> {
90
- const profiles = Object.keys(securityProfiles);
91
-
92
- for (let i = 0; i < this.minPoolSize; i++) {
93
- const profileName = profiles[i % profiles.length];
94
- const securityProfile = securityProfiles[profileName];
95
-
96
- try {
97
- const runtimeContext = await this.createIsolate(securityProfile);
98
- this.pool.push(runtimeContext);
99
- } catch (error) {
100
- this.emit(
101
- "error",
102
- new IsolatedRuntimeError(
103
- `Failed to create isolate for profile ${profileName}`,
104
- "POOL_INIT_ERROR",
105
- { error, profileName }
106
- )
107
- );
108
- }
109
- }
110
-
111
- this.emit("pool-initialized", {
112
- poolSize: this.pool.length,
113
- profiles: profiles,
114
- });
115
- }
116
-
117
- /**
118
- * Create a new isolated context with specified security profile
119
- */
120
- private async createIsolate(
121
- securityProfile: SecurityProfile
122
- ): Promise<RuntimeContext> {
123
- const startTime = Date.now();
124
-
125
- try {
126
- // Create isolate with memory limit
127
- const isolate = new ivm.Isolate({
128
- memoryLimit: securityProfile.memoryLimit,
129
- });
130
-
131
- // Create context with security restrictions
132
- const context = await isolate.createContext();
133
-
134
- // Setup jail environment
135
- const jail = context.global;
136
-
137
- // Remove access to dangerous functions
138
- await jail.set("global", jail.derefInto());
139
- await jail.set("_globalThis", jail.derefInto());
140
- await jail.set("require", new ivm.Reference(undefined));
141
- await jail.set("eval", new ivm.Reference(undefined));
142
- await jail.set("Function", new ivm.Reference(undefined));
143
- await jail.set("process", new ivm.Reference(undefined));
144
-
145
- // Add safe globals
146
- await jail.set("console", {
147
- log: (message: string) => this.emit("log", { message, level: "info" }),
148
- error: (message: string) =>
149
- this.emit("log", { message, level: "error" }),
150
- warn: (message: string) => this.emit("log", { message, level: "warn" }),
151
- info: (message: string) => this.emit("log", { message, level: "info" }),
152
- });
153
-
154
- // Add limited utility functions
155
- await jail.set("setTimeout", undefined); // Disable timers
156
- await jail.set("setInterval", undefined);
157
- await jail.set("clearTimeout", undefined);
158
- await jail.set("clearInterval", undefined);
159
-
160
- // Add allowed modules if any
161
- if (securityProfile.allowedModules.length > 0) {
162
- const allowedModules: Record<string, any> = {};
163
-
164
- for (const moduleName of securityProfile.allowedModules) {
165
- try {
166
- // Only allow specific safe modules
167
- if (["lodash", "moment", "uuid"].includes(moduleName)) {
168
- allowedModules[moduleName] = require(moduleName);
169
- }
170
- } catch (error) {
171
- // Module not available, continue
172
- }
173
- }
174
-
175
- await jail.set("modules", allowedModules);
176
- }
177
-
178
- const creationTime = Date.now() - startTime;
179
-
180
- return {
181
- isolate,
182
- context,
183
- jail,
184
- executionCount: 0,
185
- createdAt: new Date(),
186
- lastUsedAt: new Date(),
187
- memoryUsage: 0,
188
- securityProfile,
189
- };
190
- } catch (error) {
191
- throw new IsolatedRuntimeError(
192
- "Failed to create isolated context",
193
- "ISOLATE_CREATION_ERROR",
194
- { error, securityProfile, creationTime: Date.now() - startTime }
195
- );
196
- }
197
- }
198
-
199
- /**
200
- * Execute code in isolated environment
201
- */
202
- public async execute<T = any>(
203
- options: ExecutionOptions
204
- ): Promise<ExecutionResult<T>> {
205
- const startTime = Date.now();
206
- const executionId = this.generateExecutionId();
207
-
208
- try {
209
- // Validate input
210
- this.validateExecutionOptions(options);
211
-
212
- // Security scan if enabled
213
- if (options.scanForSecurity !== false) {
214
- const securityScanner = new SecurityScanner();
215
-
216
- // Scan the code for security issues
217
- const scanResult = await securityScanner.scan({
218
- code: options.code,
219
- executionId: executionId,
220
- });
221
-
222
- if (!scanResult.secure) {
223
- throw new IsolatedRuntimeError(
224
- `Security scan failed: ${scanResult.warnings.join(", ")}`,
225
- "SECURITY_SCAN_FAILED",
226
- { scanResult }
227
- );
228
- }
229
- }
230
-
231
- // Get security profile
232
- const securityProfile =
233
- securityProfiles[
234
- options.securityProfile || this.config.defaultSecurityProfile
235
- ];
236
-
237
- // Get or create isolate
238
- const runtimeContext = await this.getOrCreateIsolate(securityProfile);
239
-
240
- // Execute in isolate
241
- const result = await this.executeInIsolate<T>(
242
- runtimeContext,
243
- options,
244
- executionId
245
- );
246
-
247
- // Update metrics
248
- const executionTime = Date.now() - startTime;
249
- this.updateMetrics("executionTime", executionTime);
250
- this.updateMetrics("successRate", result.success ? 1 : 0);
251
-
252
- result.executionTime = executionTime;
253
-
254
- // Generate audit hash if audit enabled
255
- if (this.config.auditEnabled) {
256
- result.auditHash = this.generateAuditHash(options, result);
257
- }
258
-
259
- this.emit("execution-complete", { executionId, result, executionTime });
260
-
261
- return result;
262
- } catch (error) {
263
- const executionTime = Date.now() - startTime;
264
-
265
- const result: ExecutionResult<T> = {
266
- success: false,
267
- error: error instanceof Error ? error : new Error(String(error)),
268
- executionTime,
269
- memoryUsed: 0,
270
- timestamp: new Date(),
271
- };
272
-
273
- this.updateMetrics("executionTime", executionTime);
274
- this.updateMetrics("successRate", 0);
275
-
276
- this.emit("execution-error", { executionId, error, executionTime });
277
-
278
- return result;
279
- }
280
- }
281
-
282
- /**
283
- * Execute code in specific isolate context
284
- */
285
- private async executeInIsolate<T>(
286
- runtimeContext: RuntimeContext,
287
- options: ExecutionOptions,
288
- executionId: string
289
- ): Promise<ExecutionResult<T>> {
290
- const { isolate, context, jail } = runtimeContext;
291
- const startTime = Date.now();
292
-
293
- // Update usage stats
294
- runtimeContext.executionCount++;
295
- runtimeContext.lastUsedAt = new Date();
296
-
297
- try {
298
- // Create script with timeout and memory limit
299
- const script = await isolate.compileScript(options.code, {
300
- filename: `beddel-runtime-${executionId}.js`,
301
- produceCachedData: false, // Security: disable code caching
302
- });
303
-
304
- // Setup execution context
305
- const executionContext = new ivm.Reference({
306
- ...(options.context || {}),
307
- executionId,
308
- timestamp: new Date().toISOString(),
309
- });
310
-
311
- // Execute script
312
- const result = await script.run(context, {
313
- timeout: options.timeout || runtimeContext.securityProfile.timeout,
314
- release: true, // Release memory after execution
315
- });
316
-
317
- // Get memory usage
318
- const memoryUsed = this.getMemoryUsage(runtimeContext);
319
-
320
- const executionTime = Date.now() - startTime;
321
-
322
- return {
323
- success: true,
324
- result: result as T,
325
- executionTime,
326
- memoryUsed,
327
- timestamp: new Date(),
328
- };
329
- } catch (error) {
330
- const executionTime = Date.now() - startTime;
331
-
332
- return {
333
- success: false,
334
- error: error instanceof Error ? error : new Error(String(error)),
335
- executionTime,
336
- memoryUsed: this.getMemoryUsage(runtimeContext),
337
- timestamp: new Date(),
338
- };
339
- }
340
- }
341
-
342
- /**
343
- * Get or create isolate for execution
344
- */
345
- private async getOrCreateIsolate(
346
- securityProfile: SecurityProfile
347
- ): Promise<RuntimeContext> {
348
- // Check pool for available isolate
349
- const availableIsolate = this.pool.find(
350
- (ctx) => ctx.securityProfile.name === securityProfile.name
351
- );
352
-
353
- if (availableIsolate) {
354
- // Remove from pool and return
355
- this.pool = this.pool.filter((ctx) => ctx !== availableIsolate);
356
- return availableIsolate;
357
- }
358
-
359
- // Check if we can create new isolate
360
- const totalIsolates = this.isolates.size + this.pool.length;
361
-
362
- if (totalIsolates >= this.maxPoolSize) {
363
- throw new IsolatedRuntimeError(
364
- `Maximum isolate pool size reached (${this.maxPoolSize})`,
365
- "POOL_LIMIT_EXCEEDED",
366
- { currentPoolSize: totalIsolates, maxPoolSize: this.maxPoolSize }
367
- );
368
- }
369
-
370
- // Create new isolate
371
- return await this.createIsolate(securityProfile);
372
- }
373
-
374
- /**
375
- * Validate execution options
376
- */
377
- private validateExecutionOptions(options: ExecutionOptions): void {
378
- if (!options.code || typeof options.code !== "string") {
379
- throw new IsolatedRuntimeError(
380
- "Code must be a non-empty string",
381
- "INVALID_CODE",
382
- { codeType: typeof options.code, codeLength: options.code?.length }
383
- );
384
- }
385
-
386
- if (options.code.length > 1024 * 1024) {
387
- // 1MB max code size
388
- throw new IsolatedRuntimeError(
389
- "Code exceeds maximum size limit (1MB)",
390
- "CODE_TOO_LARGE",
391
- { codeSize: options.code.length }
392
- );
393
- }
394
-
395
- const memoryLimit = options.memoryLimit || this.config.memoryLimit;
396
- if (memoryLimit > 8) {
397
- // 8MB max
398
- throw new IsolatedRuntimeError(
399
- "Memory limit exceeds maximum allowed (8MB)",
400
- "MEMORY_LIMIT_EXCEEDED",
401
- { requestedMemory: memoryLimit, maxMemory: 8 }
402
- );
403
- }
404
-
405
- const timeout = options.timeout || runtimeConfig.timeout;
406
- if (timeout > 30000) {
407
- // 30s max
408
- throw new IsolatedRuntimeError(
409
- "Timeout exceeds maximum allowed (30s)",
410
- "TIMEOUT_EXCEEDED",
411
- { requestedTimeout: timeout, maxTimeout: 30000 }
412
- );
413
- }
414
- }
415
-
416
- /**
417
- * Calculate memory usage for isolate
418
- */
419
- private getMemoryUsage(runtimeContext: RuntimeContext): number {
420
- try {
421
- const heapStatistics = runtimeContext.isolate.getHeapStatisticsSync();
422
- return (heapStatistics.used_heap_size || 0) / (1024 * 1024); // MB
423
- } catch (error) {
424
- this.emit("error", {
425
- message: "Failed to get memory usage",
426
- error,
427
- context: "getMemoryUsage",
428
- });
429
- return 0;
430
- }
431
- }
432
-
433
- /**
434
- * Update metrics tracking
435
- */
436
- private updateMetrics(metric: string, value: number): void {
437
- if (!this.metrics.has(metric)) {
438
- this.metrics.set(metric, []);
439
- }
440
-
441
- const values = this.metrics.get(metric)!;
442
- values.push(value);
443
-
444
- // Keep only last 1000 values
445
- if (values.length > 1000) {
446
- values.shift();
447
- }
448
- }
449
-
450
- /**
451
- * Generate unique execution ID
452
- */
453
- private generateExecutionId(): string {
454
- return `exec-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
455
- }
456
-
457
- /**
458
- * Generate audit hash for execution
459
- */
460
- private generateAuditHash(
461
- options: ExecutionOptions,
462
- result: ExecutionResult
463
- ): string {
464
- const crypto = require("node:crypto");
465
- const auditData = {
466
- code: options.code,
467
- context: options.context,
468
- result: result.result,
469
- success: result.success,
470
- executionTime: result.executionTime,
471
- memoryUsed: result.memoryUsed,
472
- timestamp: result.timestamp,
473
- tenantId: options.tenantId,
474
- };
475
-
476
- return crypto
477
- .createHash(this.config.auditHashAlgorithm)
478
- .update(JSON.stringify(auditData))
479
- .digest("hex");
480
- }
481
-
482
- /**
483
- * Cleanup idle isolates
484
- */
485
- private cleanupPool(): void {
486
- const now = Date.now();
487
- const idleTimeout = this.config.poolIdleTimeout;
488
-
489
- // Cleanup pool isolates that have been idle too long
490
- this.pool = this.pool.filter((isolate) => {
491
- const idleTime = now - isolate.lastUsedAt.getTime();
492
- const shouldCleanup =
493
- idleTime > idleTimeout && this.pool.length > this.minPoolSize;
494
-
495
- if (shouldCleanup) {
496
- try {
497
- isolate.isolate.dispose();
498
- this.emit("isolate-disposed", {
499
- isolateId: isolate.createdAt.getTime(),
500
- idleTime,
501
- reason: "idle-cleanup",
502
- });
503
- } catch (error) {
504
- this.emit(
505
- "error",
506
- new IsolatedRuntimeError(
507
- "Failed to dispose isolate during cleanup",
508
- "DISPOSE_ERROR",
509
- { error, idleTime }
510
- )
511
- );
512
- }
513
- }
514
-
515
- return !shouldCleanup;
516
- });
517
- }
518
-
519
- /**
520
- * Get current metrics
521
- */
522
- public getMetrics(): Record<string, number[]> {
523
- return Object.fromEntries(this.metrics);
524
- }
525
-
526
- /**
527
- * Get pool statistics
528
- */
529
- public getPoolStats(): {
530
- totalIsolates: number;
531
- poolSize: number;
532
- activeExecutions: number;
533
- minPoolSize: number;
534
- maxPoolSize: number;
535
- } {
536
- return {
537
- totalIsolates: this.isolates.size + this.pool.length,
538
- poolSize: this.pool.length,
539
- activeExecutions: this.activeExecutions.size,
540
- minPoolSize: this.minPoolSize,
541
- maxPoolSize: this.maxPoolSize,
542
- };
543
- }
544
-
545
- /**
546
- * Dispose of all isolates and cleanup resources
547
- */
548
- public async dispose(): Promise<void> {
549
- clearInterval(this.cleanupInterval);
550
-
551
- // Dispose all pool isolates
552
- for (const isolate of this.pool) {
553
- try {
554
- isolate.isolate.dispose();
555
- } catch (error) {
556
- this.emit("error", {
557
- message: "Failed to dispose isolate during cleanup",
558
- error,
559
- });
560
- }
561
- }
562
-
563
- this.pool = [];
564
- this.activeExecutions.clear();
565
-
566
- this.emit("disposed", { cleanupTime: Date.now() });
567
- }
568
- }
569
-
570
- // Singleton instance
571
- export const runtimeManager = new IsolatedRuntimeManager();
572
- export default IsolatedRuntimeManager;