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,284 +0,0 @@
1
- /**
2
- * GraphQL helpers used by the /api/graphql route.
3
- */
4
-
5
- import { GraphQLError, GraphQLScalarType, Kind, type ValueNode } from "graphql";
6
- import { createSchema, createYoga } from "graphql-yoga";
7
- import { agentRegistry } from "../../agents/registry";
8
- import {
9
- getClientByApiKey,
10
- getEndpointByName,
11
- logExecution,
12
- checkRateLimit,
13
- } from "../kvStore";
14
- import {
15
- sanitizeInput,
16
- isValidMethodName,
17
- isValidApiKey,
18
- executeInSandbox,
19
- validateRequiredProps,
20
- } from "../runtimeSecurity";
21
- import {
22
- AuthenticationError,
23
- RateLimitError,
24
- ValidationError,
25
- NotFoundError,
26
- } from "../errors";
27
- import type {
28
- ExecuteMethodInput,
29
- ExecuteMethodResult,
30
- ExecutionContext,
31
- } from "../types";
32
-
33
- const schema = `
34
- type Query { ping: String! }
35
- type Mutation { executeMethod(methodName: String!, params: JSON!, props: JSON!): ExecutionResult! }
36
- type ExecutionResult { success: Boolean!, data: JSON, error: String, executionTime: Int! }
37
- scalar JSON
38
- `;
39
-
40
- export function getGraphQLSchema(): string {
41
- return schema;
42
- }
43
-
44
- const parseJsonLiteral = (ast: ValueNode): unknown => {
45
- switch (ast.kind) {
46
- case Kind.STRING:
47
- case Kind.BOOLEAN:
48
- return ast.value;
49
- case Kind.INT:
50
- return parseInt(ast.value, 10);
51
- case Kind.FLOAT:
52
- return parseFloat(ast.value);
53
- case Kind.OBJECT: {
54
- const value: Record<string, any> = {};
55
- for (const field of ast.fields) {
56
- value[field.name.value] = parseJsonLiteral(field.value);
57
- }
58
- return value;
59
- }
60
- case Kind.LIST:
61
- return ast.values.map(parseJsonLiteral);
62
- case Kind.NULL:
63
- return null;
64
- default:
65
- return null;
66
- }
67
- };
68
-
69
- const jsonScalar = new GraphQLScalarType({
70
- name: "JSON",
71
- description: "Arbitrary JSON value",
72
- serialize: (value: unknown) => value,
73
- parseValue: (value: unknown) => value,
74
- parseLiteral: (ast: ValueNode) => parseJsonLiteral(ast),
75
- });
76
-
77
- export async function executeRegisteredMethod(
78
- input: ExecuteMethodInput,
79
- clientId: string
80
- ): Promise<ExecuteMethodResult> {
81
- const startTime = Date.now();
82
- const context: ExecutionContext = {
83
- logs: [],
84
- status: "running",
85
- output: undefined,
86
- error: undefined,
87
- log: (message: string) =>
88
- context.logs.push(`[${new Date().toISOString()}] ${message}`),
89
- setOutput: (output: unknown) => {
90
- context.output = output;
91
- context.status = "success";
92
- },
93
- setError: (error: string) => {
94
- context.error = error;
95
- context.status = "error";
96
- },
97
- };
98
-
99
- try {
100
- context.log("Method execution initiated.");
101
- if (!isValidMethodName(input.methodName)) {
102
- throw new ValidationError("Invalid method name format");
103
- }
104
-
105
- const declarativeAgent = agentRegistry.getAgent(input.methodName);
106
- if (declarativeAgent) {
107
- context.log(`Found declarative agent: ${input.methodName}`);
108
-
109
- const result = await agentRegistry.executeAgent(
110
- input.methodName,
111
- sanitizeInput(input.params) as Record<string, any>,
112
- sanitizeInput(input.props) as Record<string, string>,
113
- context
114
- );
115
-
116
- const executionTime = Date.now() - startTime;
117
- await logExecution({
118
- id: `log_${Date.now()}`,
119
- clientId,
120
- endpointName: input.methodName,
121
- timestamp: new Date().toISOString(),
122
- duration: executionTime,
123
- success: true,
124
- input: input.params,
125
- output: result,
126
- logs: context.logs,
127
- });
128
- return { success: true, data: result, executionTime };
129
- }
130
-
131
- const endpoint = await getEndpointByName(input.methodName);
132
- if (!endpoint) {
133
- throw new NotFoundError(`Method '${input.methodName}' not found`);
134
- }
135
-
136
- context.log(`Found endpoint: ${endpoint.name}`);
137
- const sanitizedParams = sanitizeInput(input.params) as Record<
138
- string,
139
- unknown
140
- >;
141
- const sanitizedProps = sanitizeInput(input.props) as Record<string, string>;
142
- const { valid, missing } = validateRequiredProps(
143
- endpoint.requiredProps,
144
- sanitizedProps
145
- );
146
- if (!valid) {
147
- throw new ValidationError(
148
- `Missing required props: ${missing.join(", ")}`
149
- );
150
- }
151
-
152
- context.log("Props validated. Executing sandbox.");
153
- await executeInSandbox(
154
- endpoint.code,
155
- sanitizedParams,
156
- sanitizedProps,
157
- context
158
- );
159
- context.log("Sandbox execution finished.");
160
-
161
- if (context.status === "error") {
162
- throw new Error(context.error || "Sandbox execution failed.");
163
- }
164
- if (context.status !== "success") {
165
- throw new Error("Sandbox finished in an indeterminate state.");
166
- }
167
-
168
- const executionTime = Date.now() - startTime;
169
- await logExecution({
170
- id: `log_${Date.now()}`,
171
- clientId,
172
- endpointName: input.methodName,
173
- timestamp: new Date().toISOString(),
174
- duration: executionTime,
175
- success: true,
176
- input: sanitizedParams,
177
- output: context.output,
178
- logs: context.logs,
179
- });
180
- return { success: true, data: context.output, executionTime };
181
- } catch (error) {
182
- const executionTime = Date.now() - startTime;
183
- const errorMessage =
184
- error instanceof Error ? error.message : "Unknown error";
185
- if (!context.error) context.setError(errorMessage);
186
-
187
- await logExecution({
188
- id: `log_${Date.now()}`,
189
- clientId,
190
- endpointName: input.methodName,
191
- timestamp: new Date().toISOString(),
192
- duration: executionTime,
193
- success: false,
194
- error: errorMessage,
195
- input: input.params,
196
- logs: context.logs,
197
- });
198
- return { success: false, error: errorMessage, executionTime };
199
- }
200
- }
201
-
202
- async function resolveClientId(request: Request): Promise<string> {
203
- const authHeader = request.headers.get("authorization");
204
-
205
- if (authHeader && authHeader.startsWith("Bearer ")) {
206
- const apiKey = authHeader.substring(7);
207
- if (!isValidApiKey(apiKey)) {
208
- throw new AuthenticationError("Invalid API key format");
209
- }
210
- const client = await getClientByApiKey(apiKey);
211
- if (!client) throw new AuthenticationError("Invalid API key");
212
- const rateLimitOk = await checkRateLimit(client.id, client.rateLimit);
213
- if (!rateLimitOk) throw new RateLimitError("Rate limit exceeded.");
214
- return client.id;
215
- }
216
-
217
- if (request.headers.get("x-admin-tenant") === "true") {
218
- return "admin_tenant";
219
- }
220
-
221
- throw new AuthenticationError("Missing or invalid authorization header");
222
- }
223
-
224
- function toGraphQLError(error: unknown): GraphQLError {
225
- const message = error instanceof Error ? error.message : "Internal server error";
226
- let code = "INTERNAL_SERVER_ERROR";
227
-
228
- if (error instanceof AuthenticationError) {
229
- code = "UNAUTHENTICATED";
230
- } else if (error instanceof RateLimitError) {
231
- code = "RATE_LIMITED";
232
- } else if (error instanceof ValidationError) {
233
- code = "BAD_USER_INPUT";
234
- } else if (error instanceof NotFoundError) {
235
- code = "NOT_FOUND";
236
- }
237
-
238
- return new GraphQLError(message, { extensions: { code } });
239
- }
240
-
241
- const yoga = createYoga({
242
- schema: createSchema({
243
- typeDefs: schema,
244
- resolvers: {
245
- JSON: jsonScalar,
246
- Query: {
247
- ping: () => "pong",
248
- },
249
- Mutation: {
250
- executeMethod: async (
251
- _parent: unknown,
252
- args: { methodName: string; params?: Record<string, unknown>; props?: Record<string, string> },
253
- context: { request: Request }
254
- ) => {
255
- try {
256
- const clientId = await resolveClientId(context.request);
257
- return await executeRegisteredMethod(
258
- {
259
- methodName: args.methodName,
260
- params: args.params || {},
261
- props: args.props || {},
262
- },
263
- clientId
264
- );
265
- } catch (error) {
266
- throw toGraphQLError(error);
267
- }
268
- },
269
- },
270
- },
271
- }),
272
- context: ({ request }: { request: Request }) => ({ request }),
273
- graphqlEndpoint: "/api/graphql",
274
- graphiql: true,
275
- fetchAPI: { Request, Response },
276
- });
277
-
278
- export async function handleGraphQLPost(request: Request) {
279
- return yoga.handleRequest(request, { request });
280
- }
281
-
282
- export async function handleGraphQLGet(request: Request) {
283
- return yoga.handleRequest(request, { request });
284
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * Custom error classes shared across server runtimes.
3
- */
4
-
5
- export class AuthenticationError extends Error {
6
- constructor(message = "Authentication failed") {
7
- super(message);
8
- this.name = "AuthenticationError";
9
- }
10
- }
11
-
12
- export class RateLimitError extends Error {
13
- constructor(message = "Rate limit exceeded") {
14
- super(message);
15
- this.name = "RateLimitError";
16
- }
17
- }
18
-
19
- export class ValidationError extends Error {
20
- constructor(message: string) {
21
- super(message);
22
- this.name = "ValidationError";
23
- }
24
- }
25
-
26
- export class ExecutionError extends Error {
27
- constructor(message: string) {
28
- super(message);
29
- this.name = "ExecutionError";
30
- }
31
- }
32
-
33
- export class NotFoundError extends Error {
34
- constructor(message: string) {
35
- super(message);
36
- this.name = "NotFoundError";
37
- }
38
- }
@@ -1,6 +0,0 @@
1
- export * from "./types";
2
- export * from "./errors";
3
- export * from "./kvStore";
4
- export * from "./runtimeSecurity";
5
- export { agentRegistry } from "../agents/registry";
6
- export type { AgentRegistration } from "../agents/registry";
@@ -1,152 +0,0 @@
1
- /**
2
- * Upstash KV helpers shared between the Next.js runtime and npm package.
3
- */
4
-
5
- import { Redis } from "@upstash/redis";
6
- import type { Client, Endpoint, ExecutionLog } from "./types";
7
-
8
- if (!process.env.KV_REST_API_URL || !process.env.KV_REST_API_TOKEN) {
9
- throw new Error("Missing Upstash Redis credentials in environment variables");
10
- }
11
-
12
- const redis = new Redis({
13
- url: process.env.KV_REST_API_URL,
14
- token: process.env.KV_REST_API_TOKEN,
15
- });
16
-
17
- export const KV_PREFIXES = {
18
- CLIENT: "client:",
19
- API_KEY: "apikey:",
20
- ENDPOINT: "endpoint:",
21
- ENDPOINT_NAME: "endpoint:name:",
22
- EXECUTION_LOG: "log:",
23
- RATE_LIMIT: "ratelimit:",
24
- CLIENTS_LIST: "clients:list",
25
- ENDPOINTS_LIST: "endpoints:list",
26
- } as const;
27
-
28
- export async function getClient(clientId: string): Promise<Client | null> {
29
- return await redis.get<Client>(`${KV_PREFIXES.CLIENT}${clientId}`);
30
- }
31
-
32
- export async function getClientByApiKey(apiKey: string): Promise<Client | null> {
33
- const clientId = await redis.get<string>(`${KV_PREFIXES.API_KEY}${apiKey}`);
34
- if (!clientId) return null;
35
- return await getClient(clientId);
36
- }
37
-
38
- export async function getAllClients(): Promise<Client[]> {
39
- const clientIds =
40
- (await redis.get<string[]>(KV_PREFIXES.CLIENTS_LIST)) || [];
41
- if (clientIds.length === 0) return [];
42
- const clients = await Promise.all(clientIds.map((id) => getClient(id)));
43
- return clients.filter((c): c is Client => c !== null);
44
- }
45
-
46
- export async function saveClient(client: Client): Promise<void> {
47
- await redis.set(`${KV_PREFIXES.CLIENT}${client.id}`, JSON.stringify(client));
48
-
49
- for (const apiKey of client.apiKeys) {
50
- await redis.set(`${KV_PREFIXES.API_KEY}${apiKey}`, client.id);
51
- }
52
-
53
- const clientIds =
54
- (await redis.get<string[]>(KV_PREFIXES.CLIENTS_LIST)) || [];
55
- if (!clientIds.includes(client.id)) {
56
- clientIds.push(client.id);
57
- await redis.set(KV_PREFIXES.CLIENTS_LIST, clientIds);
58
- }
59
- }
60
-
61
- export async function deleteClient(clientId: string): Promise<void> {
62
- const client = await getClient(clientId);
63
- if (!client) return;
64
-
65
- for (const apiKey of client.apiKeys) {
66
- await redis.del(`${KV_PREFIXES.API_KEY}${apiKey}`);
67
- }
68
-
69
- let clientIds =
70
- (await redis.get<string[]>(KV_PREFIXES.CLIENTS_LIST)) || [];
71
- clientIds = clientIds.filter((id) => id !== clientId);
72
- await redis.set(KV_PREFIXES.CLIENTS_LIST, clientIds);
73
-
74
- await redis.del(`${KV_PREFIXES.CLIENT}${clientId}`);
75
- }
76
-
77
- export async function getEndpoint(endpointId: string): Promise<Endpoint | null> {
78
- return await redis.get<Endpoint>(`${KV_PREFIXES.ENDPOINT}${endpointId}`);
79
- }
80
-
81
- export async function getEndpointByName(
82
- name: string
83
- ): Promise<Endpoint | null> {
84
- const endpointId = await redis.get<string>(
85
- `${KV_PREFIXES.ENDPOINT_NAME}${name}`
86
- );
87
- if (!endpointId) return null;
88
- return await getEndpoint(endpointId);
89
- }
90
-
91
- export async function getAllEndpoints(): Promise<Endpoint[]> {
92
- const endpointIds =
93
- (await redis.get<string[]>(KV_PREFIXES.ENDPOINTS_LIST)) || [];
94
- if (endpointIds.length === 0) return [];
95
- const endpoints = await Promise.all(endpointIds.map((id) => getEndpoint(id)));
96
- return endpoints.filter((e): e is Endpoint => e !== null);
97
- }
98
-
99
- export async function saveEndpoint(endpoint: Endpoint): Promise<void> {
100
- await redis.set(
101
- `${KV_PREFIXES.ENDPOINT}${endpoint.id}`,
102
- JSON.stringify(endpoint)
103
- );
104
- await redis.set(`${KV_PREFIXES.ENDPOINT_NAME}${endpoint.name}`, endpoint.id);
105
-
106
- const endpointIds =
107
- (await redis.get<string[]>(KV_PREFIXES.ENDPOINTS_LIST)) || [];
108
- if (!endpointIds.includes(endpoint.id)) {
109
- endpointIds.push(endpoint.id);
110
- await redis.set(KV_PREFIXES.ENDPOINTS_LIST, endpointIds);
111
- }
112
- }
113
-
114
- export async function deleteEndpoint(endpointId: string): Promise<void> {
115
- const endpoint = await getEndpoint(endpointId);
116
- if (!endpoint) return;
117
-
118
- await redis.del(`${KV_PREFIXES.ENDPOINT_NAME}${endpoint.name}`);
119
-
120
- let endpointIds =
121
- (await redis.get<string[]>(KV_PREFIXES.ENDPOINTS_LIST)) || [];
122
- endpointIds = endpointIds.filter((id) => id !== endpointId);
123
- await redis.set(KV_PREFIXES.ENDPOINTS_LIST, endpointIds);
124
-
125
- await redis.del(`${KV_PREFIXES.ENDPOINT}${endpointId}`);
126
- }
127
-
128
- export async function logExecution(log: ExecutionLog): Promise<void> {
129
- const key = `${KV_PREFIXES.EXECUTION_LOG}${log.id}`;
130
- await redis.set(key, JSON.stringify(log), {
131
- ex: 60 * 60 * 24 * 30,
132
- });
133
- }
134
-
135
- export async function checkRateLimit(
136
- clientId: string,
137
- limit: number
138
- ): Promise<boolean> {
139
- const key = `${KV_PREFIXES.RATE_LIMIT}${clientId}`;
140
-
141
- const pipeline = redis.pipeline();
142
- pipeline.incr(key);
143
- pipeline.ttl(key);
144
-
145
- const [current, ttl] = await pipeline.exec<[number, number]>();
146
-
147
- if (ttl === -1) {
148
- await redis.expire(key, 60);
149
- }
150
-
151
- return current <= limit;
152
- }
@@ -1,102 +0,0 @@
1
- /**
2
- * Security helpers used by the Next.js runtime and exported as part of the package.
3
- */
4
-
5
- import type { ExecutionContext } from "./types";
6
-
7
- /**
8
- * Sanitize user input to prevent code injection
9
- */
10
- export function sanitizeInput(input: unknown): unknown {
11
- if (typeof input === "string") {
12
- return input
13
- .replace(/[<>]/g, "")
14
- .replace(/javascript:/gi, "")
15
- .replace(/on\w+=/gi, "")
16
- .trim();
17
- }
18
-
19
- if (Array.isArray(input)) {
20
- return input.map(sanitizeInput);
21
- }
22
-
23
- if (typeof input === "object" && input !== null) {
24
- const sanitized: Record<string, unknown> = {};
25
- for (const [key, value] of Object.entries(input)) {
26
- sanitized[key] = sanitizeInput(value);
27
- }
28
- return sanitized;
29
- }
30
-
31
- return input;
32
- }
33
-
34
- /**
35
- * Validate method name (alphanumeric, underscores, and hyphens)
36
- */
37
- export function isValidMethodName(name: string): boolean {
38
- return /^[a-zA-Z_-][a-zA-Z0-9_.-]*$/.test(name);
39
- }
40
-
41
- /**
42
- * Validate API key format
43
- */
44
- export function isValidApiKey(apiKey: string): boolean {
45
- return /^opal_[a-z0-9_-]+_key_[a-zA-Z0-9]{12,}$/.test(apiKey);
46
- }
47
-
48
- /**
49
- * Execute stored code in a sandbox scope with a time limit.
50
- */
51
- export async function executeInSandbox(
52
- code: string,
53
- params: Record<string, unknown>,
54
- props: Record<string, string>,
55
- context: ExecutionContext
56
- ): Promise<void> {
57
- const executionPromise = (async () => {
58
- try {
59
- const executeFunction = new Function(`return ${code}`)();
60
- await executeFunction(params, props, context);
61
- } catch (error) {
62
- console.error("[Sandbox Execution Error]:", error);
63
- const errorMessage =
64
- error instanceof Error ? error.message : "Internal sandbox error";
65
- if (context.status !== "error") {
66
- context.setError(errorMessage);
67
- }
68
- }
69
- })();
70
-
71
- const timeoutPromise = new Promise<void>((_, reject) =>
72
- setTimeout(
73
- () => reject(new Error("Execution timed out after 3000ms")),
74
- 3000
75
- )
76
- );
77
-
78
- try {
79
- await Promise.race([executionPromise, timeoutPromise]);
80
- } catch (error) {
81
- const errorMessage =
82
- error instanceof Error ? error.message : "Unknown sandbox error";
83
- if (context.status !== "error") {
84
- context.setError(errorMessage);
85
- }
86
- context.log(`Sandbox execution failed: ${errorMessage}`);
87
- }
88
- }
89
-
90
- /**
91
- * Validate required props are provided
92
- */
93
- export function validateRequiredProps(
94
- requiredProps: string[],
95
- providedProps: Record<string, string>
96
- ): { valid: boolean; missing: string[] } {
97
- const missing = requiredProps.filter((prop) => !providedProps[prop]);
98
- return {
99
- valid: missing.length === 0,
100
- missing,
101
- };
102
- }
@@ -1,60 +0,0 @@
1
- /**
2
- * Shared server-side types for the Opal Support App runtime.
3
- * These live inside the Beddel package so both the Next.js app and
4
- * the npm distribution reference exactly the same contracts.
5
- */
6
-
7
- import type { ExecutionContext as DeclarativeExecutionContext } from "../types/executionContext";
8
-
9
- export interface Client {
10
- id: string;
11
- name: string;
12
- email: string;
13
- apiKeys: string[];
14
- createdAt: string;
15
- rateLimit: number;
16
- }
17
-
18
- export interface Endpoint {
19
- id: string;
20
- name: string;
21
- description: string;
22
- code: string;
23
- visibility: "public" | "private";
24
- requiredProps: string[];
25
- createdAt: string;
26
- updatedAt: string;
27
- }
28
-
29
- export interface ExecutionLog {
30
- id: string;
31
- clientId: string;
32
- endpointName: string;
33
- timestamp: string;
34
- duration: number;
35
- success: boolean;
36
- error?: string;
37
- input?: unknown;
38
- output?: unknown;
39
- logs?: string[];
40
- }
41
-
42
- export type ExecutionContext = DeclarativeExecutionContext;
43
-
44
- export interface ExecuteMethodInput {
45
- methodName: string;
46
- params: Record<string, unknown>;
47
- props: Record<string, string>;
48
- }
49
-
50
- export interface ExecuteMethodResult {
51
- success: boolean;
52
- data?: unknown;
53
- error?: string;
54
- executionTime: number;
55
- }
56
-
57
- export interface GraphQLContext {
58
- clientId: string;
59
- client: Client;
60
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Shared Module - Client-safe types and utilities
3
- * This module can be safely imported in both client and server environments
4
- */
5
-
6
- export * from './types';
7
- export * from './utils';