@bluefly/openstandardagents 0.2.4

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 (371) hide show
  1. package/.env.example +41 -0
  2. package/.eslintrc.cjs +43 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +39 -0
  4. package/.github/dependabot.yml +58 -0
  5. package/.github/workflows/ci.yml +154 -0
  6. package/.github/workflows/codeql.yml +41 -0
  7. package/.github/workflows/dependabot-auto-merge.yml +28 -0
  8. package/.github/workflows/release.yml +103 -0
  9. package/.prettierignore +7 -0
  10. package/.prettierrc.json +10 -0
  11. package/.redocly.yaml +9 -0
  12. package/.releaserc.json +84 -0
  13. package/.releaserc.json.disabled +81 -0
  14. package/CHANGELOG.md +152 -0
  15. package/CONTRIBUTING.md +249 -0
  16. package/LICENSE +190 -0
  17. package/README.md +280 -0
  18. package/bin/ossa +8 -0
  19. package/bin/validate-ossa-0.2.2.ts +244 -0
  20. package/dist/di-container.d.ts +18 -0
  21. package/dist/di-container.d.ts.map +1 -0
  22. package/dist/di-container.js +43 -0
  23. package/dist/di-container.js.map +1 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +17 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/repositories/manifest.repository.d.ts +26 -0
  29. package/dist/repositories/manifest.repository.d.ts.map +1 -0
  30. package/dist/repositories/manifest.repository.js +90 -0
  31. package/dist/repositories/manifest.repository.js.map +1 -0
  32. package/dist/repositories/schema.repository.d.ts +30 -0
  33. package/dist/repositories/schema.repository.d.ts.map +1 -0
  34. package/dist/repositories/schema.repository.js +143 -0
  35. package/dist/repositories/schema.repository.js.map +1 -0
  36. package/dist/services/generation.service.d.ts +54 -0
  37. package/dist/services/generation.service.d.ts.map +1 -0
  38. package/dist/services/generation.service.js +298 -0
  39. package/dist/services/generation.service.js.map +1 -0
  40. package/dist/services/migration.service.d.ts +30 -0
  41. package/dist/services/migration.service.d.ts.map +1 -0
  42. package/dist/services/migration.service.js +231 -0
  43. package/dist/services/migration.service.js.map +1 -0
  44. package/dist/services/runtime/openai.adapter.d.ts +94 -0
  45. package/dist/services/runtime/openai.adapter.d.ts.map +1 -0
  46. package/dist/services/runtime/openai.adapter.js +209 -0
  47. package/dist/services/runtime/openai.adapter.js.map +1 -0
  48. package/dist/services/validation.service.d.ts +45 -0
  49. package/dist/services/validation.service.d.ts.map +1 -0
  50. package/dist/services/validation.service.js +362 -0
  51. package/dist/services/validation.service.js.map +1 -0
  52. package/dist/services/validators/anthropic.validator.d.ts +9 -0
  53. package/dist/services/validators/anthropic.validator.d.ts.map +1 -0
  54. package/dist/services/validators/anthropic.validator.js +105 -0
  55. package/dist/services/validators/anthropic.validator.js.map +1 -0
  56. package/dist/services/validators/autogen.validator.d.ts +9 -0
  57. package/dist/services/validators/autogen.validator.d.ts.map +1 -0
  58. package/dist/services/validators/autogen.validator.js +111 -0
  59. package/dist/services/validators/autogen.validator.js.map +1 -0
  60. package/dist/services/validators/crewai.validator.d.ts +9 -0
  61. package/dist/services/validators/crewai.validator.d.ts.map +1 -0
  62. package/dist/services/validators/crewai.validator.js +117 -0
  63. package/dist/services/validators/crewai.validator.js.map +1 -0
  64. package/dist/services/validators/cursor.validator.d.ts +9 -0
  65. package/dist/services/validators/cursor.validator.d.ts.map +1 -0
  66. package/dist/services/validators/cursor.validator.js +88 -0
  67. package/dist/services/validators/cursor.validator.js.map +1 -0
  68. package/dist/services/validators/index.d.ts +15 -0
  69. package/dist/services/validators/index.d.ts.map +1 -0
  70. package/dist/services/validators/index.js +15 -0
  71. package/dist/services/validators/index.js.map +1 -0
  72. package/dist/services/validators/langchain.validator.d.ts +9 -0
  73. package/dist/services/validators/langchain.validator.d.ts.map +1 -0
  74. package/dist/services/validators/langchain.validator.js +103 -0
  75. package/dist/services/validators/langchain.validator.js.map +1 -0
  76. package/dist/services/validators/langflow.validator.d.ts +9 -0
  77. package/dist/services/validators/langflow.validator.d.ts.map +1 -0
  78. package/dist/services/validators/langflow.validator.js +92 -0
  79. package/dist/services/validators/langflow.validator.js.map +1 -0
  80. package/dist/services/validators/langgraph.validator.d.ts +9 -0
  81. package/dist/services/validators/langgraph.validator.d.ts.map +1 -0
  82. package/dist/services/validators/langgraph.validator.js +123 -0
  83. package/dist/services/validators/langgraph.validator.js.map +1 -0
  84. package/dist/services/validators/llamaindex.validator.d.ts +9 -0
  85. package/dist/services/validators/llamaindex.validator.d.ts.map +1 -0
  86. package/dist/services/validators/llamaindex.validator.js +121 -0
  87. package/dist/services/validators/llamaindex.validator.js.map +1 -0
  88. package/dist/services/validators/openai.validator.d.ts +9 -0
  89. package/dist/services/validators/openai.validator.d.ts.map +1 -0
  90. package/dist/services/validators/openai.validator.js +126 -0
  91. package/dist/services/validators/openai.validator.js.map +1 -0
  92. package/dist/services/validators/vercel-ai.validator.d.ts +9 -0
  93. package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -0
  94. package/dist/services/validators/vercel-ai.validator.js +99 -0
  95. package/dist/services/validators/vercel-ai.validator.js.map +1 -0
  96. package/dist/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
  97. package/dist/spec/v0.1.9/ecosystem-compliance.json +235 -0
  98. package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
  99. package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
  100. package/dist/spec/v0.1.9/reasoning-compliance.json +654 -0
  101. package/dist/spec/v0.2.2/kagent-enhancements.json +395 -0
  102. package/dist/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
  103. package/dist/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
  104. package/dist/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
  105. package/dist/spec/v0.2.3/CHANGELOG.md +176 -0
  106. package/dist/spec/v0.2.3/README.md +154 -0
  107. package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
  108. package/dist/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
  109. package/dist/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
  110. package/dist/spec/v0.2.4-dev/CHANGELOG.md +403 -0
  111. package/dist/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  112. package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
  113. package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
  114. package/dist/spec/v0.2.5-dev/CHANGELOG.md +171 -0
  115. package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
  116. package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
  117. package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
  118. package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
  119. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
  120. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
  121. package/dist/types/index.d.ts +178 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/types/index.js +6 -0
  124. package/dist/types/index.js.map +1 -0
  125. package/dist/types/openapi-extensions.d.ts +164 -0
  126. package/dist/types/openapi-extensions.d.ts.map +1 -0
  127. package/dist/types/openapi-extensions.js +6 -0
  128. package/dist/types/openapi-extensions.js.map +1 -0
  129. package/docs/OSSA-COMPLIANT-BADGE.md +248 -0
  130. package/docs/README.md +31 -0
  131. package/docs/VERSIONING.md +284 -0
  132. package/docs/agent-openapi-spec.yml +942 -0
  133. package/docs/getting-started.md +87 -0
  134. package/docs/migration/general-agent-schema.yml +255 -0
  135. package/docs/migration/migration-manifest.json +64 -0
  136. package/docs/openapi-extensions.md +930 -0
  137. package/docs/schemas/openapi-extensions.schema.json +486 -0
  138. package/examples/adk-integration/code-review-workflow.yml +136 -0
  139. package/examples/adk-integration/customer-support.yml +263 -0
  140. package/examples/adk-integration/data-pipeline.yml +173 -0
  141. package/examples/advanced/patterns/compliance-context-production.json +53 -0
  142. package/examples/advanced/patterns/model-router.ts +274 -0
  143. package/examples/advanced/patterns/smart-model-routing.ts +248 -0
  144. package/examples/advanced/workflows/hybrid-model-strategy.yaml +232 -0
  145. package/examples/agent-manifests/critics/critic-agent.yaml +149 -0
  146. package/examples/agent-manifests/governors/governor-agent.yaml +128 -0
  147. package/examples/agent-manifests/integrators/integrator-agent.yaml +103 -0
  148. package/examples/agent-manifests/judges/judge-agent.yaml +153 -0
  149. package/examples/agent-manifests/monitors/monitor-agent.yaml +122 -0
  150. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +247 -0
  151. package/examples/agent-manifests/sample-compliant-agent.yaml +147 -0
  152. package/examples/agent-manifests/workers/worker-agent.yaml +82 -0
  153. package/examples/anthropic/claude-assistant.ossa.json +45 -0
  154. package/examples/architecture/model-configuration/ollama-integration.ts +110 -0
  155. package/examples/autogen/multi-agent.ossa.json +37 -0
  156. package/examples/bridge-configurations.yaml +346 -0
  157. package/examples/bridges/Dockerfile.production +87 -0
  158. package/examples/bridges/__pycache__/aiflow-bridge-enhanced.cpython-313.pyc +0 -0
  159. package/examples/bridges/__pycache__/aiflow-phoenix-tracing.cpython-313.pyc +0 -0
  160. package/examples/bridges/__pycache__/test_aiflow_integration.cpython-313.pyc +0 -0
  161. package/examples/bridges/aiflow-bridge-enhanced.py +462 -0
  162. package/examples/bridges/aiflow-bridge-example.yml +310 -0
  163. package/examples/bridges/aiflow-phoenix-tracing.py +310 -0
  164. package/examples/bridges/aiflow-registration-api.openapi.yml +439 -0
  165. package/examples/bridges/k8s/configmap.yaml +121 -0
  166. package/examples/bridges/k8s/deployment-simple.yaml +34 -0
  167. package/examples/bridges/k8s/deployment.yaml +275 -0
  168. package/examples/bridges/k8s/hpa.yaml +126 -0
  169. package/examples/bridges/k8s/ingress.yaml +155 -0
  170. package/examples/bridges/kagent-bridge-example.yml +94 -0
  171. package/examples/bridges/load-tests/Dockerfile +28 -0
  172. package/examples/bridges/load-tests/k6-load-test.js +302 -0
  173. package/examples/bridges/load-tests/requirements.txt +20 -0
  174. package/examples/bridges/loadtest/k6-scenarios.js +270 -0
  175. package/examples/bridges/phase4/SLO-SLA.yaml +249 -0
  176. package/examples/bridges/phase4/chaos-tests.yaml +226 -0
  177. package/examples/bridges/requirements.txt +24 -0
  178. package/examples/bridges/test_aiflow_integration.py +341 -0
  179. package/examples/common_npm/agent-router.ossa.yaml +182 -0
  180. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +60 -0
  181. package/examples/compliance-agent.yml +155 -0
  182. package/examples/crewai/research-team.ossa.json +36 -0
  183. package/examples/cursor/code-review-agent.ossa.json +47 -0
  184. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +609 -0
  185. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +68 -0
  186. package/examples/enterprise/agent.yml +452 -0
  187. package/examples/extensions/drupal-v1.yml +266 -0
  188. package/examples/extensions/kagent-v1.yml +167 -0
  189. package/examples/getting-started/hello-world-complete.ossa.yaml +266 -0
  190. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +376 -0
  191. package/examples/kagent/README.md +31 -0
  192. package/examples/kagent/compliance-validator.ossa.yaml +111 -0
  193. package/examples/kagent/cost-optimizer.ossa.yaml +93 -0
  194. package/examples/kagent/documentation-agent.ossa.yaml +91 -0
  195. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +269 -0
  196. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +106 -0
  197. package/examples/kagent/k8s-troubleshooter.ossa.yaml +257 -0
  198. package/examples/kagent/security-scanner.ossa.yaml +140 -0
  199. package/examples/langchain/chain-agent.ossa.json +42 -0
  200. package/examples/langflow/workflow-agent.ossa.json +39 -0
  201. package/examples/langgraph/state-machine-agent.ossa.json +59 -0
  202. package/examples/llamaindex/rag-agent.ossa.json +41 -0
  203. package/examples/migration-guides/from-langchain-to-ossa.yaml +309 -0
  204. package/examples/minimal/agent.yml +152 -0
  205. package/examples/minimal/openapi.yaml +95 -0
  206. package/examples/openai/swarm-agent.ossa.json +59 -0
  207. package/examples/openapi-extensions/README.md +87 -0
  208. package/examples/openapi-extensions/minimal-agent-api.openapi.yml +288 -0
  209. package/examples/openapi-extensions/orchestrator-agent-api.openapi.yml +633 -0
  210. package/examples/openapi-extensions/worker-agent-api.openapi.yml +533 -0
  211. package/examples/production/agent.yml +713 -0
  212. package/examples/production/document-analyzer-openai.yml +134 -0
  213. package/examples/quickstart/support-agent.ossa.yaml +59 -0
  214. package/examples/service-registry-usage.ts +423 -0
  215. package/examples/spec-examples/audit-agent.yml +147 -0
  216. package/examples/spec-examples/chat-agent.yml +189 -0
  217. package/examples/spec-examples/compliance-agent.yml +204 -0
  218. package/examples/spec-examples/data-processing-agent.yml +132 -0
  219. package/examples/spec-examples/development-agent.yml +138 -0
  220. package/examples/spec-examples/edge-agent.yml +101 -0
  221. package/examples/spec-examples/integration-agent.yml +129 -0
  222. package/examples/spec-examples/monitoring-agent.yml +130 -0
  223. package/examples/spec-examples/serverless-agent.yml +82 -0
  224. package/examples/spec-examples/workflow-agent.yml +223 -0
  225. package/examples/templates/ossa-compliance.yaml +56 -0
  226. package/examples/typescript/advanced/demo-registry.ts +168 -0
  227. package/examples/typescript/mcpb-agent-example.ts +358 -0
  228. package/examples/vercel/edge-agent.ossa.json +43 -0
  229. package/infrastructure/docker-compose.yml +33 -0
  230. package/junit.xml +1 -0
  231. package/openapi/drupal-agent-api.openapi.yaml +348 -0
  232. package/openapi/gitlab-orchestrator.openapi.yaml +330 -0
  233. package/openapi/helm-generator.openapi.yaml +389 -0
  234. package/openapi/ossa-core-api.openapi.yaml +1448 -0
  235. package/openapi/ossa-registry-api.openapi.yaml +980 -0
  236. package/openapi/ossa-registry.openapi.yaml +782 -0
  237. package/openapi/self-evolving-ecosystem.openapi.yaml +1530 -0
  238. package/openapi/unified-agent-gateway.openapi.yaml +833 -0
  239. package/ossa-website-swarm-tasks.json +105 -0
  240. package/package.json +132 -0
  241. package/release.config.js +64 -0
  242. package/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
  243. package/spec/v0.1.9/ecosystem-compliance.json +235 -0
  244. package/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
  245. package/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
  246. package/spec/v0.1.9/reasoning-compliance.json +654 -0
  247. package/spec/v0.2.2/kagent-enhancements.json +395 -0
  248. package/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
  249. package/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
  250. package/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
  251. package/spec/v0.2.3/CHANGELOG.md +176 -0
  252. package/spec/v0.2.3/README.md +154 -0
  253. package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
  254. package/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
  255. package/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
  256. package/spec/v0.2.4-dev/CHANGELOG.md +403 -0
  257. package/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  258. package/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
  259. package/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
  260. package/spec/v0.2.5-dev/CHANGELOG.md +171 -0
  261. package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
  262. package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
  263. package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
  264. package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
  265. package/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
  266. package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
  267. package/test-results.xml +1 -0
  268. package/website/.lighthouserc.js +20 -0
  269. package/website/.prettierrc +10 -0
  270. package/website/Dockerfile +17 -0
  271. package/website/app/about/page.tsx +295 -0
  272. package/website/app/api/validate/route.ts +88 -0
  273. package/website/app/blog/[slug]/page.tsx +167 -0
  274. package/website/app/blog/page.tsx +162 -0
  275. package/website/app/docs/[[...slug]]/page.tsx +349 -0
  276. package/website/app/docs/core-concepts/project-structure/page.tsx +349 -0
  277. package/website/app/ecosystem/page.tsx +375 -0
  278. package/website/app/examples/page.tsx +123 -0
  279. package/website/app/globals.css +108 -0
  280. package/website/app/layout.tsx +106 -0
  281. package/website/app/page.tsx +409 -0
  282. package/website/app/playground/page.tsx +507 -0
  283. package/website/app/robots.ts +19 -0
  284. package/website/app/rss.xml/route.ts +74 -0
  285. package/website/app/schema/page.tsx +970 -0
  286. package/website/app/sitemap.ts +56 -0
  287. package/website/app/specification/page.tsx +211 -0
  288. package/website/components/InstallCommand.tsx +96 -0
  289. package/website/components/Logo.tsx +24 -0
  290. package/website/components/StructuredData.tsx +65 -0
  291. package/website/components/docs/DocsSearch.tsx +104 -0
  292. package/website/components/docs/DocsSidebar.tsx +118 -0
  293. package/website/components/docs/MarkdownContent.tsx +183 -0
  294. package/website/components/docs/VersionSelector.tsx +49 -0
  295. package/website/components/examples/ExamplesViewer.tsx +293 -0
  296. package/website/components/layout/Footer.tsx +111 -0
  297. package/website/components/layout/Header.tsx +170 -0
  298. package/website/components/schema/SchemaExplorer.tsx +213 -0
  299. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +285 -0
  300. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +209 -0
  301. package/website/content/blog/introducing-ossa-framework.md +328 -0
  302. package/website/content/blog/ossa-production-results.md +279 -0
  303. package/website/content/blog/welcome-to-ossa.md +43 -0
  304. package/website/content/blog/why-ai-agents-need-open-standard.md +98 -0
  305. package/website/content/docs/00-HOME.md +160 -0
  306. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +107 -0
  307. package/website/content/docs/OpenAPI-Extensions.md +498 -0
  308. package/website/content/docs/architecture/execution-flow.md +335 -0
  309. package/website/content/docs/architecture/multi-agent-systems.md +737 -0
  310. package/website/content/docs/architecture/overview.md +121 -0
  311. package/website/content/docs/architecture/stack-integration.md +461 -0
  312. package/website/content/docs/changelog.md +246 -0
  313. package/website/content/docs/contributing.md +599 -0
  314. package/website/content/docs/core-concepts/project-structure.md +348 -0
  315. package/website/content/docs/ecosystem/framework-support.md +821 -0
  316. package/website/content/docs/ecosystem/overview.md +366 -0
  317. package/website/content/docs/examples/Migration-Guides.md +214 -0
  318. package/website/content/docs/examples.md +71 -0
  319. package/website/content/docs/for-audiences/Enterprises.md +256 -0
  320. package/website/content/docs/for-audiences/Students-Researchers.md +122 -0
  321. package/website/content/docs/for-audiences/architects.md +224 -0
  322. package/website/content/docs/for-audiences/developers.md +220 -0
  323. package/website/content/docs/getting-started/5-minute-overview.md +85 -0
  324. package/website/content/docs/getting-started/Hello-World.md +184 -0
  325. package/website/content/docs/getting-started/first-agent.md +196 -0
  326. package/website/content/docs/getting-started/installation.md +155 -0
  327. package/website/content/docs/getting-started/running-agents.md +107 -0
  328. package/website/content/docs/integrations/aiflow.md +104 -0
  329. package/website/content/docs/integrations/drupal.md +105 -0
  330. package/website/content/docs/migration-guides/00-index.md +76 -0
  331. package/website/content/docs/migration-guides/README.md +133 -0
  332. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +1750 -0
  333. package/website/content/docs/migration-guides/crewai-to-ossa.md +274 -0
  334. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +2017 -0
  335. package/website/content/docs/migration-guides/index.md +133 -0
  336. package/website/content/docs/migration-guides/langchain-to-ossa.md +1714 -0
  337. package/website/content/docs/migration-guides/langflow-to-ossa.md +2075 -0
  338. package/website/content/docs/migration-guides/openai-to-ossa.md +1202 -0
  339. package/website/content/docs/openapi-extensions/examples.md +550 -0
  340. package/website/content/docs/openapi-extensions/index.md +495 -0
  341. package/website/content/docs/openapi-extensions/operation-extensions.md +398 -0
  342. package/website/content/docs/openapi-extensions/root-extensions.md +364 -0
  343. package/website/content/docs/pre-release/index.md +175 -0
  344. package/website/content/docs/quick-reference.md +17 -0
  345. package/website/content/docs/schema-reference/agent-spec.md +406 -0
  346. package/website/content/docs/schema-reference/autonomy.md +568 -0
  347. package/website/content/docs/schema-reference/constraints.md +543 -0
  348. package/website/content/docs/schema-reference/index.md +176 -0
  349. package/website/content/docs/schema-reference/llm-config.md +445 -0
  350. package/website/content/docs/schema-reference/observability.md +654 -0
  351. package/website/content/docs/schema-reference/ossa-manifest.md +309 -0
  352. package/website/content/docs/schema-reference/taxonomy.md +509 -0
  353. package/website/content/docs/schema-reference/tools.md +628 -0
  354. package/website/content/docs/templates/blog-post.md +43 -0
  355. package/website/content/docs/use-cases/00-index.md +395 -0
  356. package/website/content/docs/use-cases/cicd-code-review.md +1236 -0
  357. package/website/content/docs/use-cases/customer-support.md +1234 -0
  358. package/website/content/docs/use-cases/enterprise-compliance.md +1208 -0
  359. package/website/content/docs/use-cases/research-multi-agent.md +1161 -0
  360. package/website/lib/version.ts +18 -0
  361. package/website/next.config.js +17 -0
  362. package/website/next.config.ts +16 -0
  363. package/website/nginx.conf +32 -0
  364. package/website/package-lock.json +9145 -0
  365. package/website/package.json +53 -0
  366. package/website/postcss.config.js +7 -0
  367. package/website/postcss.config.mjs +9 -0
  368. package/website/scripts/sync-version.js +44 -0
  369. package/website/scripts/sync-wiki.ts +261 -0
  370. package/website/tailwind.config.js +58 -0
  371. package/website/tailwind.config.ts +65 -0
@@ -0,0 +1,462 @@
1
+ """
2
+ AIFlow OpenAPI Bridge - Enhanced with Phoenix Tracing & BuildKit Registration
3
+
4
+ This is an enhanced version with:
5
+ 1. Phoenix tracing for all endpoints
6
+ 2. Automatic BuildKit registration
7
+ 3. Heartbeat mechanism
8
+ 4. Production-ready error handling
9
+
10
+ Usage:
11
+ python aiflow-bridge-enhanced.py
12
+
13
+ Environment Variables:
14
+ AIFLOW_API_KEY - API key for authentication
15
+ PHOENIX_ENDPOINT - Phoenix OTLP endpoint
16
+ PHOENIX_PROJECT - Phoenix project name
17
+ BUILDKIT_REGISTRY_URL - BuildKit registry URL
18
+ AGENT_ID - Unique agent identifier
19
+ """
20
+
21
+ import os
22
+ import sys
23
+ import asyncio
24
+ import random
25
+ from typing import Optional, List
26
+ from contextlib import asynccontextmanager
27
+
28
+ from fastapi import FastAPI, HTTPException, Header
29
+ from pydantic import BaseModel
30
+ from prometheus_client import Counter, Histogram, generate_latest, CONTENT_TYPE_LATEST
31
+ from fastapi.responses import Response
32
+ import httpx
33
+
34
+ # Import Phoenix tracing
35
+ from aiflow_phoenix_tracing import (
36
+ init_phoenix_tracing,
37
+ trace_agent_task,
38
+ trace_llm_call,
39
+ trace_character_interaction,
40
+ create_span
41
+ )
42
+
43
+
44
+ # Configuration
45
+ AGENT_ID = os.getenv('AGENT_ID', 'social-agent-aiflow')
46
+ AGENT_NAME = os.getenv('AGENT_NAME', 'AIFlow Social Agent')
47
+ AGENT_VERSION = os.getenv('AGENT_VERSION', '1.0.0')
48
+ BASE_URL = os.getenv('BASE_URL', 'http://aiflow-agent:8000')
49
+ BUILDKIT_REGISTRY_URL = os.getenv('BUILDKIT_REGISTRY_URL', 'http://buildkit.agent-buildkit.orb.local/api/v1')
50
+ HEARTBEAT_INTERVAL = int(os.getenv('HEARTBEAT_INTERVAL', '30')) # seconds
51
+
52
+ # Global httpx client
53
+ http_client: Optional[httpx.AsyncClient] = None
54
+ heartbeat_task: Optional[asyncio.Task] = None
55
+
56
+
57
+ @asynccontextmanager
58
+ async def lifespan(app: FastAPI):
59
+ """FastAPI lifespan manager for startup and shutdown."""
60
+ global http_client, heartbeat_task
61
+
62
+ # Startup
63
+ print("🚀 Starting AIFlow bridge...")
64
+
65
+ # Initialize Phoenix tracing
66
+ init_phoenix_tracing(
67
+ service_name=AGENT_ID,
68
+ phoenix_endpoint=os.getenv('PHOENIX_ENDPOINT'),
69
+ phoenix_project=os.getenv('PHOENIX_PROJECT', 'aiflow-social-agents')
70
+ )
71
+
72
+ # Create HTTP client
73
+ http_client = httpx.AsyncClient(timeout=30.0)
74
+
75
+ # Register with BuildKit
76
+ try:
77
+ await register_with_buildkit()
78
+ print(f"✅ Registered with BuildKit: {AGENT_ID}")
79
+ except Exception as e:
80
+ print(f"⚠️ Failed to register with BuildKit: {e}")
81
+ print(" Continuing without registration...")
82
+
83
+ # Start heartbeat task
84
+ heartbeat_task = asyncio.create_task(heartbeat_loop())
85
+
86
+ yield
87
+
88
+ # Shutdown
89
+ print("🛑 Shutting down AIFlow bridge...")
90
+
91
+ # Cancel heartbeat
92
+ if heartbeat_task:
93
+ heartbeat_task.cancel()
94
+ try:
95
+ await heartbeat_task
96
+ except asyncio.CancelledError:
97
+ pass
98
+
99
+ # Deregister from BuildKit
100
+ try:
101
+ await deregister_from_buildkit()
102
+ print(f"✅ Deregistered from BuildKit: {AGENT_ID}")
103
+ except Exception as e:
104
+ print(f"⚠️ Failed to deregister: {e}")
105
+
106
+ # Close HTTP client
107
+ if http_client:
108
+ await http_client.aclose()
109
+
110
+
111
+ # Create FastAPI app with lifespan
112
+ app = FastAPI(
113
+ title="AIFlow OpenAPI Bridge",
114
+ description="REST API for AIFlow personality-driven social agent with Phoenix tracing",
115
+ version="1.0.0",
116
+ docs_url="/docs",
117
+ openapi_url="/openapi.json",
118
+ lifespan=lifespan
119
+ )
120
+
121
+ # Prometheus Metrics
122
+ posts_generated = Counter(
123
+ 'aiflow_posts_generated_total',
124
+ 'Total posts generated by AIFlow agent',
125
+ ['platform', 'time_of_day']
126
+ )
127
+
128
+ responses_generated = Counter(
129
+ 'aiflow_responses_generated_total',
130
+ 'Total responses generated by AIFlow agent',
131
+ ['platform']
132
+ )
133
+
134
+ api_requests = Counter(
135
+ 'aiflow_api_requests_total',
136
+ 'Total API requests',
137
+ ['endpoint', 'method', 'status']
138
+ )
139
+
140
+ api_latency = Histogram(
141
+ 'aiflow_api_latency_seconds',
142
+ 'API request latency',
143
+ ['endpoint', 'method']
144
+ )
145
+
146
+ health_checks = Counter(
147
+ 'aiflow_health_checks_total',
148
+ 'Total health check requests'
149
+ )
150
+
151
+ buildkit_heartbeats = Counter(
152
+ 'aiflow_buildkit_heartbeats_total',
153
+ 'Total BuildKit heartbeats sent',
154
+ ['status']
155
+ )
156
+
157
+ # Mock character data
158
+ MOCK_CHARACTER = {
159
+ "name": "AIFlow",
160
+ "traits": ["Visionary", "Innovative", "Technical"],
161
+ "moods": {
162
+ "morning": "Energetic and Focused",
163
+ "afternoon": "Collaborative and Engaged",
164
+ "evening": "Reflective and Strategic",
165
+ "night": "Visionary and Philosophical"
166
+ },
167
+ "current_mood": "Energetic and Focused"
168
+ }
169
+
170
+ # Request/Response Models
171
+ class GeneratePostRequest(BaseModel):
172
+ platform: str
173
+ time_of_day: Optional[str] = None
174
+ conversation_id: Optional[str] = None
175
+
176
+ class GeneratePostResponse(BaseModel):
177
+ content: str
178
+ platform: str
179
+ media_urls: List[str]
180
+
181
+ class MessageInput(BaseModel):
182
+ id: str
183
+ author: str
184
+ content: str
185
+ platform: str
186
+ conversation_id: Optional[str] = None
187
+
188
+ class GenerateResponseRequest(BaseModel):
189
+ message: MessageInput
190
+ conversation: Optional[List[dict]] = None
191
+
192
+ class GenerateResponseResponse(BaseModel):
193
+ content: Optional[str]
194
+ should_respond: bool
195
+
196
+ # Mock post templates
197
+ MOCK_POSTS = {
198
+ "morning": [
199
+ "Good morning! 🌅 Exploring AI + blockchain convergence today.",
200
+ "Starting the day with fresh ideas about agent orchestration.",
201
+ "Morning thoughts: OSSA manifests are the OpenAPI for AI agents."
202
+ ],
203
+ "afternoon": [
204
+ "Building in public: Just deployed another K-Agent to production.",
205
+ "Fascinating how OSSA + K8s creates perfect agent infrastructure.",
206
+ "Pro tip: Always validate your x-k-agent metadata before deployment."
207
+ ],
208
+ "evening": [
209
+ "Wrapping up: All agents green, Phoenix traces looking clean.",
210
+ "Evening reflection: Standards enable scalability.",
211
+ "Today's win: Zero downtime rolling update of social agents."
212
+ ],
213
+ "night": [
214
+ "Late night thought: AI agents will outnumber APIs soon.",
215
+ "Philosophical: Agents should be as easy to deploy as containers.",
216
+ "Final commit: Multi-agent coordination working flawlessly."
217
+ ]
218
+ }
219
+
220
+ # Endpoints
221
+ @app.post("/generate_post", response_model=GeneratePostResponse)
222
+ @trace_agent_task("generate_post")
223
+ async def generate_post(
224
+ request: GeneratePostRequest,
225
+ x_api_key: str = Header(..., alias="X-API-Key")
226
+ ):
227
+ """Generate autonomous social media post"""
228
+ try:
229
+ # Validate API key
230
+ if x_api_key != os.getenv("AIFLOW_API_KEY", "test-api-key-for-development"):
231
+ api_requests.labels(endpoint='/generate_post', method='POST', status='401').inc()
232
+ raise HTTPException(status_code=401, detail="Invalid API key")
233
+
234
+ # Get time of day
235
+ time_of_day = request.time_of_day or "morning"
236
+
237
+ # Add character interaction tracing
238
+ trace_character_interaction(
239
+ character_name=MOCK_CHARACTER["name"],
240
+ interaction_type="post",
241
+ platform=request.platform,
242
+ mood=MOCK_CHARACTER["moods"].get(time_of_day, "neutral")
243
+ )
244
+
245
+ # Generate mock post
246
+ posts = MOCK_POSTS.get(time_of_day, MOCK_POSTS["morning"])
247
+ content = random.choice(posts)
248
+
249
+ # Trace LLM call (mock)
250
+ trace_llm_call(
251
+ provider="anthropic",
252
+ model="claude-3-sonnet",
253
+ prompt=f"Generate {request.platform} post for {time_of_day}",
254
+ response=content,
255
+ input_tokens=150,
256
+ output_tokens=50,
257
+ cost=0.001
258
+ )
259
+
260
+ # Update metrics
261
+ posts_generated.labels(platform=request.platform, time_of_day=time_of_day).inc()
262
+ api_requests.labels(endpoint='/generate_post', method='POST', status='200').inc()
263
+
264
+ return GeneratePostResponse(
265
+ content=content,
266
+ platform=request.platform,
267
+ media_urls=[]
268
+ )
269
+
270
+ except HTTPException:
271
+ raise
272
+ except Exception as e:
273
+ api_requests.labels(endpoint='/generate_post', method='POST', status='500').inc()
274
+ raise HTTPException(status_code=500, detail=str(e))
275
+
276
+
277
+ @app.post("/generate_response", response_model=GenerateResponseResponse)
278
+ @trace_agent_task("generate_response")
279
+ async def generate_response(
280
+ request: GenerateResponseRequest,
281
+ x_api_key: str = Header(..., alias="X-API-Key")
282
+ ):
283
+ """Generate contextual response to message"""
284
+ try:
285
+ if x_api_key != os.getenv("AIFLOW_API_KEY", "test-api-key-for-development"):
286
+ api_requests.labels(endpoint='/generate_response', method='POST', status='401').inc()
287
+ raise HTTPException(status_code=401, detail="Invalid API key")
288
+
289
+ # Add character interaction tracing
290
+ trace_character_interaction(
291
+ character_name=MOCK_CHARACTER["name"],
292
+ interaction_type="response",
293
+ platform=request.message.platform
294
+ )
295
+
296
+ # Mock response
297
+ responses = [
298
+ f"Thanks for sharing, {request.message.author}! Interesting perspective.",
299
+ "Agreed! This aligns with our vision for decentralized AI.",
300
+ "Great point. We're actively working on this integration."
301
+ ]
302
+
303
+ response_content = random.choice(responses)
304
+
305
+ # Trace LLM call (mock)
306
+ trace_llm_call(
307
+ provider="anthropic",
308
+ model="claude-3-sonnet",
309
+ prompt=f"Respond to: {request.message.content}",
310
+ response=response_content,
311
+ input_tokens=200,
312
+ output_tokens=60,
313
+ cost=0.0012
314
+ )
315
+
316
+ # Update metrics
317
+ responses_generated.labels(platform=request.message.platform).inc()
318
+ api_requests.labels(endpoint='/generate_response', method='POST', status='200').inc()
319
+
320
+ return GenerateResponseResponse(
321
+ content=response_content,
322
+ should_respond=True
323
+ )
324
+
325
+ except HTTPException:
326
+ raise
327
+ except Exception as e:
328
+ api_requests.labels(endpoint='/generate_response', method='POST', status='500').inc()
329
+ raise HTTPException(status_code=500, detail=str(e))
330
+
331
+
332
+ @app.get("/health")
333
+ async def health():
334
+ """Health check endpoint for K8s probes"""
335
+ health_checks.inc()
336
+ api_requests.labels(endpoint='/health', method='GET', status='200').inc()
337
+
338
+ return {
339
+ "status": "healthy",
340
+ "character": MOCK_CHARACTER["name"],
341
+ "platforms": {
342
+ "twitter": True,
343
+ "telegram": True
344
+ },
345
+ "buildkit_registered": True,
346
+ "phoenix_tracing": True,
347
+ "version": AGENT_VERSION
348
+ }
349
+
350
+
351
+ @app.get("/metrics")
352
+ async def metrics():
353
+ """Prometheus metrics endpoint"""
354
+ return Response(content=generate_latest(), media_type=CONTENT_TYPE_LATEST)
355
+
356
+
357
+ @app.get("/character")
358
+ async def get_character(x_api_key: str = Header(..., alias="X-API-Key")):
359
+ """Get character configuration"""
360
+ if x_api_key != os.getenv("AIFLOW_API_KEY", "test-api-key-for-development"):
361
+ raise HTTPException(status_code=401, detail="Invalid API key")
362
+
363
+ return MOCK_CHARACTER
364
+
365
+
366
+ # BuildKit Registration Functions
367
+ async def register_with_buildkit():
368
+ """Register agent with BuildKit registry"""
369
+ if not http_client:
370
+ raise RuntimeError("HTTP client not initialized")
371
+
372
+ registration_data = {
373
+ "agent_id": AGENT_ID,
374
+ "name": AGENT_NAME,
375
+ "version": AGENT_VERSION,
376
+ "base_url": BASE_URL,
377
+ "health_endpoint": "/health",
378
+ "metrics_endpoint": "/metrics",
379
+ "capabilities": ["generate_post", "generate_response"],
380
+ "tags": ["social", "aiflow", "personality", "twitter", "telegram"],
381
+ "phoenix_project": os.getenv('PHOENIX_PROJECT', 'aiflow-social-agents'),
382
+ "ossa_manifest": {
383
+ "ossaVersion": "1.0",
384
+ "agent": {
385
+ "id": AGENT_ID,
386
+ "name": AGENT_NAME,
387
+ "version": AGENT_VERSION,
388
+ "role": "chat"
389
+ }
390
+ }
391
+ }
392
+
393
+ response = await http_client.post(
394
+ f"{BUILDKIT_REGISTRY_URL}/agents/register",
395
+ json=registration_data,
396
+ timeout=10.0
397
+ )
398
+ response.raise_for_status()
399
+
400
+ result = response.json()
401
+ print(f" Instance ID: {result.get('instance_id')}")
402
+ print(f" Phoenix URL: {result.get('phoenix_trace_url')}")
403
+
404
+ return result
405
+
406
+
407
+ async def send_heartbeat():
408
+ """Send heartbeat to BuildKit registry"""
409
+ if not http_client:
410
+ return
411
+
412
+ try:
413
+ heartbeat_data = {
414
+ "status": "healthy",
415
+ "metrics": {
416
+ "requests_total": int(api_requests._value.sum()),
417
+ "active_tasks": 0
418
+ }
419
+ }
420
+
421
+ response = await http_client.post(
422
+ f"{BUILDKIT_REGISTRY_URL}/agents/{AGENT_ID}/heartbeat",
423
+ json=heartbeat_data,
424
+ timeout=5.0
425
+ )
426
+ response.raise_for_status()
427
+
428
+ buildkit_heartbeats.labels(status='success').inc()
429
+
430
+ except Exception as e:
431
+ buildkit_heartbeats.labels(status='failed').inc()
432
+ print(f"⚠️ Heartbeat failed: {e}")
433
+
434
+
435
+ async def deregister_from_buildkit():
436
+ """Deregister agent from BuildKit registry"""
437
+ if not http_client:
438
+ return
439
+
440
+ response = await http_client.delete(
441
+ f"{BUILDKIT_REGISTRY_URL}/agents/{AGENT_ID}",
442
+ timeout=5.0
443
+ )
444
+ response.raise_for_status()
445
+
446
+
447
+ async def heartbeat_loop():
448
+ """Background task to send periodic heartbeats"""
449
+ while True:
450
+ try:
451
+ await asyncio.sleep(HEARTBEAT_INTERVAL)
452
+ await send_heartbeat()
453
+ except asyncio.CancelledError:
454
+ break
455
+ except Exception as e:
456
+ print(f"⚠️ Heartbeat loop error: {e}")
457
+
458
+
459
+ if __name__ == "__main__":
460
+ import uvicorn
461
+ uvicorn.run(app, host="0.0.0.0", port=8000)
462
+