@bluefly/openstandardagents 0.4.0 → 0.4.2

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 +137 -0
  2. package/DEMO.md +212 -0
  3. package/README.md +77 -17
  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 +33 -11
  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 +31 -9
  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,260 @@
1
+ /**
2
+ * Anthropic Tools Generator
3
+ *
4
+ * Generates Anthropic-compatible tool definitions from OSSA tools.
5
+ * Supports Claude function calling with proper schema conversion.
6
+ *
7
+ * SOLID: Single Responsibility - Tool schema generation only
8
+ * DRY: Reusable tool conversion logic
9
+ */
10
+ /**
11
+ * Generate Anthropic tool definitions from OSSA manifest
12
+ */
13
+ export function generateTools(manifest) {
14
+ const tools = [];
15
+ // Extract from spec.tools
16
+ if (manifest.spec?.tools && Array.isArray(manifest.spec.tools)) {
17
+ for (const tool of manifest.spec.tools) {
18
+ tools.push(convertOssaToolToAnthropic(tool));
19
+ }
20
+ }
21
+ // Extract from extensions.anthropic.tools
22
+ if (manifest.extensions?.anthropic &&
23
+ typeof manifest.extensions.anthropic === 'object' &&
24
+ 'tools' in manifest.extensions.anthropic) {
25
+ const anthropicExt = manifest.extensions.anthropic;
26
+ if (anthropicExt.tools && Array.isArray(anthropicExt.tools)) {
27
+ tools.push(...anthropicExt.tools);
28
+ }
29
+ }
30
+ return tools;
31
+ }
32
+ /**
33
+ * Convert OSSA tool to Anthropic tool format
34
+ */
35
+ function convertOssaToolToAnthropic(tool) {
36
+ const name = tool.name || 'unknown_tool';
37
+ const description = tool.description || `${tool.type || 'Tool'} tool`;
38
+ // Use inputSchema if available
39
+ if (tool.inputSchema && typeof tool.inputSchema === 'object') {
40
+ return {
41
+ name,
42
+ description,
43
+ input_schema: normalizeSchema(tool.inputSchema),
44
+ };
45
+ }
46
+ // Check config.input_schema
47
+ if (tool.config &&
48
+ typeof tool.config === 'object' &&
49
+ 'input_schema' in tool.config) {
50
+ return {
51
+ name,
52
+ description,
53
+ input_schema: normalizeSchema(tool.config.input_schema),
54
+ };
55
+ }
56
+ // Generate schema based on tool type
57
+ return {
58
+ name,
59
+ description,
60
+ input_schema: generateSchemaForToolType(tool.type || 'function', tool),
61
+ };
62
+ }
63
+ /**
64
+ * Normalize schema to Anthropic format
65
+ */
66
+ function normalizeSchema(schema) {
67
+ // Ensure schema has required fields
68
+ const normalized = {
69
+ type: 'object',
70
+ properties: {},
71
+ };
72
+ if (schema.properties && typeof schema.properties === 'object') {
73
+ normalized.properties = schema.properties;
74
+ }
75
+ if (schema.required && Array.isArray(schema.required)) {
76
+ normalized.required = schema.required;
77
+ }
78
+ return normalized;
79
+ }
80
+ /**
81
+ * Generate input schema based on tool type
82
+ */
83
+ function generateSchemaForToolType(type, tool) {
84
+ switch (type) {
85
+ case 'mcp':
86
+ return {
87
+ type: 'object',
88
+ properties: {
89
+ action: {
90
+ type: 'string',
91
+ description: 'MCP action to execute',
92
+ enum: tool.capabilities || ['read', 'write', 'execute'],
93
+ },
94
+ params: {
95
+ type: 'object',
96
+ description: 'Action parameters',
97
+ },
98
+ },
99
+ required: ['action'],
100
+ };
101
+ case 'http':
102
+ case 'api':
103
+ return {
104
+ type: 'object',
105
+ properties: {
106
+ method: {
107
+ type: 'string',
108
+ description: 'HTTP method',
109
+ enum: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
110
+ },
111
+ path: {
112
+ type: 'string',
113
+ description: 'API endpoint path',
114
+ },
115
+ body: {
116
+ type: 'object',
117
+ description: 'Request body',
118
+ },
119
+ params: {
120
+ type: 'object',
121
+ description: 'Query parameters',
122
+ },
123
+ },
124
+ required: ['method', 'path'],
125
+ };
126
+ case 'function':
127
+ case 'code':
128
+ return {
129
+ type: 'object',
130
+ properties: {
131
+ args: {
132
+ type: 'object',
133
+ description: 'Function arguments',
134
+ },
135
+ },
136
+ };
137
+ case 'search':
138
+ return {
139
+ type: 'object',
140
+ properties: {
141
+ query: {
142
+ type: 'string',
143
+ description: 'Search query',
144
+ },
145
+ filters: {
146
+ type: 'object',
147
+ description: 'Search filters',
148
+ },
149
+ },
150
+ required: ['query'],
151
+ };
152
+ case 'database':
153
+ return {
154
+ type: 'object',
155
+ properties: {
156
+ operation: {
157
+ type: 'string',
158
+ description: 'Database operation',
159
+ enum: ['query', 'insert', 'update', 'delete'],
160
+ },
161
+ query: {
162
+ type: 'string',
163
+ description: 'Query or command',
164
+ },
165
+ params: {
166
+ type: 'object',
167
+ description: 'Query parameters',
168
+ },
169
+ },
170
+ required: ['operation'],
171
+ };
172
+ default:
173
+ return {
174
+ type: 'object',
175
+ properties: {
176
+ input: {
177
+ type: 'string',
178
+ description: 'Tool input',
179
+ },
180
+ },
181
+ };
182
+ }
183
+ }
184
+ /**
185
+ * Generate Python tool definitions code
186
+ */
187
+ export function generatePythonTools(tools) {
188
+ if (tools.length === 0) {
189
+ return 'tools = []';
190
+ }
191
+ const toolDefinitions = tools
192
+ .map((tool) => {
193
+ const schemaJson = JSON.stringify(tool.input_schema, null, 8);
194
+ return ` {
195
+ "name": "${escapeString(tool.name)}",
196
+ "description": "${escapeString(tool.description)}",
197
+ "input_schema": ${schemaJson}
198
+ }`;
199
+ })
200
+ .join(',\n');
201
+ return `tools = [\n${toolDefinitions}\n]`;
202
+ }
203
+ /**
204
+ * Generate tool handler stubs
205
+ */
206
+ export function generateToolHandlers(tools) {
207
+ if (tools.length === 0) {
208
+ return '';
209
+ }
210
+ const handlers = tools
211
+ .map((tool) => {
212
+ return `def handle_${tool.name}(input_data: dict) -> str:
213
+ """
214
+ Handle ${tool.name} tool execution.
215
+
216
+ Args:
217
+ input_data: Tool input matching the schema
218
+
219
+ Returns:
220
+ Tool execution result as string
221
+ """
222
+ # TODO: Implement tool logic
223
+ return json.dumps({"status": "success", "message": "Not implemented"})
224
+ `;
225
+ })
226
+ .join('\n\n');
227
+ const dispatcher = `
228
+ def handle_tool_use(tool_name: str, tool_input: dict) -> str:
229
+ """
230
+ Dispatch tool execution to appropriate handler.
231
+
232
+ Args:
233
+ tool_name: Name of the tool to execute
234
+ tool_input: Tool input data
235
+
236
+ Returns:
237
+ Tool execution result
238
+ """
239
+ handlers = {
240
+ ${tools.map((t) => ` "${t.name}": handle_${t.name}`).join(',\n')}
241
+ }
242
+
243
+ handler = handlers.get(tool_name)
244
+ if not handler:
245
+ return json.dumps({"error": f"Unknown tool: {tool_name}"})
246
+
247
+ try:
248
+ return handler(tool_input)
249
+ except Exception as e:
250
+ return json.dumps({"error": str(e)})
251
+ `;
252
+ return handlers + dispatcher;
253
+ }
254
+ /**
255
+ * Escape string for Python code generation
256
+ */
257
+ function escapeString(str) {
258
+ return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
259
+ }
260
+ //# sourceMappingURL=tools-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-generator.js","sourceRoot":"","sources":["../../../../src/services/export/anthropic/tools-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * FastAPI Server Generator
3
+ *
4
+ * Generates production-ready FastAPI server for LangChain agents
5
+ * with /chat endpoint, health checks, and streaming support
6
+ *
7
+ * SOLID: Single Responsibility - API server generation
8
+ * DRY: Reusable API templates
9
+ */
10
+ import type { OssaAgent } from '../../../types/index.js';
11
+ export declare class ApiGenerator {
12
+ /**
13
+ * Generate FastAPI server code
14
+ */
15
+ generate(manifest: OssaAgent, port?: number): string;
16
+ }
17
+ //# sourceMappingURL=api-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-generator.d.ts","sourceRoot":"","sources":["../../../../src/services/export/langchain/api-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,qBAAa,YAAY;IACvB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,GAAE,MAAa,GAAG,MAAM;CAyW3D"}
@@ -0,0 +1,375 @@
1
+ /**
2
+ * FastAPI Server Generator
3
+ *
4
+ * Generates production-ready FastAPI server for LangChain agents
5
+ * with /chat endpoint, health checks, and streaming support
6
+ *
7
+ * SOLID: Single Responsibility - API server generation
8
+ * DRY: Reusable API templates
9
+ */
10
+ export class ApiGenerator {
11
+ /**
12
+ * Generate FastAPI server code
13
+ */
14
+ generate(manifest, port = 8000) {
15
+ const agentName = manifest.metadata?.name || 'agent';
16
+ const description = manifest.metadata?.description || 'AI Agent API';
17
+ const version = manifest.metadata?.version || '1.0.0';
18
+ return `"""
19
+ FastAPI Server for ${agentName}
20
+
21
+ ${description}
22
+
23
+ This server provides a REST API for the LangChain agent with:
24
+ - POST /chat - Send messages to the agent
25
+ - POST /chat/stream - Streaming chat responses
26
+ - GET /health - Health check endpoint
27
+ - GET /sessions - List active sessions
28
+ - DELETE /sessions/{session_id} - Clear session history
29
+
30
+ OpenAPI documentation available at /docs
31
+ """
32
+
33
+ from typing import Optional, List, Dict, Any
34
+ from fastapi import FastAPI, HTTPException, WebSocket, WebSocketDisconnect, status
35
+ from fastapi.responses import StreamingResponse, JSONResponse
36
+ from fastapi.middleware.cors import CORSMiddleware
37
+ from pydantic import BaseModel, Field
38
+ import uvicorn
39
+ import asyncio
40
+ import json
41
+ import os
42
+
43
+ from agent import create_agent, run
44
+ from memory import get_memory, clear_memory, get_all_sessions, delete_session
45
+ from streaming import stream_sse, stream_websocket, manager as ws_manager
46
+ from callbacks import get_cost_tracker, print_cost_summary
47
+
48
+ # FastAPI app
49
+ app = FastAPI(
50
+ title="${agentName} API",
51
+ description="${description}",
52
+ version="${version}",
53
+ docs_url="/docs",
54
+ redoc_url="/redoc",
55
+ openapi_url="/openapi.json",
56
+ )
57
+
58
+ # CORS middleware
59
+ app.add_middleware(
60
+ CORSMiddleware,
61
+ allow_origins=["*"], # Configure appropriately for production
62
+ allow_credentials=True,
63
+ allow_methods=["*"],
64
+ allow_headers=["*"],
65
+ )
66
+
67
+ # Agent instance (singleton)
68
+ agent = create_agent()
69
+
70
+ # Session memories cache
71
+ session_memories: Dict[str, Any] = {}
72
+
73
+
74
+ # Request/Response Models
75
+
76
+ class ChatRequest(BaseModel):
77
+ """Chat request payload"""
78
+ message: str = Field(..., description="User message to send to the agent")
79
+ session_id: Optional[str] = Field(
80
+ default="default",
81
+ description="Session ID for conversation context"
82
+ )
83
+ stream: Optional[bool] = Field(
84
+ default=False,
85
+ description="Enable streaming responses"
86
+ )
87
+
88
+ class Config:
89
+ json_schema_extra = {
90
+ "example": {
91
+ "message": "Hello! What can you help me with?",
92
+ "session_id": "user-123",
93
+ "stream": False,
94
+ }
95
+ }
96
+
97
+
98
+ class ChatResponse(BaseModel):
99
+ """Chat response payload"""
100
+ response: str = Field(..., description="Agent's response message")
101
+ session_id: str = Field(..., description="Session ID")
102
+ success: bool = Field(..., description="Whether the request succeeded")
103
+ error: Optional[str] = Field(None, description="Error message if failed")
104
+ metadata: Optional[Dict[str, Any]] = Field(
105
+ None,
106
+ description="Additional metadata (token usage, etc.)"
107
+ )
108
+
109
+ class Config:
110
+ json_schema_extra = {
111
+ "example": {
112
+ "response": "I can help you with various tasks...",
113
+ "session_id": "user-123",
114
+ "success": True,
115
+ "metadata": {
116
+ "tokens_used": 150,
117
+ },
118
+ }
119
+ }
120
+
121
+
122
+ class HealthResponse(BaseModel):
123
+ """Health check response"""
124
+ status: str = Field(..., description="Service status")
125
+ agent: str = Field(..., description="Agent name")
126
+ version: str = Field(..., description="API version")
127
+
128
+
129
+ class SessionInfo(BaseModel):
130
+ """Session information"""
131
+ session_id: str = Field(..., description="Session identifier")
132
+ message_count: Optional[int] = Field(None, description="Number of messages")
133
+
134
+
135
+ # Endpoints
136
+
137
+ @app.post("/chat", response_model=ChatResponse)
138
+ async def chat(request: ChatRequest) -> ChatResponse:
139
+ """
140
+ Send a message to the agent
141
+
142
+ Args:
143
+ request: Chat request with message and optional session ID
144
+
145
+ Returns:
146
+ Agent response with conversation context
147
+
148
+ Raises:
149
+ HTTPException: If agent execution fails
150
+ """
151
+ try:
152
+ # Get or create session memory
153
+ session_id = request.session_id or "default"
154
+
155
+ if session_id not in session_memories:
156
+ session_memories[session_id] = get_memory(session_id)
157
+
158
+ memory = session_memories[session_id]
159
+
160
+ # Run agent
161
+ result = run(request.message)
162
+
163
+ if not result.get("success"):
164
+ raise HTTPException(
165
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
166
+ detail=result.get("error", "Agent execution failed"),
167
+ )
168
+
169
+ return ChatResponse(
170
+ response=result.get("output", ""),
171
+ session_id=session_id,
172
+ success=True,
173
+ metadata={
174
+ "tokens_used": result.get("tokens_used"),
175
+ },
176
+ )
177
+
178
+ except HTTPException:
179
+ raise
180
+ except Exception as e:
181
+ raise HTTPException(
182
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
183
+ detail=str(e),
184
+ )
185
+
186
+
187
+ @app.post("/chat/stream")
188
+ async def chat_stream(request: ChatRequest):
189
+ """
190
+ Stream chat responses from the agent via SSE with real-time cost tracking
191
+
192
+ Args:
193
+ request: Chat request with message and session ID
194
+
195
+ Returns:
196
+ Server-sent events stream with agent response tokens and cost information
197
+ """
198
+ try:
199
+ session_id = request.session_id or "default"
200
+ cost_tracker = get_cost_tracker()
201
+
202
+ # Use the streaming module's SSE implementation
203
+ return StreamingResponse(
204
+ stream_sse(request.message, agent, session_id, cost_tracker),
205
+ media_type="text/event-stream",
206
+ headers={
207
+ "Cache-Control": "no-cache",
208
+ "Connection": "keep-alive",
209
+ "X-Accel-Buffering": "no",
210
+ "Access-Control-Allow-Origin": "*",
211
+ }
212
+ )
213
+ except Exception as e:
214
+ raise HTTPException(
215
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
216
+ detail=f"Streaming error: {str(e)}"
217
+ )
218
+
219
+
220
+ @app.websocket("/chat/ws")
221
+ async def chat_websocket(websocket: WebSocket, session_id: str = "default"):
222
+ """
223
+ WebSocket endpoint for bidirectional streaming with cancellation support
224
+
225
+ Args:
226
+ websocket: WebSocket connection
227
+ session_id: Session identifier for conversation context
228
+
229
+ WebSocket Message Format (Client -> Server):
230
+ {
231
+ "type": "message", # or "cancel"
232
+ "message": "user message text"
233
+ }
234
+
235
+ WebSocket Message Format (Server -> Client):
236
+ {
237
+ "type": "token", # or "llm_start", "llm_end", "done", "error", "cancelled"
238
+ "token": "response token",
239
+ "token_count": 42,
240
+ "cost": 0.00123
241
+ }
242
+ """
243
+ await stream_websocket(websocket, agent, session_id)
244
+
245
+
246
+ @app.get("/health", response_model=HealthResponse)
247
+ async def health() -> HealthResponse:
248
+ """
249
+ Health check endpoint
250
+
251
+ Returns:
252
+ Service health status
253
+ """
254
+ return HealthResponse(
255
+ status="healthy",
256
+ agent="${agentName}",
257
+ version="${version}",
258
+ )
259
+
260
+
261
+ @app.get("/sessions", response_model=List[SessionInfo])
262
+ async def list_sessions() -> List[SessionInfo]:
263
+ """
264
+ List all active sessions
265
+
266
+ Returns:
267
+ List of session IDs with metadata
268
+ """
269
+ try:
270
+ sessions = get_all_sessions()
271
+ return [
272
+ SessionInfo(session_id=session_id)
273
+ for session_id in sessions
274
+ ]
275
+ except Exception as e:
276
+ raise HTTPException(
277
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
278
+ detail=f"Failed to list sessions: {str(e)}",
279
+ )
280
+
281
+
282
+ @app.delete("/sessions/{session_id}")
283
+ async def clear_session(session_id: str) -> JSONResponse:
284
+ """
285
+ Clear conversation history for a session
286
+
287
+ Args:
288
+ session_id: Session identifier to clear
289
+
290
+ Returns:
291
+ Success confirmation
292
+ """
293
+ try:
294
+ if session_id in session_memories:
295
+ clear_memory(session_memories[session_id], session_id)
296
+ del session_memories[session_id]
297
+
298
+ delete_session(session_id)
299
+
300
+ return JSONResponse(
301
+ content={
302
+ "status": "success",
303
+ "message": f"Session {session_id} cleared",
304
+ }
305
+ )
306
+ except Exception as e:
307
+ raise HTTPException(
308
+ status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
309
+ detail=f"Failed to clear session: {str(e)}",
310
+ )
311
+
312
+
313
+ @app.get("/cost-summary")
314
+ async def get_cost_summary():
315
+ """
316
+ Get cost tracking summary for the current session
317
+
318
+ Returns:
319
+ Token usage and cost information
320
+ """
321
+ cost_tracker = get_cost_tracker()
322
+ return cost_tracker.get_summary()
323
+
324
+
325
+ @app.post("/cost-summary/reset")
326
+ async def reset_cost_summary():
327
+ """
328
+ Reset cost tracking counters
329
+
330
+ Returns:
331
+ Confirmation message
332
+ """
333
+ cost_tracker = get_cost_tracker()
334
+ cost_tracker.reset()
335
+ return {"status": "success", "message": "Cost tracking reset"}
336
+
337
+
338
+ @app.get("/")
339
+ async def root():
340
+ """
341
+ API root endpoint
342
+
343
+ Returns:
344
+ Welcome message with links to documentation
345
+ """
346
+ return {
347
+ "message": "Welcome to ${agentName} API",
348
+ "version": "${version}",
349
+ "docs": "/docs",
350
+ "openapi": "/openapi.json",
351
+ "health": "/health",
352
+ "endpoints": {
353
+ "chat": "/chat",
354
+ "stream_sse": "/chat/stream",
355
+ "stream_ws": "/chat/ws",
356
+ "cost_summary": "/cost-summary",
357
+ }
358
+ }
359
+
360
+
361
+ # Run server
362
+ if __name__ == "__main__":
363
+ port = int(os.getenv("API_PORT", ${port}))
364
+ host = os.getenv("API_HOST", "0.0.0.0")
365
+
366
+ uvicorn.run(
367
+ app,
368
+ host=host,
369
+ port=port,
370
+ log_level="info",
371
+ )
372
+ `;
373
+ }
374
+ }
375
+ //# sourceMappingURL=api-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-generator.js","sourceRoot":"","sources":["../../../../src/services/export/langchain/api-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,OAAO,YAAY;IACvB;;OAEG;IACH,QAAQ,CAAC,QAAmB,EAAE,OAAe,IAAI;QAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC;QACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,WAAW,IAAI,cAAc,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,OAAO,CAAC;QAEtD,OAAO;qBACU,SAAS;;EAE5B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BA,SAAS;mBACH,WAAW;eACf,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4ML,SAAS;mBACP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA0FO,SAAS;sBACpB,OAAO;;;;;;;;;;;;;;;uCAeU,IAAI;;;;;;;;;CAS1C,CAAC;IACA,CAAC;CACF"}