@bluefly/openstandardagents 0.4.0 → 0.4.1

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 (517) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/DEMO.md +212 -0
  3. package/README.md +75 -15
  4. package/dist/adapters/drupal/generator.d.ts +149 -0
  5. package/dist/adapters/drupal/generator.d.ts.map +1 -0
  6. package/dist/adapters/drupal/generator.js +1760 -0
  7. package/dist/adapters/drupal/generator.js.map +1 -0
  8. package/dist/adapters/drupal/index.d.ts +2 -0
  9. package/dist/adapters/drupal/index.d.ts.map +1 -1
  10. package/dist/adapters/drupal/index.js +3 -0
  11. package/dist/adapters/drupal/index.js.map +1 -1
  12. package/dist/adapters/npm/adapter.js +2 -2
  13. package/dist/adapters/npm/converter.js +3 -3
  14. package/dist/cli/banner.d.ts +21 -0
  15. package/dist/cli/banner.d.ts.map +1 -0
  16. package/dist/cli/banner.js +128 -0
  17. package/dist/cli/banner.js.map +1 -0
  18. package/dist/cli/commands/dev.command.d.ts +20 -0
  19. package/dist/cli/commands/dev.command.d.ts.map +1 -0
  20. package/dist/cli/commands/dev.command.js +78 -0
  21. package/dist/cli/commands/dev.command.js.map +1 -0
  22. package/dist/cli/commands/estimate.command.d.ts +12 -0
  23. package/dist/cli/commands/estimate.command.d.ts.map +1 -0
  24. package/dist/cli/commands/estimate.command.js +226 -0
  25. package/dist/cli/commands/estimate.command.js.map +1 -0
  26. package/dist/cli/commands/export-enhanced.command.d.ts +7 -0
  27. package/dist/cli/commands/export-enhanced.command.d.ts.map +1 -0
  28. package/dist/cli/commands/{export-v2.command.js → export-enhanced.command.js} +3 -3
  29. package/dist/cli/commands/export-enhanced.command.js.map +1 -0
  30. package/dist/cli/commands/export.command.d.ts.map +1 -1
  31. package/dist/cli/commands/export.command.js +82 -4
  32. package/dist/cli/commands/export.command.js.map +1 -1
  33. package/dist/cli/commands/init.command.d.ts.map +1 -1
  34. package/dist/cli/commands/init.command.js +2 -0
  35. package/dist/cli/commands/init.command.js.map +1 -1
  36. package/dist/cli/commands/test.command.d.ts +1 -0
  37. package/dist/cli/commands/test.command.d.ts.map +1 -1
  38. package/dist/cli/commands/test.command.js +172 -105
  39. package/dist/cli/commands/test.command.js.map +1 -1
  40. package/dist/cli/commands/types/wizard-config.types.d.ts +59 -0
  41. package/dist/cli/commands/types/wizard-config.types.d.ts.map +1 -0
  42. package/dist/cli/commands/types/wizard-config.types.js +34 -0
  43. package/dist/cli/commands/types/wizard-config.types.js.map +1 -0
  44. package/dist/cli/commands/upgrade.command.d.ts +9 -0
  45. package/dist/cli/commands/upgrade.command.d.ts.map +1 -0
  46. package/dist/cli/commands/upgrade.command.js +167 -0
  47. package/dist/cli/commands/upgrade.command.js.map +1 -0
  48. package/dist/cli/commands/wizard-api-first.command.d.ts +18 -0
  49. package/dist/cli/commands/wizard-api-first.command.d.ts.map +1 -0
  50. package/dist/cli/commands/wizard-api-first.command.js +854 -0
  51. package/dist/cli/commands/wizard-api-first.command.js.map +1 -0
  52. package/dist/cli/commands/wizard-interactive.command.d.ts +25 -0
  53. package/dist/cli/commands/wizard-interactive.command.d.ts.map +1 -0
  54. package/dist/cli/commands/wizard-interactive.command.js +1875 -0
  55. package/dist/cli/commands/wizard-interactive.command.js.map +1 -0
  56. package/dist/cli/commands/workspace.command.js +1 -1
  57. package/dist/cli/commands/workspace.command.js.map +1 -1
  58. package/dist/cli/index.js +9 -0
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/schema-driven/index.d.ts +27 -0
  61. package/dist/cli/schema-driven/index.d.ts.map +1 -0
  62. package/dist/cli/schema-driven/index.js +34 -0
  63. package/dist/cli/schema-driven/index.js.map +1 -0
  64. package/dist/cli/schema-driven/schema-loader.d.ts +115 -0
  65. package/dist/cli/schema-driven/schema-loader.d.ts.map +1 -0
  66. package/dist/cli/schema-driven/schema-loader.js +270 -0
  67. package/dist/cli/schema-driven/schema-loader.js.map +1 -0
  68. package/dist/cli/schema-driven/ui-generator.d.ts +88 -0
  69. package/dist/cli/schema-driven/ui-generator.d.ts.map +1 -0
  70. package/dist/cli/schema-driven/ui-generator.js +326 -0
  71. package/dist/cli/schema-driven/ui-generator.js.map +1 -0
  72. package/dist/cli/wizard/interactive-wizard.d.ts +26 -0
  73. package/dist/cli/wizard/interactive-wizard.d.ts.map +1 -0
  74. package/dist/cli/wizard/interactive-wizard.js +296 -0
  75. package/dist/cli/wizard/interactive-wizard.js.map +1 -0
  76. package/dist/cli/wizard/template-catalog.d.ts +32 -0
  77. package/dist/cli/wizard/template-catalog.d.ts.map +1 -0
  78. package/dist/cli/wizard/template-catalog.js +99 -0
  79. package/dist/cli/wizard/template-catalog.js.map +1 -0
  80. package/dist/cli/wizard/use-cases.d.ts +37 -0
  81. package/dist/cli/wizard/use-cases.d.ts.map +1 -0
  82. package/dist/cli/wizard/use-cases.js +157 -0
  83. package/dist/cli/wizard/use-cases.js.map +1 -0
  84. package/dist/di-container.d.ts.map +1 -1
  85. package/dist/di-container.js +2 -0
  86. package/dist/di-container.js.map +1 -1
  87. package/dist/package.json +19 -9
  88. package/dist/runtime/agent-runner.d.ts +46 -0
  89. package/dist/runtime/agent-runner.d.ts.map +1 -0
  90. package/dist/runtime/agent-runner.js +346 -0
  91. package/dist/runtime/agent-runner.js.map +1 -0
  92. package/dist/sdks/kagent/crd-generator.d.ts +4 -0
  93. package/dist/sdks/kagent/crd-generator.d.ts.map +1 -1
  94. package/dist/sdks/kagent/crd-generator.js +83 -2
  95. package/dist/sdks/kagent/crd-generator.js.map +1 -1
  96. package/dist/sdks/kagent/k8s-resources-generator.d.ts +73 -0
  97. package/dist/sdks/kagent/k8s-resources-generator.d.ts.map +1 -0
  98. package/dist/sdks/kagent/k8s-resources-generator.js +286 -0
  99. package/dist/sdks/kagent/k8s-resources-generator.js.map +1 -0
  100. package/dist/sdks/kagent/types.d.ts +79 -0
  101. package/dist/sdks/kagent/types.d.ts.map +1 -1
  102. package/dist/sdks/shared/validation.d.ts +2 -2
  103. package/dist/services/cost-estimation/optimization-patterns.d.ts +23 -0
  104. package/dist/services/cost-estimation/optimization-patterns.d.ts.map +1 -0
  105. package/dist/services/cost-estimation/optimization-patterns.js +147 -0
  106. package/dist/services/cost-estimation/optimization-patterns.js.map +1 -0
  107. package/dist/services/cost-estimation/pricing.d.ts +29 -0
  108. package/dist/services/cost-estimation/pricing.d.ts.map +1 -0
  109. package/dist/services/cost-estimation/pricing.js +225 -0
  110. package/dist/services/cost-estimation/pricing.js.map +1 -0
  111. package/dist/services/cost-estimation/scenario-estimator.d.ts +59 -0
  112. package/dist/services/cost-estimation/scenario-estimator.d.ts.map +1 -0
  113. package/dist/services/cost-estimation/scenario-estimator.js +145 -0
  114. package/dist/services/cost-estimation/scenario-estimator.js.map +1 -0
  115. package/dist/services/cost-estimation/token-counter.service.d.ts +51 -0
  116. package/dist/services/cost-estimation/token-counter.service.d.ts.map +1 -0
  117. package/dist/services/cost-estimation/token-counter.service.js +125 -0
  118. package/dist/services/cost-estimation/token-counter.service.js.map +1 -0
  119. package/dist/services/dev-server/dev-server.service.d.ts +121 -0
  120. package/dist/services/dev-server/dev-server.service.d.ts.map +1 -0
  121. package/dist/services/dev-server/dev-server.service.js +290 -0
  122. package/dist/services/dev-server/dev-server.service.js.map +1 -0
  123. package/dist/services/dev-server/file-watcher.d.ts +101 -0
  124. package/dist/services/dev-server/file-watcher.d.ts.map +1 -0
  125. package/dist/services/dev-server/file-watcher.js +190 -0
  126. package/dist/services/dev-server/file-watcher.js.map +1 -0
  127. package/dist/services/dev-server/live-validator.d.ts +157 -0
  128. package/dist/services/dev-server/live-validator.d.ts.map +1 -0
  129. package/dist/services/dev-server/live-validator.js +301 -0
  130. package/dist/services/dev-server/live-validator.js.map +1 -0
  131. package/dist/services/dev-server/websocket-server.d.ts +137 -0
  132. package/dist/services/dev-server/websocket-server.d.ts.map +1 -0
  133. package/dist/services/dev-server/websocket-server.js +229 -0
  134. package/dist/services/dev-server/websocket-server.js.map +1 -0
  135. package/dist/services/export/anthropic/anthropic-exporter.d.ts +70 -0
  136. package/dist/services/export/anthropic/anthropic-exporter.d.ts.map +1 -0
  137. package/dist/services/export/anthropic/anthropic-exporter.js +576 -0
  138. package/dist/services/export/anthropic/anthropic-exporter.js.map +1 -0
  139. package/dist/services/export/anthropic/api-generator.d.ts +39 -0
  140. package/dist/services/export/anthropic/api-generator.d.ts.map +1 -0
  141. package/dist/services/export/anthropic/api-generator.js +395 -0
  142. package/dist/services/export/anthropic/api-generator.js.map +1 -0
  143. package/dist/services/export/anthropic/index.d.ts +18 -0
  144. package/dist/services/export/anthropic/index.d.ts.map +1 -0
  145. package/dist/services/export/anthropic/index.js +16 -0
  146. package/dist/services/export/anthropic/index.js.map +1 -0
  147. package/dist/services/export/anthropic/tools-generator.d.ts +35 -0
  148. package/dist/services/export/anthropic/tools-generator.d.ts.map +1 -0
  149. package/dist/services/export/anthropic/tools-generator.js +260 -0
  150. package/dist/services/export/anthropic/tools-generator.js.map +1 -0
  151. package/dist/services/export/langchain/api-generator.d.ts +17 -0
  152. package/dist/services/export/langchain/api-generator.d.ts.map +1 -0
  153. package/dist/services/export/langchain/api-generator.js +375 -0
  154. package/dist/services/export/langchain/api-generator.js.map +1 -0
  155. package/dist/services/export/langchain/callbacks-generator.d.ts +63 -0
  156. package/dist/services/export/langchain/callbacks-generator.d.ts.map +1 -0
  157. package/dist/services/export/langchain/callbacks-generator.js +408 -0
  158. package/dist/services/export/langchain/callbacks-generator.js.map +1 -0
  159. package/dist/services/export/langchain/error-handling-generator.d.ts +76 -0
  160. package/dist/services/export/langchain/error-handling-generator.d.ts.map +1 -0
  161. package/dist/services/export/langchain/error-handling-generator.js +522 -0
  162. package/dist/services/export/langchain/error-handling-generator.js.map +1 -0
  163. package/dist/services/export/langchain/index.d.ts +17 -0
  164. package/dist/services/export/langchain/index.d.ts.map +1 -0
  165. package/dist/services/export/langchain/index.js +13 -0
  166. package/dist/services/export/langchain/index.js.map +1 -0
  167. package/dist/services/export/langchain/langchain-exporter.d.ts +174 -0
  168. package/dist/services/export/langchain/langchain-exporter.d.ts.map +1 -0
  169. package/dist/services/export/langchain/langchain-exporter.js +953 -0
  170. package/dist/services/export/langchain/langchain-exporter.js.map +1 -0
  171. package/dist/services/export/langchain/langgraph-generator.d.ts +86 -0
  172. package/dist/services/export/langchain/langgraph-generator.d.ts.map +1 -0
  173. package/dist/services/export/langchain/langgraph-generator.js +473 -0
  174. package/dist/services/export/langchain/langgraph-generator.js.map +1 -0
  175. package/dist/services/export/langchain/langserve-generator.d.ts +95 -0
  176. package/dist/services/export/langchain/langserve-generator.d.ts.map +1 -0
  177. package/dist/services/export/langchain/langserve-generator.js +807 -0
  178. package/dist/services/export/langchain/langserve-generator.js.map +1 -0
  179. package/dist/services/export/langchain/memory-generator.d.ts +71 -0
  180. package/dist/services/export/langchain/memory-generator.d.ts.map +1 -0
  181. package/dist/services/export/langchain/memory-generator.js +1182 -0
  182. package/dist/services/export/langchain/memory-generator.js.map +1 -0
  183. package/dist/services/export/langchain/openapi-generator.d.ts +20 -0
  184. package/dist/services/export/langchain/openapi-generator.d.ts.map +1 -0
  185. package/dist/services/export/langchain/openapi-generator.js +364 -0
  186. package/dist/services/export/langchain/openapi-generator.js.map +1 -0
  187. package/dist/services/export/langchain/plan-execute-generator.d.ts +60 -0
  188. package/dist/services/export/langchain/plan-execute-generator.d.ts.map +1 -0
  189. package/dist/services/export/langchain/plan-execute-generator.js +679 -0
  190. package/dist/services/export/langchain/plan-execute-generator.js.map +1 -0
  191. package/dist/services/export/langchain/streaming-generator.d.ts +66 -0
  192. package/dist/services/export/langchain/streaming-generator.d.ts.map +1 -0
  193. package/dist/services/export/langchain/streaming-generator.js +749 -0
  194. package/dist/services/export/langchain/streaming-generator.js.map +1 -0
  195. package/dist/services/export/langchain/tools-generator.d.ts +67 -0
  196. package/dist/services/export/langchain/tools-generator.d.ts.map +1 -0
  197. package/dist/services/export/langchain/tools-generator.js +543 -0
  198. package/dist/services/export/langchain/tools-generator.js.map +1 -0
  199. package/dist/services/export/npm/express-generator.d.ts +23 -0
  200. package/dist/services/export/npm/express-generator.d.ts.map +1 -0
  201. package/dist/services/export/npm/express-generator.js +296 -0
  202. package/dist/services/export/npm/express-generator.js.map +1 -0
  203. package/dist/services/export/npm/index.d.ts +13 -0
  204. package/dist/services/export/npm/index.d.ts.map +1 -0
  205. package/dist/services/export/npm/index.js +11 -0
  206. package/dist/services/export/npm/index.js.map +1 -0
  207. package/dist/services/export/npm/npm-exporter.d.ts +142 -0
  208. package/dist/services/export/npm/npm-exporter.d.ts.map +1 -0
  209. package/dist/services/export/npm/npm-exporter.js +480 -0
  210. package/dist/services/export/npm/npm-exporter.js.map +1 -0
  211. package/dist/services/export/npm/openapi-generator.d.ts +19 -0
  212. package/dist/services/export/npm/openapi-generator.d.ts.map +1 -0
  213. package/dist/services/export/npm/openapi-generator.js +428 -0
  214. package/dist/services/export/npm/openapi-generator.js.map +1 -0
  215. package/dist/services/export/npm/package-json-generator.d.ts +31 -0
  216. package/dist/services/export/npm/package-json-generator.d.ts.map +1 -0
  217. package/dist/services/export/npm/package-json-generator.js +153 -0
  218. package/dist/services/export/npm/package-json-generator.js.map +1 -0
  219. package/dist/services/export/npm/typescript-generator.d.ts +69 -0
  220. package/dist/services/export/npm/typescript-generator.d.ts.map +1 -0
  221. package/dist/services/export/npm/typescript-generator.js +437 -0
  222. package/dist/services/export/npm/typescript-generator.js.map +1 -0
  223. package/dist/services/export/testing/index.d.ts +8 -0
  224. package/dist/services/export/testing/index.d.ts.map +1 -0
  225. package/dist/services/export/testing/index.js +7 -0
  226. package/dist/services/export/testing/index.js.map +1 -0
  227. package/dist/services/export/testing/test-generator.d.ts +178 -0
  228. package/dist/services/export/testing/test-generator.d.ts.map +1 -0
  229. package/dist/services/export/testing/test-generator.js +2542 -0
  230. package/dist/services/export/testing/test-generator.js.map +1 -0
  231. package/dist/services/test-runner/mock-llm.service.d.ts +77 -0
  232. package/dist/services/test-runner/mock-llm.service.d.ts.map +1 -0
  233. package/dist/services/test-runner/mock-llm.service.js +173 -0
  234. package/dist/services/test-runner/mock-llm.service.js.map +1 -0
  235. package/dist/services/test-runner/scenarios.d.ts +36 -0
  236. package/dist/services/test-runner/scenarios.d.ts.map +1 -0
  237. package/dist/services/test-runner/scenarios.js +196 -0
  238. package/dist/services/test-runner/scenarios.js.map +1 -0
  239. package/dist/services/test-runner/test-runner.service.d.ts +19 -1
  240. package/dist/services/test-runner/test-runner.service.d.ts.map +1 -1
  241. package/dist/services/test-runner/test-runner.service.js +72 -6
  242. package/dist/services/test-runner/test-runner.service.js.map +1 -1
  243. package/dist/services/validation/best-practices-validator.d.ts +84 -0
  244. package/dist/services/validation/best-practices-validator.d.ts.map +1 -0
  245. package/dist/services/validation/best-practices-validator.js +499 -0
  246. package/dist/services/validation/best-practices-validator.js.map +1 -0
  247. package/dist/services/validation/cost-estimator.d.ts +69 -0
  248. package/dist/services/validation/cost-estimator.d.ts.map +1 -0
  249. package/dist/services/validation/cost-estimator.js +221 -0
  250. package/dist/services/validation/cost-estimator.js.map +1 -0
  251. package/dist/services/validation/enhanced-validator.d.ts +78 -0
  252. package/dist/services/validation/enhanced-validator.d.ts.map +1 -0
  253. package/dist/services/validation/enhanced-validator.js +212 -0
  254. package/dist/services/validation/enhanced-validator.js.map +1 -0
  255. package/dist/services/validation/index.d.ts +13 -0
  256. package/dist/services/validation/index.d.ts.map +1 -0
  257. package/dist/services/validation/index.js +9 -0
  258. package/dist/services/validation/index.js.map +1 -0
  259. package/dist/services/validation/security-validator.d.ts +81 -0
  260. package/dist/services/validation/security-validator.d.ts.map +1 -0
  261. package/dist/services/validation/security-validator.js +328 -0
  262. package/dist/services/validation/security-validator.js.map +1 -0
  263. package/dist/services/wizard/prompts.d.ts +71 -0
  264. package/dist/services/wizard/prompts.d.ts.map +1 -0
  265. package/dist/services/wizard/prompts.js +322 -0
  266. package/dist/services/wizard/prompts.js.map +1 -0
  267. package/dist/services/wizard/wizard.service.d.ts +60 -0
  268. package/dist/services/wizard/wizard.service.d.ts.map +1 -0
  269. package/dist/services/wizard/wizard.service.js +261 -0
  270. package/dist/services/wizard/wizard.service.js.map +1 -0
  271. package/dist/types/personality.zod.d.ts +23 -23
  272. package/dist/utils/version.d.ts +1 -1
  273. package/dist/utils/version.js +1 -1
  274. package/dist/version-management/core/version-manager.test.js.map +1 -1
  275. package/dist/version.d.ts +62 -0
  276. package/dist/version.d.ts.map +1 -0
  277. package/dist/version.js +73 -0
  278. package/dist/version.js.map +1 -0
  279. package/examples/a2a/agent-handoff.ossa.yaml +1 -1
  280. package/examples/a2a/service-discovery.ossa.yaml +1 -1
  281. package/examples/adapters/drupal-eca-mapping.yaml +1 -1
  282. package/examples/adapters/drupal-eca-task.yaml +1 -1
  283. package/examples/adapters/drupal-flowdrop-mapping.yaml +1 -1
  284. package/examples/adapters/drupal-maestro-mapping.yaml +1 -1
  285. package/examples/adapters/mistral-agent.yaml +1 -1
  286. package/examples/adapters/symfony-messenger-task.yaml +1 -1
  287. package/examples/adapters/symfony-messenger-workflow.yaml +1 -1
  288. package/examples/adk-integration/code-review-workflow.yml +1 -1
  289. package/examples/adk-integration/customer-support.yml +1 -1
  290. package/examples/adk-integration/data-pipeline.yml +1 -1
  291. package/examples/advanced/reasoning-agent.yaml +1 -1
  292. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  293. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  294. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  295. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  296. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  297. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  298. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  299. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  300. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  301. package/examples/agents/01-customer-support-bot/.env.example +32 -0
  302. package/examples/agents/01-customer-support-bot/Dockerfile +30 -0
  303. package/examples/agents/01-customer-support-bot/README.md +295 -0
  304. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +172 -0
  305. package/examples/agents/01-customer-support-bot/docker-compose.yml +55 -0
  306. package/examples/agents/01-customer-support-bot/openapi.yaml +238 -0
  307. package/examples/agents/01-customer-support-bot/package.json +48 -0
  308. package/examples/agents/02-code-review-agent/README.md +72 -0
  309. package/examples/agents/02-code-review-agent/agent.ossa.yaml +239 -0
  310. package/examples/agents/02-code-review-agent/docker-compose.yml +22 -0
  311. package/examples/agents/02-code-review-agent/openapi.yaml +150 -0
  312. package/examples/agents/03-data-analysis-agent/README.md +51 -0
  313. package/examples/agents/03-data-analysis-agent/agent.ossa.yaml +97 -0
  314. package/examples/agents/03-data-analysis-agent/openapi.yaml +74 -0
  315. package/examples/agents/04-content-moderator/README.md +55 -0
  316. package/examples/agents/04-content-moderator/agent.ossa.yaml +131 -0
  317. package/examples/agents/04-content-moderator/openapi.yaml +50 -0
  318. package/examples/agents/05-sales-assistant/README.md +37 -0
  319. package/examples/agents/05-sales-assistant/agent.ossa.yaml +146 -0
  320. package/examples/agents/05-sales-assistant/openapi.yaml +59 -0
  321. package/examples/agents/06-devops-agent/README.md +39 -0
  322. package/examples/agents/06-devops-agent/agent.ossa.yaml +141 -0
  323. package/examples/agents/06-devops-agent/openapi.yaml +51 -0
  324. package/examples/agents/07-research-assistant/README.md +31 -0
  325. package/examples/agents/07-research-assistant/agent.ossa.yaml +119 -0
  326. package/examples/agents/07-research-assistant/openapi.yaml +56 -0
  327. package/examples/agents/08-email-triage-agent/README.md +33 -0
  328. package/examples/agents/08-email-triage-agent/agent.ossa.yaml +133 -0
  329. package/examples/agents/08-email-triage-agent/openapi.yaml +41 -0
  330. package/examples/agents/09-security-scanner/README.md +49 -0
  331. package/examples/agents/09-security-scanner/agent.ossa.yaml +174 -0
  332. package/examples/agents/09-security-scanner/openapi.yaml +46 -0
  333. package/examples/agents/10-meeting-assistant/README.md +53 -0
  334. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +211 -0
  335. package/examples/agents/10-meeting-assistant/docker-compose.yml +27 -0
  336. package/examples/agents/10-meeting-assistant/openapi.yaml +131 -0
  337. package/examples/agents/COMPLETION_REPORT.txt +272 -0
  338. package/examples/agents/INDEX.md +296 -0
  339. package/examples/agents/README.md +452 -0
  340. package/examples/agents/SUMMARY.md +362 -0
  341. package/examples/agents/TEST_RESULTS.md +458 -0
  342. package/examples/agents/architecture-healer-enterprise.yaml +1 -1
  343. package/examples/agents/dependency-healer-npm.yaml +1 -1
  344. package/examples/agents/spec-healer-openapi.yaml +1 -1
  345. package/examples/agents/wiki-healer-production.yaml +1 -1
  346. package/examples/agents-md/code-agent.ossa.json +1 -1
  347. package/examples/agents-md/monorepo-agent.ossa.yaml +1 -1
  348. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  349. package/examples/autogen/multi-agent.ossa.json +1 -1
  350. package/examples/autonomous-evolution/self-evolving-agent.ossa.yaml +1 -1
  351. package/examples/build-once-use-everywhere/agent.ossa.yaml +1 -1
  352. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  353. package/examples/claude-code/ossa-validator.ossa.yaml +1 -1
  354. package/examples/common_npm/agent-router.ossa.yaml +2 -2
  355. package/examples/contracts/data-consumer.ossa.yaml +1 -1
  356. package/examples/contracts/data-producer-v2.ossa.yaml +1 -1
  357. package/examples/contracts/data-producer.ossa.yaml +1 -1
  358. package/examples/crewai/research-team.ossa.json +1 -1
  359. package/examples/cursor/code-review-agent.ossa.json +1 -1
  360. package/examples/drupal/QUICKSTART.md +439 -0
  361. package/examples/drupal/ai_agents_ossa-module/.agents/example-agent/agent.ossa.yaml +1 -1
  362. package/examples/drupal/content-moderator.ossa.yaml +107 -0
  363. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +2 -2
  364. package/examples/economics/marketplace-agent.ossa.json +1 -1
  365. package/examples/export/langchain/production-agent-with-memory/README.md +373 -0
  366. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +97 -0
  367. package/examples/export/langchain/production-agent-with-streaming/README.md +617 -0
  368. package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +100 -0
  369. package/examples/export/langchain/production-agent-with-streaming/client-example.py +263 -0
  370. package/examples/export/langchain/production-agent-with-tools/README.md +296 -0
  371. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +216 -0
  372. package/examples/export/langchain-export-example.ts +246 -0
  373. package/examples/export/langserve-export-example.ts +246 -0
  374. package/examples/export/test-generation-example.ts +457 -0
  375. package/examples/extensions/agents-md-advanced.yml +1 -1
  376. package/examples/extensions/agents-md-basic.yml +1 -1
  377. package/examples/extensions/agents-md-sync.yml +1 -1
  378. package/examples/extensions/agents-md-v1.yml +1 -1
  379. package/examples/extensions/drupal-v1.yml +1 -1
  380. package/examples/extensions/encryption-multi-provider.yaml +4 -4
  381. package/examples/extensions/kagent-v1.yml +1 -1
  382. package/examples/extensions/knowledge-sources.yaml +1 -1
  383. package/examples/extensions/mcp-full-featured.yaml +1 -1
  384. package/examples/genetics/breeding-agent.ossa.json +1 -1
  385. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  386. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  387. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  388. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  389. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  390. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  391. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +1 -1
  392. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  393. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  394. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  395. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +2 -2
  396. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  397. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  398. package/examples/langchain/chain-agent.ossa.json +1 -1
  399. package/examples/langflow/workflow-agent.ossa.json +1 -1
  400. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  401. package/examples/lifecycle/mentoring-agent.ossa.json +1 -1
  402. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  403. package/examples/mcp/database-mcp.ossa.yaml +1 -1
  404. package/examples/mcp/filesystem-mcp.ossa.yaml +1 -1
  405. package/examples/messaging/dependency-healer.ossa.yaml +1 -1
  406. package/examples/messaging/incident-responder.ossa.yaml +1 -1
  407. package/examples/messaging/routing-rules.ossa.yaml +1 -1
  408. package/examples/messaging/security-scanner.ossa.yaml +1 -1
  409. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  410. package/examples/migrations/langchain/01-python-react-agent-after.ossa.yaml +1 -1
  411. package/examples/migrations/langchain/02-typescript-conversational-after.ossa.yaml +1 -1
  412. package/examples/migrations/langchain/03-sequential-chain-after.ossa.yaml +1 -1
  413. package/examples/migrations/langchain/04-config-based-after.ossa.yaml +1 -1
  414. package/examples/migrations/swarm-to-ossa/after-handoffs.ossa.yaml +6 -6
  415. package/examples/migrations/swarm-to-ossa/after-triage-agent.ossa.yaml +3 -3
  416. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  417. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  418. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  419. package/examples/multi-agent-research-workflow.ossa.yaml +133 -0
  420. package/examples/multi-platform/single-manifest/agent.ossa.yaml +1 -1
  421. package/examples/npm-export-example.ts +150 -0
  422. package/examples/observability/activity-stream-full.yaml +1 -1
  423. package/examples/openai/basic-agent.ossa.yaml +1 -1
  424. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  425. package/examples/openai/swarm-agent.ossa.json +1 -1
  426. package/examples/ossa-templates/01-code-assistant.ossa.yaml +1 -1
  427. package/examples/ossa-templates/02-security-scanner.ossa.yaml +1 -1
  428. package/examples/ossa-templates/03-ci-pipeline.ossa.yaml +1 -1
  429. package/examples/ossa-templates/04-code-reviewer.ossa.yaml +1 -1
  430. package/examples/ossa-templates/05-doc-generator.ossa.yaml +1 -1
  431. package/examples/ossa-templates/06-compliance-validator.ossa.yaml +1 -1
  432. package/examples/ossa-templates/07-workflow-orchestrator.ossa.yaml +1 -1
  433. package/examples/ossa-templates/08-content-writer.ossa.yaml +1 -1
  434. package/examples/ossa-templates/09-test-generator.ossa.yaml +1 -1
  435. package/examples/ossa-templates/10-data-transformer.ossa.yaml +1 -1
  436. package/examples/ossa-templates/11-react-performance-expert.ossa.yaml +1 -1
  437. package/examples/ossa-templates/12-typescript-type-safety-expert.ossa.yaml +1 -1
  438. package/examples/ossa-templates/13-accessibility-champion.ossa.yaml +1 -1
  439. package/examples/ossa-templates/14-security-hardening-agent.ossa.yaml +1 -1
  440. package/examples/production/document-analyzer-openai.yml +1 -1
  441. package/examples/production-ready/01-customer-support-bot/.env.example +32 -0
  442. package/examples/production-ready/01-customer-support-bot/Dockerfile +30 -0
  443. package/examples/production-ready/01-customer-support-bot/README.md +295 -0
  444. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +172 -0
  445. package/examples/production-ready/01-customer-support-bot/docker-compose.yml +55 -0
  446. package/examples/production-ready/01-customer-support-bot/openapi.yaml +238 -0
  447. package/examples/production-ready/01-customer-support-bot/package.json +48 -0
  448. package/examples/production-ready/02-code-review-agent/README.md +72 -0
  449. package/examples/production-ready/02-code-review-agent/agent.ossa.yaml +239 -0
  450. package/examples/production-ready/02-code-review-agent/docker-compose.yml +22 -0
  451. package/examples/production-ready/02-code-review-agent/openapi.yaml +150 -0
  452. package/examples/production-ready/03-data-analysis-agent/README.md +51 -0
  453. package/examples/production-ready/03-data-analysis-agent/agent.ossa.yaml +97 -0
  454. package/examples/production-ready/03-data-analysis-agent/openapi.yaml +74 -0
  455. package/examples/production-ready/04-content-moderator/README.md +55 -0
  456. package/examples/production-ready/04-content-moderator/agent.ossa.yaml +131 -0
  457. package/examples/production-ready/04-content-moderator/openapi.yaml +50 -0
  458. package/examples/production-ready/05-sales-assistant/README.md +37 -0
  459. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +146 -0
  460. package/examples/production-ready/05-sales-assistant/openapi.yaml +59 -0
  461. package/examples/production-ready/06-devops-agent/README.md +39 -0
  462. package/examples/production-ready/06-devops-agent/agent.ossa.yaml +141 -0
  463. package/examples/production-ready/06-devops-agent/openapi.yaml +51 -0
  464. package/examples/production-ready/07-research-assistant/README.md +31 -0
  465. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +119 -0
  466. package/examples/production-ready/07-research-assistant/openapi.yaml +56 -0
  467. package/examples/production-ready/08-email-triage-agent/README.md +33 -0
  468. package/examples/production-ready/08-email-triage-agent/agent.ossa.yaml +133 -0
  469. package/examples/production-ready/08-email-triage-agent/openapi.yaml +41 -0
  470. package/examples/production-ready/09-security-scanner/README.md +49 -0
  471. package/examples/production-ready/09-security-scanner/agent.ossa.yaml +174 -0
  472. package/examples/production-ready/09-security-scanner/openapi.yaml +46 -0
  473. package/examples/production-ready/10-meeting-assistant/README.md +53 -0
  474. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +211 -0
  475. package/examples/production-ready/10-meeting-assistant/docker-compose.yml +27 -0
  476. package/examples/production-ready/10-meeting-assistant/openapi.yaml +131 -0
  477. package/examples/production-ready/COMPLETION_REPORT.txt +272 -0
  478. package/examples/production-ready/INDEX.md +296 -0
  479. package/examples/production-ready/README.md +452 -0
  480. package/examples/production-ready/SUMMARY.md +362 -0
  481. package/examples/production-ready/TEST_RESULTS.md +458 -0
  482. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  483. package/examples/real-world/gitlab-cicd-optimizer.ossa.yaml +1 -1
  484. package/examples/real-world/rag-documentation-assistant.ossa.yaml +1 -1
  485. package/examples/registry/agents/code-reviewer/agent.yaml +1 -1
  486. package/examples/registry/agents/security-scanner/agent.yaml +1 -1
  487. package/examples/runtime-adapters/bedrock-claude-example.ossa.yaml +1 -1
  488. package/examples/schema/reusable-components.yaml +1 -1
  489. package/examples/showcase/ci-pipeline.ossa.yaml +1 -1
  490. package/examples/showcase/code-assistant.ossa.yaml +1 -1
  491. package/examples/showcase/code-reviewer.ossa.yaml +1 -1
  492. package/examples/showcase/compliance-validator.ossa.yaml +1 -1
  493. package/examples/showcase/content-writer.ossa.yaml +1 -1
  494. package/examples/showcase/data-transformer.ossa.yaml +1 -1
  495. package/examples/showcase/doc-generator.ossa.yaml +1 -1
  496. package/examples/showcase/security-scanner.ossa.yaml +1 -1
  497. package/examples/showcase/test-generator.ossa.yaml +1 -1
  498. package/examples/showcase/workflow-orchestrator.ossa.yaml +1 -1
  499. package/examples/skills-example.ossa.yaml +140 -0
  500. package/examples/swarm/pso-optimizer.ossa.json +1 -1
  501. package/examples/tasks/batch-email-sender.yaml +1 -1
  502. package/examples/tasks/data-transform.yaml +1 -1
  503. package/examples/tasks/publish-content.yaml +1 -1
  504. package/examples/templates/ossa-compliance.yaml +1 -1
  505. package/examples/unified/security-scanner.ossa.yaml +1 -1
  506. package/examples/v0.3.6-features/genetics-breeding-advanced.ossa.yaml +1 -1
  507. package/examples/v0.3.6-features/genetics-breeding-simple.ossa.yaml +1 -1
  508. package/examples/v0.3.6-features/genetics-fitness-scoring.ossa.yaml +1 -1
  509. package/examples/vercel/edge-agent.ossa.json +1 -1
  510. package/examples/workflows/batch-email-campaign.yaml +1 -1
  511. package/examples/workflows/content-review-publish.yaml +1 -1
  512. package/examples/workflows/simple-etl.yaml +1 -1
  513. package/openapi/cli/openapi.yaml +221 -5
  514. package/package.json +17 -7
  515. package/dist/cli/commands/export-v2.command.d.ts +0 -7
  516. package/dist/cli/commands/export-v2.command.d.ts.map +0 -1
  517. package/dist/cli/commands/export-v2.command.js.map +0 -1
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Cost Estimator
3
+ * Estimates runtime costs for OSSA agents based on LLM provider, model, and usage
4
+ *
5
+ * SOLID: Single Responsibility - Only handles cost estimation
6
+ * DRY: Centralized pricing data and calculation logic
7
+ */
8
+ /**
9
+ * Provider pricing map
10
+ */
11
+ const PRICING_MAP = {
12
+ openai: {
13
+ 'gpt-4': { input: 0.03, output: 0.06 },
14
+ 'gpt-4-turbo': { input: 0.01, output: 0.03 },
15
+ 'gpt-4o': { input: 0.005, output: 0.015 },
16
+ 'gpt-4o-mini': { input: 0.00015, output: 0.0006 },
17
+ 'gpt-3.5-turbo': { input: 0.0005, output: 0.0015 },
18
+ 'o1-preview': { input: 0.015, output: 0.06 },
19
+ 'o1-mini': { input: 0.003, output: 0.012 },
20
+ },
21
+ anthropic: {
22
+ 'claude-opus-4': { input: 0.015, output: 0.075 },
23
+ 'claude-sonnet-4': { input: 0.003, output: 0.015 },
24
+ 'claude-haiku-4': { input: 0.00025, output: 0.00125 },
25
+ 'claude-3-opus': { input: 0.015, output: 0.075 },
26
+ 'claude-3-sonnet': { input: 0.003, output: 0.015 },
27
+ 'claude-3-haiku': { input: 0.00025, output: 0.00125 },
28
+ },
29
+ google: {
30
+ 'gemini-1.5-pro': { input: 0.00125, output: 0.005 },
31
+ 'gemini-1.5-flash': { input: 0.000075, output: 0.0003 },
32
+ 'gemini-pro': { input: 0.0005, output: 0.0015 },
33
+ },
34
+ cohere: {
35
+ 'command-r-plus': { input: 0.003, output: 0.015 },
36
+ 'command-r': { input: 0.0005, output: 0.0015 },
37
+ 'command': { input: 0.001, output: 0.002 },
38
+ },
39
+ mistral: {
40
+ 'mistral-large': { input: 0.004, output: 0.012 },
41
+ 'mistral-medium': { input: 0.0027, output: 0.0081 },
42
+ 'mistral-small': { input: 0.001, output: 0.003 },
43
+ },
44
+ };
45
+ /**
46
+ * Default usage estimates (tokens per request)
47
+ */
48
+ const DEFAULT_USAGE = {
49
+ inputTokens: 1000,
50
+ outputTokens: 500,
51
+ requestsPerDay: 100,
52
+ };
53
+ /**
54
+ * Cost Estimator Service
55
+ */
56
+ export class CostEstimator {
57
+ /**
58
+ * Estimate costs for an agent manifest
59
+ */
60
+ estimate(manifest) {
61
+ const llmConfig = this.extractLLMConfig(manifest);
62
+ const pricing = this.getPricing(llmConfig.provider, llmConfig.model);
63
+ const usage = this.estimateUsage(manifest);
64
+ const inputCost = (usage.inputTokens / 1000) * pricing.input * usage.requestsPerDay;
65
+ const outputCost = (usage.outputTokens / 1000) * pricing.output * usage.requestsPerDay;
66
+ const dailyCost = inputCost + outputCost;
67
+ const recommendations = this.generateRecommendations(llmConfig.provider, llmConfig.model, dailyCost, manifest);
68
+ return {
69
+ provider: llmConfig.provider,
70
+ model: llmConfig.model,
71
+ estimatedDailyCost: parseFloat(dailyCost.toFixed(4)),
72
+ estimatedMonthlyCost: parseFloat((dailyCost * 30).toFixed(2)),
73
+ breakdown: {
74
+ inputCost: parseFloat(inputCost.toFixed(4)),
75
+ outputCost: parseFloat(outputCost.toFixed(4)),
76
+ requestsPerDay: usage.requestsPerDay,
77
+ tokensPerRequest: {
78
+ input: usage.inputTokens,
79
+ output: usage.outputTokens,
80
+ },
81
+ },
82
+ recommendations,
83
+ currency: 'USD',
84
+ };
85
+ }
86
+ /**
87
+ * Extract LLM configuration from manifest
88
+ */
89
+ extractLLMConfig(manifest) {
90
+ const llm = manifest.spec?.llm || manifest.agent?.llm;
91
+ if (!llm) {
92
+ return { provider: 'unknown', model: 'unknown' };
93
+ }
94
+ return {
95
+ provider: this.normalizeProvider(llm.provider || 'unknown'),
96
+ model: this.normalizeModel(llm.model || 'unknown'),
97
+ };
98
+ }
99
+ /**
100
+ * Normalize provider name
101
+ */
102
+ normalizeProvider(provider) {
103
+ const normalized = provider.toLowerCase().trim();
104
+ if (normalized.includes('openai'))
105
+ return 'openai';
106
+ if (normalized.includes('anthropic') || normalized.includes('claude'))
107
+ return 'anthropic';
108
+ if (normalized.includes('google') || normalized.includes('gemini'))
109
+ return 'google';
110
+ if (normalized.includes('cohere'))
111
+ return 'cohere';
112
+ if (normalized.includes('mistral'))
113
+ return 'mistral';
114
+ return normalized;
115
+ }
116
+ /**
117
+ * Normalize model name
118
+ */
119
+ normalizeModel(model) {
120
+ const normalized = model.toLowerCase().trim();
121
+ // Handle version suffixes
122
+ const baseModel = normalized.split('-202')[0];
123
+ return baseModel;
124
+ }
125
+ /**
126
+ * Get pricing for provider and model
127
+ */
128
+ getPricing(provider, model) {
129
+ const providerPricing = PRICING_MAP[provider];
130
+ if (!providerPricing) {
131
+ return { input: 0, output: 0 };
132
+ }
133
+ // Try exact match
134
+ if (providerPricing[model]) {
135
+ return providerPricing[model];
136
+ }
137
+ // Try fuzzy match
138
+ for (const [key, pricing] of Object.entries(providerPricing)) {
139
+ if (model.includes(key) || key.includes(model)) {
140
+ return pricing;
141
+ }
142
+ }
143
+ return { input: 0, output: 0 };
144
+ }
145
+ /**
146
+ * Estimate usage from manifest
147
+ */
148
+ estimateUsage(manifest) {
149
+ const constraints = manifest.spec?.constraints?.cost;
150
+ const llm = manifest.spec?.llm || manifest.agent?.llm;
151
+ // Use constraints if available
152
+ if (constraints?.maxTokensPerRequest) {
153
+ const inputTokens = Math.floor(constraints.maxTokensPerRequest * 0.7);
154
+ const outputTokens = Math.floor(constraints.maxTokensPerRequest * 0.3);
155
+ const requestsPerDay = constraints.maxTokensPerDay
156
+ ? Math.floor(constraints.maxTokensPerDay / constraints.maxTokensPerRequest)
157
+ : DEFAULT_USAGE.requestsPerDay;
158
+ return { inputTokens, outputTokens, requestsPerDay };
159
+ }
160
+ // Use LLM maxTokens if available
161
+ if (llm?.maxTokens) {
162
+ return {
163
+ inputTokens: Math.floor(llm.maxTokens * 0.7),
164
+ outputTokens: Math.floor(llm.maxTokens * 0.3),
165
+ requestsPerDay: DEFAULT_USAGE.requestsPerDay,
166
+ };
167
+ }
168
+ // Fall back to defaults
169
+ return DEFAULT_USAGE;
170
+ }
171
+ /**
172
+ * Generate cost optimization recommendations
173
+ */
174
+ generateRecommendations(provider, model, dailyCost, manifest) {
175
+ const recommendations = [];
176
+ // High cost warning
177
+ if (dailyCost > 10) {
178
+ recommendations.push(`Daily cost ($${dailyCost.toFixed(2)}) is high. Consider using a smaller model.`);
179
+ }
180
+ // Model-specific recommendations
181
+ if (provider === 'openai' && model.includes('gpt-4') && !model.includes('mini')) {
182
+ recommendations.push('Consider using gpt-4o-mini for cost savings (up to 99% reduction)');
183
+ }
184
+ if (provider === 'anthropic' && model.includes('opus')) {
185
+ recommendations.push('Consider using claude-sonnet-4 for cost savings (80% reduction) with similar quality');
186
+ }
187
+ // Missing constraints
188
+ if (!manifest.spec?.constraints?.cost) {
189
+ recommendations.push('Add cost constraints (maxTokensPerDay, maxCostPerDay) to control spending');
190
+ }
191
+ // Missing rate limits
192
+ if (!manifest.spec?.constraints?.performance?.maxLatencySeconds) {
193
+ recommendations.push('Add performance constraints (maxLatencySeconds, timeoutSeconds) to optimize costs');
194
+ }
195
+ // Token optimization
196
+ const llm = manifest.spec?.llm || manifest.agent?.llm;
197
+ if (llm?.maxTokens && llm.maxTokens > 4000) {
198
+ recommendations.push(`maxTokens (${llm.maxTokens}) is high. Reduce if possible to lower costs.`);
199
+ }
200
+ return recommendations;
201
+ }
202
+ /**
203
+ * Compare costs between different models
204
+ */
205
+ compareCosts(manifest, alternativeModels) {
206
+ const estimates = [];
207
+ // Current model
208
+ estimates.push(this.estimate(manifest));
209
+ // Alternative models
210
+ for (const alternative of alternativeModels) {
211
+ const altManifest = JSON.parse(JSON.stringify(manifest));
212
+ if (altManifest.spec?.llm) {
213
+ altManifest.spec.llm.provider = alternative.provider;
214
+ altManifest.spec.llm.model = alternative.model;
215
+ }
216
+ estimates.push(this.estimate(altManifest));
217
+ }
218
+ return estimates.sort((a, b) => a.estimatedDailyCost - b.estimatedDailyCost);
219
+ }
220
+ }
221
+ //# sourceMappingURL=cost-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-estimator.js","sourceRoot":"","sources":["../../../src/services/validation/cost-estimator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Enhanced Validator
3
+ * Comprehensive validation service with cost estimation, security checks, and best practices
4
+ *
5
+ * SOLID: Composition - delegates to specialized validators
6
+ * DRY: Single entry point for all validation concerns
7
+ * API-First: Integrates with existing ValidationService
8
+ */
9
+ import type { OssaAgent, SchemaVersion, ValidationResult } from '../../types/index.js';
10
+ import { ValidationService } from '../validation.service.js';
11
+ import { type CostEstimate } from './cost-estimator.js';
12
+ import { type SecurityValidationResult } from './security-validator.js';
13
+ import { type BestPracticesResult } from './best-practices-validator.js';
14
+ /**
15
+ * Comprehensive validation report
16
+ */
17
+ export interface EnhancedValidationReport {
18
+ schemaValid: boolean;
19
+ schemaErrors: ValidationResult['errors'];
20
+ schemaWarnings: ValidationResult['warnings'];
21
+ bestPractices: BestPracticesResult;
22
+ security: SecurityValidationResult;
23
+ cost: CostEstimate;
24
+ passed: boolean;
25
+ manifest?: OssaAgent;
26
+ }
27
+ /**
28
+ * Enhanced Validator Service
29
+ * Integrates schema validation, cost estimation, security, and best practices
30
+ */
31
+ export declare class EnhancedValidator {
32
+ private validationService;
33
+ private costEstimator;
34
+ private securityValidator;
35
+ private bestPracticesValidator;
36
+ constructor(validationService: ValidationService);
37
+ /**
38
+ * Perform comprehensive validation
39
+ */
40
+ validate(manifest: unknown, version?: SchemaVersion): Promise<EnhancedValidationReport>;
41
+ /**
42
+ * Validate multiple manifests
43
+ */
44
+ validateMany(manifests: unknown[], version?: SchemaVersion): Promise<EnhancedValidationReport[]>;
45
+ /**
46
+ * Get validation summary
47
+ */
48
+ getSummary(report: EnhancedValidationReport): ValidationSummary;
49
+ /**
50
+ * Get critical issues count
51
+ */
52
+ private getCriticalIssueCount;
53
+ /**
54
+ * Get warnings count
55
+ */
56
+ private getWarningCount;
57
+ /**
58
+ * Generate human-readable report
59
+ */
60
+ generateTextReport(report: EnhancedValidationReport): string;
61
+ /**
62
+ * Generate JSON report
63
+ */
64
+ generateJsonReport(report: EnhancedValidationReport): string;
65
+ }
66
+ /**
67
+ * Validation summary
68
+ */
69
+ export interface ValidationSummary {
70
+ passed: boolean;
71
+ schemaValid: boolean;
72
+ securityScore: number;
73
+ bestPracticesScore: number;
74
+ estimatedDailyCost: number;
75
+ criticalIssues: number;
76
+ warnings: number;
77
+ }
78
+ //# sourceMappingURL=enhanced-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-validator.d.ts","sourceRoot":"","sources":["../../../src/services/validation/enhanced-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAEvC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,cAAc,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAG7C,aAAa,EAAE,mBAAmB,CAAC;IAGnC,QAAQ,EAAE,wBAAwB,CAAC;IAGnC,IAAI,EAAE,YAAY,CAAC;IAGnB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,qBACa,iBAAiB;IAMC,OAAO,CAAC,iBAAiB;IALtD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,sBAAsB,CAAyB;gBAGlB,iBAAiB,EAAE,iBAAiB;IAOzE;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,wBAAwB,CAAC;IA8BpC;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,OAAO,EAAE,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAMtC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,wBAAwB,GAAG,iBAAiB;IAY/D;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM;IAqG5D;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM;CAG7D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Enhanced Validator
3
+ * Comprehensive validation service with cost estimation, security checks, and best practices
4
+ *
5
+ * SOLID: Composition - delegates to specialized validators
6
+ * DRY: Single entry point for all validation concerns
7
+ * API-First: Integrates with existing ValidationService
8
+ */
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ var __metadata = (this && this.__metadata) || function (k, v) {
16
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17
+ };
18
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
19
+ return function (target, key) { decorator(target, key, paramIndex); }
20
+ };
21
+ import { inject, injectable } from 'inversify';
22
+ import { ValidationService } from '../validation.service.js';
23
+ import { CostEstimator } from './cost-estimator.js';
24
+ import { SecurityValidator, } from './security-validator.js';
25
+ import { BestPracticesValidator, } from './best-practices-validator.js';
26
+ /**
27
+ * Enhanced Validator Service
28
+ * Integrates schema validation, cost estimation, security, and best practices
29
+ */
30
+ let EnhancedValidator = class EnhancedValidator {
31
+ validationService;
32
+ costEstimator;
33
+ securityValidator;
34
+ bestPracticesValidator;
35
+ constructor(validationService) {
36
+ this.validationService = validationService;
37
+ this.costEstimator = new CostEstimator();
38
+ this.securityValidator = new SecurityValidator();
39
+ this.bestPracticesValidator = new BestPracticesValidator();
40
+ }
41
+ /**
42
+ * Perform comprehensive validation
43
+ */
44
+ async validate(manifest, version) {
45
+ // 1. Schema validation (existing service)
46
+ const schemaResult = await this.validationService.validate(manifest, version);
47
+ // 2. Even if schema is invalid, try to run other validators on the manifest structure
48
+ // This allows cost estimation and security checks to work even with schema issues
49
+ const manifestToValidate = (schemaResult.manifest || manifest);
50
+ // 3. Run all validators in parallel
51
+ const [bestPractices, security, cost] = await Promise.all([
52
+ Promise.resolve(this.bestPracticesValidator.validate(manifestToValidate)),
53
+ Promise.resolve(this.securityValidator.validate(manifestToValidate)),
54
+ Promise.resolve(this.costEstimator.estimate(manifestToValidate)),
55
+ ]);
56
+ // 4. Determine overall pass/fail
57
+ const passed = schemaResult.valid && security.passed && bestPractices.passed;
58
+ return {
59
+ schemaValid: schemaResult.valid,
60
+ schemaErrors: schemaResult.errors,
61
+ schemaWarnings: schemaResult.warnings,
62
+ bestPractices,
63
+ security,
64
+ cost,
65
+ passed,
66
+ manifest: schemaResult.manifest,
67
+ };
68
+ }
69
+ /**
70
+ * Validate multiple manifests
71
+ */
72
+ async validateMany(manifests, version) {
73
+ return Promise.all(manifests.map((manifest) => this.validate(manifest, version)));
74
+ }
75
+ /**
76
+ * Get validation summary
77
+ */
78
+ getSummary(report) {
79
+ return {
80
+ passed: report.passed,
81
+ schemaValid: report.schemaValid,
82
+ securityScore: report.security.score,
83
+ bestPracticesScore: report.bestPractices.score,
84
+ estimatedDailyCost: report.cost.estimatedDailyCost,
85
+ criticalIssues: this.getCriticalIssueCount(report),
86
+ warnings: this.getWarningCount(report),
87
+ };
88
+ }
89
+ /**
90
+ * Get critical issues count
91
+ */
92
+ getCriticalIssueCount(report) {
93
+ let count = 0;
94
+ // Schema errors
95
+ count += report.schemaErrors.length;
96
+ // Critical security vulnerabilities
97
+ count += report.security.vulnerabilities.filter((v) => v.severity === 'critical').length;
98
+ // Best practices errors
99
+ count += report.bestPractices.issues.filter((i) => i.severity === 'error')
100
+ .length;
101
+ return count;
102
+ }
103
+ /**
104
+ * Get warnings count
105
+ */
106
+ getWarningCount(report) {
107
+ let count = 0;
108
+ // Schema warnings
109
+ count += report.schemaWarnings.length;
110
+ // Security warnings (high/medium severity)
111
+ count += report.security.vulnerabilities.filter((v) => v.severity === 'high' || v.severity === 'medium').length;
112
+ // Best practices warnings
113
+ count += report.bestPractices.issues.filter((i) => i.severity === 'warning')
114
+ .length;
115
+ return count;
116
+ }
117
+ /**
118
+ * Generate human-readable report
119
+ */
120
+ generateTextReport(report) {
121
+ const lines = [];
122
+ lines.push('=== Enhanced Validation Report ===\n');
123
+ // Overall status
124
+ lines.push(`Status: ${report.passed ? 'PASSED ✓' : 'FAILED ✗'}`);
125
+ lines.push('');
126
+ // Schema validation
127
+ lines.push('--- Schema Validation ---');
128
+ lines.push(`Valid: ${report.schemaValid ? 'Yes' : 'No'}`);
129
+ if (report.schemaErrors.length > 0) {
130
+ lines.push(`Errors: ${report.schemaErrors.length}`);
131
+ for (const error of report.schemaErrors.slice(0, 5)) {
132
+ lines.push(` • ${error.instancePath}: ${error.message}`);
133
+ }
134
+ if (report.schemaErrors.length > 5) {
135
+ lines.push(` ... and ${report.schemaErrors.length - 5} more`);
136
+ }
137
+ }
138
+ if (report.schemaWarnings.length > 0) {
139
+ lines.push(`Warnings: ${report.schemaWarnings.length}`);
140
+ }
141
+ lines.push('');
142
+ // Security
143
+ lines.push('--- Security ---');
144
+ lines.push(`Score: ${report.security.score}/100`);
145
+ lines.push(`Status: ${report.security.passed ? 'PASSED' : 'FAILED'}`);
146
+ if (report.security.vulnerabilities.length > 0) {
147
+ lines.push(`Vulnerabilities: ${report.security.vulnerabilities.length}`);
148
+ const critical = report.security.vulnerabilities.filter((v) => v.severity === 'critical');
149
+ const high = report.security.vulnerabilities.filter((v) => v.severity === 'high');
150
+ if (critical.length > 0) {
151
+ lines.push(` Critical: ${critical.length}`);
152
+ for (const vuln of critical) {
153
+ lines.push(` • ${vuln.message}`);
154
+ lines.push(` → ${vuln.recommendation}`);
155
+ }
156
+ }
157
+ if (high.length > 0) {
158
+ lines.push(` High: ${high.length}`);
159
+ for (const vuln of high.slice(0, 3)) {
160
+ lines.push(` • ${vuln.message}`);
161
+ }
162
+ }
163
+ }
164
+ lines.push('');
165
+ // Best Practices
166
+ lines.push('--- Best Practices ---');
167
+ lines.push(`Score: ${report.bestPractices.score}/100`);
168
+ lines.push(`Status: ${report.bestPractices.passed ? 'PASSED' : 'FAILED'}`);
169
+ if (report.bestPractices.issues.length > 0) {
170
+ lines.push(`Issues: ${report.bestPractices.issues.length}`);
171
+ const errors = report.bestPractices.issues.filter((i) => i.severity === 'error');
172
+ const warnings = report.bestPractices.issues.filter((i) => i.severity === 'warning');
173
+ if (errors.length > 0) {
174
+ lines.push(` Errors: ${errors.length}`);
175
+ for (const issue of errors.slice(0, 3)) {
176
+ lines.push(` • ${issue.message}`);
177
+ lines.push(` → ${issue.recommendation}`);
178
+ }
179
+ }
180
+ if (warnings.length > 0) {
181
+ lines.push(` Warnings: ${warnings.length}`);
182
+ }
183
+ }
184
+ lines.push('');
185
+ // Cost Estimation
186
+ lines.push('--- Cost Estimation ---');
187
+ lines.push(`Provider: ${report.cost.provider} | Model: ${report.cost.model}`);
188
+ lines.push(`Estimated Daily Cost: $${report.cost.estimatedDailyCost.toFixed(4)}`);
189
+ lines.push(`Estimated Monthly Cost: $${report.cost.estimatedMonthlyCost.toFixed(2)}`);
190
+ if (report.cost.recommendations.length > 0) {
191
+ lines.push('Recommendations:');
192
+ for (const rec of report.cost.recommendations) {
193
+ lines.push(` • ${rec}`);
194
+ }
195
+ }
196
+ lines.push('');
197
+ return lines.join('\n');
198
+ }
199
+ /**
200
+ * Generate JSON report
201
+ */
202
+ generateJsonReport(report) {
203
+ return JSON.stringify(report, null, 2);
204
+ }
205
+ };
206
+ EnhancedValidator = __decorate([
207
+ injectable(),
208
+ __param(0, inject(ValidationService)),
209
+ __metadata("design:paramtypes", [ValidationService])
210
+ ], EnhancedValidator);
211
+ export { EnhancedValidator };
212
+ //# sourceMappingURL=enhanced-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-validator.js","sourceRoot":"","sources":["../../../src/services/validation/enhanced-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Validation Services
3
+ * Export all validation-related services and types
4
+ */
5
+ export { EnhancedValidator } from './enhanced-validator.js';
6
+ export type { EnhancedValidationReport, ValidationSummary, } from './enhanced-validator.js';
7
+ export { CostEstimator } from './cost-estimator.js';
8
+ export type { CostEstimate } from './cost-estimator.js';
9
+ export { SecurityValidator } from './security-validator.js';
10
+ export type { SecurityVulnerability, SecurityValidationResult, SecuritySeverity, } from './security-validator.js';
11
+ export { BestPracticesValidator } from './best-practices-validator.js';
12
+ export type { BestPracticeIssue, BestPracticesResult, IssueSeverity, } from './best-practices-validator.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/validation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EACV,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EACV,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Validation Services
3
+ * Export all validation-related services and types
4
+ */
5
+ export { EnhancedValidator } from './enhanced-validator.js';
6
+ export { CostEstimator } from './cost-estimator.js';
7
+ export { SecurityValidator } from './security-validator.js';
8
+ export { BestPracticesValidator } from './best-practices-validator.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/validation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAM5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAO5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Security Validator
3
+ * Checks OSSA manifests for security vulnerabilities and issues
4
+ *
5
+ * SOLID: Single Responsibility - Only handles security validation
6
+ * DRY: Centralized security rules and patterns
7
+ */
8
+ import type { OssaAgent } from '../../types/index.js';
9
+ /**
10
+ * Security severity levels
11
+ */
12
+ export type SecuritySeverity = 'critical' | 'high' | 'medium' | 'low' | 'info';
13
+ /**
14
+ * Security vulnerability
15
+ */
16
+ export interface SecurityVulnerability {
17
+ severity: SecuritySeverity;
18
+ category: string;
19
+ message: string;
20
+ path: string;
21
+ recommendation: string;
22
+ cwe?: string;
23
+ }
24
+ /**
25
+ * Security validation result
26
+ */
27
+ export interface SecurityValidationResult {
28
+ score: number;
29
+ vulnerabilities: SecurityVulnerability[];
30
+ passed: boolean;
31
+ }
32
+ /**
33
+ * Security Validator Service
34
+ */
35
+ export declare class SecurityValidator {
36
+ /**
37
+ * Validate security of an agent manifest
38
+ */
39
+ validate(manifest: OssaAgent): SecurityValidationResult;
40
+ /**
41
+ * Check for exposed secrets in manifest
42
+ */
43
+ private checkForSecrets;
44
+ /**
45
+ * Recursively check object for secrets
46
+ */
47
+ private checkObjectForSecrets;
48
+ /**
49
+ * Check for insecure configurations
50
+ */
51
+ private checkInsecureConfig;
52
+ /**
53
+ * Check for insecure HTTP endpoints
54
+ */
55
+ private checkInsecureEndpoints;
56
+ /**
57
+ * Check for missing security controls
58
+ */
59
+ private checkMissingControls;
60
+ /**
61
+ * Check for overly permissive settings
62
+ */
63
+ private checkPermissions;
64
+ /**
65
+ * Check dependencies for security issues
66
+ */
67
+ private checkDependencies;
68
+ /**
69
+ * Calculate security score based on vulnerabilities
70
+ */
71
+ private calculateScore;
72
+ /**
73
+ * Get vulnerabilities by severity
74
+ */
75
+ getBySeverity(vulnerabilities: SecurityVulnerability[], severity: SecuritySeverity): SecurityVulnerability[];
76
+ /**
77
+ * Get vulnerabilities by category
78
+ */
79
+ getByCategory(vulnerabilities: SecurityVulnerability[], category: string): SecurityVulnerability[];
80
+ }
81
+ //# sourceMappingURL=security-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-validator.d.ts","sourceRoot":"","sources":["../../../src/services/validation/security-validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,qBAAqB,EAAE,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;CACjB;AAkCD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,wBAAwB;IA4BvD;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgD9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0D5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0CxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,aAAa,CACX,eAAe,EAAE,qBAAqB,EAAE,EACxC,QAAQ,EAAE,gBAAgB,GACzB,qBAAqB,EAAE;IAI1B;;OAEG;IACH,aAAa,CACX,eAAe,EAAE,qBAAqB,EAAE,EACxC,QAAQ,EAAE,MAAM,GACf,qBAAqB,EAAE;CAG3B"}