@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,216 @@
1
+ apiVersion: ossa/v0.4.1
2
+ kind: Agent
3
+ metadata:
4
+ name: production-agent-with-tools
5
+ version: 1.0.0
6
+ description: |
7
+ Production-ready agent with 6 tools showcasing v0.4.1 features:
8
+ - Async API calls
9
+ - Pydantic models for type validation
10
+ - MCP tool integration
11
+ - Production-quality error handling
12
+ labels:
13
+ platform: langchain
14
+ export: langchain
15
+ use-case: production-showcase
16
+ tier: production
17
+ version: v0.4.1
18
+
19
+ spec:
20
+ role: |
21
+ You are a production assistant with multiple capabilities:
22
+ 1. Search and analyze data
23
+ 2. Make HTTP API calls
24
+ 3. Execute MCP tools
25
+ 4. Process text and generate reports
26
+ 5. Send notifications
27
+
28
+ llm:
29
+ provider: openai
30
+ model: gpt-4o
31
+ temperature: 0.7
32
+ maxTokens: 2000
33
+
34
+ capabilities:
35
+ - search
36
+ - api_calls
37
+ - text_processing
38
+ - notifications
39
+ - mcp_tools
40
+
41
+ tools:
42
+ # API Tool - Async HTTP requests with Pydantic validation
43
+ - type: api
44
+ name: search_api
45
+ description: Search external knowledge base via REST API
46
+ endpoint: https://api.example.com/search
47
+ method: POST
48
+ parameters:
49
+ type: object
50
+ properties:
51
+ query:
52
+ type: string
53
+ description: Search query string
54
+ max_results:
55
+ type: integer
56
+ description: Maximum number of results
57
+ default: 10
58
+ filters:
59
+ type: object
60
+ description: Optional search filters
61
+ required:
62
+ - query
63
+
64
+ # Function Tool - Complex schema with Pydantic model
65
+ - type: function
66
+ name: analyze_text
67
+ description: Analyze text content and extract insights
68
+ parameters:
69
+ type: object
70
+ properties:
71
+ text:
72
+ type: string
73
+ description: Text content to analyze
74
+ analysis_types:
75
+ type: array
76
+ items:
77
+ type: string
78
+ description: Types of analysis (sentiment, entities, keywords)
79
+ language:
80
+ type: string
81
+ description: Language code (en, es, fr, etc.)
82
+ default: en
83
+ include_summary:
84
+ type: boolean
85
+ description: Include generated summary
86
+ default: true
87
+ required:
88
+ - text
89
+ - analysis_types
90
+
91
+ # Function Tool - Data processing with nested schema
92
+ - type: function
93
+ name: generate_report
94
+ description: Generate formatted report from data
95
+ parameters:
96
+ type: object
97
+ properties:
98
+ title:
99
+ type: string
100
+ description: Report title
101
+ sections:
102
+ type: array
103
+ items:
104
+ type: object
105
+ description: Report sections with content
106
+ format:
107
+ type: string
108
+ description: Output format
109
+ enum: [markdown, html, pdf]
110
+ default: markdown
111
+ include_charts:
112
+ type: boolean
113
+ description: Include data visualizations
114
+ default: false
115
+ required:
116
+ - title
117
+ - sections
118
+
119
+ # API Tool - Webhook notification
120
+ - type: api
121
+ name: send_notification
122
+ description: Send notification via webhook
123
+ endpoint: https://hooks.example.com/notify
124
+ method: POST
125
+ parameters:
126
+ type: object
127
+ properties:
128
+ message:
129
+ type: string
130
+ description: Notification message
131
+ priority:
132
+ type: string
133
+ enum: [low, medium, high, urgent]
134
+ description: Notification priority
135
+ channels:
136
+ type: array
137
+ items:
138
+ type: string
139
+ description: Notification channels (email, slack, sms)
140
+ required:
141
+ - message
142
+ - priority
143
+
144
+ # MCP Tool - Model Context Protocol integration
145
+ - type: mcp
146
+ name: mcp_database_query
147
+ description: Query database via MCP server
148
+ server: mcp-postgres-server
149
+ config:
150
+ server: mcp-postgres-server
151
+ timeout: 30
152
+ parameters:
153
+ type: object
154
+ properties:
155
+ query:
156
+ type: string
157
+ description: SQL query to execute
158
+ database:
159
+ type: string
160
+ description: Database name
161
+ read_only:
162
+ type: boolean
163
+ description: Execute in read-only mode
164
+ default: true
165
+ required:
166
+ - query
167
+ - database
168
+
169
+ # Function Tool - Simple tool without complex schema
170
+ - type: function
171
+ name: format_timestamp
172
+ description: Format timestamp to human-readable string
173
+ parameters:
174
+ type: object
175
+ properties:
176
+ timestamp:
177
+ type: integer
178
+ description: Unix timestamp
179
+ format:
180
+ type: string
181
+ description: Output format string
182
+ default: "%Y-%m-%d %H:%M:%S"
183
+ timezone:
184
+ type: string
185
+ description: Timezone (e.g., UTC, America/New_York)
186
+ default: UTC
187
+ required:
188
+ - timestamp
189
+
190
+ autonomy:
191
+ level: supervised
192
+ approval_required: false
193
+
194
+ memory:
195
+ enabled: true
196
+ type: conversation_buffer
197
+ window_size: 20
198
+
199
+ observability:
200
+ logging:
201
+ level: info
202
+ format: json
203
+ metrics:
204
+ enabled: true
205
+ tracing:
206
+ enabled: true
207
+ provider: opentelemetry
208
+
209
+ extensions:
210
+ langchain:
211
+ agent_type: react
212
+ export_config:
213
+ format: python
214
+ include_dependencies: true
215
+ include_api_server: true
216
+ api_port: 8000
@@ -0,0 +1,246 @@
1
+ /**
2
+ * LangChain Export Example
3
+ *
4
+ * Demonstrates complete LangChain export with:
5
+ * - Python agent code
6
+ * - FastAPI REST API
7
+ * - OpenAPI 3.1 specification
8
+ * - Docker containerization
9
+ * - Multiple memory backends
10
+ */
11
+
12
+ import { LangChainExporter } from '../../src/services/export/langchain/index.js';
13
+ import type { OssaAgent } from '../../src/types/index.js';
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+
17
+ /**
18
+ * Example: Customer Support Bot
19
+ */
20
+ const supportBotManifest: OssaAgent = {
21
+ apiVersion: 'ossa/v0.3.6',
22
+ kind: 'Agent',
23
+ metadata: {
24
+ name: 'support-bot',
25
+ version: '1.0.0',
26
+ description:
27
+ 'Customer support agent with ticket creation and knowledge base search',
28
+ author: 'OSSA Team',
29
+ license: 'MIT',
30
+ },
31
+ spec: {
32
+ role: `You are a helpful customer support agent. Your responsibilities:
33
+
34
+ 1. Answer customer questions using the knowledge base
35
+ 2. Create support tickets for complex issues
36
+ 3. Escalate urgent matters to human agents
37
+ 4. Maintain a friendly, professional tone
38
+
39
+ Always be helpful, clear, and empathetic.`,
40
+ llm: {
41
+ provider: 'openai',
42
+ model: 'gpt-4',
43
+ temperature: 0.7,
44
+ maxTokens: 2000,
45
+ },
46
+ tools: [
47
+ {
48
+ name: 'search_docs',
49
+ type: 'function',
50
+ description:
51
+ 'Search the knowledge base for relevant documentation and FAQs',
52
+ input_schema: {
53
+ type: 'object',
54
+ properties: {
55
+ query: {
56
+ type: 'string',
57
+ description: 'Search query',
58
+ },
59
+ limit: {
60
+ type: 'integer',
61
+ description: 'Maximum number of results',
62
+ default: 5,
63
+ },
64
+ },
65
+ required: ['query'],
66
+ },
67
+ },
68
+ {
69
+ name: 'create_ticket',
70
+ type: 'function',
71
+ description:
72
+ 'Create a support ticket for complex issues that require human attention',
73
+ input_schema: {
74
+ type: 'object',
75
+ properties: {
76
+ title: {
77
+ type: 'string',
78
+ description: 'Ticket title',
79
+ },
80
+ description: {
81
+ type: 'string',
82
+ description: 'Detailed description of the issue',
83
+ },
84
+ priority: {
85
+ type: 'string',
86
+ enum: ['low', 'medium', 'high', 'urgent'],
87
+ description: 'Ticket priority',
88
+ default: 'medium',
89
+ },
90
+ },
91
+ required: ['title', 'description'],
92
+ },
93
+ },
94
+ {
95
+ name: 'get_order_status',
96
+ type: 'api',
97
+ description: 'Get the current status of a customer order',
98
+ config: {
99
+ endpoint: 'https://api.example.com/orders/{order_id}',
100
+ method: 'GET',
101
+ },
102
+ },
103
+ ],
104
+ },
105
+ };
106
+
107
+ /**
108
+ * Export with all features enabled
109
+ */
110
+ async function exportSupportBot() {
111
+ console.log('🚀 Exporting LangChain Support Bot...\n');
112
+
113
+ const exporter = new LangChainExporter();
114
+
115
+ const result = await exporter.export(supportBotManifest, {
116
+ pythonVersion: '3.11',
117
+ includeApi: true,
118
+ includeOpenApi: true,
119
+ includeDocker: true,
120
+ includeTests: true,
121
+ memoryBackend: 'redis',
122
+ apiPort: 8000,
123
+ });
124
+
125
+ if (!result.success) {
126
+ console.error('❌ Export failed:', result.error);
127
+ process.exit(1);
128
+ }
129
+
130
+ // Write files to output directory
131
+ const outputDir = path.join(process.cwd(), 'examples/export/output/support-bot');
132
+
133
+ if (!fs.existsSync(outputDir)) {
134
+ fs.mkdirSync(outputDir, { recursive: true });
135
+ }
136
+
137
+ console.log('📝 Writing files:\n');
138
+
139
+ for (const file of result.files) {
140
+ const filePath = path.join(outputDir, file.path);
141
+ const fileDir = path.dirname(filePath);
142
+
143
+ if (!fs.existsSync(fileDir)) {
144
+ fs.mkdirSync(fileDir, { recursive: true });
145
+ }
146
+
147
+ fs.writeFileSync(filePath, file.content, 'utf-8');
148
+ console.log(` ✅ ${file.path} (${file.type}, ${file.content.length} bytes)`);
149
+ }
150
+
151
+ console.log('\n✨ Export completed successfully!\n');
152
+ console.log('📊 Export Statistics:');
153
+ console.log(` - Python Version: ${result.metadata?.pythonVersion}`);
154
+ console.log(` - LangChain Version: ${result.metadata?.langchainVersion}`);
155
+ console.log(` - Tools: ${result.metadata?.toolsCount}`);
156
+ console.log(` - Memory: ${result.metadata?.memoryType}`);
157
+ console.log(` - API: ${result.metadata?.hasApi ? 'Yes' : 'No'}`);
158
+ console.log(` - OpenAPI: ${result.metadata?.hasOpenApi ? 'Yes' : 'No'}`);
159
+ console.log(` - Duration: ${result.metadata?.duration}ms`);
160
+ console.log(` - Files: ${result.files.length}`);
161
+
162
+ console.log('\n🚀 Next Steps:');
163
+ console.log(` cd ${outputDir}`);
164
+ console.log(` # Copy .env.example to .env and add your API keys`);
165
+ console.log(` cp .env.example .env`);
166
+ console.log(` # Run with Docker:`);
167
+ console.log(` docker-compose up`);
168
+ console.log(` # OR run locally:`);
169
+ console.log(` pip install -r requirements.txt`);
170
+ console.log(` uvicorn server:app --reload`);
171
+ console.log(` # API docs at: http://localhost:8000/docs`);
172
+ }
173
+
174
+ /**
175
+ * Export with buffer memory (simple)
176
+ */
177
+ async function exportSimpleAgent() {
178
+ console.log('\n📦 Exporting Simple Agent with Buffer Memory...\n');
179
+
180
+ const simpleManifest: OssaAgent = {
181
+ apiVersion: 'ossa/v0.3.6',
182
+ kind: 'Agent',
183
+ metadata: {
184
+ name: 'simple-agent',
185
+ version: '1.0.0',
186
+ description: 'Simple conversational agent',
187
+ },
188
+ spec: {
189
+ role: 'You are a helpful AI assistant.',
190
+ llm: {
191
+ provider: 'anthropic',
192
+ model: 'claude-3-sonnet-20240229',
193
+ temperature: 0.7,
194
+ },
195
+ },
196
+ };
197
+
198
+ const exporter = new LangChainExporter();
199
+
200
+ const result = await exporter.export(simpleManifest, {
201
+ memoryBackend: 'buffer',
202
+ includeApi: true,
203
+ includeDocker: true,
204
+ });
205
+
206
+ if (result.success) {
207
+ const outputDir = path.join(
208
+ process.cwd(),
209
+ 'examples/export/output/simple-agent'
210
+ );
211
+
212
+ if (!fs.existsSync(outputDir)) {
213
+ fs.mkdirSync(outputDir, { recursive: true });
214
+ }
215
+
216
+ for (const file of result.files) {
217
+ const filePath = path.join(outputDir, file.path);
218
+ const fileDir = path.dirname(filePath);
219
+
220
+ if (!fs.existsSync(fileDir)) {
221
+ fs.mkdirSync(fileDir, { recursive: true });
222
+ }
223
+
224
+ fs.writeFileSync(filePath, file.content, 'utf-8');
225
+ }
226
+
227
+ console.log(`✅ Simple agent exported to: ${outputDir}`);
228
+ console.log(` Files: ${result.files.length}`);
229
+ }
230
+ }
231
+
232
+ // Run examples
233
+ async function main() {
234
+ try {
235
+ await exportSupportBot();
236
+ await exportSimpleAgent();
237
+ } catch (error) {
238
+ console.error('Error:', error);
239
+ process.exit(1);
240
+ }
241
+ }
242
+
243
+ // Execute if run directly
244
+ if (import.meta.url.endsWith(process.argv[1])) {
245
+ main();
246
+ }
@@ -0,0 +1,246 @@
1
+ /**
2
+ * LangServe Export Example
3
+ *
4
+ * Demonstrates how to export an OSSA agent to a production-ready
5
+ * LangServe deployment with Docker, Kubernetes, and cloud platform configs.
6
+ */
7
+
8
+ import { LangChainExporter } from '../../src/services/export/langchain/index.js';
9
+ import type { OssaAgent } from '../../src/types/index.js';
10
+
11
+ // Example OSSA manifest
12
+ const manifest: OssaAgent = {
13
+ apiVersion: 'ossa.ai/v0.4.1',
14
+ kind: 'Agent',
15
+ metadata: {
16
+ name: 'customer-support-agent',
17
+ description: 'AI-powered customer support agent with LangServe deployment',
18
+ version: '1.0.0',
19
+ labels: {
20
+ 'app.kubernetes.io/name': 'customer-support-agent',
21
+ 'app.kubernetes.io/component': 'ai-agent',
22
+ },
23
+ },
24
+ spec: {
25
+ role: 'You are a helpful customer support agent. Assist users with their questions about products, orders, and services.',
26
+ llm: {
27
+ provider: 'openai',
28
+ model: 'gpt-4',
29
+ temperature: 0.7,
30
+ maxTokens: 2000,
31
+ },
32
+ tools: [
33
+ {
34
+ name: 'search_knowledge_base',
35
+ description: 'Search the knowledge base for information',
36
+ parameters: {
37
+ type: 'object',
38
+ properties: {
39
+ query: {
40
+ type: 'string',
41
+ description: 'Search query',
42
+ },
43
+ },
44
+ required: ['query'],
45
+ },
46
+ },
47
+ {
48
+ name: 'create_ticket',
49
+ description: 'Create a support ticket',
50
+ parameters: {
51
+ type: 'object',
52
+ properties: {
53
+ title: {
54
+ type: 'string',
55
+ description: 'Ticket title',
56
+ },
57
+ description: {
58
+ type: 'string',
59
+ description: 'Ticket description',
60
+ },
61
+ priority: {
62
+ type: 'string',
63
+ enum: ['low', 'medium', 'high', 'urgent'],
64
+ description: 'Ticket priority',
65
+ },
66
+ },
67
+ required: ['title', 'description', 'priority'],
68
+ },
69
+ },
70
+ ],
71
+ memory: {
72
+ type: 'conversation-buffer',
73
+ },
74
+ },
75
+ };
76
+
77
+ async function exportToLangServe() {
78
+ const exporter = new LangChainExporter();
79
+
80
+ console.log('Exporting OSSA agent to LangServe deployment...\n');
81
+
82
+ // Export with LangServe support
83
+ const result = await exporter.export(manifest, {
84
+ pythonVersion: '3.11',
85
+ includeApi: true,
86
+ includeOpenApi: true,
87
+ includeDocker: true,
88
+ includeTests: true,
89
+ memoryBackend: 'buffer',
90
+ apiPort: 8000,
91
+
92
+ // Enable LangServe deployment
93
+ includeLangServe: true,
94
+
95
+ // LangServe configuration
96
+ langserve: {
97
+ enableFeedback: true,
98
+ enablePublicTraceLink: true,
99
+ enablePlayground: true,
100
+ routePath: '/agent',
101
+ port: 8000,
102
+ includeDeployment: true,
103
+ deploymentPlatforms: ['docker', 'kubernetes', 'railway', 'render', 'fly'],
104
+ },
105
+
106
+ // Observability
107
+ callbacks: {
108
+ langsmith: true,
109
+ langfuse: false,
110
+ opentelemetry: false,
111
+ },
112
+
113
+ // Error handling
114
+ errorHandling: {
115
+ retry: {
116
+ enabled: true,
117
+ maxRetries: 3,
118
+ backoffMultiplier: 2,
119
+ },
120
+ circuitBreaker: {
121
+ enabled: true,
122
+ failureThreshold: 5,
123
+ timeout: 60000,
124
+ },
125
+ fallback: {
126
+ useCachedResponses: true,
127
+ },
128
+ },
129
+ });
130
+
131
+ if (result.success) {
132
+ console.log('✓ Export successful!\n');
133
+ console.log(`Generated ${result.files.length} files:\n`);
134
+
135
+ // Group files by type
136
+ const filesByType = result.files.reduce(
137
+ (acc, file) => {
138
+ const type = file.type || 'other';
139
+ if (!acc[type]) acc[type] = [];
140
+ acc[type].push(file.path);
141
+ return acc;
142
+ },
143
+ {} as Record<string, string[]>
144
+ );
145
+
146
+ // Display files
147
+ for (const [type, files] of Object.entries(filesByType)) {
148
+ console.log(`${type.toUpperCase()}:`);
149
+ files.forEach((file) => console.log(` - ${file}`));
150
+ console.log();
151
+ }
152
+
153
+ console.log('Metadata:');
154
+ console.log(` Python Version: ${result.metadata?.pythonVersion}`);
155
+ console.log(` LangChain Version: ${result.metadata?.langchainVersion}`);
156
+ console.log(` Tools: ${result.metadata?.toolsCount}`);
157
+ console.log(` Memory Backend: ${result.metadata?.memoryType}`);
158
+ console.log(` Duration: ${result.metadata?.duration}ms`);
159
+ console.log();
160
+
161
+ // Display LangServe endpoints
162
+ console.log('LangServe Endpoints:');
163
+ console.log(' POST /agent/invoke - Synchronous invocation');
164
+ console.log(' POST /agent/batch - Batch processing');
165
+ console.log(' POST /agent/stream - Streaming responses (SSE)');
166
+ console.log(' POST /agent/stream_log - Detailed streaming');
167
+ console.log(' GET /agent/playground - Interactive playground UI');
168
+ console.log(' GET /docs - OpenAPI documentation');
169
+ console.log(' GET /health - Health check');
170
+ console.log();
171
+
172
+ // Display deployment options
173
+ console.log('Deployment Options:');
174
+ console.log(' 1. Docker:');
175
+ console.log(' docker build -f Dockerfile.langserve -t customer-support-agent .');
176
+ console.log(' docker-compose -f docker-compose.langserve.yaml up');
177
+ console.log();
178
+ console.log(' 2. Kubernetes:');
179
+ console.log(' kubectl apply -f k8s/');
180
+ console.log();
181
+ console.log(' 3. Railway:');
182
+ console.log(' railway up');
183
+ console.log();
184
+ console.log(' 4. Render:');
185
+ console.log(' Connect Git repo and deploy via render.yaml');
186
+ console.log();
187
+ console.log(' 5. Fly.io:');
188
+ console.log(' fly launch && fly deploy');
189
+ console.log();
190
+
191
+ // Display file content preview for key files
192
+ console.log('Key Files Preview:\n');
193
+
194
+ const langserveApp = result.files.find((f) => f.path === 'langserve_app.py');
195
+ if (langserveApp) {
196
+ console.log('--- langserve_app.py (first 30 lines) ---');
197
+ console.log(langserveApp.content.split('\n').slice(0, 30).join('\n'));
198
+ console.log('...\n');
199
+ }
200
+
201
+ const deploymentReadme = result.files.find((f) => f.path === 'DEPLOYMENT.md');
202
+ if (deploymentReadme) {
203
+ console.log('--- DEPLOYMENT.md (first 40 lines) ---');
204
+ console.log(deploymentReadme.content.split('\n').slice(0, 40).join('\n'));
205
+ console.log('...\n');
206
+ }
207
+
208
+ // Usage examples
209
+ console.log('Usage Examples:\n');
210
+ console.log('Python Client:');
211
+ console.log('```python');
212
+ console.log('from langserve import RemoteRunnable');
213
+ console.log('');
214
+ console.log('agent = RemoteRunnable("http://localhost:8000/agent")');
215
+ console.log('result = agent.invoke("How do I track my order?")');
216
+ console.log('print(result)');
217
+ console.log('```\n');
218
+
219
+ console.log('JavaScript/TypeScript Client:');
220
+ console.log('```typescript');
221
+ console.log('import { RemoteRunnable } from "@langchain/core/runnables/remote";');
222
+ console.log('');
223
+ console.log('const agent = new RemoteRunnable({');
224
+ console.log(' url: "http://localhost:8000/agent"');
225
+ console.log('});');
226
+ console.log('const result = await agent.invoke("How do I return a product?");');
227
+ console.log('```\n');
228
+
229
+ console.log('cURL:');
230
+ console.log('```bash');
231
+ console.log('curl -X POST "http://localhost:8000/agent/invoke" \\');
232
+ console.log(' -H "Content-Type: application/json" \\');
233
+ console.log(' -d \'{"input": "What are your business hours?"}\'');
234
+ console.log('```\n');
235
+ } else {
236
+ console.error('✗ Export failed:');
237
+ console.error(result.error);
238
+ process.exit(1);
239
+ }
240
+ }
241
+
242
+ // Run example
243
+ exportToLangServe().catch((error) => {
244
+ console.error('Error:', error);
245
+ process.exit(1);
246
+ });