@bluefly/openstandardagents 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/.devfile.yaml +87 -0
  2. package/.gitlab-ci-trigger +1 -0
  3. package/.wiki-config.json +24 -0
  4. package/CHANGELOG.md +212 -1
  5. package/README.md +8 -193
  6. package/dist/adapters/anthropic/runtime.js +2 -2
  7. package/dist/adapters/anthropic/runtime.js.map +1 -1
  8. package/dist/bot/architecture-validator-bot.d.ts +8 -0
  9. package/dist/bot/architecture-validator-bot.d.ts.map +1 -0
  10. package/dist/bot/architecture-validator-bot.js +15 -0
  11. package/dist/bot/architecture-validator-bot.js.map +1 -0
  12. package/dist/bot/ci-pipeline-bot.d.ts +7 -0
  13. package/dist/bot/ci-pipeline-bot.d.ts.map +1 -0
  14. package/dist/bot/ci-pipeline-bot.js +7 -0
  15. package/dist/bot/ci-pipeline-bot.js.map +1 -0
  16. package/dist/bot/compliance-bot.d.ts +56 -0
  17. package/dist/bot/compliance-bot.d.ts.map +1 -0
  18. package/dist/bot/compliance-bot.js +203 -0
  19. package/dist/bot/compliance-bot.js.map +1 -0
  20. package/dist/bot/dependency-updater-bot.d.ts +9 -0
  21. package/dist/bot/dependency-updater-bot.d.ts.map +1 -0
  22. package/dist/bot/dependency-updater-bot.js +9 -0
  23. package/dist/bot/dependency-updater-bot.js.map +1 -0
  24. package/dist/bot/security-scanner-bot.d.ts +11 -0
  25. package/dist/bot/security-scanner-bot.d.ts.map +1 -0
  26. package/dist/bot/security-scanner-bot.js +21 -0
  27. package/dist/bot/security-scanner-bot.js.map +1 -0
  28. package/dist/cli/commands/agent-card.command.d.ts +11 -0
  29. package/dist/cli/commands/agent-card.command.d.ts.map +1 -0
  30. package/dist/cli/commands/agent-card.command.js +285 -0
  31. package/dist/cli/commands/agent-card.command.js.map +1 -0
  32. package/dist/cli/commands/agents.command.d.ts +11 -0
  33. package/dist/cli/commands/agents.command.d.ts.map +1 -0
  34. package/dist/cli/commands/agents.command.js +326 -0
  35. package/dist/cli/commands/agents.command.js.map +1 -0
  36. package/dist/cli/commands/diff.command.d.ts +7 -0
  37. package/dist/cli/commands/diff.command.d.ts.map +1 -0
  38. package/dist/cli/commands/diff.command.js +181 -0
  39. package/dist/cli/commands/diff.command.js.map +1 -0
  40. package/dist/cli/commands/docs.command.d.ts +7 -0
  41. package/dist/cli/commands/docs.command.d.ts.map +1 -0
  42. package/dist/cli/commands/docs.command.js +274 -0
  43. package/dist/cli/commands/docs.command.js.map +1 -0
  44. package/dist/cli/commands/generate.command.d.ts +13 -2
  45. package/dist/cli/commands/generate.command.d.ts.map +1 -1
  46. package/dist/cli/commands/generate.command.js +204 -29
  47. package/dist/cli/commands/generate.command.js.map +1 -1
  48. package/dist/cli/commands/lint.command.d.ts +7 -0
  49. package/dist/cli/commands/lint.command.d.ts.map +1 -0
  50. package/dist/cli/commands/lint.command.js +342 -0
  51. package/dist/cli/commands/lint.command.js.map +1 -0
  52. package/dist/cli/commands/registry.command.d.ts +14 -0
  53. package/dist/cli/commands/registry.command.d.ts.map +1 -0
  54. package/dist/cli/commands/registry.command.js +428 -0
  55. package/dist/cli/commands/registry.command.js.map +1 -0
  56. package/dist/cli/commands/serve.command.d.ts +7 -0
  57. package/dist/cli/commands/serve.command.d.ts.map +1 -0
  58. package/dist/cli/commands/serve.command.js +232 -0
  59. package/dist/cli/commands/serve.command.js.map +1 -0
  60. package/dist/cli/commands/workspace.command.d.ts +14 -0
  61. package/dist/cli/commands/workspace.command.d.ts.map +1 -0
  62. package/dist/cli/commands/workspace.command.js +467 -0
  63. package/dist/cli/commands/workspace.command.js.map +1 -0
  64. package/dist/cli/index.js +13 -0
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/di-container.d.ts.map +1 -1
  67. package/dist/di-container.js +23 -0
  68. package/dist/di-container.js.map +1 -1
  69. package/dist/services/codegen/codegen.service.d.ts +75 -0
  70. package/dist/services/codegen/codegen.service.d.ts.map +1 -0
  71. package/dist/services/codegen/codegen.service.js +136 -0
  72. package/dist/services/codegen/codegen.service.js.map +1 -0
  73. package/dist/services/codegen/generators/manifest.generator.d.ts +41 -0
  74. package/dist/services/codegen/generators/manifest.generator.d.ts.map +1 -0
  75. package/dist/services/codegen/generators/manifest.generator.js +178 -0
  76. package/dist/services/codegen/generators/manifest.generator.js.map +1 -0
  77. package/dist/services/codegen/generators/openapi.generator.d.ts +46 -0
  78. package/dist/services/codegen/generators/openapi.generator.d.ts.map +1 -0
  79. package/dist/services/codegen/generators/openapi.generator.js +157 -0
  80. package/dist/services/codegen/generators/openapi.generator.js.map +1 -0
  81. package/dist/services/codegen/generators/types.generator.d.ts +27 -0
  82. package/dist/services/codegen/generators/types.generator.d.ts.map +1 -0
  83. package/dist/services/codegen/generators/types.generator.js +97 -0
  84. package/dist/services/codegen/generators/types.generator.js.map +1 -0
  85. package/dist/services/codegen/generators/vscode.generator.d.ts +43 -0
  86. package/dist/services/codegen/generators/vscode.generator.d.ts.map +1 -0
  87. package/dist/services/codegen/generators/vscode.generator.js +163 -0
  88. package/dist/services/codegen/generators/vscode.generator.js.map +1 -0
  89. package/dist/services/codegen/generators/zod.generator.d.ts +31 -0
  90. package/dist/services/codegen/generators/zod.generator.d.ts.map +1 -0
  91. package/dist/services/codegen/generators/zod.generator.js +134 -0
  92. package/dist/services/codegen/generators/zod.generator.js.map +1 -0
  93. package/dist/services/codegen/index.d.ts +33 -0
  94. package/dist/services/codegen/index.d.ts.map +1 -0
  95. package/dist/services/codegen/index.js +36 -0
  96. package/dist/services/codegen/index.js.map +1 -0
  97. package/dist/services/git.service.d.ts +40 -0
  98. package/dist/services/git.service.d.ts.map +1 -0
  99. package/dist/services/git.service.js +122 -0
  100. package/dist/services/git.service.js.map +1 -0
  101. package/dist/spec/extensions/openapi/ossa-openapi-extensions.schema.json +804 -0
  102. package/dist/spec/v0.3.0/examples/drupal-content-writer.ossa.yaml +1 -1
  103. package/dist/spec/v0.3.0/examples/drupal-moderation-assistant.ossa.yaml +1 -1
  104. package/dist/spec/v0.3.0/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +1 -1
  105. package/dist/spec/v0.3.0/runtime-bindings/anthropic.yaml +209 -0
  106. package/dist/spec/v0.3.1/UNIFIED-SCHEMA.md +120 -0
  107. package/dist/spec/v0.3.1/adapters/drupal.md +541 -0
  108. package/dist/spec/v0.3.1/adapters/symfony.md +659 -0
  109. package/dist/spec/v0.3.1/agent-test.schema.json +75 -0
  110. package/dist/spec/v0.3.1/examples/agent-with-identity.ossa.yaml +68 -0
  111. package/dist/spec/v0.3.1/examples/drupal-content-writer.ossa.yaml +110 -0
  112. package/dist/spec/v0.3.1/examples/drupal-moderation-assistant.ossa.yaml +96 -0
  113. package/dist/spec/v0.3.1/examples/multi-provider-identity.ossa.yaml +236 -0
  114. package/dist/spec/v0.3.1/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +144 -0
  115. package/dist/spec/v0.3.1/extensions/agent-identity.yaml +594 -0
  116. package/dist/spec/v0.3.1/extensions/drupal.md +417 -0
  117. package/dist/spec/v0.3.1/ossa-0.3.1.schema.json +3085 -0
  118. package/dist/spec/v0.3.1/protocols/sse.md +494 -0
  119. package/dist/spec/v0.3.1/protocols/webrtc.md +600 -0
  120. package/dist/spec/v0.3.1/protocols/websocket.md +362 -0
  121. package/dist/spec/v0.3.1/schemas/agent-unified.yaml +165 -0
  122. package/dist/spec/v0.3.1/schemas/capabilities.yaml +102 -0
  123. package/dist/spec/v0.3.1/schemas/functions.yaml +75 -0
  124. package/dist/spec/v0.3.1/schemas/messaging/channel.schema.json +245 -0
  125. package/dist/spec/v0.3.1/schemas/messaging/delivery-receipt.schema.json +192 -0
  126. package/dist/spec/v0.3.1/schemas/messaging/message.schema.json +205 -0
  127. package/dist/spec/v0.3.1/schemas/messaging/subscription.schema.json +214 -0
  128. package/dist/spec/v0.3.1/schemas/runtime.yaml +102 -0
  129. package/dist/spec/v0.3.1/schemas/taxonomy.yaml +533 -0
  130. package/dist/spec/v0.3.1/schemas/unified-llm.yaml +91 -0
  131. package/dist/spec/v0.3.1/taxonomy.yaml +256 -0
  132. package/dist/spec/v0.3.2/MIGRATION-v0.3.1-to-v0.3.2.md +293 -0
  133. package/dist/spec/v0.3.2/UNIFIED-SCHEMA.md +120 -0
  134. package/dist/spec/v0.3.2/access_tiers.yaml +375 -0
  135. package/dist/spec/v0.3.2/adapters/drupal.md +541 -0
  136. package/dist/spec/v0.3.2/adapters/symfony.md +659 -0
  137. package/dist/spec/v0.3.2/agent-test.schema.json +75 -0
  138. package/dist/spec/v0.3.2/examples/access-tiers/README.md +106 -0
  139. package/dist/spec/v0.3.2/examples/access-tiers/code-critic.ossa.yaml +119 -0
  140. package/dist/spec/v0.3.2/examples/access-tiers/compliance-governor.ossa.yaml +234 -0
  141. package/dist/spec/v0.3.2/examples/access-tiers/deployment-operator.ossa.yaml +201 -0
  142. package/dist/spec/v0.3.2/examples/access-tiers/doc-generator.ossa.yaml +117 -0
  143. package/dist/spec/v0.3.2/examples/access-tiers/security-scanner.ossa.yaml +133 -0
  144. package/dist/spec/v0.3.2/examples/agent-with-identity.ossa.yaml +68 -0
  145. package/dist/spec/v0.3.2/examples/drupal-content-writer.ossa.yaml +110 -0
  146. package/dist/spec/v0.3.2/examples/drupal-moderation-assistant.ossa.yaml +96 -0
  147. package/dist/spec/v0.3.2/examples/multi-provider-identity.ossa.yaml +236 -0
  148. package/dist/spec/v0.3.2/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +144 -0
  149. package/dist/spec/v0.3.2/examples/tasks/data-transform.ossa.yaml +147 -0
  150. package/dist/spec/v0.3.2/examples/tasks/publish-content.ossa.yaml +125 -0
  151. package/dist/spec/v0.3.2/examples/workflows/content-publishing.ossa.yaml +190 -0
  152. package/dist/spec/v0.3.2/examples/workflows/deployment-pipeline.ossa.yaml +247 -0
  153. package/dist/spec/v0.3.2/extensions/agent-identity.yaml +594 -0
  154. package/dist/spec/v0.3.2/extensions/drupal.md +417 -0
  155. package/dist/spec/v0.3.2/infrastructure/service-ports.yaml +324 -0
  156. package/dist/spec/v0.3.2/ossa-0.3.2.schema.json +3316 -0
  157. package/dist/spec/v0.3.2/protocols/delegation.yaml +239 -0
  158. package/dist/spec/v0.3.2/protocols/sse.md +494 -0
  159. package/dist/spec/v0.3.2/protocols/webrtc.md +600 -0
  160. package/dist/spec/v0.3.2/protocols/websocket.md +362 -0
  161. package/dist/spec/v0.3.2/runtime/RUNTIME.md +457 -0
  162. package/dist/spec/v0.3.2/runtime/memory-model.yaml +871 -0
  163. package/dist/spec/v0.3.2/runtime/runtime.yaml +926 -0
  164. package/dist/spec/v0.3.2/schemas/agent-unified.yaml +165 -0
  165. package/dist/spec/v0.3.2/schemas/capabilities.yaml +102 -0
  166. package/dist/spec/v0.3.2/schemas/functions.yaml +75 -0
  167. package/dist/spec/v0.3.2/schemas/messaging/channel.schema.json +245 -0
  168. package/dist/spec/v0.3.2/schemas/messaging/delivery-receipt.schema.json +192 -0
  169. package/dist/spec/v0.3.2/schemas/messaging/message.schema.json +205 -0
  170. package/dist/spec/v0.3.2/schemas/messaging/subscription.schema.json +214 -0
  171. package/dist/spec/v0.3.2/schemas/runtime.yaml +102 -0
  172. package/dist/spec/v0.3.2/schemas/taxonomy.yaml +533 -0
  173. package/dist/spec/v0.3.2/schemas/unified-llm.yaml +91 -0
  174. package/dist/spec/v0.3.2/taxonomy.yaml +363 -0
  175. package/dist/testing/fixtures.d.ts.map +1 -1
  176. package/dist/testing/fixtures.js +3 -2
  177. package/dist/testing/fixtures.js.map +1 -1
  178. package/dist/types/generated/{ossa-0.3.0.types.d.ts → ossa-0.3.2.types.d.ts} +58 -7
  179. package/dist/types/generated/ossa-0.3.2.types.d.ts.map +1 -0
  180. package/dist/types/generated/ossa-0.3.2.types.js +10 -0
  181. package/dist/types/generated/ossa-0.3.2.types.js.map +1 -0
  182. package/dist/types/generated/ossa-0.3.2.zod.d.ts +36 -0
  183. package/dist/types/generated/ossa-0.3.2.zod.d.ts.map +1 -0
  184. package/dist/types/generated/ossa-0.3.2.zod.js +25 -0
  185. package/dist/types/generated/ossa-0.3.2.zod.js.map +1 -0
  186. package/examples/adapters/drupal-eca-mapping.yaml +1 -1
  187. package/examples/adapters/drupal-eca-task.yaml +1 -1
  188. package/examples/adapters/drupal-flowdrop-mapping.yaml +1 -1
  189. package/examples/adapters/drupal-maestro-mapping.yaml +1 -1
  190. package/examples/adapters/mistral-agent.yaml +1 -1
  191. package/examples/adapters/symfony-messenger-task.yaml +1 -1
  192. package/examples/adapters/symfony-messenger-workflow.yaml +1 -1
  193. package/examples/adk-integration/code-review-workflow.yml +1 -1
  194. package/examples/adk-integration/customer-support.yml +1 -1
  195. package/examples/adk-integration/data-pipeline.yml +1 -1
  196. package/examples/advanced/reasoning-agent.yaml +1 -1
  197. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  198. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  199. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  200. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  201. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  202. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  203. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  204. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  205. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  206. package/examples/agents/architecture-healer-enterprise.yaml +1 -1
  207. package/examples/agents/dependency-healer-npm.yaml +1 -1
  208. package/examples/agents/spec-healer-openapi.yaml +1 -1
  209. package/examples/agents/wiki-healer-production.yaml +1 -1
  210. package/examples/agents-md/code-agent.ossa.json +36 -11
  211. package/examples/agents-md/monorepo-agent.ossa.yaml +1 -1
  212. package/examples/anthropic/claude-assistant.ossa.json +4 -4
  213. package/examples/autogen/multi-agent.ossa.json +2 -2
  214. package/examples/autonomous-evolution/self-evolving-agent.ossa.yaml +1 -1
  215. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  216. package/examples/claude-code/ossa-validator.ossa.yaml +1 -1
  217. package/examples/common_npm/agent-router.ossa.yaml +1 -1
  218. package/examples/contracts/data-consumer.ossa.yaml +1 -1
  219. package/examples/contracts/data-producer-v2.ossa.yaml +1 -1
  220. package/examples/contracts/data-producer.ossa.yaml +1 -1
  221. package/examples/crewai/research-team.ossa.json +2 -2
  222. package/examples/cursor/code-review-agent.ossa.json +2 -2
  223. package/examples/drupal/ai_agents_ossa-module/.agents/example-agent/agent.ossa.yaml +1 -1
  224. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
  225. package/examples/extensions/agents-md-advanced.yml +1 -1
  226. package/examples/extensions/agents-md-basic.yml +1 -1
  227. package/examples/extensions/agents-md-sync.yml +1 -1
  228. package/examples/extensions/agents-md-v1.yml +1 -1
  229. package/examples/extensions/drupal-v1.yml +1 -1
  230. package/examples/extensions/encryption-multi-provider.yaml +4 -4
  231. package/examples/extensions/kagent-v1.yml +1 -1
  232. package/examples/extensions/knowledge-sources.yaml +1 -1
  233. package/examples/extensions/mcp-full-featured.yaml +1 -1
  234. package/examples/getting-started/01-minimal-agent.ossa.yaml +3 -3
  235. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  236. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  237. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +2 -2
  238. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  239. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  240. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  241. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  242. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  243. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  244. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -1
  245. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  246. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  247. package/examples/langchain/chain-agent.ossa.json +2 -2
  248. package/examples/langflow/workflow-agent.ossa.json +2 -2
  249. package/examples/langgraph/state-machine-agent.ossa.json +2 -2
  250. package/examples/llamaindex/rag-agent.ossa.json +2 -2
  251. package/examples/messaging/dependency-healer.ossa.yaml +1 -1
  252. package/examples/messaging/incident-responder.ossa.yaml +1 -1
  253. package/examples/messaging/routing-rules.ossa.yaml +3 -3
  254. package/examples/messaging/security-scanner.ossa.yaml +1 -1
  255. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  256. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  257. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  258. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  259. package/examples/observability/activity-stream-full.yaml +1 -1
  260. package/examples/openai/basic-agent.ossa.yaml +1 -1
  261. package/examples/openai/multi-tool-agent.ossa.json +2 -2
  262. package/examples/openai/swarm-agent.ossa.json +2 -2
  263. package/examples/production/document-analyzer-openai.yml +1 -1
  264. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  265. package/examples/real-world/gitlab-cicd-optimizer.ossa.yaml +1 -1
  266. package/examples/real-world/rag-documentation-assistant.ossa.yaml +1 -1
  267. package/examples/runtime-adapters/bedrock-claude-example.ossa.yaml +1 -1
  268. package/examples/schema/reusable-components.yaml +1 -1
  269. package/examples/showcase/ci-pipeline.ossa.yaml +59 -0
  270. package/examples/showcase/code-assistant.ossa.yaml +118 -0
  271. package/examples/showcase/code-reviewer.ossa.yaml +61 -0
  272. package/examples/showcase/compliance-validator.ossa.yaml +62 -0
  273. package/examples/showcase/content-writer.ossa.yaml +67 -0
  274. package/examples/showcase/data-transformer.ossa.yaml +78 -0
  275. package/examples/showcase/doc-generator.ossa.yaml +68 -0
  276. package/examples/showcase/security-scanner.ossa.yaml +65 -0
  277. package/examples/showcase/test-generator.ossa.yaml +63 -0
  278. package/examples/showcase/workflow-orchestrator.ossa.yaml +129 -0
  279. package/examples/tasks/batch-email-sender.yaml +1 -1
  280. package/examples/tasks/data-transform.yaml +1 -1
  281. package/examples/tasks/publish-content.yaml +1 -1
  282. package/examples/templates/ossa-compliance.yaml +1 -1
  283. package/examples/unified/security-scanner.ossa.yaml +1 -1
  284. package/examples/vercel/edge-agent.ossa.json +2 -2
  285. package/examples/workflows/batch-email-campaign.yaml +1 -1
  286. package/examples/workflows/content-review-publish.yaml +1 -1
  287. package/examples/workflows/simple-etl.yaml +1 -1
  288. package/llms-ctx-full.txt +39 -0
  289. package/llms-ctx.txt +39 -0
  290. package/openapi/agent-communication.yaml +1 -1
  291. package/openapi/agent-crud.yaml +8 -8
  292. package/openapi/agent-discovery.yaml +2 -2
  293. package/openapi/agent-identity.yaml +8 -8
  294. package/openapi/cli-commands.openapi.yaml +231 -0
  295. package/openapi/core/ossa-core-api.openapi.yaml +1 -1
  296. package/openapi/core/ossa-registry-api.openapi.yaml +1 -1
  297. package/openapi/core/ossa-registry.openapi.yaml +1 -1
  298. package/openapi/core/unified-agent-gateway.openapi.yaml +1 -1
  299. package/openapi/github-sync.yaml +1 -1
  300. package/openapi/protocols/sse-streams.yaml +1 -1
  301. package/openapi/protocols/websocket-events.yaml +2 -2
  302. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +2 -2
  303. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +1 -1
  304. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +1 -1
  305. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +2 -2
  306. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +2 -2
  307. package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +1 -1
  308. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +1 -1
  309. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +2 -2
  310. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +1 -1
  311. package/openapi/reference-implementations/helm-generator.openapi.yaml +1 -1
  312. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +1 -1
  313. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +1 -1
  314. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +2 -2
  315. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +1 -1
  316. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +2 -2
  317. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +1 -1
  318. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +2 -2
  319. package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +1 -1
  320. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +2 -2
  321. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +1 -1
  322. package/package.json +14 -32
  323. package/spec/extensions/openapi/ossa-openapi-extensions.schema.json +804 -0
  324. package/spec/v0.3.0/examples/drupal-content-writer.ossa.yaml +1 -1
  325. package/spec/v0.3.0/examples/drupal-moderation-assistant.ossa.yaml +1 -1
  326. package/spec/v0.3.0/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +1 -1
  327. package/spec/v0.3.0/runtime-bindings/anthropic.yaml +209 -0
  328. package/spec/v0.3.1/UNIFIED-SCHEMA.md +120 -0
  329. package/spec/v0.3.1/adapters/drupal.md +541 -0
  330. package/spec/v0.3.1/adapters/symfony.md +659 -0
  331. package/spec/v0.3.1/agent-test.schema.json +75 -0
  332. package/spec/v0.3.1/examples/agent-with-identity.ossa.yaml +68 -0
  333. package/spec/v0.3.1/examples/drupal-content-writer.ossa.yaml +110 -0
  334. package/spec/v0.3.1/examples/drupal-moderation-assistant.ossa.yaml +96 -0
  335. package/spec/v0.3.1/examples/multi-provider-identity.ossa.yaml +236 -0
  336. package/spec/v0.3.1/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +144 -0
  337. package/spec/v0.3.1/extensions/agent-identity.yaml +594 -0
  338. package/spec/v0.3.1/extensions/drupal.md +417 -0
  339. package/spec/v0.3.1/ossa-0.3.1.schema.json +3085 -0
  340. package/spec/v0.3.1/protocols/sse.md +494 -0
  341. package/spec/v0.3.1/protocols/webrtc.md +600 -0
  342. package/spec/v0.3.1/protocols/websocket.md +362 -0
  343. package/spec/v0.3.1/schemas/agent-unified.yaml +165 -0
  344. package/spec/v0.3.1/schemas/capabilities.yaml +102 -0
  345. package/spec/v0.3.1/schemas/functions.yaml +75 -0
  346. package/spec/v0.3.1/schemas/messaging/channel.schema.json +245 -0
  347. package/spec/v0.3.1/schemas/messaging/delivery-receipt.schema.json +192 -0
  348. package/spec/v0.3.1/schemas/messaging/message.schema.json +205 -0
  349. package/spec/v0.3.1/schemas/messaging/subscription.schema.json +214 -0
  350. package/spec/v0.3.1/schemas/runtime.yaml +102 -0
  351. package/spec/v0.3.1/schemas/taxonomy.yaml +533 -0
  352. package/spec/v0.3.1/schemas/unified-llm.yaml +91 -0
  353. package/spec/v0.3.1/taxonomy.yaml +256 -0
  354. package/spec/v0.3.2/MIGRATION-v0.3.1-to-v0.3.2.md +293 -0
  355. package/spec/v0.3.2/UNIFIED-SCHEMA.md +120 -0
  356. package/spec/v0.3.2/access_tiers.yaml +375 -0
  357. package/spec/v0.3.2/adapters/drupal.md +541 -0
  358. package/spec/v0.3.2/adapters/symfony.md +659 -0
  359. package/spec/v0.3.2/agent-test.schema.json +75 -0
  360. package/spec/v0.3.2/examples/access-tiers/README.md +106 -0
  361. package/spec/v0.3.2/examples/access-tiers/code-critic.ossa.yaml +119 -0
  362. package/spec/v0.3.2/examples/access-tiers/compliance-governor.ossa.yaml +234 -0
  363. package/spec/v0.3.2/examples/access-tiers/deployment-operator.ossa.yaml +201 -0
  364. package/spec/v0.3.2/examples/access-tiers/doc-generator.ossa.yaml +117 -0
  365. package/spec/v0.3.2/examples/access-tiers/security-scanner.ossa.yaml +133 -0
  366. package/spec/v0.3.2/examples/agent-with-identity.ossa.yaml +68 -0
  367. package/spec/v0.3.2/examples/drupal-content-writer.ossa.yaml +110 -0
  368. package/spec/v0.3.2/examples/drupal-moderation-assistant.ossa.yaml +96 -0
  369. package/spec/v0.3.2/examples/multi-provider-identity.ossa.yaml +236 -0
  370. package/spec/v0.3.2/examples/quick-wins/complete-agent-with-quick-wins.ossa.yaml +144 -0
  371. package/spec/v0.3.2/examples/tasks/data-transform.ossa.yaml +147 -0
  372. package/spec/v0.3.2/examples/tasks/publish-content.ossa.yaml +125 -0
  373. package/spec/v0.3.2/examples/workflows/content-publishing.ossa.yaml +190 -0
  374. package/spec/v0.3.2/examples/workflows/deployment-pipeline.ossa.yaml +247 -0
  375. package/spec/v0.3.2/extensions/agent-identity.yaml +594 -0
  376. package/spec/v0.3.2/extensions/drupal.md +417 -0
  377. package/spec/v0.3.2/infrastructure/service-ports.yaml +324 -0
  378. package/spec/v0.3.2/ossa-0.3.2.schema.json +3316 -0
  379. package/spec/v0.3.2/protocols/delegation.yaml +239 -0
  380. package/spec/v0.3.2/protocols/sse.md +494 -0
  381. package/spec/v0.3.2/protocols/webrtc.md +600 -0
  382. package/spec/v0.3.2/protocols/websocket.md +362 -0
  383. package/spec/v0.3.2/runtime/RUNTIME.md +457 -0
  384. package/spec/v0.3.2/runtime/memory-model.yaml +871 -0
  385. package/spec/v0.3.2/runtime/runtime.yaml +926 -0
  386. package/spec/v0.3.2/schemas/agent-unified.yaml +165 -0
  387. package/spec/v0.3.2/schemas/capabilities.yaml +102 -0
  388. package/spec/v0.3.2/schemas/functions.yaml +75 -0
  389. package/spec/v0.3.2/schemas/messaging/channel.schema.json +245 -0
  390. package/spec/v0.3.2/schemas/messaging/delivery-receipt.schema.json +192 -0
  391. package/spec/v0.3.2/schemas/messaging/message.schema.json +205 -0
  392. package/spec/v0.3.2/schemas/messaging/subscription.schema.json +214 -0
  393. package/spec/v0.3.2/schemas/runtime.yaml +102 -0
  394. package/spec/v0.3.2/schemas/taxonomy.yaml +533 -0
  395. package/spec/v0.3.2/schemas/unified-llm.yaml +91 -0
  396. package/spec/v0.3.2/taxonomy.yaml +363 -0
  397. package/dist/types/generated/ossa-0.3.0.types.d.ts.map +0 -1
  398. package/dist/types/generated/ossa-0.3.0.types.js +0 -8
  399. package/dist/types/generated/ossa-0.3.0.types.js.map +0 -1
  400. package/dist/types/generated/ossa-0.3.0.zod.d.ts +0 -17
  401. package/dist/types/generated/ossa-0.3.0.zod.d.ts.map +0 -1
  402. package/dist/types/generated/ossa-0.3.0.zod.js +0 -3
  403. package/dist/types/generated/ossa-0.3.0.zod.js.map +0 -1
  404. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +0 -60
  405. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +0 -68
  406. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +0 -106
@@ -0,0 +1,659 @@
1
+ # Symfony Messenger OSSA Runtime Adapter
2
+
3
+ ## Overview
4
+
5
+ The Symfony Messenger OSSA Runtime Adapter enables execution of OSSA Task, Workflow, and Agent manifests using Symfony Messenger's asynchronous message queue system. This provides enterprise-grade async processing with support for multiple transports.
6
+
7
+ ## Architecture
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────────────────────┐
11
+ │ Symfony Application │
12
+ ├─────────────────────────────────────────────────────────────────┤
13
+ │ ┌─────────────────┐ ┌─────────────────────────────────────┐ │
14
+ │ │ OSSA Manifest │ │ OSSA Message Handler │ │
15
+ │ │ (Task/Workflow)│───▶│ • OSSATaskMessageHandler │ │
16
+ │ └─────────────────┘ │ • OSSAWorkflowMessageHandler │ │
17
+ │ │ • OSSAAgentMessageHandler │ │
18
+ │ └──────────────┬──────────────────────┘ │
19
+ │ │ │
20
+ │ ┌──────────────▼──────────────────────┐ │
21
+ │ │ Symfony Messenger Bus │ │
22
+ │ └──────────────┬──────────────────────┘ │
23
+ │ │ │
24
+ │ ┌──────────────┬──────────────┬───────┴─────┬──────────────┐ │
25
+ │ │ AMQP │ Redis │ Doctrine │ SQS │ │
26
+ │ │ Transport │ Transport │ Transport │ Transport │ │
27
+ │ └──────┬───────┴──────┬───────┴──────┬──────┴──────┬───────┘ │
28
+ ├─────────┼──────────────┼──────────────┼─────────────┼──────────┤
29
+ │ ┌──────▼───────┐ ┌────▼────┐ ┌───────▼──────┐ ┌────▼────┐ │
30
+ │ │ RabbitMQ │ │ Redis │ │ Database │ │ SQS │ │
31
+ │ └──────────────┘ └─────────┘ └──────────────┘ └─────────┘ │
32
+ └─────────────────────────────────────────────────────────────────┘
33
+
34
+ ┌─────────▼─────────┐
35
+ │ Messenger Worker │
36
+ │ messenger:consume│
37
+ └─────────┬─────────┘
38
+
39
+ ┌─────────▼─────────┐
40
+ │ Task Execution │
41
+ └───────────────────┘
42
+ ```
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ composer require ossa/symfony-adapter
48
+ ```
49
+
50
+ ## Configuration
51
+
52
+ ### Bundle Configuration (`config/packages/ossa.yaml`)
53
+
54
+ ```yaml
55
+ ossa:
56
+ # Manifest discovery
57
+ manifest_paths:
58
+ - '%kernel.project_dir%/config/ossa'
59
+ - '%kernel.project_dir%/src/*/Resources/ossa'
60
+
61
+ # Default runtime settings
62
+ defaults:
63
+ timeout_seconds: 300
64
+ retry_attempts: 3
65
+ retry_delay_ms: 1000
66
+
67
+ # Observability
68
+ observability:
69
+ enabled: true
70
+ exporter: otel
71
+ endpoint: '%env(OTEL_EXPORTER_ENDPOINT)%'
72
+ ```
73
+
74
+ ### Messenger Configuration (`config/packages/messenger.yaml`)
75
+
76
+ ```yaml
77
+ framework:
78
+ messenger:
79
+ transports:
80
+ # OSSA Task transport
81
+ ossa_tasks:
82
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
83
+ options:
84
+ queue_name: ossa_tasks
85
+ retry_strategy:
86
+ max_retries: 3
87
+ delay: 1000
88
+ multiplier: 2
89
+
90
+ # OSSA Workflow transport
91
+ ossa_workflows:
92
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
93
+ options:
94
+ queue_name: ossa_workflows
95
+ retry_strategy:
96
+ max_retries: 5
97
+ delay: 2000
98
+
99
+ # OSSA Agent transport (higher priority)
100
+ ossa_agents:
101
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
102
+ options:
103
+ queue_name: ossa_agents
104
+
105
+ routing:
106
+ 'OSSA\Messenger\Message\OSSATaskMessage': ossa_tasks
107
+ 'OSSA\Messenger\Message\OSSAWorkflowMessage': ossa_workflows
108
+ 'OSSA\Messenger\Message\OSSAAgentMessage': ossa_agents
109
+ ```
110
+
111
+ ## Message Types
112
+
113
+ ### OSSATaskMessage
114
+
115
+ Wraps a `kind: Task` manifest for async execution:
116
+
117
+ ```php
118
+ <?php
119
+
120
+ namespace OSSA\Messenger\Message;
121
+
122
+ final class OSSATaskMessage
123
+ {
124
+ public function __construct(
125
+ private readonly string $manifestPath,
126
+ private readonly array $input,
127
+ private readonly ?string $correlationId = null,
128
+ private readonly array $metadata = [],
129
+ ) {}
130
+
131
+ public function getManifestPath(): string
132
+ {
133
+ return $this->manifestPath;
134
+ }
135
+
136
+ public function getInput(): array
137
+ {
138
+ return $this->input;
139
+ }
140
+
141
+ public function getCorrelationId(): ?string
142
+ {
143
+ return $this->correlationId;
144
+ }
145
+
146
+ public function getMetadata(): array
147
+ {
148
+ return $this->metadata;
149
+ }
150
+ }
151
+ ```
152
+
153
+ ### OSSAWorkflowMessage
154
+
155
+ Wraps a `kind: Workflow` manifest with step orchestration:
156
+
157
+ ```php
158
+ <?php
159
+
160
+ namespace OSSA\Messenger\Message;
161
+
162
+ final class OSSAWorkflowMessage
163
+ {
164
+ public function __construct(
165
+ private readonly string $manifestPath,
166
+ private readonly array $input,
167
+ private readonly ?string $workflowInstanceId = null,
168
+ private readonly ?string $parentStepId = null,
169
+ private readonly array $context = [],
170
+ ) {}
171
+
172
+ // ... getters
173
+ }
174
+ ```
175
+
176
+ ## Message Handlers
177
+
178
+ ### OSSATaskMessageHandler
179
+
180
+ ```php
181
+ <?php
182
+
183
+ namespace OSSA\Messenger\Handler;
184
+
185
+ use OSSA\Messenger\Message\OSSATaskMessage;
186
+ use OSSA\Runtime\TaskExecutor;
187
+ use Symfony\Component\Messenger\Attribute\AsMessageHandler;
188
+
189
+ #[AsMessageHandler]
190
+ final class OSSATaskMessageHandler
191
+ {
192
+ public function __construct(
193
+ private readonly TaskExecutor $executor,
194
+ private readonly ManifestLoader $manifestLoader,
195
+ ) {}
196
+
197
+ public function __invoke(OSSATaskMessage $message): void
198
+ {
199
+ $manifest = $this->manifestLoader->load($message->getManifestPath());
200
+
201
+ $result = $this->executor->execute($manifest, $message->getInput());
202
+
203
+ // Result is stored/emitted based on manifest observability settings
204
+ }
205
+ }
206
+ ```
207
+
208
+ ### OSSAWorkflowMessageHandler
209
+
210
+ ```php
211
+ <?php
212
+
213
+ namespace OSSA\Messenger\Handler;
214
+
215
+ use OSSA\Messenger\Message\OSSAWorkflowMessage;
216
+ use OSSA\Messenger\Message\OSSATaskMessage;
217
+ use OSSA\Runtime\WorkflowOrchestrator;
218
+ use Symfony\Component\Messenger\Attribute\AsMessageHandler;
219
+ use Symfony\Component\Messenger\MessageBusInterface;
220
+
221
+ #[AsMessageHandler]
222
+ final class OSSAWorkflowMessageHandler
223
+ {
224
+ public function __construct(
225
+ private readonly WorkflowOrchestrator $orchestrator,
226
+ private readonly MessageBusInterface $bus,
227
+ ) {}
228
+
229
+ public function __invoke(OSSAWorkflowMessage $message): void
230
+ {
231
+ $workflow = $this->orchestrator->loadWorkflow($message->getManifestPath());
232
+
233
+ foreach ($workflow->getReadySteps($message->getContext()) as $step) {
234
+ if ($step->getKind() === 'Task') {
235
+ // Dispatch Task step as separate message
236
+ $this->bus->dispatch(new OSSATaskMessage(
237
+ $step->getRef(),
238
+ $step->getResolvedInput($message->getContext()),
239
+ correlationId: $message->getWorkflowInstanceId(),
240
+ ));
241
+ }
242
+ }
243
+ }
244
+ }
245
+ ```
246
+
247
+ ## Transport Support
248
+
249
+ ### AMQP (RabbitMQ)
250
+
251
+ ```yaml
252
+ # .env
253
+ MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
254
+
255
+ # config/packages/messenger.yaml
256
+ framework:
257
+ messenger:
258
+ transports:
259
+ ossa_tasks:
260
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
261
+ options:
262
+ exchange:
263
+ name: ossa
264
+ type: topic
265
+ queues:
266
+ ossa_tasks:
267
+ binding_keys:
268
+ - 'task.*'
269
+ ```
270
+
271
+ ### Redis
272
+
273
+ ```yaml
274
+ # .env
275
+ MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
276
+
277
+ # config/packages/messenger.yaml
278
+ framework:
279
+ messenger:
280
+ transports:
281
+ ossa_tasks:
282
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
283
+ options:
284
+ stream: ossa_tasks
285
+ group: ossa_workers
286
+ consumer: worker_%hostname%
287
+ ```
288
+
289
+ ### Doctrine
290
+
291
+ ```yaml
292
+ # .env
293
+ MESSENGER_TRANSPORT_DSN=doctrine://default
294
+
295
+ # config/packages/messenger.yaml
296
+ framework:
297
+ messenger:
298
+ transports:
299
+ ossa_tasks:
300
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
301
+ options:
302
+ table_name: ossa_messenger_messages
303
+ queue_name: ossa_tasks
304
+ ```
305
+
306
+ ### Amazon SQS
307
+
308
+ ```yaml
309
+ # .env
310
+ MESSENGER_TRANSPORT_DSN=sqs://default?region=us-east-1
311
+
312
+ # config/packages/messenger.yaml
313
+ framework:
314
+ messenger:
315
+ transports:
316
+ ossa_tasks:
317
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
318
+ options:
319
+ queue_name: ossa-tasks
320
+ wait_time: 20
321
+ poll_timeout: 0.1
322
+ ```
323
+
324
+ ## Runtime Bindings
325
+
326
+ Map OSSA capabilities to Symfony services:
327
+
328
+ ```yaml
329
+ # config/packages/ossa.yaml
330
+ ossa:
331
+ bindings:
332
+ send_email:
333
+ service: 'Symfony\Component\Mailer\MailerInterface'
334
+ method: send
335
+
336
+ http_request:
337
+ service: 'Symfony\Contracts\HttpClient\HttpClientInterface'
338
+ method: request
339
+
340
+ cache_get:
341
+ service: 'Symfony\Contracts\Cache\CacheInterface'
342
+ method: get
343
+
344
+ dispatch_event:
345
+ service: 'Symfony\Contracts\EventDispatcher\EventDispatcherInterface'
346
+ method: dispatch
347
+ ```
348
+
349
+ ## Example Task Manifest
350
+
351
+ ```yaml
352
+ # config/ossa/tasks/send-email.yaml
353
+ apiVersion: ossa/v0.3.1
354
+ kind: Task
355
+ metadata:
356
+ name: send-email-symfony
357
+ version: 1.0.0
358
+ labels:
359
+ runtime: symfony
360
+ transport: messenger
361
+
362
+ spec:
363
+ execution:
364
+ type: deterministic
365
+ runtime: symfony
366
+ entrypoint: 'App\TaskHandler\SendEmailHandler::execute'
367
+ timeout_seconds: 30
368
+
369
+ capabilities:
370
+ - send_email
371
+ - render_template
372
+
373
+ input:
374
+ type: object
375
+ properties:
376
+ to:
377
+ type: string
378
+ format: email
379
+ subject:
380
+ type: string
381
+ template:
382
+ type: string
383
+ variables:
384
+ type: object
385
+ required:
386
+ - to
387
+ - subject
388
+ - template
389
+
390
+ output:
391
+ type: object
392
+ properties:
393
+ message_id:
394
+ type: string
395
+ sent_at:
396
+ type: string
397
+ format: date-time
398
+
399
+ error_handling:
400
+ on_error: retry
401
+ retry:
402
+ max_attempts: 3
403
+ backoff_strategy: exponential
404
+
405
+ runtime:
406
+ type: symfony
407
+ bindings:
408
+ send_email:
409
+ service: '@Symfony\Component\Mailer\MailerInterface'
410
+ render_template:
411
+ service: '@Twig\Environment'
412
+
413
+ messenger:
414
+ transport: ossa_tasks
415
+ routing_key: email.send
416
+ ```
417
+
418
+ ## Example Workflow Manifest
419
+
420
+ ```yaml
421
+ # config/ossa/workflows/user-onboarding.yaml
422
+ apiVersion: ossa/v0.3.1
423
+ kind: Workflow
424
+ metadata:
425
+ name: user-onboarding-symfony
426
+ version: 1.0.0
427
+
428
+ spec:
429
+ triggers:
430
+ - type: event
431
+ source: symfony.event_dispatcher
432
+ event: user.registered
433
+
434
+ inputs:
435
+ type: object
436
+ properties:
437
+ user_id:
438
+ type: string
439
+ email:
440
+ type: string
441
+ required:
442
+ - user_id
443
+ - email
444
+
445
+ steps:
446
+ - id: validate_email
447
+ kind: Task
448
+ ref: ./tasks/validate-email.yaml
449
+ input:
450
+ email: '${{ workflow.input.email }}'
451
+
452
+ - id: create_profile
453
+ kind: Task
454
+ ref: ./tasks/create-profile.yaml
455
+ input:
456
+ user_id: '${{ workflow.input.user_id }}'
457
+ depends_on:
458
+ - validate_email
459
+
460
+ - id: send_welcome_email
461
+ kind: Task
462
+ ref: ./tasks/send-email.yaml
463
+ input:
464
+ to: '${{ workflow.input.email }}'
465
+ template: welcome
466
+ depends_on:
467
+ - create_profile
468
+
469
+ runtime:
470
+ type: symfony
471
+ messenger:
472
+ transport: ossa_workflows
473
+ step_dispatch:
474
+ transport: ossa_tasks
475
+ parallel_execution: true
476
+ ```
477
+
478
+ ## Worker Deployment
479
+
480
+ ### Docker
481
+
482
+ ```dockerfile
483
+ FROM php:8.2-cli
484
+
485
+ # Install dependencies
486
+ RUN docker-php-ext-install pdo_mysql pcntl
487
+
488
+ # Copy application
489
+ COPY . /app
490
+ WORKDIR /app
491
+
492
+ # Run worker
493
+ CMD ["php", "bin/console", "messenger:consume", "ossa_tasks", "ossa_workflows", "-vv"]
494
+ ```
495
+
496
+ ### Kubernetes
497
+
498
+ ```yaml
499
+ apiVersion: apps/v1
500
+ kind: Deployment
501
+ metadata:
502
+ name: ossa-worker
503
+ spec:
504
+ replicas: 3
505
+ selector:
506
+ matchLabels:
507
+ app: ossa-worker
508
+ template:
509
+ spec:
510
+ containers:
511
+ - name: worker
512
+ image: myapp:latest
513
+ command: ["php", "bin/console", "messenger:consume"]
514
+ args:
515
+ - "ossa_tasks"
516
+ - "ossa_workflows"
517
+ - "--limit=100"
518
+ - "--time-limit=3600"
519
+ resources:
520
+ requests:
521
+ memory: "256Mi"
522
+ cpu: "250m"
523
+ limits:
524
+ memory: "512Mi"
525
+ cpu: "500m"
526
+ ```
527
+
528
+ ## Observability
529
+
530
+ ### OpenTelemetry Integration
531
+
532
+ ```php
533
+ <?php
534
+ // Automatic span creation for message handling
535
+
536
+ use OpenTelemetry\API\Trace\TracerInterface;
537
+
538
+ #[AsMessageHandler]
539
+ final class OSSATaskMessageHandler
540
+ {
541
+ public function __construct(
542
+ private readonly TracerInterface $tracer,
543
+ ) {}
544
+
545
+ public function __invoke(OSSATaskMessage $message): void
546
+ {
547
+ $span = $this->tracer->spanBuilder('ossa.task.execute')
548
+ ->setAttribute('ossa.task.name', $message->getManifestPath())
549
+ ->setAttribute('ossa.correlation_id', $message->getCorrelationId())
550
+ ->startSpan();
551
+
552
+ try {
553
+ // Execute task
554
+ } finally {
555
+ $span->end();
556
+ }
557
+ }
558
+ }
559
+ ```
560
+
561
+ ### Prometheus Metrics
562
+
563
+ ```yaml
564
+ # Exposed at /metrics
565
+ ossa_task_messages_total{task="send-email", status="success"} 1234
566
+ ossa_task_duration_seconds{task="send-email"} 0.45
567
+ ossa_workflow_steps_completed{workflow="user-onboarding"} 567
568
+ ossa_messenger_queue_size{queue="ossa_tasks"} 12
569
+ ```
570
+
571
+ ## Error Handling
572
+
573
+ ### Dead Letter Queue
574
+
575
+ ```yaml
576
+ framework:
577
+ messenger:
578
+ transports:
579
+ ossa_tasks:
580
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
581
+ failure_transport: ossa_failed
582
+
583
+ ossa_failed:
584
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
585
+ options:
586
+ queue_name: ossa_failed
587
+ ```
588
+
589
+ ### Custom Error Handler
590
+
591
+ ```php
592
+ <?php
593
+
594
+ namespace App\EventSubscriber;
595
+
596
+ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
597
+ use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
598
+
599
+ class OSSAFailureSubscriber implements EventSubscriberInterface
600
+ {
601
+ public static function getSubscribedEvents(): array
602
+ {
603
+ return [
604
+ WorkerMessageFailedEvent::class => 'onMessageFailed',
605
+ ];
606
+ }
607
+
608
+ public function onMessageFailed(WorkerMessageFailedEvent $event): void
609
+ {
610
+ $message = $event->getEnvelope()->getMessage();
611
+
612
+ if ($message instanceof OSSATaskMessage) {
613
+ // Log, alert, or handle failure
614
+ }
615
+ }
616
+ }
617
+ ```
618
+
619
+ ## CLI Commands
620
+
621
+ ```bash
622
+ # Validate OSSA manifest
623
+ php bin/console ossa:validate config/ossa/tasks/my-task.yaml
624
+
625
+ # Dispatch a task
626
+ php bin/console ossa:dispatch task my-task --input='{"key": "value"}'
627
+
628
+ # Start a workflow
629
+ php bin/console ossa:dispatch workflow user-onboarding --input='{"user_id": "123"}'
630
+
631
+ # List pending messages
632
+ php bin/console messenger:stats
633
+
634
+ # Consume messages
635
+ php bin/console messenger:consume ossa_tasks ossa_workflows -vv
636
+
637
+ # Retry failed messages
638
+ php bin/console messenger:failed:retry --all
639
+ ```
640
+
641
+ ## OSSA Compliance
642
+
643
+ This adapter implements OSSA v0.3.1 specification:
644
+
645
+ - ✅ Task execution with deterministic semantics
646
+ - ✅ Workflow orchestration with step dependencies
647
+ - ✅ Async execution via Symfony Messenger
648
+ - ✅ Multiple transport support (AMQP, Redis, Doctrine, SQS)
649
+ - ✅ Capability abstraction and runtime bindings
650
+ - ✅ OpenTelemetry observability
651
+ - ✅ Error handling with retry strategies
652
+ - ✅ Dead letter queue support
653
+
654
+ ## Related
655
+
656
+ - [OSSA Specification v0.3.1](../README.md)
657
+ - [Drupal Adapter](./drupal.md)
658
+ - [Node.js Adapter](./nodejs.md)
659
+ - [Capability Registry](../capability-schema.md)