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,341 +0,0 @@
1
- /**
2
- * Secure YAML Runtime Integration
3
- * Integrates SecureYamlParser with IsolatedRuntimeManager for ultra-secure YAML processing
4
- */
5
- import { SecureYamlParser } from "../parser/secure-yaml-parser";
6
- import { IsolatedRuntimeManager } from "../runtime/isolatedRuntime";
7
- import { SecurityScanner } from "../security/scanner";
8
- import { performanceTargets, securityProfiles } from "../config";
9
-
10
- export interface RuntimeYAMLConfig {
11
- securityProfile?: string;
12
- tenantId?: string;
13
- timeout?: number;
14
- memoryLimit?: number;
15
- validateSecurity?: boolean;
16
- auditEnabled?: boolean;
17
- }
18
-
19
- export interface RuntimeYAMLResult {
20
- success: boolean;
21
- result?: any;
22
- error?: Error;
23
- executionTime: number;
24
- memoryUsed: number;
25
- securityScore?: number;
26
- auditHash?: string;
27
- tenantId?: string;
28
- }
29
-
30
- export class SecureYamlRuntime {
31
- private readonly runtimeManager: IsolatedRuntimeManager;
32
- private readonly securityScanner: SecurityScanner;
33
-
34
- constructor(private runtimeManagerInstance: IsolatedRuntimeManager) {
35
- this.runtimeManager = runtimeManagerInstance;
36
- this.securityScanner = new SecurityScanner();
37
- }
38
-
39
- /**
40
- * Parse YAML in isolated runtime environment
41
- */
42
- public async parseYamlSecureRuntime(
43
- yamlContent: string,
44
- config: RuntimeYAMLConfig = {}
45
- ): Promise<RuntimeYAMLResult> {
46
- const startTime = performance.now();
47
-
48
- try {
49
- // Validate input
50
- this.validateInput(yamlContent);
51
-
52
- // Security scan if enabled
53
- if (config.validateSecurity !== false) {
54
- const scanResult = await this.securityScanner.scan({
55
- code: yamlContent,
56
- executionId: `yaml-parse-${Date.now()}`,
57
- });
58
-
59
- if (!scanResult.secure) {
60
- throw new Error(
61
- `Security scan failed: ${scanResult.warnings.join(", ")}`
62
- );
63
- }
64
- }
65
-
66
- // Prepare execution code
67
- const executionCode = this.buildYamlExecutionCode(yamlContent);
68
-
69
- // Execute in isolated runtime
70
- const executionResult = await this.runtimeManager.execute({
71
- code: executionCode,
72
- securityProfile: config.securityProfile || "ultra-secure",
73
- timeout: config.timeout || 5000,
74
- memoryLimit: config.memoryLimit || 2,
75
- tenantId: config.tenantId,
76
- scanForSecurity: config.validateSecurity,
77
- });
78
-
79
- const endTime = performance.now();
80
- const totalTime = endTime - startTime;
81
-
82
- // Validate performance targets
83
- this.validatePerformanceTargets(totalTime, executionResult.memoryUsed);
84
-
85
- const auditHash = this.generateAuditHash(
86
- yamlContent,
87
- executionResult,
88
- config
89
- );
90
-
91
- return {
92
- success: executionResult.success,
93
- result: executionResult.result,
94
- error: executionResult.error,
95
- executionTime: totalTime,
96
- memoryUsed: executionResult.memoryUsed,
97
- securityScore: this.calculateSecurityScore(executionResult, config),
98
- auditHash,
99
- tenantId: config.tenantId,
100
- };
101
- } catch (error) {
102
- const endTime = performance.now();
103
- const totalTime = endTime - startTime;
104
-
105
- return {
106
- success: false,
107
- error: error instanceof Error ? error : new Error(String(error)),
108
- executionTime: totalTime,
109
- memoryUsed: 0,
110
- tenantId: config.tenantId,
111
- };
112
- }
113
- }
114
-
115
- /**
116
- * Multi-tenant YAML processing with isolation
117
- */
118
- public async parseYamlMultiTenant(
119
- yamlContent: string,
120
- tenantId: string,
121
- config: RuntimeYAMLConfig = {}
122
- ): Promise<RuntimeYAMLResult> {
123
- const tenantConfig = {
124
- ...config,
125
- tenantId,
126
- securityProfile: config.securityProfile || "tenant-isolated",
127
- validateSecurity: config.validateSecurity !== false,
128
- auditEnabled: config.auditEnabled !== false,
129
- };
130
-
131
- return this.parseYamlSecureRuntime(yamlContent, tenantConfig);
132
- }
133
-
134
- /**
135
- * Batch process YAML for multiple tenants
136
- */
137
- public async parseYamlBatch(
138
- yamlContents: Array<{ content: string; tenantId: string }>,
139
- config: RuntimeYAMLConfig = {}
140
- ): Promise<Map<string, RuntimeYAMLResult>> {
141
- const results = new Map<string, RuntimeYAMLResult>();
142
-
143
- // Process each tenant's YAML in isolated runtime
144
- for (const { content, tenantId } of yamlContents) {
145
- const result = await this.parseYamlMultiTenant(content, tenantId, config);
146
- results.set(tenantId, result);
147
- }
148
-
149
- return results;
150
- }
151
-
152
- /**
153
- * Test multi-tenant isolation
154
- */
155
- public async testTenantIsolation(
156
- tenantIds: string[]
157
- ): Promise<{ [tenantId: string]: boolean }> {
158
- const results: { [tenantId: string]: boolean } = {};
159
-
160
- for (const tenantId of tenantIds) {
161
- try {
162
- // Execute code that should trigger isolation violations if not properly isolated
163
- const testCode = `
164
- const memoryLeak = [];
165
- for (let i = 0; i < 1000; i++) {
166
- memoryLeak.push(new Array(10000).fill('${tenantId}'));
167
- }
168
- global.tenantData = '${tenantId}';
169
- return global.tenantData;
170
- `;
171
-
172
- const executionResult = await this.runtimeManager.execute({
173
- code: testCode,
174
- tenantId,
175
- securityProfile: "tenant-isolated",
176
- timeout: 2000,
177
- memoryLimit: 1,
178
- });
179
-
180
- results[tenantId] =
181
- executionResult.success && executionResult.result === tenantId;
182
- } catch (error) {
183
- results[tenantId] = false;
184
- }
185
- }
186
-
187
- return results;
188
- }
189
-
190
- /**
191
- * Validate performance targets
192
- */
193
- private validatePerformanceTargets(
194
- executionTime: number,
195
- memoryUsed: number
196
- ): void {
197
- const timeTarget = performanceTargets.find(
198
- (t) => t.metric === "executionTime"
199
- );
200
- const memoryTarget = performanceTargets.find(
201
- (t) => t.metric === "memoryUsage"
202
- );
203
-
204
- if (timeTarget && executionTime > timeTarget.target) {
205
- console.warn(
206
- `[SecureYamlRuntime] Performance warning: execution time ${executionTime}ms exceeds target ${timeTarget.target}ms`
207
- );
208
- }
209
-
210
- if (memoryTarget && memoryUsed > memoryTarget.target) {
211
- console.warn(
212
- `[SecureYamlRuntime] Performance warning: memory usage ${memoryUsed}MB exceeds target ${memoryTarget.target}MB`
213
- );
214
- }
215
- }
216
-
217
- /**
218
- * Calculate security score
219
- */
220
- private calculateSecurityScore(
221
- executionResult: any,
222
- config: RuntimeYAMLConfig
223
- ): number {
224
- const profile = securityProfiles[config.securityProfile || "ultra-secure"];
225
-
226
- let score = 9.5; // Base score
227
-
228
- if (!executionResult.success) {
229
- score -= 1.0;
230
- }
231
-
232
- if (config.tenantId) {
233
- score += 0.5;
234
- }
235
-
236
- if (config.validateSecurity === false) {
237
- score -= 1.5;
238
- }
239
-
240
- return Math.max(0, Math.min(10, score));
241
- }
242
-
243
- /**
244
- * Validate input
245
- */
246
- private validateInput(yamlContent: string): void {
247
- if (typeof yamlContent !== "string") {
248
- throw new Error("YAML content must be a string");
249
- }
250
-
251
- if (yamlContent.length === 0) {
252
- throw new Error("YAML content cannot be empty");
253
- }
254
-
255
- if (yamlContent.length > 1024 * 1024) {
256
- // 1MB max
257
- throw new Error("YAML content exceeds maximum size limit (1MB)");
258
- }
259
- }
260
-
261
- /**
262
- * Build execution code for YAML parsing
263
- */
264
- private buildYamlExecutionCode(yamlContent: string): string {
265
- // Escape the YAML content to avoid injection attacks
266
- const escapedYaml = JSON.stringify(yamlContent);
267
-
268
- return `
269
- // Secure YAML Parser implementation
270
- class SecureYamlRuntime {
271
- constructor() {
272
- this.schema = 'FAILSAFE_SCHEMA';
273
- this.allowedTypes = ['null', 'boolean', 'integer', 'float', 'string'];
274
- }
275
-
276
- parseSecure(yamlContent) {
277
- // Simulate basic YAML parsing logic
278
- const lines = yamlContent.split('\\n');
279
- const result = {};
280
-
281
- for (const line of lines) {
282
- const trimmedLine = line.trim();
283
- if (trimmedLine && !trimmedLine.startsWith('#')) {
284
- const colonIndex = trimmedLine.indexOf(':');
285
- if (colonIndex !== -1) {
286
- const key = trimmedLine.substring(0, colonIndex).trim();
287
- const value = trimmedLine.substring(colonIndex + 1).trim();
288
-
289
- // Basic type conversion
290
- if (value === 'null') {
291
- result[key] = null;
292
- } else if (value === 'true') {
293
- result[key] = true;
294
- } else if (value === 'false') {
295
- result[key] = false;
296
- } else if (!isNaN(parseFloat(value))) {
297
- result[key] = parseFloat(value);
298
- } else {
299
- result[key] = value;
300
- }
301
- }
302
- }
303
- }
304
-
305
- return result;
306
- }
307
- }
308
-
309
- const runtime = new SecureYamlRuntime();
310
- const yamlContent = ${escapedYaml};
311
- return runtime.parseSecure(yamlContent);
312
- `;
313
- }
314
-
315
- /**
316
- * Generate audit hash
317
- */
318
- private generateAuditHash(
319
- yamlContent: string,
320
- executionResult: any,
321
- config: RuntimeYAMLConfig
322
- ): string {
323
- const crypto = require("node:crypto");
324
- const auditData = {
325
- yamlHash: crypto.createHash("sha256").update(yamlContent).digest("hex"),
326
- executionResult: executionResult.success,
327
- securityProfile: config.securityProfile || "ultra-secure",
328
- tenantId: config.tenantId,
329
- timestamp: Date.now(),
330
- executionTime: executionResult.executionTime,
331
- memoryUsed: executionResult.memoryUsed,
332
- };
333
-
334
- return crypto
335
- .createHash("sha256")
336
- .update(JSON.stringify(auditData))
337
- .digest("hex");
338
- }
339
- }
340
-
341
- export default SecureYamlRuntime;
@@ -1,273 +0,0 @@
1
- import { load, FAILSAFE_SCHEMA } from 'js-yaml';
2
- import { AllowedYamlPrimitive, YAMLParserConfig } from '../config';
3
- import { YAMLParseError, YAMLSecurityError } from '../errors';
4
-
5
- /**
6
- * Parser YAML seguro com FAILSAFE_SCHEMA e validações rigorosas
7
- * Preloading de módulos críticos realizada no construtor
8
- */
9
- export class SecureYamlParser {
10
- private readonly config: YAMLParserConfig;
11
-
12
- constructor(config: YAMLParserConfig = {}) {
13
- this.config = this.validateAndMergeConfig(config);
14
- }
15
-
16
- /**
17
- * Valida e merge configuração com padrões seguros
18
- */
19
- private validateAndMergeConfig(userConfig: YAMLParserConfig): Required<YAMLParserConfig> {
20
- const defaultConfig: Required<YAMLParserConfig> = {
21
- schema: 'FAILSAFE_SCHEMA',
22
- allowedTypes: ['null', 'boolean', 'integer', 'float', 'string'],
23
- performanceTarget: 100,
24
- maxDepth: 1000,
25
- maxKeys: 10000,
26
- maxStringLength: 1024 * 1024, // 1MB
27
- maxValueSize: 10 * 1024 * 1024, // 10MB total
28
- lazyLoading: true,
29
- enableCaching: true,
30
- validateUTF8: true,
31
- strictMode: true,
32
- filename: 'secure-parser'
33
- };
34
-
35
- // Merge com configurações do usuário, validando tipos
36
- const merged = { ...defaultConfig, ...userConfig };
37
-
38
- // Validar tipos permitidos contra FAILSAFE_SCHEMA
39
- const invalidTypes = merged.allowedTypes.filter((type: AllowedYamlPrimitive) =>
40
- !defaultConfig.allowedTypes.includes(type)
41
- );
42
-
43
- if (invalidTypes.length > 0) {
44
- throw new YAMLSecurityError(
45
- `Tipos não permitidos na FAILSAFE_SCHEMA: ${invalidTypes.join(', ')}`
46
- );
47
- }
48
-
49
- return merged;
50
- }
51
-
52
- /**
53
- * Parse YAML com segurança máxima usando FAILSAFE_SCHEMA
54
- */
55
- parseSecure(yamlContent: string): any {
56
- const startTime = performance.now();
57
-
58
- try {
59
- // Validar entrada
60
- this.validateInput(yamlContent);
61
-
62
- // Configurar opções de segurança para FAILSAFE_SCHEMA
63
- const parseOptions = this.buildSecureOptions();
64
-
65
- // Fazer parsing com FAILSAFE_SCHEMA
66
- const result = load(yamlContent, parseOptions);
67
-
68
- // Validar resultado
69
- this.validateResult(result);
70
-
71
- const endTime = performance.now();
72
- const parseTime = endTime - startTime;
73
-
74
- // Log performance se exceder target
75
- const target = this.config.performanceTarget || 100;
76
- if (parseTime > target) {
77
- console.warn(`[SecureYamlParser] Performance warning: ${parseTime}ms > ${target}ms target`);
78
- }
79
-
80
- return result;
81
-
82
- } catch (error) {
83
- if (error instanceof Error && error.name === 'YAMLException') {
84
- throw new YAMLParseError(`Erro ao fazer parse do YAML: ${error.message}`);
85
- }
86
- throw error;
87
- }
88
- }
89
-
90
- /**
91
- * Constrói opções de segurança para FAILSAFE_SCHEMA
92
- */
93
- private buildSecureOptions(): any {
94
- return {
95
- schema: FAILSAFE_SCHEMA,
96
- json: false, // Desabilitar JSON mode para maior segurança
97
- onWarning: (warning: any) => {
98
- console.warn(`[SecureYamlParser] WARN: ${warning}`);
99
- },
100
- maxDepth: this.config.maxDepth,
101
- maxKeys: this.config.maxKeys,
102
- strict: this.config.strictMode,
103
- // Security hardening
104
- filename: this.config.filename || 'secure-parser',
105
- onError: (error: any) => {
106
- throw new YAMLSecurityError(`Erro de segurança durante parsing: ${error.message}`);
107
- }
108
- };
109
- }
110
-
111
- /**
112
- * Valida entrada antes do parsing
113
- */
114
- private validateInput(input: string): void {
115
- if (typeof input !== 'string') {
116
- throw new YAMLParseError('Input deve ser uma string');
117
- }
118
-
119
- const maxStringLength = this.config.maxStringLength || 1048576; // Default 1MB
120
- if (input.length > maxStringLength) {
121
- throw new YAMLSecurityError(
122
- `Tamanho do input (${input.length}) excede limite máximo (${maxStringLength})`
123
- );
124
- }
125
-
126
- if (input.trim().length === 0) {
127
- throw new YAMLParseError('Input vazio não é permitido');
128
- }
129
-
130
- // Validações UTF-8 básicas
131
- if ((this.config.validateUTF8 ?? true) && !this.isValidUTF8(input)) {
132
- throw new YAMLSecurityError('Input contém caracteres UTF-8 inválidos');
133
- }
134
- }
135
-
136
- /**
137
- * Valida resultado após parsing
138
- */
139
- private validateResult(result: any): void {
140
- // Validar profundidade máxima antes de serialização
141
- const depth = this.getObjectDepth(result);
142
- const maxDepth = this.config.maxDepth || 1000;
143
- if (depth > maxDepth) {
144
- throw new YAMLSecurityError(
145
- `Profundidade do objeto (${depth}) excede limite máximo (${maxDepth})`
146
- );
147
- }
148
-
149
- // Validar tipos permitidos
150
- if (!this.isAllowedType(result)) {
151
- const allowedTypes = this.config.allowedTypes || ['null', 'boolean', 'integer', 'float', 'string'];
152
- throw new YAMLSecurityError(
153
- 'O resultado contém tipos não permitidos. Tipos permitidos: ' +
154
- allowedTypes.join(', ')
155
- );
156
- }
157
-
158
- // Validar tamanho total aproximado
159
- const size = this.estimateObjectSize(result);
160
- const maxValueSize = this.config.maxValueSize || 10485760; // Default 10MB
161
- if (size > maxValueSize) {
162
- throw new YAMLSecurityError(
163
- `Tamanho do objeto (${size} bytes) excede limite máximo (${maxValueSize} bytes)`
164
- );
165
- }
166
- }
167
-
168
- /**
169
- * Verifica se é UTF-8 válido
170
- */
171
- private isValidUTF8(str: string): boolean {
172
- try {
173
- encodeURIComponent(str);
174
- return true;
175
- } catch {
176
- return false;
177
- }
178
- }
179
-
180
- /**
181
- * Calcula profundidade do objeto
182
- */
183
- private getObjectDepth(obj: any, currentDepth = 0): number {
184
- if (obj === null || typeof obj !== 'object') {
185
- return currentDepth;
186
- }
187
-
188
- if (Array.isArray(obj)) {
189
- return obj.reduce((max, item) =>
190
- Math.max(max as number, this.getObjectDepth(item, currentDepth + 1)), currentDepth + 1);
191
- }
192
-
193
- const values = Object.values(obj);
194
- return values.reduce((max: number, value) =>
195
- Math.max(max, this.getObjectDepth(value, currentDepth + 1)), currentDepth + 1);
196
- }
197
-
198
- /**
199
- * Verifica se os tipos são permitidos
200
- */
201
- private isAllowedType(obj: any): boolean {
202
- const type = this.getType(obj);
203
-
204
- // Verificar tipos básicos permitidos
205
- const allowedTypes = this.config.allowedTypes || ['null', 'boolean', 'integer', 'float', 'string'];
206
- if (!allowedTypes.includes(type as any)) {
207
- return false;
208
- }
209
-
210
- // Recursivamente verificar objetos e arrays
211
- if (typeof obj === 'object' && obj !== null) {
212
- const values = Array.isArray(obj) ? obj : Object.values(obj);
213
- return values.every(value => this.isAllowedType(value));
214
- }
215
-
216
- return true;
217
- }
218
-
219
- /**
220
- * Estima tamanho do objeto em bytes
221
- */
222
- private estimateObjectSize(obj: any): number {
223
- return JSON.stringify(obj).length;
224
- }
225
-
226
- /**
227
- * Obtém tipo completo do objeto
228
- */
229
- private getType(obj: any): string {
230
- if (obj === null) return 'null';
231
- if (Array.isArray(obj)) return 'array';
232
- if (typeof obj === 'object') return 'object';
233
- if (typeof obj === 'number') {
234
- return Number.isInteger(obj) ? 'integer' : 'float';
235
- }
236
- return typeof obj;
237
- }
238
-
239
- /**
240
- * Parse assíncrono para lazy loading
241
- */
242
- async parseSecureAsync(yamlContent: string): Promise<any> {
243
- if (this.config.lazyLoading) {
244
- // Lazy loading - criar Promise para carregar parser apenas quando necessário
245
- return new Promise((resolve, reject) => {
246
- setTimeout(() => {
247
- try {
248
- resolve(this.parseSecure(yamlContent));
249
- } catch (error) {
250
- reject(error);
251
- }
252
- }, 0);
253
- });
254
- } else {
255
- return this.parseSecure(yamlContent);
256
- }
257
- }
258
- }
259
-
260
- /**
261
- * Factory function para criar parser com configuração padrão segura
262
- */
263
- export function createSecureYamlParser(config?: Partial<YAMLParserConfig>): SecureYamlParser {
264
- return new SecureYamlParser(config);
265
- }
266
-
267
- /**
268
- * Função utilitária para parse rápido com configuração padrão
269
- */
270
- export function parseSecureYaml(yamlContent: string, config?: Partial<YAMLParserConfig>): any {
271
- const parser = createSecureYamlParser(config);
272
- return parser.parseSecure(yamlContent);
273
- }