@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,522 @@
1
+ /**
2
+ * LangChain Error Handling Generator
3
+ *
4
+ * Generates production-grade error handling for LangChain agents:
5
+ * - Retry logic with exponential backoff
6
+ * - Circuit breaker pattern
7
+ * - Rate limiting
8
+ * - Error classification and recovery strategies
9
+ * - Fallback mechanisms
10
+ *
11
+ * SOLID: Single Responsibility - Error handling configuration
12
+ * DRY: Reusable error handling patterns
13
+ */
14
+ /**
15
+ * Error Handling Generator
16
+ */
17
+ export class ErrorHandlingGenerator {
18
+ /**
19
+ * Generate error_handling.py with production error handling
20
+ */
21
+ generate(manifest, config = {}) {
22
+ const sections = [];
23
+ // Header
24
+ sections.push(this.generateHeader());
25
+ // Imports
26
+ sections.push(this.generateImports(config));
27
+ // Configuration
28
+ sections.push(this.generateConfiguration(config));
29
+ // Error classification
30
+ sections.push(this.generateErrorClassification());
31
+ // Retry decorator
32
+ if (config.retry?.enabled !== false) {
33
+ sections.push(this.generateRetryDecorator(config.retry));
34
+ }
35
+ // Circuit breaker
36
+ if (config.circuitBreaker?.enabled) {
37
+ sections.push(this.generateCircuitBreaker(config.circuitBreaker));
38
+ }
39
+ // Rate limiter
40
+ if (config.rateLimit?.enabled) {
41
+ sections.push(this.generateRateLimiter(config.rateLimit));
42
+ }
43
+ // Fallback handler
44
+ if (config.fallback?.enabled) {
45
+ sections.push(this.generateFallbackHandler(config.fallback));
46
+ }
47
+ // Error recovery
48
+ sections.push(this.generateErrorRecovery());
49
+ // Main error handler
50
+ sections.push(this.generateMainErrorHandler());
51
+ // Utilities
52
+ sections.push(this.generateUtilities());
53
+ return sections.join('\n\n');
54
+ }
55
+ generateHeader() {
56
+ return `"""
57
+ Production Error Handling for LangChain Agents
58
+
59
+ Features:
60
+ - Retry logic with exponential backoff
61
+ - Circuit breaker pattern
62
+ - Rate limiting
63
+ - Error classification and recovery
64
+ - Fallback mechanisms
65
+ - Comprehensive error logging
66
+ """`;
67
+ }
68
+ generateImports(config) {
69
+ const imports = [
70
+ 'import time',
71
+ 'import functools',
72
+ 'from typing import Any, Callable, Dict, Optional, TypeVar, cast',
73
+ 'from datetime import datetime, timedelta',
74
+ 'from enum import Enum',
75
+ 'import logging',
76
+ ];
77
+ if (config.circuitBreaker?.enabled || config.rateLimit?.enabled) {
78
+ imports.push('from collections import deque');
79
+ }
80
+ if (config.fallback?.useCachedResponses) {
81
+ imports.push('from cachetools import TTLCache');
82
+ }
83
+ return imports.join('\n');
84
+ }
85
+ generateConfiguration(config) {
86
+ const retry = config.retry || {};
87
+ const circuitBreaker = config.circuitBreaker || {};
88
+ const rateLimit = config.rateLimit || {};
89
+ return `# Error Handling Configuration
90
+ logger = logging.getLogger(__name__)
91
+
92
+ # Retry configuration
93
+ RETRY_ENABLED = ${retry.enabled !== false ? 'True' : 'False'}
94
+ MAX_RETRY_ATTEMPTS = ${retry.maxAttempts || 3}
95
+ EXPONENTIAL_BACKOFF = ${retry.exponentialBackoff !== false ? 'True' : 'False'}
96
+ INITIAL_RETRY_DELAY = ${retry.initialDelay || 1000} # ms
97
+ MAX_RETRY_DELAY = ${retry.maxDelay || 30000} # ms
98
+
99
+ # Circuit breaker configuration
100
+ CIRCUIT_BREAKER_ENABLED = ${circuitBreaker.enabled ? 'True' : 'False'}
101
+ FAILURE_THRESHOLD = ${circuitBreaker.failureThreshold || 5}
102
+ RESET_TIMEOUT = ${circuitBreaker.resetTimeout || 60} # seconds
103
+ HALF_OPEN_MAX_ATTEMPTS = ${circuitBreaker.halfOpenMaxAttempts || 1}
104
+
105
+ # Rate limiting
106
+ RATE_LIMIT_ENABLED = ${rateLimit.enabled ? 'True' : 'False'}
107
+ MAX_REQUESTS = ${rateLimit.maxRequests || 100}
108
+ WINDOW_SECONDS = ${rateLimit.windowSeconds || 60}`;
109
+ }
110
+ generateErrorClassification() {
111
+ return `class ErrorType(Enum):
112
+ """Error classification for recovery strategies"""
113
+ RATE_LIMIT = "rate_limit" # API rate limit hit
114
+ TIMEOUT = "timeout" # Request timeout
115
+ NETWORK = "network" # Network connectivity issue
116
+ AUTHENTICATION = "authentication" # Auth failure
117
+ INVALID_INPUT = "invalid_input" # Bad input data
118
+ INTERNAL = "internal" # Internal agent error
119
+ UNKNOWN = "unknown" # Unknown error
120
+
121
+
122
+ class RetryableError(Exception):
123
+ """Error that can be retried"""
124
+ def __init__(self, message: str, error_type: ErrorType, original_error: Optional[Exception] = None):
125
+ super().__init__(message)
126
+ self.error_type = error_type
127
+ self.original_error = original_error
128
+
129
+
130
+ class NonRetryableError(Exception):
131
+ """Error that should not be retried"""
132
+ def __init__(self, message: str, error_type: ErrorType, original_error: Optional[Exception] = None):
133
+ super().__init__(message)
134
+ self.error_type = error_type
135
+ self.original_error = original_error
136
+
137
+
138
+ def classify_error(error: Exception) -> ErrorType:
139
+ """Classify error type for recovery strategy"""
140
+ error_str = str(error).lower()
141
+
142
+ if "rate limit" in error_str or "429" in error_str:
143
+ return ErrorType.RATE_LIMIT
144
+ elif "timeout" in error_str or "timed out" in error_str:
145
+ return ErrorType.TIMEOUT
146
+ elif "connection" in error_str or "network" in error_str:
147
+ return ErrorType.NETWORK
148
+ elif "authentication" in error_str or "unauthorized" in error_str or "401" in error_str:
149
+ return ErrorType.AUTHENTICATION
150
+ elif "invalid" in error_str or "validation" in error_str or "400" in error_str:
151
+ return ErrorType.INVALID_INPUT
152
+ else:
153
+ return ErrorType.UNKNOWN
154
+
155
+
156
+ def is_retryable(error: Exception) -> bool:
157
+ """Check if error is retryable"""
158
+ if isinstance(error, NonRetryableError):
159
+ return False
160
+
161
+ error_type = classify_error(error)
162
+ # Retry rate limits, timeouts, and network errors
163
+ return error_type in [ErrorType.RATE_LIMIT, ErrorType.TIMEOUT, ErrorType.NETWORK]`;
164
+ }
165
+ generateRetryDecorator(retry) {
166
+ return `T = TypeVar('T')
167
+
168
+
169
+ def with_retry(
170
+ max_attempts: int = MAX_RETRY_ATTEMPTS,
171
+ initial_delay: float = INITIAL_RETRY_DELAY / 1000,
172
+ max_delay: float = MAX_RETRY_DELAY / 1000,
173
+ exponential_backoff: bool = EXPONENTIAL_BACKOFF,
174
+ ) -> Callable[[Callable[..., T]], Callable[..., T]]:
175
+ """
176
+ Retry decorator with exponential backoff
177
+
178
+ Args:
179
+ max_attempts: Maximum number of retry attempts
180
+ initial_delay: Initial delay in seconds
181
+ max_delay: Maximum delay in seconds
182
+ exponential_backoff: Use exponential backoff
183
+ """
184
+ def decorator(func: Callable[..., T]) -> Callable[..., T]:
185
+ @functools.wraps(func)
186
+ def wrapper(*args, **kwargs) -> T:
187
+ if not RETRY_ENABLED:
188
+ return func(*args, **kwargs)
189
+
190
+ last_exception = None
191
+ delay = initial_delay
192
+
193
+ for attempt in range(max_attempts):
194
+ try:
195
+ return func(*args, **kwargs)
196
+ except Exception as e:
197
+ last_exception = e
198
+
199
+ # Don't retry non-retryable errors
200
+ if not is_retryable(e):
201
+ logger.warning(f"Non-retryable error: {e}")
202
+ raise
203
+
204
+ # Last attempt, don't wait
205
+ if attempt >= max_attempts - 1:
206
+ break
207
+
208
+ # Log retry
209
+ error_type = classify_error(e)
210
+ logger.warning(
211
+ f"Attempt {attempt + 1}/{max_attempts} failed ({error_type.value}): {e}. "
212
+ f"Retrying in {delay:.2f}s..."
213
+ )
214
+
215
+ # Wait before retry
216
+ time.sleep(delay)
217
+
218
+ # Exponential backoff
219
+ if exponential_backoff:
220
+ delay = min(delay * 2, max_delay)
221
+ else:
222
+ delay = min(delay + initial_delay, max_delay)
223
+
224
+ # All retries exhausted
225
+ logger.error(f"All {max_attempts} retry attempts failed")
226
+ if last_exception:
227
+ raise last_exception
228
+ raise RuntimeError(f"Function {func.__name__} failed after {max_attempts} attempts")
229
+
230
+ return wrapper
231
+ return decorator`;
232
+ }
233
+ generateCircuitBreaker(circuitBreaker) {
234
+ return `class CircuitBreakerState(Enum):
235
+ """Circuit breaker states"""
236
+ CLOSED = "closed" # Normal operation
237
+ OPEN = "open" # Failing, reject requests
238
+ HALF_OPEN = "half_open" # Testing if recovered
239
+
240
+
241
+ class CircuitBreaker:
242
+ """Circuit breaker pattern implementation"""
243
+
244
+ def __init__(
245
+ self,
246
+ failure_threshold: int = FAILURE_THRESHOLD,
247
+ reset_timeout: int = RESET_TIMEOUT,
248
+ half_open_max_attempts: int = HALF_OPEN_MAX_ATTEMPTS,
249
+ ):
250
+ self.failure_threshold = failure_threshold
251
+ self.reset_timeout = reset_timeout
252
+ self.half_open_max_attempts = half_open_max_attempts
253
+
254
+ self.state = CircuitBreakerState.CLOSED
255
+ self.failure_count = 0
256
+ self.last_failure_time: Optional[datetime] = None
257
+ self.half_open_attempts = 0
258
+
259
+ def call(self, func: Callable[..., T], *args, **kwargs) -> T:
260
+ """Execute function with circuit breaker protection"""
261
+ if not CIRCUIT_BREAKER_ENABLED:
262
+ return func(*args, **kwargs)
263
+
264
+ # Check if circuit should transition to HALF_OPEN
265
+ if self.state == CircuitBreakerState.OPEN:
266
+ if self._should_attempt_reset():
267
+ self.state = CircuitBreakerState.HALF_OPEN
268
+ self.half_open_attempts = 0
269
+ logger.info("Circuit breaker: OPEN -> HALF_OPEN")
270
+ else:
271
+ raise RuntimeError("Circuit breaker is OPEN, rejecting request")
272
+
273
+ # Limit attempts in HALF_OPEN state
274
+ if self.state == CircuitBreakerState.HALF_OPEN:
275
+ if self.half_open_attempts >= self.half_open_max_attempts:
276
+ raise RuntimeError("Circuit breaker HALF_OPEN, max attempts reached")
277
+ self.half_open_attempts += 1
278
+
279
+ try:
280
+ result = func(*args, **kwargs)
281
+ self._on_success()
282
+ return result
283
+ except Exception as e:
284
+ self._on_failure()
285
+ raise
286
+
287
+ def _should_attempt_reset(self) -> bool:
288
+ """Check if enough time has passed to attempt reset"""
289
+ if not self.last_failure_time:
290
+ return False
291
+ elapsed = (datetime.now() - self.last_failure_time).total_seconds()
292
+ return elapsed >= self.reset_timeout
293
+
294
+ def _on_success(self):
295
+ """Handle successful call"""
296
+ if self.state == CircuitBreakerState.HALF_OPEN:
297
+ self.state = CircuitBreakerState.CLOSED
298
+ self.failure_count = 0
299
+ logger.info("Circuit breaker: HALF_OPEN -> CLOSED (recovered)")
300
+ self.failure_count = max(0, self.failure_count - 1)
301
+
302
+ def _on_failure(self):
303
+ """Handle failed call"""
304
+ self.failure_count += 1
305
+ self.last_failure_time = datetime.now()
306
+
307
+ if self.state == CircuitBreakerState.HALF_OPEN:
308
+ self.state = CircuitBreakerState.OPEN
309
+ logger.warning("Circuit breaker: HALF_OPEN -> OPEN (still failing)")
310
+ elif self.failure_count >= self.failure_threshold:
311
+ self.state = CircuitBreakerState.OPEN
312
+ logger.warning(f"Circuit breaker: CLOSED -> OPEN (threshold {self.failure_threshold} reached)")
313
+
314
+ def reset(self):
315
+ """Manually reset circuit breaker"""
316
+ self.state = CircuitBreakerState.CLOSED
317
+ self.failure_count = 0
318
+ self.last_failure_time = None
319
+ logger.info("Circuit breaker manually reset")
320
+
321
+
322
+ # Global circuit breaker instance
323
+ _circuit_breaker = CircuitBreaker()
324
+
325
+
326
+ def get_circuit_breaker() -> CircuitBreaker:
327
+ """Get global circuit breaker instance"""
328
+ return _circuit_breaker`;
329
+ }
330
+ generateRateLimiter(rateLimit) {
331
+ return `class RateLimiter:
332
+ """Token bucket rate limiter"""
333
+
334
+ def __init__(self, max_requests: int = MAX_REQUESTS, window_seconds: int = WINDOW_SECONDS):
335
+ self.max_requests = max_requests
336
+ self.window_seconds = window_seconds
337
+ self.requests = deque()
338
+
339
+ def acquire(self) -> bool:
340
+ """Try to acquire a request slot"""
341
+ if not RATE_LIMIT_ENABLED:
342
+ return True
343
+
344
+ now = datetime.now()
345
+ cutoff = now - timedelta(seconds=self.window_seconds)
346
+
347
+ # Remove old requests outside window
348
+ while self.requests and self.requests[0] < cutoff:
349
+ self.requests.popleft()
350
+
351
+ # Check if we can make a request
352
+ if len(self.requests) >= self.max_requests:
353
+ oldest = self.requests[0]
354
+ wait_time = (oldest + timedelta(seconds=self.window_seconds) - now).total_seconds()
355
+ logger.warning(f"Rate limit reached. Wait {wait_time:.2f}s before retrying")
356
+ return False
357
+
358
+ self.requests.append(now)
359
+ return True
360
+
361
+ def wait_if_needed(self):
362
+ """Block until a slot is available"""
363
+ while not self.acquire():
364
+ time.sleep(1)
365
+
366
+
367
+ # Global rate limiter
368
+ _rate_limiter = RateLimiter()
369
+
370
+
371
+ def get_rate_limiter() -> RateLimiter:
372
+ """Get global rate limiter instance"""
373
+ return _rate_limiter`;
374
+ }
375
+ generateFallbackHandler(fallback) {
376
+ return `class FallbackHandler:
377
+ """Fallback response handler"""
378
+
379
+ def __init__(self):
380
+ self.default_response = "${fallback.defaultResponse || 'I apologize, but I encountered an error processing your request. Please try again.'}"
381
+ ${fallback.useCachedResponses ? 'self.cache = TTLCache(maxsize=100, ttl=300) # 5 minute TTL' : ''}
382
+
383
+ def get_fallback_response(self, input_text: str, error: Exception) -> str:
384
+ """Get fallback response for failed request"""
385
+ error_type = classify_error(error)
386
+
387
+ ${fallback.useCachedResponses ? `# Try cached response
388
+ cache_key = hash(input_text)
389
+ if cache_key in self.cache:
390
+ logger.info("Using cached fallback response")
391
+ return self.cache[cache_key]` : ''}
392
+
393
+ # Generate contextual fallback
394
+ if error_type == ErrorType.RATE_LIMIT:
395
+ return "I'm experiencing high demand right now. Please try again in a moment."
396
+ elif error_type == ErrorType.TIMEOUT:
397
+ return "Your request is taking longer than expected. Please try again or simplify your query."
398
+ elif error_type == ErrorType.AUTHENTICATION:
399
+ return "There's an authentication issue. Please check your credentials."
400
+ else:
401
+ return self.default_response
402
+
403
+ ${fallback.useCachedResponses ? `def cache_response(self, input_text: str, response: str):
404
+ """Cache successful response"""
405
+ cache_key = hash(input_text)
406
+ self.cache[cache_key] = response` : ''}
407
+
408
+
409
+ # Global fallback handler
410
+ _fallback_handler = FallbackHandler()
411
+
412
+
413
+ def get_fallback_handler() -> FallbackHandler:
414
+ """Get global fallback handler"""
415
+ return _fallback_handler`;
416
+ }
417
+ generateErrorRecovery() {
418
+ return `def handle_agent_error(func: Callable[..., T]) -> Callable[..., T]:
419
+ """
420
+ Comprehensive error handler for agent execution
421
+
422
+ Combines retry, circuit breaker, rate limiting, and fallback
423
+ """
424
+ @functools.wraps(func)
425
+ def wrapper(*args, **kwargs) -> T:
426
+ # Rate limiting
427
+ rate_limiter = get_rate_limiter()
428
+ rate_limiter.wait_if_needed()
429
+
430
+ # Circuit breaker
431
+ circuit_breaker = get_circuit_breaker()
432
+
433
+ # Execute with all protections
434
+ try:
435
+ return circuit_breaker.call(with_retry()(func), *args, **kwargs)
436
+ except Exception as e:
437
+ logger.error(f"Agent execution failed: {e}", exc_info=True)
438
+
439
+ # Try fallback if available
440
+ fallback = get_fallback_handler()
441
+ if hasattr(fallback, 'get_fallback_response'):
442
+ # Extract input from args/kwargs
443
+ input_text = kwargs.get('input', args[0] if args else '')
444
+ fallback_response = fallback.get_fallback_response(input_text, e)
445
+ logger.info("Using fallback response")
446
+ return {"output": fallback_response, "success": False, "fallback": True}
447
+
448
+ raise
449
+
450
+ return wrapper`;
451
+ }
452
+ generateMainErrorHandler() {
453
+ return `def safe_agent_invoke(agent, input_text: str, **kwargs) -> Dict[str, Any]:
454
+ """
455
+ Safely invoke agent with full error handling
456
+
457
+ Args:
458
+ agent: LangChain agent executor
459
+ input_text: User input
460
+ **kwargs: Additional invoke arguments
461
+
462
+ Returns:
463
+ Agent response with error handling
464
+ """
465
+ @handle_agent_error
466
+ def invoke():
467
+ return agent.invoke({"input": input_text, **kwargs})
468
+
469
+ try:
470
+ result = invoke()
471
+ return {
472
+ "output": result.get("output", ""),
473
+ "success": True,
474
+ "fallback": False,
475
+ }
476
+ except Exception as e:
477
+ logger.error(f"Agent invocation failed: {e}")
478
+ return {
479
+ "output": str(e),
480
+ "success": False,
481
+ "error": str(e),
482
+ "fallback": False,
483
+ }`;
484
+ }
485
+ generateUtilities() {
486
+ return `def reset_error_handling():
487
+ """Reset all error handling state"""
488
+ get_circuit_breaker().reset()
489
+ logger.info("Error handling state reset")
490
+
491
+
492
+ def get_error_stats() -> Dict[str, Any]:
493
+ """Get error handling statistics"""
494
+ circuit_breaker = get_circuit_breaker()
495
+ return {
496
+ "circuit_breaker": {
497
+ "state": circuit_breaker.state.value,
498
+ "failure_count": circuit_breaker.failure_count,
499
+ "last_failure": circuit_breaker.last_failure_time.isoformat() if circuit_breaker.last_failure_time else None,
500
+ },
501
+ "retry": {
502
+ "enabled": RETRY_ENABLED,
503
+ "max_attempts": MAX_RETRY_ATTEMPTS,
504
+ },
505
+ }
506
+
507
+
508
+ def log_error_context(error: Exception, context: Dict[str, Any]):
509
+ """Log error with full context"""
510
+ error_type = classify_error(error)
511
+ logger.error(
512
+ f"Error ({error_type.value}): {error}",
513
+ extra={
514
+ "error_type": error_type.value,
515
+ "error_message": str(error),
516
+ "context": context,
517
+ },
518
+ exc_info=True,
519
+ )`;
520
+ }
521
+ }
522
+ //# sourceMappingURL=error-handling-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling-generator.js","sourceRoot":"","sources":["../../../../src/services/export/langchain/error-handling-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * LangChain Export Service
3
+ *
4
+ * Complete LangChain export system with API, OpenAPI spec, and Docker support
5
+ */
6
+ export { LangChainExporter } from './langchain-exporter.js';
7
+ export type { LangChainExportOptions, LangChainExportResult, } from './langchain-exporter.js';
8
+ export { ToolsGenerator } from './tools-generator.js';
9
+ export { MemoryGenerator } from './memory-generator.js';
10
+ export type { MemoryBackend } from './memory-generator.js';
11
+ export { ApiGenerator } from './api-generator.js';
12
+ export { OpenApiGenerator } from './openapi-generator.js';
13
+ export { PlanExecuteGenerator } from './plan-execute-generator.js';
14
+ export type { PlanExecuteConfig } from './plan-execute-generator.js';
15
+ export { LangServeGenerator } from './langserve-generator.js';
16
+ export type { LangServeConfig } from './langserve-generator.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/export/langchain/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * LangChain Export Service
3
+ *
4
+ * Complete LangChain export system with API, OpenAPI spec, and Docker support
5
+ */
6
+ export { LangChainExporter } from './langchain-exporter.js';
7
+ export { ToolsGenerator } from './tools-generator.js';
8
+ export { MemoryGenerator } from './memory-generator.js';
9
+ export { ApiGenerator } from './api-generator.js';
10
+ export { OpenApiGenerator } from './openapi-generator.js';
11
+ export { PlanExecuteGenerator } from './plan-execute-generator.js';
12
+ export { LangServeGenerator } from './langserve-generator.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/export/langchain/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAM5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}