@bluefly/openstandardagents 0.4.9 → 0.5.0

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 (125) hide show
  1. package/.version.json +3 -3
  2. package/CHANGELOG.md +8 -8
  3. package/README.md +68 -58
  4. package/bin/postinstall +0 -0
  5. package/dist/.version.json +3 -3
  6. package/dist/adapters/claude-code/adapter.js +2 -2
  7. package/dist/adapters/docker/generators.js +19 -19
  8. package/dist/adapters/drupal/generator.js +76 -76
  9. package/dist/adapters/openai-agents/adapter.js +2 -2
  10. package/dist/cli/schema-driven/schema-loader.js +5 -5
  11. package/dist/mcp-server/__tests__/mcp-server.spec.js +20 -11
  12. package/dist/mcp-server/index.js +0 -0
  13. package/dist/package.json +24 -11
  14. package/dist/services/export/langchain/langchain-exporter.js +2 -2
  15. package/dist/services/export/langchain/memory-generator.js +2 -2
  16. package/dist/services/export/testing/test-generator.js +1 -1
  17. package/dist/services/taxonomy-service.d.ts +3 -3
  18. package/dist/skills/test-skill/package.json +1 -1
  19. package/dist/spec/extensions/role-manifest.md +188 -0
  20. package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
  21. package/dist/spec/v0.5/agent.schema.json +2 -1
  22. package/dist/spec/v0.5/extensions/mcp/README.md +1 -1
  23. package/dist/spec/v0.5/role.schema.json +268 -0
  24. package/dist/types/index.d.ts +2 -0
  25. package/dist/types/index.js +2 -0
  26. package/dist/types/role.d.ts +126 -0
  27. package/dist/types/role.js +38 -0
  28. package/dist/validation/validator.js +1 -1
  29. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
  30. package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
  31. package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
  32. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
  33. package/examples/agents/security-audit-agent.ossa.yaml +234 -0
  34. package/examples/agentscope/react-assistant/agent.ossa.yaml +36 -32
  35. package/examples/drupal/content-moderator.ossa.yaml +2 -2
  36. package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
  37. package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
  38. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
  39. package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
  40. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
  41. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  42. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  43. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  44. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  45. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  46. package/examples/getting-started/README.md +3 -3
  47. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  48. package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
  49. package/examples/hierarchical-agent.ossa.yaml +10 -53
  50. package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
  51. package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
  52. package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
  53. package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
  54. package/examples/pipeline-agent.ossa.yaml +3 -3
  55. package/examples/platform-specific/claude-code-subagent.yaml +1 -1
  56. package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
  57. package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
  58. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
  59. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
  60. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
  61. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
  62. package/examples/reference-implementations/python-client/examples/basic_usage.py +0 -0
  63. package/examples/reference-implementations/python-client/examples/publish_agent.py +0 -0
  64. package/examples/roles/drupal-developer.role.yaml +37 -0
  65. package/examples/roles/platform-operator.role.yaml +28 -0
  66. package/examples/roles/security-auditor.role.yaml +27 -0
  67. package/examples/swarm-agent.ossa.yaml +13 -51
  68. package/examples/team-agent.ossa.yaml +12 -61
  69. package/examples/team-lead-teammate.ossa.yaml +12 -17
  70. package/openapi/agent-communication.yaml +260 -212
  71. package/openapi/agent-crud.yaml +217 -187
  72. package/openapi/agent-discovery.yaml +119 -81
  73. package/openapi/agent-identity.yaml +219 -187
  74. package/openapi/agent-taxonomy.yaml +95 -38
  75. package/openapi/agents-md-service.yaml +103 -30
  76. package/openapi/cli/openapi.yaml +147 -40
  77. package/openapi/core/ossa-core-api.openapi.yaml +327 -271
  78. package/openapi/core/ossa-registry-api.openapi.yaml +298 -235
  79. package/openapi/core/ossa-registry.openapi.yaml +299 -159
  80. package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
  81. package/openapi/daemon-api.openapi.yaml +323 -181
  82. package/openapi/dev-cli/openapi.yaml +137 -113
  83. package/openapi/github-sync.yaml +62 -19
  84. package/openapi/marketplace-plugin.openapi.yaml +539 -466
  85. package/openapi/ossa-api.openapi.yaml +354 -213
  86. package/openapi/ossa-cli-enhancements.openapi.yaml +108 -89
  87. package/openapi/ossa-cli.yaml +260 -184
  88. package/openapi/protocols/sse-streams.yaml +66 -74
  89. package/openapi/protocols/websocket-events.yaml +61 -54
  90. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
  91. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
  92. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
  93. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
  94. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
  95. package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
  96. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
  97. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
  98. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
  99. package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
  100. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
  101. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
  102. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
  103. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
  104. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
  105. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
  106. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
  107. package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
  108. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
  109. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
  110. package/openapi/release-automation.openapi.yaml +47 -13
  111. package/openapi/schemas/common/agent.yaml +30 -29
  112. package/openapi/schemas/common/errors.yaml +13 -3
  113. package/openapi/schemas/common/metadata.yaml +22 -7
  114. package/openapi/schemas/common/pagination.yaml +18 -6
  115. package/openapi/schemas/common/security.yaml +13 -5
  116. package/openapi/schemas/index.yaml +49 -42
  117. package/openapi/uadp-asyncapi.yaml +4 -2
  118. package/openapi/uadp-openapi.yaml +243 -165
  119. package/openapi/version-management.openapi.yaml +142 -135
  120. package/package.json +114 -103
  121. package/spec/extensions/role-manifest.md +188 -0
  122. package/spec/v0.4/extensions/mcp/README.md +1 -1
  123. package/spec/v0.5/agent.schema.json +2 -1
  124. package/spec/v0.5/extensions/mcp/README.md +1 -1
  125. package/spec/v0.5/role.schema.json +268 -0
@@ -21,14 +21,12 @@ info:
21
21
  2. **Task Completion**: Worker → Orchestrator (TaskCompleted)
22
22
  3. **Query/Response**: Agent A ↔ Agent B (QueryRequest/QueryResponse)
23
23
  4. **Broadcast**: Publisher → Channel → Subscribers
24
-
25
24
  contact:
26
25
  name: Bluefly.io LLM Platform Team
27
26
  url: https://github.com/blueflyio/openstandardagents
28
27
  license:
29
28
  name: MIT
30
29
  url: https://opensource.org/licenses/MIT
31
-
32
30
  servers:
33
31
  - url: https://a2a.llm.bluefly.io/v1
34
32
  description: Production A2A server
@@ -36,14 +34,11 @@ servers:
36
34
  description: Development A2A server
37
35
  - url: http://localhost:3100
38
36
  description: Local development
39
-
40
37
  security:
41
38
  - ApiKeyAuth: []
42
39
  - BearerAuth: []
43
40
  - AgentMTLS: []
44
-
45
41
  paths:
46
- # Direct Messaging
47
42
  /messages:
48
43
  post:
49
44
  summary: Send message to agent
@@ -53,14 +48,15 @@ paths:
53
48
 
54
49
  For async delivery, use webhookUrl in the request. The response will be
55
50
  delivered to the webhook endpoint when available.
56
- tags: [Messaging]
51
+ tags:
52
+ - Messaging
57
53
  operationId: sendMessage
58
54
  requestBody:
59
55
  required: true
60
56
  content:
61
57
  application/json:
62
58
  schema:
63
- $ref: '#/components/schemas/SendMessageRequest'
59
+ $ref: "#/components/schemas/SendMessageRequest"
64
60
  examples:
65
61
  taskAssignment:
66
62
  summary: Assign task to worker
@@ -82,37 +78,41 @@ paths:
82
78
  from: uadp://worker-002
83
79
  type: QueryRequest
84
80
  payload:
85
- query: "Extract entities from text"
81
+ query: Extract entities from text
86
82
  context:
87
- text: "Apple Inc. is headquartered in Cupertino, California."
83
+ text: Apple Inc. is headquartered in Cupertino, California.
88
84
  timeout: 30000
89
85
  responses:
90
- '202':
86
+ "202":
91
87
  description: Message accepted for delivery
92
88
  content:
93
89
  application/json:
94
90
  schema:
95
- $ref: '#/components/schemas/MessageResponse'
96
- '400':
97
- $ref: '#/components/responses/ValidationError'
98
- '401':
99
- $ref: '#/components/responses/Unauthorized'
100
- '404':
91
+ $ref: "#/components/schemas/MessageResponse"
92
+ "400":
93
+ $ref: "#/components/responses/ValidationError"
94
+ "401":
95
+ $ref: "#/components/responses/Unauthorized"
96
+ "404":
101
97
  description: Target agent not found
102
98
  content:
103
99
  application/problem+json:
104
100
  schema:
105
- $ref: '#/components/schemas/Problem'
106
- '500':
107
- $ref: '#/components/responses/InternalServerError'
108
-
101
+ $ref: "#/components/schemas/Problem"
102
+ "500":
103
+ $ref: "#/components/responses/InternalServerError"
104
+ x-ossa-capability: send-message
105
+ x-ossa-autonomy:
106
+ level: supervised
107
+ approval_required: true
109
108
  /messages/{messageId}:
110
109
  get:
111
110
  summary: Get message status
112
111
  description: |
113
112
  Retrieve the delivery status and metadata for a previously sent message.
114
113
  Includes delivery timestamps, acknowledgment status, and any errors.
115
- tags: [Messaging]
114
+ tags:
115
+ - Messaging
116
116
  operationId: getMessageStatus
117
117
  parameters:
118
118
  - name: messageId
@@ -123,24 +123,25 @@ paths:
123
123
  type: string
124
124
  format: uuid
125
125
  responses:
126
- '200':
126
+ "200":
127
127
  description: Message status
128
128
  content:
129
129
  application/json:
130
130
  schema:
131
- $ref: '#/components/schemas/Message'
132
- '404':
133
- $ref: '#/components/responses/NotFound'
134
- '500':
135
- $ref: '#/components/responses/InternalServerError'
136
-
131
+ $ref: "#/components/schemas/Message"
132
+ "404":
133
+ $ref: "#/components/responses/NotFound"
134
+ "500":
135
+ $ref: "#/components/responses/InternalServerError"
136
+ x-ossa-capability: get-message-status
137
137
  /messages/{messageId}/acknowledge:
138
138
  post:
139
139
  summary: Acknowledge message receipt
140
140
  description: |
141
141
  Acknowledge successful processing of a received message. Required for
142
142
  at-least-once delivery guarantee. Unacknowledged messages may be redelivered.
143
- tags: [Messaging]
143
+ tags:
144
+ - Messaging
144
145
  operationId: acknowledgeMessage
145
146
  parameters:
146
147
  - name: messageId
@@ -157,25 +158,30 @@ paths:
157
158
  properties:
158
159
  result:
159
160
  type: string
160
- enum: [success, failure]
161
+ enum:
162
+ - success
163
+ - failure
161
164
  default: success
162
165
  error:
163
166
  type: string
164
167
  description: Error message if result is failure
165
168
  responses:
166
- '204':
169
+ "204":
167
170
  description: Message acknowledged
168
- '404':
169
- $ref: '#/components/responses/NotFound'
170
- '500':
171
- $ref: '#/components/responses/InternalServerError'
172
-
173
- # Pub/Sub Channels
171
+ "404":
172
+ $ref: "#/components/responses/NotFound"
173
+ "500":
174
+ $ref: "#/components/responses/InternalServerError"
175
+ x-ossa-capability: acknowledge-message
176
+ x-ossa-autonomy:
177
+ level: supervised
178
+ approval_required: true
174
179
  /channels:
175
180
  get:
176
181
  summary: List available channels
177
182
  description: List all communication channels the authenticated agent has access to
178
- tags: [Channels]
183
+ tags:
184
+ - Channels
179
185
  operationId: listChannels
180
186
  parameters:
181
187
  - name: filter
@@ -183,31 +189,32 @@ paths:
183
189
  description: Filter channels by type or topic
184
190
  schema:
185
191
  type: string
186
- - $ref: '#/components/parameters/Limit'
187
- - $ref: '#/components/parameters/Offset'
192
+ - $ref: "#/components/parameters/Limit"
193
+ - $ref: "#/components/parameters/Offset"
188
194
  responses:
189
- '200':
195
+ "200":
190
196
  description: List of channels
191
197
  content:
192
198
  application/json:
193
199
  schema:
194
- $ref: '#/components/schemas/ChannelsList'
195
- '500':
196
- $ref: '#/components/responses/InternalServerError'
197
-
200
+ $ref: "#/components/schemas/ChannelsList"
201
+ "500":
202
+ $ref: "#/components/responses/InternalServerError"
203
+ x-ossa-capability: list-channels
198
204
  post:
199
205
  summary: Create communication channel
200
206
  description: |
201
207
  Create a new pub/sub channel for message broadcasting. Channels enable
202
208
  many-to-many communication between agents.
203
- tags: [Channels]
209
+ tags:
210
+ - Channels
204
211
  operationId: createChannel
205
212
  requestBody:
206
213
  required: true
207
214
  content:
208
215
  application/json:
209
216
  schema:
210
- $ref: '#/components/schemas/CreateChannelRequest'
217
+ $ref: "#/components/schemas/CreateChannelRequest"
211
218
  examples:
212
219
  taskUpdates:
213
220
  summary: Task updates channel
@@ -227,74 +234,83 @@ paths:
227
234
  retentionPolicy:
228
235
  retentionDays: 30
229
236
  responses:
230
- '201':
237
+ "201":
231
238
  description: Channel created
232
239
  content:
233
240
  application/json:
234
241
  schema:
235
- $ref: '#/components/schemas/Channel'
236
- '400':
237
- $ref: '#/components/responses/ValidationError'
238
- '409':
242
+ $ref: "#/components/schemas/Channel"
243
+ "400":
244
+ $ref: "#/components/responses/ValidationError"
245
+ "409":
239
246
  description: Channel already exists
240
247
  content:
241
248
  application/problem+json:
242
249
  schema:
243
- $ref: '#/components/schemas/Problem'
244
- '500':
245
- $ref: '#/components/responses/InternalServerError'
246
-
250
+ $ref: "#/components/schemas/Problem"
251
+ "500":
252
+ $ref: "#/components/responses/InternalServerError"
253
+ x-ossa-capability: create-channel
254
+ x-ossa-autonomy:
255
+ level: supervised
256
+ approval_required: true
247
257
  /channels/{channelId}:
248
258
  get:
249
259
  summary: Get channel details
250
260
  description: Retrieve channel metadata, subscriber count, and configuration
251
- tags: [Channels]
261
+ tags:
262
+ - Channels
252
263
  operationId: getChannel
253
264
  parameters:
254
- - $ref: '#/components/parameters/ChannelId'
265
+ - $ref: "#/components/parameters/ChannelId"
255
266
  responses:
256
- '200':
267
+ "200":
257
268
  description: Channel details
258
269
  content:
259
270
  application/json:
260
271
  schema:
261
- $ref: '#/components/schemas/Channel'
262
- '404':
263
- $ref: '#/components/responses/NotFound'
264
-
272
+ $ref: "#/components/schemas/Channel"
273
+ "404":
274
+ $ref: "#/components/responses/NotFound"
275
+ x-ossa-capability: get-channel
265
276
  delete:
266
277
  summary: Delete channel
267
278
  description: |
268
279
  Delete a communication channel. All subscriptions will be removed.
269
280
  Messages in the channel will be deleted according to retention policy.
270
- tags: [Channels]
281
+ tags:
282
+ - Channels
271
283
  operationId: deleteChannel
272
284
  parameters:
273
- - $ref: '#/components/parameters/ChannelId'
285
+ - $ref: "#/components/parameters/ChannelId"
274
286
  responses:
275
- '204':
287
+ "204":
276
288
  description: Channel deleted
277
- '404':
278
- $ref: '#/components/responses/NotFound'
279
- '500':
280
- $ref: '#/components/responses/InternalServerError'
281
-
289
+ "404":
290
+ $ref: "#/components/responses/NotFound"
291
+ "500":
292
+ $ref: "#/components/responses/InternalServerError"
293
+ x-ossa-capability: delete-channel
294
+ x-ossa-autonomy:
295
+ level: supervised
296
+ approval_required: true
282
297
  /channels/{channelId}/subscribe:
283
298
  post:
284
299
  summary: Subscribe to channel
285
300
  description: |
286
301
  Subscribe to a channel to receive published messages. Supports both
287
302
  push (webhook) and pull (polling) delivery modes.
288
- tags: [Channels]
303
+ tags:
304
+ - Channels
289
305
  operationId: subscribeToChannel
290
306
  parameters:
291
- - $ref: '#/components/parameters/ChannelId'
307
+ - $ref: "#/components/parameters/ChannelId"
292
308
  requestBody:
293
309
  required: true
294
310
  content:
295
311
  application/json:
296
312
  schema:
297
- $ref: '#/components/schemas/SubscribeRequest'
313
+ $ref: "#/components/schemas/SubscribeRequest"
298
314
  examples:
299
315
  webhookSubscription:
300
316
  summary: Webhook-based subscription
@@ -303,73 +319,85 @@ paths:
303
319
  deliveryMode: push
304
320
  webhookUrl: https://worker-003.example.com/channels/task-updates
305
321
  filter:
306
- messageTypes: [TaskAssigned, TaskCompleted]
322
+ messageTypes:
323
+ - TaskAssigned
324
+ - TaskCompleted
307
325
  pollingSubscription:
308
326
  summary: Polling-based subscription
309
327
  value:
310
328
  agentId: uadp://monitor-001
311
329
  deliveryMode: pull
312
330
  filter:
313
- messageTypes: [TaskCompleted]
331
+ messageTypes:
332
+ - TaskCompleted
314
333
  responses:
315
- '201':
334
+ "201":
316
335
  description: Subscription created
317
336
  content:
318
337
  application/json:
319
338
  schema:
320
- $ref: '#/components/schemas/Subscription'
321
- '400':
322
- $ref: '#/components/responses/ValidationError'
323
- '404':
339
+ $ref: "#/components/schemas/Subscription"
340
+ "400":
341
+ $ref: "#/components/responses/ValidationError"
342
+ "404":
324
343
  description: Channel not found
325
344
  content:
326
345
  application/problem+json:
327
346
  schema:
328
- $ref: '#/components/schemas/Problem'
329
- '500':
330
- $ref: '#/components/responses/InternalServerError'
331
-
347
+ $ref: "#/components/schemas/Problem"
348
+ "500":
349
+ $ref: "#/components/responses/InternalServerError"
350
+ x-ossa-capability: subscribe-to-channel
351
+ x-ossa-autonomy:
352
+ level: supervised
353
+ approval_required: true
332
354
  /channels/{channelId}/unsubscribe:
333
355
  post:
334
356
  summary: Unsubscribe from channel
335
357
  description: Remove subscription from a channel
336
- tags: [Channels]
358
+ tags:
359
+ - Channels
337
360
  operationId: unsubscribeFromChannel
338
361
  parameters:
339
- - $ref: '#/components/parameters/ChannelId'
362
+ - $ref: "#/components/parameters/ChannelId"
340
363
  requestBody:
341
364
  required: true
342
365
  content:
343
366
  application/json:
344
367
  schema:
345
368
  type: object
346
- required: [subscriptionId]
369
+ required:
370
+ - subscriptionId
347
371
  properties:
348
372
  subscriptionId:
349
373
  type: string
350
374
  format: uuid
351
375
  responses:
352
- '204':
376
+ "204":
353
377
  description: Unsubscribed successfully
354
- '404':
355
- $ref: '#/components/responses/NotFound'
356
-
378
+ "404":
379
+ $ref: "#/components/responses/NotFound"
380
+ x-ossa-capability: unsubscribe-from-channel
381
+ x-ossa-autonomy:
382
+ level: supervised
383
+ approval_required: true
357
384
  /channels/{channelId}/publish:
358
385
  post:
359
386
  summary: Publish message to channel
360
387
  description: |
361
388
  Broadcast a message to all channel subscribers. Message will be delivered
362
389
  according to each subscriber's delivery mode (push/pull).
363
- tags: [Channels]
390
+ tags:
391
+ - Channels
364
392
  operationId: publishToChannel
365
393
  parameters:
366
- - $ref: '#/components/parameters/ChannelId'
394
+ - $ref: "#/components/parameters/ChannelId"
367
395
  requestBody:
368
396
  required: true
369
397
  content:
370
398
  application/json:
371
399
  schema:
372
- $ref: '#/components/schemas/PublishMessageRequest'
400
+ $ref: "#/components/schemas/PublishMessageRequest"
373
401
  examples:
374
402
  taskCompleted:
375
403
  summary: Broadcast task completion
@@ -379,8 +407,11 @@ paths:
379
407
  taskId: task-123
380
408
  status: completed
381
409
  result:
382
- entities: ["Apple Inc.", "Cupertino", "California"]
383
- completedAt: "2025-12-18T14:30:00Z"
410
+ entities:
411
+ - Apple Inc.
412
+ - Cupertino
413
+ - California
414
+ completedAt: 2025-12-18T14:30:00Z
384
415
  agentStarted:
385
416
  summary: Agent lifecycle event
386
417
  value:
@@ -388,36 +419,42 @@ paths:
388
419
  payload:
389
420
  agentId: uadp://worker-005
390
421
  version: 1.2.0
391
- capabilities: [text_analysis, entity_extraction]
392
- startedAt: "2025-12-18T14:25:00Z"
422
+ capabilities:
423
+ - text_analysis
424
+ - entity_extraction
425
+ startedAt: 2025-12-18T14:25:00Z
393
426
  responses:
394
- '202':
427
+ "202":
395
428
  description: Message published
396
429
  content:
397
430
  application/json:
398
431
  schema:
399
- $ref: '#/components/schemas/PublishResponse'
400
- '400':
401
- $ref: '#/components/responses/ValidationError'
402
- '404':
432
+ $ref: "#/components/schemas/PublishResponse"
433
+ "400":
434
+ $ref: "#/components/responses/ValidationError"
435
+ "404":
403
436
  description: Channel not found
404
437
  content:
405
438
  application/problem+json:
406
439
  schema:
407
- $ref: '#/components/schemas/Problem'
408
- '500':
409
- $ref: '#/components/responses/InternalServerError'
410
-
440
+ $ref: "#/components/schemas/Problem"
441
+ "500":
442
+ $ref: "#/components/responses/InternalServerError"
443
+ x-ossa-capability: publish-to-channel
444
+ x-ossa-autonomy:
445
+ level: supervised
446
+ approval_required: true
411
447
  /channels/{channelId}/messages:
412
448
  get:
413
449
  summary: Pull messages from channel
414
450
  description: |
415
451
  Poll for messages from a channel (pull-based delivery). Only available
416
452
  for subscriptions with deliveryMode: pull.
417
- tags: [Channels]
453
+ tags:
454
+ - Channels
418
455
  operationId: pullChannelMessages
419
456
  parameters:
420
- - $ref: '#/components/parameters/ChannelId'
457
+ - $ref: "#/components/parameters/ChannelId"
421
458
  - name: subscriptionId
422
459
  in: query
423
460
  required: true
@@ -437,10 +474,12 @@ paths:
437
474
  description: Acknowledgment mode
438
475
  schema:
439
476
  type: string
440
- enum: [auto, manual]
477
+ enum:
478
+ - auto
479
+ - manual
441
480
  default: manual
442
481
  responses:
443
- '200':
482
+ "200":
444
483
  description: Messages retrieved
445
484
  content:
446
485
  application/json:
@@ -450,20 +489,20 @@ paths:
450
489
  messages:
451
490
  type: array
452
491
  items:
453
- $ref: '#/components/schemas/Message'
492
+ $ref: "#/components/schemas/Message"
454
493
  hasMore:
455
494
  type: boolean
456
- '404':
457
- $ref: '#/components/responses/NotFound'
458
-
459
- # Streaming (Server-Sent Events)
495
+ "404":
496
+ $ref: "#/components/responses/NotFound"
497
+ x-ossa-capability: pull-channel-messages
460
498
  /stream:
461
499
  get:
462
500
  summary: Stream messages via SSE
463
501
  description: |
464
502
  Open a Server-Sent Events stream to receive real-time messages.
465
503
  Client maintains persistent connection for streaming updates.
466
- tags: [Streaming]
504
+ tags:
505
+ - Streaming
467
506
  operationId: streamMessages
468
507
  parameters:
469
508
  - name: agentId
@@ -477,9 +516,9 @@ paths:
477
516
  description: Filter messages by type (comma-separated)
478
517
  schema:
479
518
  type: string
480
- example: "TaskAssigned,TaskCompleted"
519
+ example: TaskAssigned,TaskCompleted
481
520
  responses:
482
- '200':
521
+ "200":
483
522
  description: SSE stream
484
523
  content:
485
524
  text/event-stream:
@@ -501,26 +540,26 @@ paths:
501
540
  event: TaskCompleted
502
541
  id: msg-124
503
542
  data: {"taskId":"task-456","status":"completed","result":{"summary":"Document analyzed"}}
504
- '401':
505
- $ref: '#/components/responses/Unauthorized'
506
-
507
- # Webhooks (for async callbacks)
543
+ "401":
544
+ $ref: "#/components/responses/Unauthorized"
545
+ x-ossa-capability: stream-messages
508
546
  /webhooks:
509
547
  post:
510
548
  summary: Register webhook endpoint
511
549
  description: |
512
550
  Register a webhook endpoint to receive async message delivery.
513
551
  The A2A platform will POST messages to the registered URL.
514
- tags: [Webhooks]
552
+ tags:
553
+ - Webhooks
515
554
  operationId: registerWebhook
516
555
  requestBody:
517
556
  required: true
518
557
  content:
519
558
  application/json:
520
559
  schema:
521
- $ref: '#/components/schemas/WebhookRegistration'
560
+ $ref: "#/components/schemas/WebhookRegistration"
522
561
  responses:
523
- '201':
562
+ "201":
524
563
  description: Webhook registered
525
564
  content:
526
565
  application/json:
@@ -536,14 +575,18 @@ paths:
536
575
  secret:
537
576
  type: string
538
577
  description: HMAC secret for verifying webhook authenticity
539
- '400':
540
- $ref: '#/components/responses/ValidationError'
541
-
578
+ "400":
579
+ $ref: "#/components/responses/ValidationError"
580
+ x-ossa-capability: register-webhook
581
+ x-ossa-autonomy:
582
+ level: supervised
583
+ approval_required: true
542
584
  /webhooks/{webhookId}:
543
585
  delete:
544
586
  summary: Unregister webhook
545
587
  description: Remove a webhook endpoint registration
546
- tags: [Webhooks]
588
+ tags:
589
+ - Webhooks
547
590
  operationId: unregisterWebhook
548
591
  parameters:
549
592
  - name: webhookId
@@ -553,24 +596,28 @@ paths:
553
596
  type: string
554
597
  format: uuid
555
598
  responses:
556
- '204':
599
+ "204":
557
600
  description: Webhook unregistered
558
- '404':
559
- $ref: '#/components/responses/NotFound'
560
-
561
- # Health
601
+ "404":
602
+ $ref: "#/components/responses/NotFound"
603
+ x-ossa-capability: unregister-webhook
604
+ x-ossa-autonomy:
605
+ level: supervised
606
+ approval_required: true
562
607
  /health:
563
608
  get:
564
609
  summary: Health check
565
- tags: [Health]
610
+ tags:
611
+ - Health
566
612
  operationId: healthCheck
567
613
  security: []
568
614
  responses:
569
- '200':
570
- $ref: '#/components/responses/HealthCheck'
571
- '503':
572
- $ref: '#/components/responses/ServiceUnavailable'
573
-
615
+ "200":
616
+ $ref: "#/components/responses/HealthCheck"
617
+ "503":
618
+ $ref: "#/components/responses/ServiceUnavailable"
619
+ x-ossa-capability: health-check
620
+ description: Health check
574
621
  components:
575
622
  securitySchemes:
576
623
  ApiKeyAuth:
@@ -586,7 +633,6 @@ components:
586
633
  AgentMTLS:
587
634
  type: mutualTLS
588
635
  description: Mutual TLS authentication for agent-to-agent trust
589
-
590
636
  parameters:
591
637
  ChannelId:
592
638
  name: channelId
@@ -613,9 +659,7 @@ components:
613
659
  type: integer
614
660
  minimum: 0
615
661
  default: 0
616
-
617
662
  schemas:
618
- # Message Schemas
619
663
  SendMessageRequest:
620
664
  type: object
621
665
  required:
@@ -628,16 +672,16 @@ components:
628
672
  type: string
629
673
  format: uri
630
674
  description: Target agent URI (e.g., uadp://worker-001)
631
- pattern: '^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
675
+ pattern: ^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$
632
676
  from:
633
677
  type: string
634
678
  format: uri
635
679
  description: Source agent URI
636
- pattern: '^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
680
+ pattern: ^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$
637
681
  type:
638
- $ref: '#/components/schemas/MessageType'
682
+ $ref: "#/components/schemas/MessageType"
639
683
  payload:
640
- $ref: '#/components/schemas/MessagePayload'
684
+ $ref: "#/components/schemas/MessagePayload"
641
685
  correlationId:
642
686
  type: string
643
687
  description: Correlation ID for request/reply pattern
@@ -649,13 +693,16 @@ components:
649
693
  default: 30000
650
694
  priority:
651
695
  type: string
652
- enum: [low, normal, high, critical]
696
+ enum:
697
+ - low
698
+ - normal
699
+ - high
700
+ - critical
653
701
  default: normal
654
702
  webhookUrl:
655
703
  type: string
656
704
  format: uri
657
705
  description: URL for async response delivery
658
-
659
706
  MessageType:
660
707
  type: string
661
708
  enum:
@@ -679,13 +726,11 @@ components:
679
726
  - AgentStopped: Agent lifecycle event (stopped)
680
727
  - AgentError: Agent error notification
681
728
  - Custom: Custom application-specific message type
682
-
683
729
  MessagePayload:
684
730
  type: object
685
731
  description: |
686
732
  Message payload structure varies by message type. See schemas for each type.
687
733
  additionalProperties: true
688
-
689
734
  Message:
690
735
  type: object
691
736
  required:
@@ -710,19 +755,27 @@ components:
710
755
  format: uri
711
756
  description: Source agent URI
712
757
  type:
713
- $ref: '#/components/schemas/MessageType'
758
+ $ref: "#/components/schemas/MessageType"
714
759
  payload:
715
- $ref: '#/components/schemas/MessagePayload'
760
+ $ref: "#/components/schemas/MessagePayload"
716
761
  correlationId:
717
762
  type: string
718
763
  description: Correlation ID for request/reply pattern
719
764
  status:
720
765
  type: string
721
- enum: [pending, delivered, acknowledged, failed]
766
+ enum:
767
+ - pending
768
+ - delivered
769
+ - acknowledged
770
+ - failed
722
771
  description: Message delivery status
723
772
  priority:
724
773
  type: string
725
- enum: [low, normal, high, critical]
774
+ enum:
775
+ - low
776
+ - normal
777
+ - high
778
+ - critical
726
779
  createdAt:
727
780
  type: string
728
781
  format: date-time
@@ -738,7 +791,6 @@ components:
738
791
  error:
739
792
  type: string
740
793
  description: Error message if status is failed
741
-
742
794
  MessageResponse:
743
795
  type: object
744
796
  required:
@@ -751,14 +803,14 @@ components:
751
803
  description: Unique message identifier
752
804
  status:
753
805
  type: string
754
- enum: [accepted, queued]
806
+ enum:
807
+ - accepted
808
+ - queued
755
809
  description: Initial message status
756
810
  estimatedDelivery:
757
811
  type: string
758
812
  format: date-time
759
813
  description: Estimated delivery time
760
-
761
- # Channel Schemas
762
814
  CreateChannelRequest:
763
815
  type: object
764
816
  required:
@@ -767,7 +819,7 @@ components:
767
819
  properties:
768
820
  name:
769
821
  type: string
770
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
822
+ pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
771
823
  description: Channel name (lowercase, hyphen-separated)
772
824
  topic:
773
825
  type: string
@@ -775,10 +827,9 @@ components:
775
827
  description:
776
828
  type: string
777
829
  retentionPolicy:
778
- $ref: '#/components/schemas/RetentionPolicy'
830
+ $ref: "#/components/schemas/RetentionPolicy"
779
831
  accessControl:
780
- $ref: '#/components/schemas/AccessControl'
781
-
832
+ $ref: "#/components/schemas/AccessControl"
782
833
  Channel:
783
834
  type: object
784
835
  required:
@@ -803,30 +854,28 @@ components:
803
854
  type: integer
804
855
  minimum: 0
805
856
  retentionPolicy:
806
- $ref: '#/components/schemas/RetentionPolicy'
857
+ $ref: "#/components/schemas/RetentionPolicy"
807
858
  accessControl:
808
- $ref: '#/components/schemas/AccessControl'
859
+ $ref: "#/components/schemas/AccessControl"
809
860
  createdAt:
810
861
  type: string
811
862
  format: date-time
812
863
  updatedAt:
813
864
  type: string
814
865
  format: date-time
815
-
816
866
  ChannelsList:
817
867
  type: object
818
868
  properties:
819
869
  channels:
820
870
  type: array
821
871
  items:
822
- $ref: '#/components/schemas/Channel'
872
+ $ref: "#/components/schemas/Channel"
823
873
  total:
824
874
  type: integer
825
875
  limit:
826
876
  type: integer
827
877
  offset:
828
878
  type: integer
829
-
830
879
  RetentionPolicy:
831
880
  type: object
832
881
  properties:
@@ -841,7 +890,6 @@ components:
841
890
  minimum: 100
842
891
  default: 10000
843
892
  description: Maximum number of messages to retain
844
-
845
893
  AccessControl:
846
894
  type: object
847
895
  properties:
@@ -854,8 +902,6 @@ components:
854
902
  items:
855
903
  type: string
856
904
  description: List of agent URIs allowed to access channel
857
-
858
- # Subscription Schemas
859
905
  SubscribeRequest:
860
906
  type: object
861
907
  required:
@@ -865,31 +911,31 @@ components:
865
911
  agentId:
866
912
  type: string
867
913
  format: uri
868
- pattern: '^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
914
+ pattern: ^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$
869
915
  description: Subscribing agent URI
870
916
  deliveryMode:
871
917
  type: string
872
- enum: [push, pull]
918
+ enum:
919
+ - push
920
+ - pull
873
921
  description: Message delivery mode (push=webhook, pull=polling)
874
922
  webhookUrl:
875
923
  type: string
876
924
  format: uri
877
925
  description: Webhook URL (required if deliveryMode=push)
878
926
  filter:
879
- $ref: '#/components/schemas/SubscriptionFilter'
880
-
927
+ $ref: "#/components/schemas/SubscriptionFilter"
881
928
  SubscriptionFilter:
882
929
  type: object
883
930
  properties:
884
931
  messageTypes:
885
932
  type: array
886
933
  items:
887
- $ref: '#/components/schemas/MessageType'
934
+ $ref: "#/components/schemas/MessageType"
888
935
  description: Filter by message types
889
936
  agentFilter:
890
937
  type: string
891
938
  description: Filter by source agent pattern (supports wildcards)
892
-
893
939
  Subscription:
894
940
  type: object
895
941
  required:
@@ -910,23 +956,26 @@ components:
910
956
  format: uri
911
957
  deliveryMode:
912
958
  type: string
913
- enum: [push, pull]
959
+ enum:
960
+ - push
961
+ - pull
914
962
  webhookUrl:
915
963
  type: string
916
964
  format: uri
917
965
  filter:
918
- $ref: '#/components/schemas/SubscriptionFilter'
966
+ $ref: "#/components/schemas/SubscriptionFilter"
919
967
  status:
920
968
  type: string
921
- enum: [active, paused, failed]
969
+ enum:
970
+ - active
971
+ - paused
972
+ - failed
922
973
  createdAt:
923
974
  type: string
924
975
  format: date-time
925
976
  lastDeliveryAt:
926
977
  type: string
927
978
  format: date-time
928
-
929
- # Publish Schemas
930
979
  PublishMessageRequest:
931
980
  type: object
932
981
  required:
@@ -934,15 +983,14 @@ components:
934
983
  - payload
935
984
  properties:
936
985
  type:
937
- $ref: '#/components/schemas/MessageType'
986
+ $ref: "#/components/schemas/MessageType"
938
987
  payload:
939
- $ref: '#/components/schemas/MessagePayload'
988
+ $ref: "#/components/schemas/MessagePayload"
940
989
  attributes:
941
990
  type: object
942
991
  additionalProperties:
943
992
  type: string
944
993
  description: Custom message attributes
945
-
946
994
  PublishResponse:
947
995
  type: object
948
996
  properties:
@@ -955,8 +1003,6 @@ components:
955
1003
  subscriberCount:
956
1004
  type: integer
957
1005
  description: Number of subscribers message was delivered to
958
-
959
- # Webhook Schemas
960
1006
  WebhookRegistration:
961
1007
  type: object
962
1008
  required:
@@ -970,22 +1016,23 @@ components:
970
1016
  agentId:
971
1017
  type: string
972
1018
  format: uri
973
- pattern: '^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
1019
+ pattern: ^uadp://[a-z0-9]([-a-z0-9]*[a-z0-9])?$
974
1020
  description:
975
1021
  type: string
976
1022
  events:
977
1023
  type: array
978
1024
  items:
979
- $ref: '#/components/schemas/MessageType'
1025
+ $ref: "#/components/schemas/MessageType"
980
1026
  description: Event types to deliver to this webhook
981
-
982
- # Health Schema
983
1027
  HealthStatus:
984
1028
  type: object
985
1029
  properties:
986
1030
  status:
987
1031
  type: string
988
- enum: [healthy, degraded, unhealthy]
1032
+ enum:
1033
+ - healthy
1034
+ - degraded
1035
+ - unhealthy
989
1036
  version:
990
1037
  type: string
991
1038
  uptime:
@@ -1000,57 +1047,50 @@ components:
1000
1047
  properties:
1001
1048
  status:
1002
1049
  type: string
1003
- enum: [pass, fail]
1050
+ enum:
1051
+ - pass
1052
+ - fail
1004
1053
  message:
1005
1054
  type: string
1006
-
1007
- # Error Schema (RFC7807)
1008
1055
  Problem:
1009
- $ref: './schemas/common/errors.yaml#/components/schemas/Problem'
1010
-
1056
+ $ref: ./schemas/common/errors.yaml#/components/schemas/Problem
1011
1057
  responses:
1012
1058
  HealthCheck:
1013
1059
  description: Service health status
1014
1060
  content:
1015
1061
  application/json:
1016
1062
  schema:
1017
- $ref: '#/components/schemas/HealthStatus'
1018
-
1063
+ $ref: "#/components/schemas/HealthStatus"
1019
1064
  ValidationError:
1020
1065
  description: Validation error
1021
1066
  content:
1022
1067
  application/problem+json:
1023
1068
  schema:
1024
- $ref: '#/components/schemas/Problem'
1025
-
1069
+ $ref: "#/components/schemas/Problem"
1026
1070
  Unauthorized:
1027
1071
  description: Unauthorized
1028
1072
  content:
1029
1073
  application/problem+json:
1030
1074
  schema:
1031
- $ref: '#/components/schemas/Problem'
1032
-
1075
+ $ref: "#/components/schemas/Problem"
1033
1076
  NotFound:
1034
1077
  description: Resource not found
1035
1078
  content:
1036
1079
  application/problem+json:
1037
1080
  schema:
1038
- $ref: '#/components/schemas/Problem'
1039
-
1081
+ $ref: "#/components/schemas/Problem"
1040
1082
  ServiceUnavailable:
1041
1083
  description: Service unavailable
1042
1084
  content:
1043
1085
  application/problem+json:
1044
1086
  schema:
1045
- $ref: '#/components/schemas/Problem'
1046
-
1087
+ $ref: "#/components/schemas/Problem"
1047
1088
  InternalServerError:
1048
1089
  description: Internal server error
1049
1090
  content:
1050
1091
  application/problem+json:
1051
1092
  schema:
1052
- $ref: '#/components/schemas/Problem'
1053
-
1093
+ $ref: "#/components/schemas/Problem"
1054
1094
  tags:
1055
1095
  - name: Messaging
1056
1096
  description: Direct agent-to-agent messaging
@@ -1062,7 +1102,6 @@ tags:
1062
1102
  description: Webhook registration and management
1063
1103
  - name: Health
1064
1104
  description: Service health and status
1065
-
1066
1105
  x-ossa-metadata:
1067
1106
  version: 0.3.3
1068
1107
  compliance:
@@ -1070,3 +1109,12 @@ x-ossa-metadata:
1070
1109
  frameworks:
1071
1110
  - OSSA v0.3.3
1072
1111
  - OpenAPI 3.1
1112
+ observability:
1113
+ tracing: true
1114
+ metrics: true
1115
+ logging: true
1116
+ x-ossa:
1117
+ version: 0.5.0
1118
+ agent:
1119
+ id: agent-communication-api
1120
+ type: integrator