@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
@@ -13,11 +13,9 @@ info:
13
13
  url: https://openstandardagents.org
14
14
  license:
15
15
  name: MIT
16
-
17
16
  servers:
18
17
  - url: http://localhost:4242
19
18
  description: Local daemon (127.0.0.1 only)
20
-
21
19
  tags:
22
20
  - name: Pairing
23
21
  description: NIST-grade local authentication via 6-digit pairing codes
@@ -33,10 +31,8 @@ tags:
33
31
  description: Server-Sent Events for real-time updates
34
32
  - name: WebSocket
35
33
  description: Bidirectional real-time communication
36
-
37
34
  security:
38
35
  - pairingToken: []
39
-
40
36
  components:
41
37
  securitySchemes:
42
38
  pairingToken:
@@ -47,20 +43,22 @@ components:
47
43
  Session token obtained via pairing protocol.
48
44
  Sent as Bearer token in Authorization header (HTTP)
49
45
  or via Sec-WebSocket-Protocol header (WebSocket).
50
-
51
46
  schemas:
52
47
  PairRequest:
53
48
  type: object
54
- required: [code]
49
+ required:
50
+ - code
55
51
  properties:
56
52
  code:
57
53
  type: string
58
- pattern: '^\d{6}$'
54
+ pattern: ^\d{6}$
59
55
  description: 6-digit pairing code displayed in daemon terminal
60
-
61
56
  PairResponse:
62
57
  type: object
63
- required: [sessionId, token, expiresAt]
58
+ required:
59
+ - sessionId
60
+ - token
61
+ - expiresAt
64
62
  properties:
65
63
  sessionId:
66
64
  type: string
@@ -72,23 +70,30 @@ components:
72
70
  type: string
73
71
  format: date-time
74
72
  description: Token expiry (24h from creation)
75
-
76
73
  HealthResponse:
77
74
  type: object
78
- required: [status, version, uptime, workspace]
75
+ required:
76
+ - status
77
+ - version
78
+ - uptime
79
+ - workspace
79
80
  properties:
80
81
  status:
81
82
  type: string
82
- enum: [ok, degraded]
83
+ enum:
84
+ - ok
85
+ - degraded
83
86
  version:
84
87
  type: string
85
- example: '0.4.0'
88
+ example: 0.4.0
86
89
  uptime:
87
90
  type: integer
88
91
  description: Daemon uptime in seconds
89
92
  workspace:
90
93
  type: object
91
- required: [path, manifestCount]
94
+ required:
95
+ - path
96
+ - manifestCount
92
97
  properties:
93
98
  path:
94
99
  type: string
@@ -97,10 +102,12 @@ components:
97
102
  activeSessions:
98
103
  type: integer
99
104
  maximum: 3
100
-
101
105
  WorkspaceState:
102
106
  type: object
103
- required: [root, files, manifests]
107
+ required:
108
+ - root
109
+ - files
110
+ - manifests
104
111
  properties:
105
112
  root:
106
113
  type: string
@@ -108,15 +115,17 @@ components:
108
115
  files:
109
116
  type: array
110
117
  items:
111
- $ref: '#/components/schemas/FileEntry'
118
+ $ref: "#/components/schemas/FileEntry"
112
119
  manifests:
113
120
  type: array
114
121
  items:
115
- $ref: '#/components/schemas/ManifestSummary'
116
-
122
+ $ref: "#/components/schemas/ManifestSummary"
117
123
  FileEntry:
118
124
  type: object
119
- required: [path, modified, size]
125
+ required:
126
+ - path
127
+ - modified
128
+ - size
120
129
  properties:
121
130
  path:
122
131
  type: string
@@ -126,21 +135,22 @@ components:
126
135
  format: date-time
127
136
  size:
128
137
  type: integer
129
-
130
138
  FileTree:
131
139
  type: object
132
- required: [root, entries]
140
+ required:
141
+ - root
142
+ - entries
133
143
  properties:
134
144
  root:
135
145
  type: string
136
146
  entries:
137
147
  type: array
138
148
  items:
139
- $ref: '#/components/schemas/FileEntry'
140
-
149
+ $ref: "#/components/schemas/FileEntry"
141
150
  FileWriteRequest:
142
151
  type: object
143
- required: [content]
152
+ required:
153
+ - content
144
154
  properties:
145
155
  content:
146
156
  type: string
@@ -149,10 +159,12 @@ components:
149
159
  createDirectories:
150
160
  type: boolean
151
161
  default: false
152
-
153
162
  FileWriteResponse:
154
163
  type: object
155
- required: [path, written, validated]
164
+ required:
165
+ - path
166
+ - written
167
+ - validated
156
168
  properties:
157
169
  path:
158
170
  type: string
@@ -164,25 +176,33 @@ components:
164
176
  validationErrors:
165
177
  type: array
166
178
  items:
167
- $ref: '#/components/schemas/ValidationError'
168
-
179
+ $ref: "#/components/schemas/ValidationError"
169
180
  ManifestSummary:
170
181
  type: object
171
- required: [path, kind, name]
182
+ required:
183
+ - path
184
+ - kind
185
+ - name
172
186
  properties:
173
187
  path:
174
188
  type: string
175
189
  kind:
176
190
  type: string
177
- enum: [Agent, Skill, MCPServer, Team]
191
+ enum:
192
+ - Agent
193
+ - Skill
194
+ - MCPServer
195
+ - Team
178
196
  name:
179
197
  type: string
180
198
  version:
181
199
  type: string
182
-
183
200
  ValidationError:
184
201
  type: object
185
- required: [path, message, severity]
202
+ required:
203
+ - path
204
+ - message
205
+ - severity
186
206
  properties:
187
207
  path:
188
208
  type: string
@@ -190,40 +210,60 @@ components:
190
210
  type: string
191
211
  severity:
192
212
  type: string
193
- enum: [error, warning, info]
194
-
213
+ enum:
214
+ - error
215
+ - warning
216
+ - info
195
217
  SkillCatalog:
196
218
  type: object
197
- required: [skills, sources]
219
+ required:
220
+ - skills
221
+ - sources
198
222
  properties:
199
223
  skills:
200
224
  type: array
201
225
  items:
202
- $ref: '#/components/schemas/SkillEntry'
226
+ $ref: "#/components/schemas/SkillEntry"
203
227
  sources:
204
228
  type: array
205
229
  items:
206
230
  type: object
207
- required: [name, status, count]
231
+ required:
232
+ - name
233
+ - status
234
+ - count
208
235
  properties:
209
236
  name:
210
237
  type: string
211
- enum: [local, builtin, github, registry]
238
+ enum:
239
+ - local
240
+ - builtin
241
+ - github
242
+ - registry
212
243
  status:
213
244
  type: string
214
- enum: [loaded, error, loading]
245
+ enum:
246
+ - loaded
247
+ - error
248
+ - loading
215
249
  count:
216
250
  type: integer
217
-
218
251
  SkillEntry:
219
252
  type: object
220
- required: [name, source, description]
253
+ required:
254
+ - name
255
+ - source
256
+ - description
221
257
  properties:
222
258
  name:
223
259
  type: string
224
260
  source:
225
261
  type: string
226
- enum: [local, builtin, github, registry]
262
+ enum:
263
+ - local
264
+ - builtin
265
+ - github
266
+ - registry
227
267
  description:
228
268
  type: string
229
269
  version:
@@ -236,23 +276,28 @@ components:
236
276
  type: array
237
277
  items:
238
278
  type: string
239
-
240
279
  SkillInstallRequest:
241
280
  type: object
242
- required: [name, source]
281
+ required:
282
+ - name
283
+ - source
243
284
  properties:
244
285
  name:
245
286
  type: string
246
287
  source:
247
288
  type: string
248
- enum: [builtin, github, registry]
289
+ enum:
290
+ - builtin
291
+ - github
292
+ - registry
249
293
  targetPath:
250
294
  type: string
251
295
  description: Relative path in workspace to install skill
252
-
253
296
  SkillInstallResponse:
254
297
  type: object
255
- required: [installed, path]
298
+ required:
299
+ - installed
300
+ - path
256
301
  properties:
257
302
  installed:
258
303
  type: boolean
@@ -262,10 +307,10 @@ components:
262
307
  type: array
263
308
  items:
264
309
  type: string
265
-
266
310
  ExecuteRequest:
267
311
  type: object
268
- required: [manifestPath]
312
+ required:
313
+ - manifestPath
269
314
  properties:
270
315
  manifestPath:
271
316
  type: string
@@ -275,37 +320,56 @@ components:
275
320
  description: Agent input parameters
276
321
  runtime:
277
322
  type: string
278
- enum: [claude, openai, ollama, groq, together, deepseek, gemini, mock]
323
+ enum:
324
+ - claude
325
+ - openai
326
+ - ollama
327
+ - groq
328
+ - together
329
+ - deepseek
330
+ - gemini
331
+ - mock
279
332
  default: claude
280
333
  stream:
281
334
  type: boolean
282
335
  default: true
283
-
284
336
  ExecuteResponse:
285
337
  type: object
286
- required: [executionId, status]
338
+ required:
339
+ - executionId
340
+ - status
287
341
  properties:
288
342
  executionId:
289
343
  type: string
290
344
  format: uuid
291
345
  status:
292
346
  type: string
293
- enum: [running, completed, failed, cancelled]
347
+ enum:
348
+ - running
349
+ - completed
350
+ - failed
351
+ - cancelled
294
352
  sseUrl:
295
353
  type: string
296
354
  format: uri
297
355
  description: SSE endpoint for streaming output
298
-
299
356
  ExecutionStatus:
300
357
  type: object
301
- required: [executionId, status, startedAt]
358
+ required:
359
+ - executionId
360
+ - status
361
+ - startedAt
302
362
  properties:
303
363
  executionId:
304
364
  type: string
305
365
  format: uuid
306
366
  status:
307
367
  type: string
308
- enum: [running, completed, failed, cancelled]
368
+ enum:
369
+ - running
370
+ - completed
371
+ - failed
372
+ - cancelled
309
373
  startedAt:
310
374
  type: string
311
375
  format: date-time
@@ -318,10 +382,11 @@ components:
318
382
  error:
319
383
  type: string
320
384
  description: Error message (only when failed)
321
-
322
385
  ErrorResponse:
323
386
  type: object
324
- required: [error, message]
387
+ required:
388
+ - error
389
+ - message
325
390
  properties:
326
391
  error:
327
392
  type: string
@@ -329,11 +394,14 @@ components:
329
394
  type: string
330
395
  details:
331
396
  type: object
332
-
333
- # WebSocket event schemas
334
397
  DaemonWebSocketEvent:
335
398
  type: object
336
- required: [type, id, timestamp, payload, metadata]
399
+ required:
400
+ - type
401
+ - id
402
+ - timestamp
403
+ - payload
404
+ - metadata
337
405
  properties:
338
406
  type:
339
407
  type: string
@@ -362,7 +430,8 @@ components:
362
430
  type: object
363
431
  metadata:
364
432
  type: object
365
- required: [agentId]
433
+ required:
434
+ - agentId
366
435
  properties:
367
436
  agentId:
368
437
  type: string
@@ -372,20 +441,30 @@ components:
372
441
  type: string
373
442
  priority:
374
443
  type: string
375
- enum: [low, normal, high, critical]
444
+ enum:
445
+ - low
446
+ - normal
447
+ - high
448
+ - critical
376
449
  ttl:
377
450
  type: integer
378
451
  sessionId:
379
452
  type: string
380
-
381
- # SSE event schemas
382
453
  SSEExecutionEvent:
383
454
  type: object
384
- required: [type, data]
455
+ required:
456
+ - type
457
+ - data
385
458
  properties:
386
459
  type:
387
460
  type: string
388
- enum: [stdout, stderr, tool_call, tool_result, completion, error]
461
+ enum:
462
+ - stdout
463
+ - stderr
464
+ - tool_call
465
+ - tool_result
466
+ - completion
467
+ - error
389
468
  data:
390
469
  type: string
391
470
  timestamp:
@@ -393,14 +472,19 @@ components:
393
472
  format: date-time
394
473
  executionId:
395
474
  type: string
396
-
397
475
  SSEWorkspaceEvent:
398
476
  type: object
399
- required: [type, path, timestamp]
477
+ required:
478
+ - type
479
+ - path
480
+ - timestamp
400
481
  properties:
401
482
  type:
402
483
  type: string
403
- enum: [added, changed, removed]
484
+ enum:
485
+ - added
486
+ - changed
487
+ - removed
404
488
  path:
405
489
  type: string
406
490
  timestamp:
@@ -411,47 +495,51 @@ components:
411
495
  validationErrors:
412
496
  type: array
413
497
  items:
414
- $ref: '#/components/schemas/ValidationError'
415
-
498
+ $ref: "#/components/schemas/ValidationError"
416
499
  paths:
417
- # === Pairing ===
418
500
  /pair:
419
501
  post:
420
502
  operationId: submitPairingCode
421
503
  summary: Submit pairing code to establish session
422
- tags: [Pairing]
504
+ tags:
505
+ - Pairing
423
506
  security: []
424
507
  requestBody:
425
508
  required: true
426
509
  content:
427
510
  application/json:
428
511
  schema:
429
- $ref: '#/components/schemas/PairRequest'
512
+ $ref: "#/components/schemas/PairRequest"
430
513
  responses:
431
- '200':
514
+ "200":
432
515
  description: Pairing successful
433
516
  content:
434
517
  application/json:
435
518
  schema:
436
- $ref: '#/components/schemas/PairResponse'
437
- '401':
519
+ $ref: "#/components/schemas/PairResponse"
520
+ "401":
438
521
  description: Invalid or expired pairing code
439
522
  content:
440
523
  application/json:
441
524
  schema:
442
- $ref: '#/components/schemas/ErrorResponse'
443
- '429':
525
+ $ref: "#/components/schemas/ErrorResponse"
526
+ "429":
444
527
  description: Max sessions reached (3) or rate limited
445
528
  content:
446
529
  application/json:
447
530
  schema:
448
- $ref: '#/components/schemas/ErrorResponse'
449
-
531
+ $ref: "#/components/schemas/ErrorResponse"
532
+ x-ossa-capability: daemon-submit-pairing-code
533
+ x-ossa-autonomy:
534
+ level: supervised
535
+ approval_required: true
536
+ description: Submit pairing code to establish session
450
537
  /pair/{sessionId}:
451
538
  delete:
452
539
  operationId: revokeSession
453
540
  summary: Revoke a pairing session
454
- tags: [Pairing]
541
+ tags:
542
+ - Pairing
455
543
  parameters:
456
544
  - name: sessionId
457
545
  in: path
@@ -460,7 +548,7 @@ paths:
460
548
  type: string
461
549
  format: uuid
462
550
  responses:
463
- '200':
551
+ "200":
464
552
  description: Session revoked
465
553
  content:
466
554
  application/json:
@@ -469,72 +557,81 @@ paths:
469
557
  properties:
470
558
  revoked:
471
559
  type: boolean
472
- '404':
560
+ "404":
473
561
  description: Session not found
474
562
  content:
475
563
  application/json:
476
564
  schema:
477
- $ref: '#/components/schemas/ErrorResponse'
478
-
479
- # === Health ===
565
+ $ref: "#/components/schemas/ErrorResponse"
566
+ x-ossa-capability: daemon-revoke-session
567
+ x-ossa-autonomy:
568
+ level: supervised
569
+ approval_required: true
570
+ description: Revoke a pairing session
480
571
  /health:
481
572
  get:
482
573
  operationId: getDaemonHealth
483
574
  summary: Daemon health check and workspace info
484
- tags: [Health]
575
+ tags:
576
+ - Health
485
577
  security: []
486
578
  responses:
487
- '200':
579
+ "200":
488
580
  description: Daemon is healthy
489
581
  content:
490
582
  application/json:
491
583
  schema:
492
- $ref: '#/components/schemas/HealthResponse'
493
-
494
- # === Workspace ===
584
+ $ref: "#/components/schemas/HealthResponse"
585
+ x-ossa-capability: daemon-get-daemon-health
586
+ description: Daemon health check and workspace info
495
587
  /workspace:
496
588
  get:
497
589
  operationId: getWorkspaceState
498
590
  summary: Full workspace state (files + manifests)
499
- tags: [Workspace]
591
+ tags:
592
+ - Workspace
500
593
  responses:
501
- '200':
594
+ "200":
502
595
  description: Workspace state
503
596
  content:
504
597
  application/json:
505
598
  schema:
506
- $ref: '#/components/schemas/WorkspaceState'
507
- '401':
599
+ $ref: "#/components/schemas/WorkspaceState"
600
+ "401":
508
601
  description: Unauthorized
509
602
  content:
510
603
  application/json:
511
604
  schema:
512
- $ref: '#/components/schemas/ErrorResponse'
513
-
605
+ $ref: "#/components/schemas/ErrorResponse"
606
+ x-ossa-capability: daemon-get-workspace-state
607
+ description: Full workspace state (files + manifests)
514
608
  /workspace/files:
515
609
  get:
516
610
  operationId: getFileTree
517
611
  summary: Workspace file tree
518
- tags: [Workspace]
612
+ tags:
613
+ - Workspace
519
614
  responses:
520
- '200':
615
+ "200":
521
616
  description: File tree
522
617
  content:
523
618
  application/json:
524
619
  schema:
525
- $ref: '#/components/schemas/FileTree'
526
- '401':
620
+ $ref: "#/components/schemas/FileTree"
621
+ "401":
527
622
  description: Unauthorized
528
623
  content:
529
624
  application/json:
530
625
  schema:
531
- $ref: '#/components/schemas/ErrorResponse'
532
-
626
+ $ref: "#/components/schemas/ErrorResponse"
627
+ x-ossa-capability: daemon-get-file-tree
628
+ description: Workspace file tree
533
629
  /workspace/files/{path}:
534
630
  put:
535
631
  operationId: writeFile
536
632
  summary: Write file to workspace (validated for OSSA manifests)
537
- tags: [Workspace]
633
+ tags:
634
+ - Workspace
538
635
  parameters:
539
636
  - name: path
540
637
  in: path
@@ -547,45 +644,53 @@ paths:
547
644
  content:
548
645
  application/json:
549
646
  schema:
550
- $ref: '#/components/schemas/FileWriteRequest'
647
+ $ref: "#/components/schemas/FileWriteRequest"
551
648
  responses:
552
- '200':
649
+ "200":
553
650
  description: File written successfully
554
651
  content:
555
652
  application/json:
556
653
  schema:
557
- $ref: '#/components/schemas/FileWriteResponse'
558
- '400':
654
+ $ref: "#/components/schemas/FileWriteResponse"
655
+ "400":
559
656
  description: Path traversal attempt or invalid content
560
657
  content:
561
658
  application/json:
562
659
  schema:
563
- $ref: '#/components/schemas/ErrorResponse'
564
- '401':
660
+ $ref: "#/components/schemas/ErrorResponse"
661
+ "401":
565
662
  description: Unauthorized
566
663
  content:
567
664
  application/json:
568
665
  schema:
569
- $ref: '#/components/schemas/ErrorResponse'
570
- '413':
666
+ $ref: "#/components/schemas/ErrorResponse"
667
+ "413":
571
668
  description: Content too large (max 1MB)
572
669
  content:
573
670
  application/json:
574
671
  schema:
575
- $ref: '#/components/schemas/ErrorResponse'
576
-
577
- # === Skills ===
672
+ $ref: "#/components/schemas/ErrorResponse"
673
+ x-ossa-capability: daemon-write-file
674
+ x-ossa-autonomy:
675
+ level: supervised
676
+ approval_required: true
677
+ description: Write file to workspace (validated for OSSA manifests)
578
678
  /skills:
579
679
  get:
580
680
  operationId: getSkillCatalog
581
681
  summary: Aggregated skill catalog from all sources
582
- tags: [Skills]
682
+ tags:
683
+ - Skills
583
684
  parameters:
584
685
  - name: source
585
686
  in: query
586
687
  schema:
587
688
  type: string
588
- enum: [local, builtin, github, registry]
689
+ enum:
690
+ - local
691
+ - builtin
692
+ - github
693
+ - registry
589
694
  description: Filter by source
590
695
  - name: search
591
696
  in: query
@@ -593,93 +698,104 @@ paths:
593
698
  type: string
594
699
  description: Search skills by name or description
595
700
  responses:
596
- '200':
701
+ "200":
597
702
  description: Skill catalog
598
703
  content:
599
704
  application/json:
600
705
  schema:
601
- $ref: '#/components/schemas/SkillCatalog'
602
- '401':
706
+ $ref: "#/components/schemas/SkillCatalog"
707
+ "401":
603
708
  description: Unauthorized
604
709
  content:
605
710
  application/json:
606
711
  schema:
607
- $ref: '#/components/schemas/ErrorResponse'
608
-
712
+ $ref: "#/components/schemas/ErrorResponse"
713
+ x-ossa-capability: daemon-get-skill-catalog
714
+ description: Aggregated skill catalog from all sources
609
715
  /skills/install:
610
716
  post:
611
717
  operationId: installSkill
612
718
  summary: Install a skill to the workspace
613
- tags: [Skills]
719
+ tags:
720
+ - Skills
614
721
  requestBody:
615
722
  required: true
616
723
  content:
617
724
  application/json:
618
725
  schema:
619
- $ref: '#/components/schemas/SkillInstallRequest'
726
+ $ref: "#/components/schemas/SkillInstallRequest"
620
727
  responses:
621
- '200':
728
+ "200":
622
729
  description: Skill installed
623
730
  content:
624
731
  application/json:
625
732
  schema:
626
- $ref: '#/components/schemas/SkillInstallResponse'
627
- '400':
733
+ $ref: "#/components/schemas/SkillInstallResponse"
734
+ "400":
628
735
  description: Invalid skill or target path
629
736
  content:
630
737
  application/json:
631
738
  schema:
632
- $ref: '#/components/schemas/ErrorResponse'
633
- '401':
739
+ $ref: "#/components/schemas/ErrorResponse"
740
+ "401":
634
741
  description: Unauthorized
635
742
  content:
636
743
  application/json:
637
744
  schema:
638
- $ref: '#/components/schemas/ErrorResponse'
639
- '404':
745
+ $ref: "#/components/schemas/ErrorResponse"
746
+ "404":
640
747
  description: Skill not found
641
748
  content:
642
749
  application/json:
643
750
  schema:
644
- $ref: '#/components/schemas/ErrorResponse'
645
-
646
- # === Execution ===
751
+ $ref: "#/components/schemas/ErrorResponse"
752
+ x-ossa-capability: daemon-install-skill
753
+ x-ossa-autonomy:
754
+ level: supervised
755
+ approval_required: true
756
+ description: Install a skill to the workspace
647
757
  /execute:
648
758
  post:
649
759
  operationId: startExecution
650
760
  summary: Start agent execution
651
- tags: [Execution]
761
+ tags:
762
+ - Execution
652
763
  requestBody:
653
764
  required: true
654
765
  content:
655
766
  application/json:
656
767
  schema:
657
- $ref: '#/components/schemas/ExecuteRequest'
768
+ $ref: "#/components/schemas/ExecuteRequest"
658
769
  responses:
659
- '200':
770
+ "200":
660
771
  description: Execution started
661
772
  content:
662
773
  application/json:
663
774
  schema:
664
- $ref: '#/components/schemas/ExecuteResponse'
665
- '400':
775
+ $ref: "#/components/schemas/ExecuteResponse"
776
+ "400":
666
777
  description: Invalid manifest or runtime
667
778
  content:
668
779
  application/json:
669
780
  schema:
670
- $ref: '#/components/schemas/ErrorResponse'
671
- '401':
781
+ $ref: "#/components/schemas/ErrorResponse"
782
+ "401":
672
783
  description: Unauthorized
673
784
  content:
674
785
  application/json:
675
786
  schema:
676
- $ref: '#/components/schemas/ErrorResponse'
677
-
787
+ $ref: "#/components/schemas/ErrorResponse"
788
+ x-ossa-capability: daemon-start-execution
789
+ x-ossa-autonomy:
790
+ level: supervised
791
+ approval_required: true
792
+ description: Start agent execution
678
793
  /execute/{executionId}:
679
794
  get:
680
795
  operationId: getExecutionStatus
681
796
  summary: Get execution status
682
- tags: [Execution]
797
+ tags:
798
+ - Execution
683
799
  parameters:
684
800
  - name: executionId
685
801
  in: path
@@ -688,28 +804,31 @@ paths:
688
804
  type: string
689
805
  format: uuid
690
806
  responses:
691
- '200':
807
+ "200":
692
808
  description: Execution status
693
809
  content:
694
810
  application/json:
695
811
  schema:
696
- $ref: '#/components/schemas/ExecutionStatus'
697
- '401':
812
+ $ref: "#/components/schemas/ExecutionStatus"
813
+ "401":
698
814
  description: Unauthorized
699
815
  content:
700
816
  application/json:
701
817
  schema:
702
- $ref: '#/components/schemas/ErrorResponse'
703
- '404':
818
+ $ref: "#/components/schemas/ErrorResponse"
819
+ "404":
704
820
  description: Execution not found
705
821
  content:
706
822
  application/json:
707
823
  schema:
708
- $ref: '#/components/schemas/ErrorResponse'
824
+ $ref: "#/components/schemas/ErrorResponse"
825
+ x-ossa-capability: daemon-get-execution-status
826
+ description: Get execution status
709
827
  delete:
710
828
  operationId: cancelExecution
711
829
  summary: Cancel a running execution
712
- tags: [Execution]
830
+ tags:
831
+ - Execution
713
832
  parameters:
714
833
  - name: executionId
715
834
  in: path
@@ -718,7 +837,7 @@ paths:
718
837
  type: string
719
838
  format: uuid
720
839
  responses:
721
- '200':
840
+ "200":
722
841
  description: Execution cancelled
723
842
  content:
724
843
  application/json:
@@ -729,25 +848,29 @@ paths:
729
848
  type: boolean
730
849
  executionId:
731
850
  type: string
732
- '401':
851
+ "401":
733
852
  description: Unauthorized
734
853
  content:
735
854
  application/json:
736
855
  schema:
737
- $ref: '#/components/schemas/ErrorResponse'
738
- '404':
856
+ $ref: "#/components/schemas/ErrorResponse"
857
+ "404":
739
858
  description: Execution not found
740
859
  content:
741
860
  application/json:
742
861
  schema:
743
- $ref: '#/components/schemas/ErrorResponse'
744
-
745
- # === SSE Streams ===
862
+ $ref: "#/components/schemas/ErrorResponse"
863
+ x-ossa-capability: daemon-cancel-execution
864
+ x-ossa-autonomy:
865
+ level: supervised
866
+ approval_required: true
867
+ description: Cancel a running execution
746
868
  /sse/execution/{executionId}:
747
869
  get:
748
870
  operationId: streamExecution
749
871
  summary: Stream agent execution output via SSE
750
- tags: [SSE]
872
+ tags:
873
+ - SSE
751
874
  parameters:
752
875
  - name: executionId
753
876
  in: path
@@ -756,39 +879,43 @@ paths:
756
879
  type: string
757
880
  format: uuid
758
881
  responses:
759
- '200':
882
+ "200":
760
883
  description: SSE event stream
761
884
  content:
762
885
  text/event-stream:
763
886
  schema:
764
- $ref: '#/components/schemas/SSEExecutionEvent'
765
- '401':
887
+ $ref: "#/components/schemas/SSEExecutionEvent"
888
+ "401":
766
889
  description: Unauthorized
767
- '404':
890
+ "404":
768
891
  description: Execution not found
769
-
892
+ x-ossa-capability: daemon-stream-execution
893
+ description: Stream agent execution output via SSE
770
894
  /sse/workspace:
771
895
  get:
772
896
  operationId: streamWorkspace
773
897
  summary: Stream workspace file change events via SSE
774
- tags: [SSE]
898
+ tags:
899
+ - SSE
775
900
  responses:
776
- '200':
901
+ "200":
777
902
  description: SSE event stream
778
903
  content:
779
904
  text/event-stream:
780
905
  schema:
781
- $ref: '#/components/schemas/SSEWorkspaceEvent'
782
- '401':
906
+ $ref: "#/components/schemas/SSEWorkspaceEvent"
907
+ "401":
783
908
  description: Unauthorized
784
-
909
+ x-ossa-capability: daemon-stream-workspace
910
+ description: Stream workspace file change events via SSE
785
911
  /sse/status:
786
912
  get:
787
913
  operationId: streamStatus
788
914
  summary: Stream daemon health metrics via SSE
789
- tags: [SSE]
915
+ tags:
916
+ - SSE
790
917
  responses:
791
- '200':
918
+ "200":
792
919
  description: SSE event stream
793
920
  content:
794
921
  text/event-stream:
@@ -804,23 +931,38 @@ paths:
804
931
  timestamp:
805
932
  type: string
806
933
  format: date-time
807
- '401':
934
+ "401":
808
935
  description: Unauthorized
809
-
810
- # === WebSocket ===
936
+ x-ossa-capability: daemon-stream-status
937
+ description: Stream daemon health metrics via SSE
811
938
  /ws:
812
939
  get:
813
940
  operationId: websocketUpgrade
814
941
  summary: WebSocket upgrade for bidirectional real-time communication
815
- tags: [WebSocket]
942
+ tags:
943
+ - WebSocket
816
944
  description: |
817
945
  Upgrade to WebSocket connection. Token sent via Sec-WebSocket-Protocol header.
818
946
  Events use DaemonWebSocketEvent schema. Rate limit: 1000 msg/min per session.
819
947
  Max message size: 1MB.
820
948
  responses:
821
- '101':
949
+ "101":
822
950
  description: Switching to WebSocket protocol
823
- '401':
951
+ "401":
824
952
  description: Invalid or missing pairing token
825
- '429':
953
+ "429":
826
954
  description: Rate limited
955
+ x-ossa-capability: daemon-websocket-upgrade
956
+ x-ossa-metadata:
957
+ version: 0.4.0
958
+ compliance:
959
+ level: standard
960
+ observability:
961
+ tracing: true
962
+ metrics: true
963
+ logging: true
964
+ x-ossa:
965
+ version: 0.5.0
966
+ agent:
967
+ id: agent-platform-daemon
968
+ type: integrator