@bluefly/openstandardagents 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/DEMO.md +212 -0
  3. package/README.md +75 -15
  4. package/dist/adapters/drupal/generator.d.ts +149 -0
  5. package/dist/adapters/drupal/generator.d.ts.map +1 -0
  6. package/dist/adapters/drupal/generator.js +1760 -0
  7. package/dist/adapters/drupal/generator.js.map +1 -0
  8. package/dist/adapters/drupal/index.d.ts +2 -0
  9. package/dist/adapters/drupal/index.d.ts.map +1 -1
  10. package/dist/adapters/drupal/index.js +3 -0
  11. package/dist/adapters/drupal/index.js.map +1 -1
  12. package/dist/adapters/npm/adapter.js +2 -2
  13. package/dist/adapters/npm/converter.js +3 -3
  14. package/dist/cli/banner.d.ts +21 -0
  15. package/dist/cli/banner.d.ts.map +1 -0
  16. package/dist/cli/banner.js +128 -0
  17. package/dist/cli/banner.js.map +1 -0
  18. package/dist/cli/commands/dev.command.d.ts +20 -0
  19. package/dist/cli/commands/dev.command.d.ts.map +1 -0
  20. package/dist/cli/commands/dev.command.js +78 -0
  21. package/dist/cli/commands/dev.command.js.map +1 -0
  22. package/dist/cli/commands/estimate.command.d.ts +12 -0
  23. package/dist/cli/commands/estimate.command.d.ts.map +1 -0
  24. package/dist/cli/commands/estimate.command.js +226 -0
  25. package/dist/cli/commands/estimate.command.js.map +1 -0
  26. package/dist/cli/commands/export-enhanced.command.d.ts +7 -0
  27. package/dist/cli/commands/export-enhanced.command.d.ts.map +1 -0
  28. package/dist/cli/commands/{export-v2.command.js → export-enhanced.command.js} +3 -3
  29. package/dist/cli/commands/export-enhanced.command.js.map +1 -0
  30. package/dist/cli/commands/export.command.d.ts.map +1 -1
  31. package/dist/cli/commands/export.command.js +82 -4
  32. package/dist/cli/commands/export.command.js.map +1 -1
  33. package/dist/cli/commands/init.command.d.ts.map +1 -1
  34. package/dist/cli/commands/init.command.js +2 -0
  35. package/dist/cli/commands/init.command.js.map +1 -1
  36. package/dist/cli/commands/test.command.d.ts +1 -0
  37. package/dist/cli/commands/test.command.d.ts.map +1 -1
  38. package/dist/cli/commands/test.command.js +172 -105
  39. package/dist/cli/commands/test.command.js.map +1 -1
  40. package/dist/cli/commands/types/wizard-config.types.d.ts +59 -0
  41. package/dist/cli/commands/types/wizard-config.types.d.ts.map +1 -0
  42. package/dist/cli/commands/types/wizard-config.types.js +34 -0
  43. package/dist/cli/commands/types/wizard-config.types.js.map +1 -0
  44. package/dist/cli/commands/upgrade.command.d.ts +9 -0
  45. package/dist/cli/commands/upgrade.command.d.ts.map +1 -0
  46. package/dist/cli/commands/upgrade.command.js +167 -0
  47. package/dist/cli/commands/upgrade.command.js.map +1 -0
  48. package/dist/cli/commands/wizard-api-first.command.d.ts +18 -0
  49. package/dist/cli/commands/wizard-api-first.command.d.ts.map +1 -0
  50. package/dist/cli/commands/wizard-api-first.command.js +854 -0
  51. package/dist/cli/commands/wizard-api-first.command.js.map +1 -0
  52. package/dist/cli/commands/wizard-interactive.command.d.ts +25 -0
  53. package/dist/cli/commands/wizard-interactive.command.d.ts.map +1 -0
  54. package/dist/cli/commands/wizard-interactive.command.js +1875 -0
  55. package/dist/cli/commands/wizard-interactive.command.js.map +1 -0
  56. package/dist/cli/commands/workspace.command.js +1 -1
  57. package/dist/cli/commands/workspace.command.js.map +1 -1
  58. package/dist/cli/index.js +9 -0
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/schema-driven/index.d.ts +27 -0
  61. package/dist/cli/schema-driven/index.d.ts.map +1 -0
  62. package/dist/cli/schema-driven/index.js +34 -0
  63. package/dist/cli/schema-driven/index.js.map +1 -0
  64. package/dist/cli/schema-driven/schema-loader.d.ts +115 -0
  65. package/dist/cli/schema-driven/schema-loader.d.ts.map +1 -0
  66. package/dist/cli/schema-driven/schema-loader.js +270 -0
  67. package/dist/cli/schema-driven/schema-loader.js.map +1 -0
  68. package/dist/cli/schema-driven/ui-generator.d.ts +88 -0
  69. package/dist/cli/schema-driven/ui-generator.d.ts.map +1 -0
  70. package/dist/cli/schema-driven/ui-generator.js +326 -0
  71. package/dist/cli/schema-driven/ui-generator.js.map +1 -0
  72. package/dist/cli/wizard/interactive-wizard.d.ts +26 -0
  73. package/dist/cli/wizard/interactive-wizard.d.ts.map +1 -0
  74. package/dist/cli/wizard/interactive-wizard.js +296 -0
  75. package/dist/cli/wizard/interactive-wizard.js.map +1 -0
  76. package/dist/cli/wizard/template-catalog.d.ts +32 -0
  77. package/dist/cli/wizard/template-catalog.d.ts.map +1 -0
  78. package/dist/cli/wizard/template-catalog.js +99 -0
  79. package/dist/cli/wizard/template-catalog.js.map +1 -0
  80. package/dist/cli/wizard/use-cases.d.ts +37 -0
  81. package/dist/cli/wizard/use-cases.d.ts.map +1 -0
  82. package/dist/cli/wizard/use-cases.js +157 -0
  83. package/dist/cli/wizard/use-cases.js.map +1 -0
  84. package/dist/di-container.d.ts.map +1 -1
  85. package/dist/di-container.js +2 -0
  86. package/dist/di-container.js.map +1 -1
  87. package/dist/package.json +19 -9
  88. package/dist/runtime/agent-runner.d.ts +46 -0
  89. package/dist/runtime/agent-runner.d.ts.map +1 -0
  90. package/dist/runtime/agent-runner.js +346 -0
  91. package/dist/runtime/agent-runner.js.map +1 -0
  92. package/dist/sdks/kagent/crd-generator.d.ts +4 -0
  93. package/dist/sdks/kagent/crd-generator.d.ts.map +1 -1
  94. package/dist/sdks/kagent/crd-generator.js +83 -2
  95. package/dist/sdks/kagent/crd-generator.js.map +1 -1
  96. package/dist/sdks/kagent/k8s-resources-generator.d.ts +73 -0
  97. package/dist/sdks/kagent/k8s-resources-generator.d.ts.map +1 -0
  98. package/dist/sdks/kagent/k8s-resources-generator.js +286 -0
  99. package/dist/sdks/kagent/k8s-resources-generator.js.map +1 -0
  100. package/dist/sdks/kagent/types.d.ts +79 -0
  101. package/dist/sdks/kagent/types.d.ts.map +1 -1
  102. package/dist/sdks/shared/validation.d.ts +2 -2
  103. package/dist/services/cost-estimation/optimization-patterns.d.ts +23 -0
  104. package/dist/services/cost-estimation/optimization-patterns.d.ts.map +1 -0
  105. package/dist/services/cost-estimation/optimization-patterns.js +147 -0
  106. package/dist/services/cost-estimation/optimization-patterns.js.map +1 -0
  107. package/dist/services/cost-estimation/pricing.d.ts +29 -0
  108. package/dist/services/cost-estimation/pricing.d.ts.map +1 -0
  109. package/dist/services/cost-estimation/pricing.js +225 -0
  110. package/dist/services/cost-estimation/pricing.js.map +1 -0
  111. package/dist/services/cost-estimation/scenario-estimator.d.ts +59 -0
  112. package/dist/services/cost-estimation/scenario-estimator.d.ts.map +1 -0
  113. package/dist/services/cost-estimation/scenario-estimator.js +145 -0
  114. package/dist/services/cost-estimation/scenario-estimator.js.map +1 -0
  115. package/dist/services/cost-estimation/token-counter.service.d.ts +51 -0
  116. package/dist/services/cost-estimation/token-counter.service.d.ts.map +1 -0
  117. package/dist/services/cost-estimation/token-counter.service.js +125 -0
  118. package/dist/services/cost-estimation/token-counter.service.js.map +1 -0
  119. package/dist/services/dev-server/dev-server.service.d.ts +121 -0
  120. package/dist/services/dev-server/dev-server.service.d.ts.map +1 -0
  121. package/dist/services/dev-server/dev-server.service.js +290 -0
  122. package/dist/services/dev-server/dev-server.service.js.map +1 -0
  123. package/dist/services/dev-server/file-watcher.d.ts +101 -0
  124. package/dist/services/dev-server/file-watcher.d.ts.map +1 -0
  125. package/dist/services/dev-server/file-watcher.js +190 -0
  126. package/dist/services/dev-server/file-watcher.js.map +1 -0
  127. package/dist/services/dev-server/live-validator.d.ts +157 -0
  128. package/dist/services/dev-server/live-validator.d.ts.map +1 -0
  129. package/dist/services/dev-server/live-validator.js +301 -0
  130. package/dist/services/dev-server/live-validator.js.map +1 -0
  131. package/dist/services/dev-server/websocket-server.d.ts +137 -0
  132. package/dist/services/dev-server/websocket-server.d.ts.map +1 -0
  133. package/dist/services/dev-server/websocket-server.js +229 -0
  134. package/dist/services/dev-server/websocket-server.js.map +1 -0
  135. package/dist/services/export/anthropic/anthropic-exporter.d.ts +70 -0
  136. package/dist/services/export/anthropic/anthropic-exporter.d.ts.map +1 -0
  137. package/dist/services/export/anthropic/anthropic-exporter.js +576 -0
  138. package/dist/services/export/anthropic/anthropic-exporter.js.map +1 -0
  139. package/dist/services/export/anthropic/api-generator.d.ts +39 -0
  140. package/dist/services/export/anthropic/api-generator.d.ts.map +1 -0
  141. package/dist/services/export/anthropic/api-generator.js +395 -0
  142. package/dist/services/export/anthropic/api-generator.js.map +1 -0
  143. package/dist/services/export/anthropic/index.d.ts +18 -0
  144. package/dist/services/export/anthropic/index.d.ts.map +1 -0
  145. package/dist/services/export/anthropic/index.js +16 -0
  146. package/dist/services/export/anthropic/index.js.map +1 -0
  147. package/dist/services/export/anthropic/tools-generator.d.ts +35 -0
  148. package/dist/services/export/anthropic/tools-generator.d.ts.map +1 -0
  149. package/dist/services/export/anthropic/tools-generator.js +260 -0
  150. package/dist/services/export/anthropic/tools-generator.js.map +1 -0
  151. package/dist/services/export/langchain/api-generator.d.ts +17 -0
  152. package/dist/services/export/langchain/api-generator.d.ts.map +1 -0
  153. package/dist/services/export/langchain/api-generator.js +375 -0
  154. package/dist/services/export/langchain/api-generator.js.map +1 -0
  155. package/dist/services/export/langchain/callbacks-generator.d.ts +63 -0
  156. package/dist/services/export/langchain/callbacks-generator.d.ts.map +1 -0
  157. package/dist/services/export/langchain/callbacks-generator.js +408 -0
  158. package/dist/services/export/langchain/callbacks-generator.js.map +1 -0
  159. package/dist/services/export/langchain/error-handling-generator.d.ts +76 -0
  160. package/dist/services/export/langchain/error-handling-generator.d.ts.map +1 -0
  161. package/dist/services/export/langchain/error-handling-generator.js +522 -0
  162. package/dist/services/export/langchain/error-handling-generator.js.map +1 -0
  163. package/dist/services/export/langchain/index.d.ts +17 -0
  164. package/dist/services/export/langchain/index.d.ts.map +1 -0
  165. package/dist/services/export/langchain/index.js +13 -0
  166. package/dist/services/export/langchain/index.js.map +1 -0
  167. package/dist/services/export/langchain/langchain-exporter.d.ts +174 -0
  168. package/dist/services/export/langchain/langchain-exporter.d.ts.map +1 -0
  169. package/dist/services/export/langchain/langchain-exporter.js +953 -0
  170. package/dist/services/export/langchain/langchain-exporter.js.map +1 -0
  171. package/dist/services/export/langchain/langgraph-generator.d.ts +86 -0
  172. package/dist/services/export/langchain/langgraph-generator.d.ts.map +1 -0
  173. package/dist/services/export/langchain/langgraph-generator.js +473 -0
  174. package/dist/services/export/langchain/langgraph-generator.js.map +1 -0
  175. package/dist/services/export/langchain/langserve-generator.d.ts +95 -0
  176. package/dist/services/export/langchain/langserve-generator.d.ts.map +1 -0
  177. package/dist/services/export/langchain/langserve-generator.js +807 -0
  178. package/dist/services/export/langchain/langserve-generator.js.map +1 -0
  179. package/dist/services/export/langchain/memory-generator.d.ts +71 -0
  180. package/dist/services/export/langchain/memory-generator.d.ts.map +1 -0
  181. package/dist/services/export/langchain/memory-generator.js +1182 -0
  182. package/dist/services/export/langchain/memory-generator.js.map +1 -0
  183. package/dist/services/export/langchain/openapi-generator.d.ts +20 -0
  184. package/dist/services/export/langchain/openapi-generator.d.ts.map +1 -0
  185. package/dist/services/export/langchain/openapi-generator.js +364 -0
  186. package/dist/services/export/langchain/openapi-generator.js.map +1 -0
  187. package/dist/services/export/langchain/plan-execute-generator.d.ts +60 -0
  188. package/dist/services/export/langchain/plan-execute-generator.d.ts.map +1 -0
  189. package/dist/services/export/langchain/plan-execute-generator.js +679 -0
  190. package/dist/services/export/langchain/plan-execute-generator.js.map +1 -0
  191. package/dist/services/export/langchain/streaming-generator.d.ts +66 -0
  192. package/dist/services/export/langchain/streaming-generator.d.ts.map +1 -0
  193. package/dist/services/export/langchain/streaming-generator.js +749 -0
  194. package/dist/services/export/langchain/streaming-generator.js.map +1 -0
  195. package/dist/services/export/langchain/tools-generator.d.ts +67 -0
  196. package/dist/services/export/langchain/tools-generator.d.ts.map +1 -0
  197. package/dist/services/export/langchain/tools-generator.js +543 -0
  198. package/dist/services/export/langchain/tools-generator.js.map +1 -0
  199. package/dist/services/export/npm/express-generator.d.ts +23 -0
  200. package/dist/services/export/npm/express-generator.d.ts.map +1 -0
  201. package/dist/services/export/npm/express-generator.js +296 -0
  202. package/dist/services/export/npm/express-generator.js.map +1 -0
  203. package/dist/services/export/npm/index.d.ts +13 -0
  204. package/dist/services/export/npm/index.d.ts.map +1 -0
  205. package/dist/services/export/npm/index.js +11 -0
  206. package/dist/services/export/npm/index.js.map +1 -0
  207. package/dist/services/export/npm/npm-exporter.d.ts +142 -0
  208. package/dist/services/export/npm/npm-exporter.d.ts.map +1 -0
  209. package/dist/services/export/npm/npm-exporter.js +480 -0
  210. package/dist/services/export/npm/npm-exporter.js.map +1 -0
  211. package/dist/services/export/npm/openapi-generator.d.ts +19 -0
  212. package/dist/services/export/npm/openapi-generator.d.ts.map +1 -0
  213. package/dist/services/export/npm/openapi-generator.js +428 -0
  214. package/dist/services/export/npm/openapi-generator.js.map +1 -0
  215. package/dist/services/export/npm/package-json-generator.d.ts +31 -0
  216. package/dist/services/export/npm/package-json-generator.d.ts.map +1 -0
  217. package/dist/services/export/npm/package-json-generator.js +153 -0
  218. package/dist/services/export/npm/package-json-generator.js.map +1 -0
  219. package/dist/services/export/npm/typescript-generator.d.ts +69 -0
  220. package/dist/services/export/npm/typescript-generator.d.ts.map +1 -0
  221. package/dist/services/export/npm/typescript-generator.js +437 -0
  222. package/dist/services/export/npm/typescript-generator.js.map +1 -0
  223. package/dist/services/export/testing/index.d.ts +8 -0
  224. package/dist/services/export/testing/index.d.ts.map +1 -0
  225. package/dist/services/export/testing/index.js +7 -0
  226. package/dist/services/export/testing/index.js.map +1 -0
  227. package/dist/services/export/testing/test-generator.d.ts +178 -0
  228. package/dist/services/export/testing/test-generator.d.ts.map +1 -0
  229. package/dist/services/export/testing/test-generator.js +2542 -0
  230. package/dist/services/export/testing/test-generator.js.map +1 -0
  231. package/dist/services/test-runner/mock-llm.service.d.ts +77 -0
  232. package/dist/services/test-runner/mock-llm.service.d.ts.map +1 -0
  233. package/dist/services/test-runner/mock-llm.service.js +173 -0
  234. package/dist/services/test-runner/mock-llm.service.js.map +1 -0
  235. package/dist/services/test-runner/scenarios.d.ts +36 -0
  236. package/dist/services/test-runner/scenarios.d.ts.map +1 -0
  237. package/dist/services/test-runner/scenarios.js +196 -0
  238. package/dist/services/test-runner/scenarios.js.map +1 -0
  239. package/dist/services/test-runner/test-runner.service.d.ts +19 -1
  240. package/dist/services/test-runner/test-runner.service.d.ts.map +1 -1
  241. package/dist/services/test-runner/test-runner.service.js +72 -6
  242. package/dist/services/test-runner/test-runner.service.js.map +1 -1
  243. package/dist/services/validation/best-practices-validator.d.ts +84 -0
  244. package/dist/services/validation/best-practices-validator.d.ts.map +1 -0
  245. package/dist/services/validation/best-practices-validator.js +499 -0
  246. package/dist/services/validation/best-practices-validator.js.map +1 -0
  247. package/dist/services/validation/cost-estimator.d.ts +69 -0
  248. package/dist/services/validation/cost-estimator.d.ts.map +1 -0
  249. package/dist/services/validation/cost-estimator.js +221 -0
  250. package/dist/services/validation/cost-estimator.js.map +1 -0
  251. package/dist/services/validation/enhanced-validator.d.ts +78 -0
  252. package/dist/services/validation/enhanced-validator.d.ts.map +1 -0
  253. package/dist/services/validation/enhanced-validator.js +212 -0
  254. package/dist/services/validation/enhanced-validator.js.map +1 -0
  255. package/dist/services/validation/index.d.ts +13 -0
  256. package/dist/services/validation/index.d.ts.map +1 -0
  257. package/dist/services/validation/index.js +9 -0
  258. package/dist/services/validation/index.js.map +1 -0
  259. package/dist/services/validation/security-validator.d.ts +81 -0
  260. package/dist/services/validation/security-validator.d.ts.map +1 -0
  261. package/dist/services/validation/security-validator.js +328 -0
  262. package/dist/services/validation/security-validator.js.map +1 -0
  263. package/dist/services/wizard/prompts.d.ts +71 -0
  264. package/dist/services/wizard/prompts.d.ts.map +1 -0
  265. package/dist/services/wizard/prompts.js +322 -0
  266. package/dist/services/wizard/prompts.js.map +1 -0
  267. package/dist/services/wizard/wizard.service.d.ts +60 -0
  268. package/dist/services/wizard/wizard.service.d.ts.map +1 -0
  269. package/dist/services/wizard/wizard.service.js +261 -0
  270. package/dist/services/wizard/wizard.service.js.map +1 -0
  271. package/dist/types/personality.zod.d.ts +23 -23
  272. package/dist/utils/version.d.ts +1 -1
  273. package/dist/utils/version.js +1 -1
  274. package/dist/version-management/core/version-manager.test.js.map +1 -1
  275. package/dist/version.d.ts +62 -0
  276. package/dist/version.d.ts.map +1 -0
  277. package/dist/version.js +73 -0
  278. package/dist/version.js.map +1 -0
  279. package/examples/a2a/agent-handoff.ossa.yaml +1 -1
  280. package/examples/a2a/service-discovery.ossa.yaml +1 -1
  281. package/examples/adapters/drupal-eca-mapping.yaml +1 -1
  282. package/examples/adapters/drupal-eca-task.yaml +1 -1
  283. package/examples/adapters/drupal-flowdrop-mapping.yaml +1 -1
  284. package/examples/adapters/drupal-maestro-mapping.yaml +1 -1
  285. package/examples/adapters/mistral-agent.yaml +1 -1
  286. package/examples/adapters/symfony-messenger-task.yaml +1 -1
  287. package/examples/adapters/symfony-messenger-workflow.yaml +1 -1
  288. package/examples/adk-integration/code-review-workflow.yml +1 -1
  289. package/examples/adk-integration/customer-support.yml +1 -1
  290. package/examples/adk-integration/data-pipeline.yml +1 -1
  291. package/examples/advanced/reasoning-agent.yaml +1 -1
  292. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  293. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  294. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  295. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  296. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  297. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  298. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  299. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  300. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  301. package/examples/agents/01-customer-support-bot/.env.example +32 -0
  302. package/examples/agents/01-customer-support-bot/Dockerfile +30 -0
  303. package/examples/agents/01-customer-support-bot/README.md +295 -0
  304. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +172 -0
  305. package/examples/agents/01-customer-support-bot/docker-compose.yml +55 -0
  306. package/examples/agents/01-customer-support-bot/openapi.yaml +238 -0
  307. package/examples/agents/01-customer-support-bot/package.json +48 -0
  308. package/examples/agents/02-code-review-agent/README.md +72 -0
  309. package/examples/agents/02-code-review-agent/agent.ossa.yaml +239 -0
  310. package/examples/agents/02-code-review-agent/docker-compose.yml +22 -0
  311. package/examples/agents/02-code-review-agent/openapi.yaml +150 -0
  312. package/examples/agents/03-data-analysis-agent/README.md +51 -0
  313. package/examples/agents/03-data-analysis-agent/agent.ossa.yaml +97 -0
  314. package/examples/agents/03-data-analysis-agent/openapi.yaml +74 -0
  315. package/examples/agents/04-content-moderator/README.md +55 -0
  316. package/examples/agents/04-content-moderator/agent.ossa.yaml +131 -0
  317. package/examples/agents/04-content-moderator/openapi.yaml +50 -0
  318. package/examples/agents/05-sales-assistant/README.md +37 -0
  319. package/examples/agents/05-sales-assistant/agent.ossa.yaml +146 -0
  320. package/examples/agents/05-sales-assistant/openapi.yaml +59 -0
  321. package/examples/agents/06-devops-agent/README.md +39 -0
  322. package/examples/agents/06-devops-agent/agent.ossa.yaml +141 -0
  323. package/examples/agents/06-devops-agent/openapi.yaml +51 -0
  324. package/examples/agents/07-research-assistant/README.md +31 -0
  325. package/examples/agents/07-research-assistant/agent.ossa.yaml +119 -0
  326. package/examples/agents/07-research-assistant/openapi.yaml +56 -0
  327. package/examples/agents/08-email-triage-agent/README.md +33 -0
  328. package/examples/agents/08-email-triage-agent/agent.ossa.yaml +133 -0
  329. package/examples/agents/08-email-triage-agent/openapi.yaml +41 -0
  330. package/examples/agents/09-security-scanner/README.md +49 -0
  331. package/examples/agents/09-security-scanner/agent.ossa.yaml +174 -0
  332. package/examples/agents/09-security-scanner/openapi.yaml +46 -0
  333. package/examples/agents/10-meeting-assistant/README.md +53 -0
  334. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +211 -0
  335. package/examples/agents/10-meeting-assistant/docker-compose.yml +27 -0
  336. package/examples/agents/10-meeting-assistant/openapi.yaml +131 -0
  337. package/examples/agents/COMPLETION_REPORT.txt +272 -0
  338. package/examples/agents/INDEX.md +296 -0
  339. package/examples/agents/README.md +452 -0
  340. package/examples/agents/SUMMARY.md +362 -0
  341. package/examples/agents/TEST_RESULTS.md +458 -0
  342. package/examples/agents/architecture-healer-enterprise.yaml +1 -1
  343. package/examples/agents/dependency-healer-npm.yaml +1 -1
  344. package/examples/agents/spec-healer-openapi.yaml +1 -1
  345. package/examples/agents/wiki-healer-production.yaml +1 -1
  346. package/examples/agents-md/code-agent.ossa.json +1 -1
  347. package/examples/agents-md/monorepo-agent.ossa.yaml +1 -1
  348. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  349. package/examples/autogen/multi-agent.ossa.json +1 -1
  350. package/examples/autonomous-evolution/self-evolving-agent.ossa.yaml +1 -1
  351. package/examples/build-once-use-everywhere/agent.ossa.yaml +1 -1
  352. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  353. package/examples/claude-code/ossa-validator.ossa.yaml +1 -1
  354. package/examples/common_npm/agent-router.ossa.yaml +2 -2
  355. package/examples/contracts/data-consumer.ossa.yaml +1 -1
  356. package/examples/contracts/data-producer-v2.ossa.yaml +1 -1
  357. package/examples/contracts/data-producer.ossa.yaml +1 -1
  358. package/examples/crewai/research-team.ossa.json +1 -1
  359. package/examples/cursor/code-review-agent.ossa.json +1 -1
  360. package/examples/drupal/QUICKSTART.md +439 -0
  361. package/examples/drupal/ai_agents_ossa-module/.agents/example-agent/agent.ossa.yaml +1 -1
  362. package/examples/drupal/content-moderator.ossa.yaml +107 -0
  363. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +2 -2
  364. package/examples/economics/marketplace-agent.ossa.json +1 -1
  365. package/examples/export/langchain/production-agent-with-memory/README.md +373 -0
  366. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +97 -0
  367. package/examples/export/langchain/production-agent-with-streaming/README.md +617 -0
  368. package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +100 -0
  369. package/examples/export/langchain/production-agent-with-streaming/client-example.py +263 -0
  370. package/examples/export/langchain/production-agent-with-tools/README.md +296 -0
  371. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +216 -0
  372. package/examples/export/langchain-export-example.ts +246 -0
  373. package/examples/export/langserve-export-example.ts +246 -0
  374. package/examples/export/test-generation-example.ts +457 -0
  375. package/examples/extensions/agents-md-advanced.yml +1 -1
  376. package/examples/extensions/agents-md-basic.yml +1 -1
  377. package/examples/extensions/agents-md-sync.yml +1 -1
  378. package/examples/extensions/agents-md-v1.yml +1 -1
  379. package/examples/extensions/drupal-v1.yml +1 -1
  380. package/examples/extensions/encryption-multi-provider.yaml +4 -4
  381. package/examples/extensions/kagent-v1.yml +1 -1
  382. package/examples/extensions/knowledge-sources.yaml +1 -1
  383. package/examples/extensions/mcp-full-featured.yaml +1 -1
  384. package/examples/genetics/breeding-agent.ossa.json +1 -1
  385. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  386. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  387. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  388. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  389. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  390. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  391. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +1 -1
  392. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  393. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  394. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  395. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +2 -2
  396. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  397. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  398. package/examples/langchain/chain-agent.ossa.json +1 -1
  399. package/examples/langflow/workflow-agent.ossa.json +1 -1
  400. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  401. package/examples/lifecycle/mentoring-agent.ossa.json +1 -1
  402. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  403. package/examples/mcp/database-mcp.ossa.yaml +1 -1
  404. package/examples/mcp/filesystem-mcp.ossa.yaml +1 -1
  405. package/examples/messaging/dependency-healer.ossa.yaml +1 -1
  406. package/examples/messaging/incident-responder.ossa.yaml +1 -1
  407. package/examples/messaging/routing-rules.ossa.yaml +1 -1
  408. package/examples/messaging/security-scanner.ossa.yaml +1 -1
  409. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  410. package/examples/migrations/langchain/01-python-react-agent-after.ossa.yaml +1 -1
  411. package/examples/migrations/langchain/02-typescript-conversational-after.ossa.yaml +1 -1
  412. package/examples/migrations/langchain/03-sequential-chain-after.ossa.yaml +1 -1
  413. package/examples/migrations/langchain/04-config-based-after.ossa.yaml +1 -1
  414. package/examples/migrations/swarm-to-ossa/after-handoffs.ossa.yaml +6 -6
  415. package/examples/migrations/swarm-to-ossa/after-triage-agent.ossa.yaml +3 -3
  416. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  417. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  418. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  419. package/examples/multi-agent-research-workflow.ossa.yaml +133 -0
  420. package/examples/multi-platform/single-manifest/agent.ossa.yaml +1 -1
  421. package/examples/npm-export-example.ts +150 -0
  422. package/examples/observability/activity-stream-full.yaml +1 -1
  423. package/examples/openai/basic-agent.ossa.yaml +1 -1
  424. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  425. package/examples/openai/swarm-agent.ossa.json +1 -1
  426. package/examples/ossa-templates/01-code-assistant.ossa.yaml +1 -1
  427. package/examples/ossa-templates/02-security-scanner.ossa.yaml +1 -1
  428. package/examples/ossa-templates/03-ci-pipeline.ossa.yaml +1 -1
  429. package/examples/ossa-templates/04-code-reviewer.ossa.yaml +1 -1
  430. package/examples/ossa-templates/05-doc-generator.ossa.yaml +1 -1
  431. package/examples/ossa-templates/06-compliance-validator.ossa.yaml +1 -1
  432. package/examples/ossa-templates/07-workflow-orchestrator.ossa.yaml +1 -1
  433. package/examples/ossa-templates/08-content-writer.ossa.yaml +1 -1
  434. package/examples/ossa-templates/09-test-generator.ossa.yaml +1 -1
  435. package/examples/ossa-templates/10-data-transformer.ossa.yaml +1 -1
  436. package/examples/ossa-templates/11-react-performance-expert.ossa.yaml +1 -1
  437. package/examples/ossa-templates/12-typescript-type-safety-expert.ossa.yaml +1 -1
  438. package/examples/ossa-templates/13-accessibility-champion.ossa.yaml +1 -1
  439. package/examples/ossa-templates/14-security-hardening-agent.ossa.yaml +1 -1
  440. package/examples/production/document-analyzer-openai.yml +1 -1
  441. package/examples/production-ready/01-customer-support-bot/.env.example +32 -0
  442. package/examples/production-ready/01-customer-support-bot/Dockerfile +30 -0
  443. package/examples/production-ready/01-customer-support-bot/README.md +295 -0
  444. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +172 -0
  445. package/examples/production-ready/01-customer-support-bot/docker-compose.yml +55 -0
  446. package/examples/production-ready/01-customer-support-bot/openapi.yaml +238 -0
  447. package/examples/production-ready/01-customer-support-bot/package.json +48 -0
  448. package/examples/production-ready/02-code-review-agent/README.md +72 -0
  449. package/examples/production-ready/02-code-review-agent/agent.ossa.yaml +239 -0
  450. package/examples/production-ready/02-code-review-agent/docker-compose.yml +22 -0
  451. package/examples/production-ready/02-code-review-agent/openapi.yaml +150 -0
  452. package/examples/production-ready/03-data-analysis-agent/README.md +51 -0
  453. package/examples/production-ready/03-data-analysis-agent/agent.ossa.yaml +97 -0
  454. package/examples/production-ready/03-data-analysis-agent/openapi.yaml +74 -0
  455. package/examples/production-ready/04-content-moderator/README.md +55 -0
  456. package/examples/production-ready/04-content-moderator/agent.ossa.yaml +131 -0
  457. package/examples/production-ready/04-content-moderator/openapi.yaml +50 -0
  458. package/examples/production-ready/05-sales-assistant/README.md +37 -0
  459. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +146 -0
  460. package/examples/production-ready/05-sales-assistant/openapi.yaml +59 -0
  461. package/examples/production-ready/06-devops-agent/README.md +39 -0
  462. package/examples/production-ready/06-devops-agent/agent.ossa.yaml +141 -0
  463. package/examples/production-ready/06-devops-agent/openapi.yaml +51 -0
  464. package/examples/production-ready/07-research-assistant/README.md +31 -0
  465. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +119 -0
  466. package/examples/production-ready/07-research-assistant/openapi.yaml +56 -0
  467. package/examples/production-ready/08-email-triage-agent/README.md +33 -0
  468. package/examples/production-ready/08-email-triage-agent/agent.ossa.yaml +133 -0
  469. package/examples/production-ready/08-email-triage-agent/openapi.yaml +41 -0
  470. package/examples/production-ready/09-security-scanner/README.md +49 -0
  471. package/examples/production-ready/09-security-scanner/agent.ossa.yaml +174 -0
  472. package/examples/production-ready/09-security-scanner/openapi.yaml +46 -0
  473. package/examples/production-ready/10-meeting-assistant/README.md +53 -0
  474. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +211 -0
  475. package/examples/production-ready/10-meeting-assistant/docker-compose.yml +27 -0
  476. package/examples/production-ready/10-meeting-assistant/openapi.yaml +131 -0
  477. package/examples/production-ready/COMPLETION_REPORT.txt +272 -0
  478. package/examples/production-ready/INDEX.md +296 -0
  479. package/examples/production-ready/README.md +452 -0
  480. package/examples/production-ready/SUMMARY.md +362 -0
  481. package/examples/production-ready/TEST_RESULTS.md +458 -0
  482. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  483. package/examples/real-world/gitlab-cicd-optimizer.ossa.yaml +1 -1
  484. package/examples/real-world/rag-documentation-assistant.ossa.yaml +1 -1
  485. package/examples/registry/agents/code-reviewer/agent.yaml +1 -1
  486. package/examples/registry/agents/security-scanner/agent.yaml +1 -1
  487. package/examples/runtime-adapters/bedrock-claude-example.ossa.yaml +1 -1
  488. package/examples/schema/reusable-components.yaml +1 -1
  489. package/examples/showcase/ci-pipeline.ossa.yaml +1 -1
  490. package/examples/showcase/code-assistant.ossa.yaml +1 -1
  491. package/examples/showcase/code-reviewer.ossa.yaml +1 -1
  492. package/examples/showcase/compliance-validator.ossa.yaml +1 -1
  493. package/examples/showcase/content-writer.ossa.yaml +1 -1
  494. package/examples/showcase/data-transformer.ossa.yaml +1 -1
  495. package/examples/showcase/doc-generator.ossa.yaml +1 -1
  496. package/examples/showcase/security-scanner.ossa.yaml +1 -1
  497. package/examples/showcase/test-generator.ossa.yaml +1 -1
  498. package/examples/showcase/workflow-orchestrator.ossa.yaml +1 -1
  499. package/examples/skills-example.ossa.yaml +140 -0
  500. package/examples/swarm/pso-optimizer.ossa.json +1 -1
  501. package/examples/tasks/batch-email-sender.yaml +1 -1
  502. package/examples/tasks/data-transform.yaml +1 -1
  503. package/examples/tasks/publish-content.yaml +1 -1
  504. package/examples/templates/ossa-compliance.yaml +1 -1
  505. package/examples/unified/security-scanner.ossa.yaml +1 -1
  506. package/examples/v0.3.6-features/genetics-breeding-advanced.ossa.yaml +1 -1
  507. package/examples/v0.3.6-features/genetics-breeding-simple.ossa.yaml +1 -1
  508. package/examples/v0.3.6-features/genetics-fitness-scoring.ossa.yaml +1 -1
  509. package/examples/vercel/edge-agent.ossa.json +1 -1
  510. package/examples/workflows/batch-email-campaign.yaml +1 -1
  511. package/examples/workflows/content-review-publish.yaml +1 -1
  512. package/examples/workflows/simple-etl.yaml +1 -1
  513. package/openapi/cli/openapi.yaml +221 -5
  514. package/package.json +17 -7
  515. package/dist/cli/commands/export-v2.command.d.ts +0 -7
  516. package/dist/cli/commands/export-v2.command.d.ts.map +0 -1
  517. package/dist/cli/commands/export-v2.command.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ /**
2
+ * LangChain Callbacks Generator
3
+ *
4
+ * Generates observability and callback handlers for LangChain agents:
5
+ * - LangSmith tracing
6
+ * - LangFuse observability
7
+ * - OpenTelemetry integration
8
+ * - Custom callback handlers
9
+ *
10
+ * SOLID: Single Responsibility - Callback configuration generation
11
+ * DRY: Reusable callback patterns
12
+ */
13
+ import type { OssaAgent } from '../../../types/index.js';
14
+ /**
15
+ * Callback configuration options
16
+ */
17
+ export interface CallbackConfig {
18
+ /**
19
+ * Enable LangSmith tracing
20
+ */
21
+ langsmith?: boolean;
22
+ /**
23
+ * Enable LangFuse observability
24
+ */
25
+ langfuse?: boolean;
26
+ /**
27
+ * Enable OpenTelemetry
28
+ */
29
+ opentelemetry?: boolean;
30
+ /**
31
+ * Custom callback handlers
32
+ */
33
+ custom?: {
34
+ onStart?: boolean;
35
+ onEnd?: boolean;
36
+ onError?: boolean;
37
+ onToken?: boolean;
38
+ };
39
+ /**
40
+ * Log level
41
+ */
42
+ logLevel?: 'debug' | 'info' | 'warn' | 'error';
43
+ }
44
+ /**
45
+ * Callbacks Generator
46
+ */
47
+ export declare class CallbacksGenerator {
48
+ /**
49
+ * Generate callbacks.py with observability integrations
50
+ */
51
+ generate(manifest: OssaAgent, config?: CallbackConfig): string;
52
+ private generateHeader;
53
+ private generateImports;
54
+ private generateConfiguration;
55
+ private generateLangSmithSetup;
56
+ private generateLangFuseHandler;
57
+ private generateOpenTelemetryHandler;
58
+ private generateCustomHandlers;
59
+ private generateCostTrackingHandler;
60
+ private generateCallbackManager;
61
+ private generateHelpers;
62
+ }
63
+ //# sourceMappingURL=callbacks-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks-generator.d.ts","sourceRoot":"","sources":["../../../../src/services/export/langchain/callbacks-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAE,cAAmB,GAAG,MAAM;IA6ClE,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,sBAAsB;IAiC9B,OAAO,CAAC,uBAAuB;IAiC/B,OAAO,CAAC,4BAA4B;IA6DpC,OAAO,CAAC,sBAAsB;IA4C9B,OAAO,CAAC,2BAA2B;IA8EnC,OAAO,CAAC,uBAAuB;IAgD/B,OAAO,CAAC,eAAe;CAuBxB"}
@@ -0,0 +1,408 @@
1
+ /**
2
+ * LangChain Callbacks Generator
3
+ *
4
+ * Generates observability and callback handlers for LangChain agents:
5
+ * - LangSmith tracing
6
+ * - LangFuse observability
7
+ * - OpenTelemetry integration
8
+ * - Custom callback handlers
9
+ *
10
+ * SOLID: Single Responsibility - Callback configuration generation
11
+ * DRY: Reusable callback patterns
12
+ */
13
+ /**
14
+ * Callbacks Generator
15
+ */
16
+ export class CallbacksGenerator {
17
+ /**
18
+ * Generate callbacks.py with observability integrations
19
+ */
20
+ generate(manifest, config = {}) {
21
+ const agentName = manifest.metadata?.name || 'agent';
22
+ const sections = [];
23
+ // Header
24
+ sections.push(this.generateHeader(agentName));
25
+ // Imports
26
+ sections.push(this.generateImports(config));
27
+ // Configuration
28
+ sections.push(this.generateConfiguration(config));
29
+ // LangSmith integration
30
+ if (config.langsmith !== false) {
31
+ sections.push(this.generateLangSmithSetup());
32
+ }
33
+ // LangFuse integration
34
+ if (config.langfuse) {
35
+ sections.push(this.generateLangFuseHandler());
36
+ }
37
+ // OpenTelemetry integration
38
+ if (config.opentelemetry) {
39
+ sections.push(this.generateOpenTelemetryHandler());
40
+ }
41
+ // Custom handlers
42
+ if (config.custom) {
43
+ sections.push(this.generateCustomHandlers(config.custom));
44
+ }
45
+ // Cost tracking handler
46
+ sections.push(this.generateCostTrackingHandler());
47
+ // Main callback manager
48
+ sections.push(this.generateCallbackManager(config));
49
+ // Helper functions
50
+ sections.push(this.generateHelpers());
51
+ return sections.join('\n\n');
52
+ }
53
+ generateHeader(agentName) {
54
+ return `"""
55
+ Callbacks and Observability for ${agentName}
56
+
57
+ Provides comprehensive callback handlers for:
58
+ - LangSmith tracing (production-ready)
59
+ - LangFuse observability
60
+ - OpenTelemetry instrumentation
61
+ - Cost tracking and token usage
62
+ - Custom event handlers
63
+ """`;
64
+ }
65
+ generateImports(config) {
66
+ const imports = [
67
+ 'import os',
68
+ 'import time',
69
+ 'from typing import Any, Dict, List, Optional, Union',
70
+ 'from datetime import datetime',
71
+ 'from langchain.callbacks.base import BaseCallbackHandler',
72
+ 'from langchain.callbacks.manager import CallbackManager',
73
+ 'from langchain.schema import AgentAction, AgentFinish, LLMResult',
74
+ ];
75
+ if (config.langsmith !== false) {
76
+ imports.push('from langchain.callbacks.tracers import LangChainTracer');
77
+ }
78
+ if (config.langfuse) {
79
+ imports.push('from langfuse.callback import CallbackHandler as LangfuseHandler');
80
+ }
81
+ if (config.opentelemetry) {
82
+ imports.push('from opentelemetry import trace', 'from opentelemetry.sdk.trace import TracerProvider', 'from opentelemetry.sdk.trace.export import BatchSpanProcessor', 'from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter');
83
+ }
84
+ return imports.join('\n');
85
+ }
86
+ generateConfiguration(config) {
87
+ return `# Callback Configuration
88
+ LOG_LEVEL = os.getenv("CALLBACK_LOG_LEVEL", "${config.logLevel || 'info'}").lower()
89
+ LANGSMITH_ENABLED = os.getenv("LANGSMITH_ENABLED", "${config.langsmith !== false ? 'true' : 'false'}").lower() == "true"
90
+ LANGFUSE_ENABLED = os.getenv("LANGFUSE_ENABLED", "${config.langfuse ? 'true' : 'false'}").lower() == "true"
91
+ OTEL_ENABLED = os.getenv("OTEL_ENABLED", "${config.opentelemetry ? 'true' : 'false'}").lower() == "true"`;
92
+ }
93
+ generateLangSmithSetup() {
94
+ return `def setup_langsmith() -> Optional[LangChainTracer]:
95
+ """
96
+ Setup LangSmith tracing
97
+
98
+ Environment variables:
99
+ - LANGCHAIN_API_KEY: LangSmith API key
100
+ - LANGCHAIN_PROJECT: Project name
101
+ - LANGCHAIN_ENDPOINT: API endpoint (optional)
102
+ """
103
+ if not LANGSMITH_ENABLED:
104
+ return None
105
+
106
+ api_key = os.getenv("LANGCHAIN_API_KEY")
107
+ if not api_key:
108
+ print("Warning: LANGCHAIN_API_KEY not set, LangSmith tracing disabled")
109
+ return None
110
+
111
+ project = os.getenv("LANGCHAIN_PROJECT", "default")
112
+ endpoint = os.getenv("LANGCHAIN_ENDPOINT", "https://api.smith.langchain.com")
113
+
114
+ try:
115
+ tracer = LangChainTracer(
116
+ project_name=project,
117
+ client=None, # Will use env vars
118
+ )
119
+ print(f"✓ LangSmith tracing enabled: project={project}")
120
+ return tracer
121
+ except Exception as e:
122
+ print(f"Warning: Failed to setup LangSmith: {e}")
123
+ return None`;
124
+ }
125
+ generateLangFuseHandler() {
126
+ return `def setup_langfuse() -> Optional[LangfuseHandler]:
127
+ """
128
+ Setup LangFuse observability
129
+
130
+ Environment variables:
131
+ - LANGFUSE_PUBLIC_KEY: Public key
132
+ - LANGFUSE_SECRET_KEY: Secret key
133
+ - LANGFUSE_HOST: Host URL (optional)
134
+ """
135
+ if not LANGFUSE_ENABLED:
136
+ return None
137
+
138
+ public_key = os.getenv("LANGFUSE_PUBLIC_KEY")
139
+ secret_key = os.getenv("LANGFUSE_SECRET_KEY")
140
+
141
+ if not public_key or not secret_key:
142
+ print("Warning: LangFuse credentials not set, observability disabled")
143
+ return None
144
+
145
+ try:
146
+ handler = LangfuseHandler(
147
+ public_key=public_key,
148
+ secret_key=secret_key,
149
+ host=os.getenv("LANGFUSE_HOST"),
150
+ )
151
+ print("✓ LangFuse observability enabled")
152
+ return handler
153
+ except Exception as e:
154
+ print(f"Warning: Failed to setup LangFuse: {e}")
155
+ return None`;
156
+ }
157
+ generateOpenTelemetryHandler() {
158
+ return `def setup_opentelemetry():
159
+ """
160
+ Setup OpenTelemetry tracing
161
+
162
+ Environment variables:
163
+ - OTEL_EXPORTER_OTLP_ENDPOINT: OTLP endpoint
164
+ - OTEL_SERVICE_NAME: Service name
165
+ """
166
+ if not OTEL_ENABLED:
167
+ return
168
+
169
+ endpoint = os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
170
+ if not endpoint:
171
+ print("Warning: OTEL_EXPORTER_OTLP_ENDPOINT not set, OpenTelemetry disabled")
172
+ return
173
+
174
+ try:
175
+ provider = TracerProvider()
176
+ processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=endpoint))
177
+ provider.add_span_processor(processor)
178
+ trace.set_tracer_provider(provider)
179
+
180
+ service_name = os.getenv("OTEL_SERVICE_NAME", "langchain-agent")
181
+ print(f"✓ OpenTelemetry enabled: service={service_name}")
182
+ except Exception as e:
183
+ print(f"Warning: Failed to setup OpenTelemetry: {e}")
184
+
185
+
186
+ class OpenTelemetryCallbackHandler(BaseCallbackHandler):
187
+ """OpenTelemetry callback handler"""
188
+
189
+ def __init__(self):
190
+ super().__init__()
191
+ self.tracer = trace.get_tracer(__name__)
192
+ self.spans = {}
193
+
194
+ def on_llm_start(self, serialized: Dict[str, Any], prompts: List[str], **kwargs):
195
+ """Start LLM span"""
196
+ run_id = kwargs.get("run_id")
197
+ span = self.tracer.start_span(f"llm.{serialized.get('name', 'unknown')}")
198
+ span.set_attribute("prompts.count", len(prompts))
199
+ self.spans[str(run_id)] = span
200
+
201
+ def on_llm_end(self, response: LLMResult, **kwargs):
202
+ """End LLM span"""
203
+ run_id = kwargs.get("run_id")
204
+ span = self.spans.pop(str(run_id), None)
205
+ if span:
206
+ span.set_attribute("generations.count", len(response.generations))
207
+ span.end()
208
+
209
+ def on_llm_error(self, error: Exception, **kwargs):
210
+ """Record LLM error"""
211
+ run_id = kwargs.get("run_id")
212
+ span = self.spans.pop(str(run_id), None)
213
+ if span:
214
+ span.record_exception(error)
215
+ span.end()`;
216
+ }
217
+ generateCustomHandlers(custom) {
218
+ return `class CustomCallbackHandler(BaseCallbackHandler):
219
+ """Custom callback handler with event hooks"""
220
+
221
+ def __init__(self, log_level: str = "info"):
222
+ super().__init__()
223
+ self.log_level = log_level
224
+ self.start_time = None
225
+ self.events = []
226
+
227
+ ${custom.onStart ? `def on_chain_start(self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs):
228
+ """Called when chain starts"""
229
+ self.start_time = time.time()
230
+ if self.log_level in ["debug", "info"]:
231
+ print(f"▶ Chain started: {serialized.get('name', 'unknown')}")
232
+ if self.log_level == "debug":
233
+ print(f" Inputs: {inputs}")
234
+
235
+ def on_agent_action(self, action: AgentAction, **kwargs):
236
+ """Called when agent takes action"""
237
+ if self.log_level in ["debug", "info"]:
238
+ print(f" → Action: {action.tool} - {action.tool_input}")` : ''}
239
+
240
+ ${custom.onEnd ? `def on_chain_end(self, outputs: Dict[str, Any], **kwargs):
241
+ """Called when chain ends"""
242
+ duration = time.time() - self.start_time if self.start_time else 0
243
+ if self.log_level in ["debug", "info"]:
244
+ print(f"✓ Chain completed: {duration:.2f}s")
245
+ if self.log_level == "debug":
246
+ print(f" Outputs: {outputs}")` : ''}
247
+
248
+ ${custom.onError ? `def on_chain_error(self, error: Exception, **kwargs):
249
+ """Called when chain errors"""
250
+ print(f"✗ Chain error: {error}")
251
+ if self.log_level == "debug":
252
+ import traceback
253
+ traceback.print_exc()` : ''}
254
+
255
+ ${custom.onToken ? `def on_llm_new_token(self, token: str, **kwargs):
256
+ """Called when new token is generated"""
257
+ if self.log_level == "debug":
258
+ print(token, end="", flush=True)` : ''}`;
259
+ }
260
+ generateCostTrackingHandler() {
261
+ return `class CostTrackingHandler(BaseCallbackHandler):
262
+ """Track token usage and costs"""
263
+
264
+ # Pricing per 1M tokens (as of 2026)
265
+ PRICING = {
266
+ "gpt-4": {"input": 30.0, "output": 60.0},
267
+ "gpt-4-turbo": {"input": 10.0, "output": 30.0},
268
+ "gpt-3.5-turbo": {"input": 0.5, "output": 1.5},
269
+ "claude-3-opus": {"input": 15.0, "output": 75.0},
270
+ "claude-3-sonnet": {"input": 3.0, "output": 15.0},
271
+ "claude-3-haiku": {"input": 0.25, "output": 1.25},
272
+ "claude-sonnet-4": {"input": 3.0, "output": 15.0},
273
+ }
274
+
275
+ def __init__(self):
276
+ super().__init__()
277
+ self.total_tokens = 0
278
+ self.prompt_tokens = 0
279
+ self.completion_tokens = 0
280
+ self.total_cost = 0.0
281
+ self.model_name = None
282
+
283
+ def on_llm_start(self, serialized: Dict[str, Any], prompts: List[str], **kwargs):
284
+ """Capture model name"""
285
+ self.model_name = serialized.get("name", "unknown")
286
+
287
+ def on_llm_end(self, response: LLMResult, **kwargs):
288
+ """Track token usage"""
289
+ if not response.llm_output:
290
+ return
291
+
292
+ token_usage = response.llm_output.get("token_usage", {})
293
+ prompt_tokens = token_usage.get("prompt_tokens", 0)
294
+ completion_tokens = token_usage.get("completion_tokens", 0)
295
+ total = prompt_tokens + completion_tokens
296
+
297
+ self.prompt_tokens += prompt_tokens
298
+ self.completion_tokens += completion_tokens
299
+ self.total_tokens += total
300
+
301
+ # Calculate cost
302
+ model_key = self._normalize_model_name(self.model_name or "")
303
+ pricing = self.PRICING.get(model_key, {"input": 0, "output": 0})
304
+
305
+ input_cost = (prompt_tokens / 1_000_000) * pricing["input"]
306
+ output_cost = (completion_tokens / 1_000_000) * pricing["output"]
307
+ self.total_cost += input_cost + output_cost
308
+
309
+ if LOG_LEVEL in ["debug", "info"]:
310
+ print(f" Tokens: {prompt_tokens} in, {completion_tokens} out = \${input_cost + output_cost:.6f}")
311
+
312
+ def _normalize_model_name(self, model: str) -> str:
313
+ """Normalize model name for pricing lookup"""
314
+ model = model.lower()
315
+ for key in self.PRICING.keys():
316
+ if key in model:
317
+ return key
318
+ return "unknown"
319
+
320
+ def get_summary(self) -> Dict[str, Any]:
321
+ """Get cost tracking summary"""
322
+ return {
323
+ "total_tokens": self.total_tokens,
324
+ "prompt_tokens": self.prompt_tokens,
325
+ "completion_tokens": self.completion_tokens,
326
+ "total_cost": round(self.total_cost, 6),
327
+ "model": self.model_name,
328
+ }
329
+
330
+ def reset(self):
331
+ """Reset tracking counters"""
332
+ self.total_tokens = 0
333
+ self.prompt_tokens = 0
334
+ self.completion_tokens = 0
335
+ self.total_cost = 0.0`;
336
+ }
337
+ generateCallbackManager(config) {
338
+ return `def get_callbacks() -> CallbackManager:
339
+ """
340
+ Get configured callback manager with all enabled handlers
341
+ """
342
+ handlers = []
343
+
344
+ # LangSmith tracing
345
+ if LANGSMITH_ENABLED:
346
+ langsmith = setup_langsmith()
347
+ if langsmith:
348
+ handlers.append(langsmith)
349
+
350
+ # LangFuse observability
351
+ if LANGFUSE_ENABLED:
352
+ langfuse = setup_langfuse()
353
+ if langfuse:
354
+ handlers.append(langfuse)
355
+
356
+ # OpenTelemetry
357
+ if OTEL_ENABLED:
358
+ setup_opentelemetry()
359
+ handlers.append(OpenTelemetryCallbackHandler())
360
+
361
+ # Custom handlers
362
+ ${config.custom ? 'handlers.append(CustomCallbackHandler(log_level=LOG_LEVEL))' : ''}
363
+
364
+ # Cost tracking (always enabled)
365
+ cost_tracker = CostTrackingHandler()
366
+ handlers.append(cost_tracker)
367
+
368
+ manager = CallbackManager(handlers=handlers)
369
+
370
+ if LOG_LEVEL in ["debug", "info"]:
371
+ print(f"✓ Callbacks initialized: {len(handlers)} handlers")
372
+
373
+ return manager
374
+
375
+
376
+ # Global cost tracker for access
377
+ _cost_tracker = CostTrackingHandler()
378
+
379
+
380
+ def get_cost_tracker() -> CostTrackingHandler:
381
+ """Get global cost tracker instance"""
382
+ return _cost_tracker`;
383
+ }
384
+ generateHelpers() {
385
+ return `def print_cost_summary(tracker: Optional[CostTrackingHandler] = None):
386
+ """Print cost tracking summary"""
387
+ tracker = tracker or _cost_tracker
388
+ summary = tracker.get_summary()
389
+
390
+ print("\\n" + "=" * 50)
391
+ print("Cost Summary")
392
+ print("=" * 50)
393
+ print(f"Model: {summary['model']}")
394
+ print(f"Total Tokens: {summary['total_tokens']:,}")
395
+ print(f" Prompt: {summary['prompt_tokens']:,}")
396
+ print(f" Completion: {summary['completion_tokens']:,}")
397
+ print(f"Total Cost: \${summary['total_cost']:.6f}")
398
+ print("=" * 50)
399
+
400
+
401
+ def reset_cost_tracking(tracker: Optional[CostTrackingHandler] = None):
402
+ """Reset cost tracking counters"""
403
+ tracker = tracker or _cost_tracker
404
+ tracker.reset()
405
+ print("✓ Cost tracking reset")`;
406
+ }
407
+ }
408
+ //# sourceMappingURL=callbacks-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks-generator.js","sourceRoot":"","sources":["../../../../src/services/export/langchain/callbacks-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
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
+ import type { OssaAgent } from '../../../types/index.js';
15
+ /**
16
+ * Error handling configuration
17
+ */
18
+ export interface ErrorHandlingConfig {
19
+ /**
20
+ * Enable retry logic
21
+ */
22
+ retry?: {
23
+ enabled?: boolean;
24
+ maxAttempts?: number;
25
+ exponentialBackoff?: boolean;
26
+ initialDelay?: number;
27
+ maxDelay?: number;
28
+ retryableErrors?: string[];
29
+ };
30
+ /**
31
+ * Enable circuit breaker
32
+ */
33
+ circuitBreaker?: {
34
+ enabled?: boolean;
35
+ failureThreshold?: number;
36
+ resetTimeout?: number;
37
+ halfOpenMaxAttempts?: number;
38
+ };
39
+ /**
40
+ * Rate limiting
41
+ */
42
+ rateLimit?: {
43
+ enabled?: boolean;
44
+ maxRequests?: number;
45
+ windowSeconds?: number;
46
+ };
47
+ /**
48
+ * Fallback strategies
49
+ */
50
+ fallback?: {
51
+ enabled?: boolean;
52
+ defaultResponse?: string;
53
+ useCachedResponses?: boolean;
54
+ };
55
+ }
56
+ /**
57
+ * Error Handling Generator
58
+ */
59
+ export declare class ErrorHandlingGenerator {
60
+ /**
61
+ * Generate error_handling.py with production error handling
62
+ */
63
+ generate(manifest: OssaAgent, config?: ErrorHandlingConfig): string;
64
+ private generateHeader;
65
+ private generateImports;
66
+ private generateConfiguration;
67
+ private generateErrorClassification;
68
+ private generateRetryDecorator;
69
+ private generateCircuitBreaker;
70
+ private generateRateLimiter;
71
+ private generateFallbackHandler;
72
+ private generateErrorRecovery;
73
+ private generateMainErrorHandler;
74
+ private generateUtilities;
75
+ }
76
+ //# sourceMappingURL=error-handling-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling-generator.d.ts","sourceRoot":"","sources":["../../../../src/services/export/langchain/error-handling-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IAEF;;OAEG;IACH,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IAEF;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAE,mBAAwB,GAAG,MAAM;IA+CvE,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,2BAA2B;IAwDnC,OAAO,CAAC,sBAAsB;IAqE9B,OAAO,CAAC,sBAAsB;IAkG9B,OAAO,CAAC,mBAAmB;IA8C3B,OAAO,CAAC,uBAAuB;IA2C/B,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,wBAAwB;IAkChC,OAAO,CAAC,iBAAiB;CAoC1B"}