@bluefly/openstandardagents 0.2.8 → 0.2.9

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 (112) hide show
  1. package/.env.example +1 -1
  2. package/.github/AGENTS.md +245 -0
  3. package/.github/agents/github-issue-triage.ossa.yaml +99 -0
  4. package/.github/agents/github-pr-triage.ossa.yaml +137 -0
  5. package/.github/workflows/issue-sync-to-gitlab.yml +138 -0
  6. package/.github/workflows/pr-triage-to-gitlab.yml +164 -0
  7. package/.version.json +1 -1
  8. package/.wiki-config.json +1 -1
  9. package/CHANGELOG.md +33 -0
  10. package/CONTRIBUTING.md +102 -3
  11. package/README.md +17 -10
  12. package/dist/services/release-automation/schemas/release.schema.js +1 -1
  13. package/dist/services/release-automation/webhook.service.js +3 -3
  14. package/dist/services/release-automation/webhook.service.js.map +1 -1
  15. package/dist/services/runtime/claude/claude-adapter.d.ts +1 -1
  16. package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
  17. package/dist/services/runtime/claude/claude-adapter.js +1 -1
  18. package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
  19. package/dist/spec/v0.2.9/a2a-protocol.md +1337 -0
  20. package/dist/spec/v0.2.9/agent.md +1946 -0
  21. package/dist/spec/v0.2.9/capabilities/index.yaml +25 -0
  22. package/dist/spec/v0.2.9/capabilities/memory.yaml +251 -0
  23. package/dist/spec/v0.2.9/capability-schema.md +576 -0
  24. package/dist/spec/v0.2.9/compliance-profiles.md +533 -0
  25. package/dist/spec/v0.2.9/conformance-testing.md +1527 -0
  26. package/dist/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  27. package/dist/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  28. package/dist/spec/v0.2.9/runtime-semantics.md +464 -0
  29. package/dist/spec/v0.2.9/security-model.md +1245 -0
  30. package/dist/spec/v0.2.9/semantic-conventions.md +347 -0
  31. package/dist/spec/v0.2.9/types.ts +522 -0
  32. package/dist/types/policy.d.ts +377 -0
  33. package/dist/types/policy.d.ts.map +1 -0
  34. package/dist/types/policy.js +84 -0
  35. package/dist/types/policy.js.map +1 -0
  36. package/dist/utils/version.js +1 -1
  37. package/docs/specs/policy-dsl.md +925 -0
  38. package/examples/adk-integration/code-review-workflow.yml +1 -1
  39. package/examples/adk-integration/customer-support.yml +1 -1
  40. package/examples/adk-integration/data-pipeline.yml +1 -1
  41. package/examples/advanced/reasoning-agent.yaml +136 -0
  42. package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
  43. package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
  44. package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
  45. package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
  46. package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
  47. package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
  48. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
  49. package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
  50. package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
  51. package/examples/agents-md/code-agent.ossa.json +100 -0
  52. package/examples/agents-md/monorepo-agent.ossa.yaml +180 -0
  53. package/examples/anthropic/claude-assistant.ossa.json +1 -1
  54. package/examples/autogen/multi-agent.ossa.json +1 -1
  55. package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
  56. package/examples/claude-code/ossa-validator.ossa.yaml +2 -2
  57. package/examples/common_npm/agent-router.ossa.yaml +1 -1
  58. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
  59. package/examples/crewai/research-team.ossa.json +1 -1
  60. package/examples/cursor/code-review-agent.ossa.json +1 -1
  61. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
  62. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
  63. package/examples/extensions/agents-md-v1.yml +175 -0
  64. package/examples/extensions/drupal-v1.yml +1 -1
  65. package/examples/extensions/kagent-v1.yml +1 -1
  66. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  67. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
  68. package/examples/kagent/compliance-validator.ossa.yaml +1 -1
  69. package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
  70. package/examples/kagent/documentation-agent.ossa.yaml +1 -1
  71. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -1
  72. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
  73. package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
  74. package/examples/kagent/security-scanner.ossa.yaml +1 -1
  75. package/examples/langchain/chain-agent.ossa.json +1 -1
  76. package/examples/langflow/workflow-agent.ossa.json +1 -1
  77. package/examples/langgraph/state-machine-agent.ossa.json +1 -1
  78. package/examples/llamaindex/rag-agent.ossa.json +1 -1
  79. package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
  80. package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
  81. package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
  82. package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
  83. package/examples/openai/basic-agent.ossa.yaml +1 -1
  84. package/examples/openai/multi-tool-agent.ossa.json +1 -1
  85. package/examples/openai/swarm-agent.ossa.json +1 -1
  86. package/examples/production/document-analyzer-openai.yml +1 -1
  87. package/examples/quickstart/support-agent.ossa.yaml +1 -1
  88. package/examples/templates/ossa-compliance.yaml +1 -1
  89. package/examples/vercel/edge-agent.ossa.json +1 -1
  90. package/llms.txt +1 -1
  91. package/package.json +5 -3
  92. package/scripts/README.md +25 -0
  93. package/scripts/compliance-audit.ts +796 -0
  94. package/scripts/generate-agents-catalog.ts +2 -1
  95. package/scripts/generate-api-docs.ts +2 -1
  96. package/scripts/generate-examples-docs.ts +2 -1
  97. package/scripts/generate-llms-ctx.sh +2 -2
  98. package/spec/v0.2.9/a2a-protocol.md +1337 -0
  99. package/spec/v0.2.9/agent.md +1946 -0
  100. package/spec/v0.2.9/capabilities/index.yaml +25 -0
  101. package/spec/v0.2.9/capabilities/memory.yaml +251 -0
  102. package/spec/v0.2.9/capability-schema.md +576 -0
  103. package/spec/v0.2.9/compliance-profiles.md +533 -0
  104. package/spec/v0.2.9/conformance-testing.md +1527 -0
  105. package/spec/v0.2.9/gitlab-duo-integration.md +621 -0
  106. package/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
  107. package/spec/v0.2.9/runtime-semantics.md +464 -0
  108. package/spec/v0.2.9/security-model.md +1245 -0
  109. package/spec/v0.2.9/semantic-conventions.md +347 -0
  110. package/spec/v0.2.9/types.ts +522 -0
  111. package/test-results/junit.xml +184 -146
  112. package/.github/workflows/pr-comment.yml +0 -33
@@ -0,0 +1,3699 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://openstandardagents.org/schemas/v0.2.9/agent.json",
4
+ "title": "OSSA v0.2.9 Agent Manifest Schema",
5
+ "description": "Open Standard for Scalable AI Agents (OSSA) - The OpenAPI for AI Agents. Specification for declarative agent definition with framework-agnostic portability. v0.2.9 adds agents.md extension for OpenAI repository-level agent guidance, reasoning strategies (ReAct, CoT, ToT), prompt templates with versioning, and knowledge graph integration.",
6
+ "type": "object",
7
+ "required": [
8
+ "apiVersion",
9
+ "kind",
10
+ "metadata",
11
+ "spec"
12
+ ],
13
+ "properties": {
14
+ "apiVersion": {
15
+ "type": "string",
16
+ "pattern": "^ossa/v(0\\.[2-9]+\\.[0-9]+(-dev)?|1)(\\.[0-9]+)?(-[a-zA-Z0-9]+)?$",
17
+ "description": "OSSA API version (supports ossa/v0.2.x and higher, or ossa/v1 for compatibility)",
18
+ "examples": [
19
+ "ossa/v1",
20
+ "ossa/v0.2.9",
21
+ "ossa/v0.2.10",
22
+ "ossa/v0.3.0",
23
+ "ossa/v1.0"
24
+ ]
25
+ },
26
+ "kind": {
27
+ "type": "string",
28
+ "enum": [
29
+ "Agent"
30
+ ],
31
+ "description": "Resource type - currently only 'Agent' is supported"
32
+ },
33
+ "metadata": {
34
+ "$ref": "#/definitions/Metadata"
35
+ },
36
+ "spec": {
37
+ "$ref": "#/definitions/AgentSpec"
38
+ },
39
+ "extensions": {
40
+ "type": "object",
41
+ "description": "Framework-specific extensions for integration with kagent, buildkit, drupal, librechat, mcp, langchain, crewai, openai_agents, cursor, langflow, autogen, vercel_ai, llamaindex, langgraph, anthropic, agents_md, and other frameworks",
42
+ "properties": {
43
+ "agents_md": {
44
+ "$ref": "#/definitions/AgentsMdExtension"
45
+ },
46
+ "kagent": {
47
+ "$ref": "#/definitions/KAgentExtension"
48
+ },
49
+ "buildkit": {
50
+ "$ref": "#/definitions/BuildKitExtension"
51
+ },
52
+ "drupal": {
53
+ "$ref": "#/definitions/DrupalExtension"
54
+ },
55
+ "librechat": {
56
+ "$ref": "#/definitions/LibreChatExtension"
57
+ },
58
+ "mcp": {
59
+ "$ref": "#/definitions/MCPExtension"
60
+ },
61
+ "langchain": {
62
+ "$ref": "#/definitions/LangChainExtension"
63
+ },
64
+ "crewai": {
65
+ "$ref": "#/definitions/CrewAIExtension"
66
+ },
67
+ "openai_agents": {
68
+ "$ref": "#/definitions/OpenAIAgentsExtension"
69
+ },
70
+ "cursor": {
71
+ "$ref": "#/definitions/CursorExtension"
72
+ },
73
+ "langflow": {
74
+ "$ref": "#/definitions/LangflowExtension"
75
+ },
76
+ "autogen": {
77
+ "$ref": "#/definitions/AutoGenExtension"
78
+ },
79
+ "vercel_ai": {
80
+ "$ref": "#/definitions/VercelAIExtension"
81
+ },
82
+ "llamaindex": {
83
+ "$ref": "#/definitions/LlamaIndexExtension"
84
+ },
85
+ "langgraph": {
86
+ "$ref": "#/definitions/LangGraphExtension"
87
+ },
88
+ "anthropic": {
89
+ "$ref": "#/definitions/AnthropicExtension"
90
+ },
91
+ "google_adk": {
92
+ "$ref": "#/definitions/GoogleADKExtension"
93
+ },
94
+ "a2a": {
95
+ "$ref": "#/definitions/A2AExtension"
96
+ }
97
+ },
98
+ "additionalProperties": true
99
+ }
100
+ },
101
+ "additionalProperties": false,
102
+ "definitions": {
103
+ "Metadata": {
104
+ "type": "object",
105
+ "required": [
106
+ "name"
107
+ ],
108
+ "properties": {
109
+ "name": {
110
+ "type": "string",
111
+ "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
112
+ "maxLength": 253,
113
+ "description": "Agent identifier (DNS-1123 subdomain format for Kubernetes compatibility)"
114
+ },
115
+ "version": {
116
+ "type": "string",
117
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
118
+ "description": "Semantic version (semver 2.0.0)"
119
+ },
120
+ "description": {
121
+ "type": "string",
122
+ "maxLength": 2000,
123
+ "description": "Human-readable description of agent purpose and capabilities"
124
+ },
125
+ "labels": {
126
+ "type": "object",
127
+ "additionalProperties": {
128
+ "type": "string",
129
+ "maxLength": 63
130
+ },
131
+ "description": "Key-value labels for organization and filtering"
132
+ },
133
+ "annotations": {
134
+ "type": "object",
135
+ "additionalProperties": {
136
+ "type": "string"
137
+ },
138
+ "description": "Arbitrary metadata for tooling (not used for filtering)"
139
+ }
140
+ },
141
+ "additionalProperties": false
142
+ },
143
+ "AgentSpec": {
144
+ "type": "object",
145
+ "required": [
146
+ "role"
147
+ ],
148
+ "properties": {
149
+ "taxonomy": {
150
+ "$ref": "#/definitions/Taxonomy"
151
+ },
152
+ "role": {
153
+ "type": "string",
154
+ "minLength": 1,
155
+ "description": "Agent role/system prompt describing behavior and capabilities"
156
+ },
157
+ "llm": {
158
+ "$ref": "#/definitions/LLMConfig"
159
+ },
160
+ "tools": {
161
+ "type": "array",
162
+ "items": {
163
+ "$ref": "#/definitions/Tool"
164
+ },
165
+ "description": "Available tools/capabilities for the agent"
166
+ },
167
+ "autonomy": {
168
+ "$ref": "#/definitions/Autonomy"
169
+ },
170
+ "constraints": {
171
+ "$ref": "#/definitions/Constraints"
172
+ },
173
+ "observability": {
174
+ "$ref": "#/definitions/Observability"
175
+ },
176
+ "state": {
177
+ "$ref": "#/definitions/State"
178
+ },
179
+ "security": {
180
+ "$ref": "#/definitions/Security"
181
+ },
182
+ "reliability": {
183
+ "$ref": "#/definitions/Reliability"
184
+ },
185
+ "collaboration": {
186
+ "$ref": "#/definitions/Collaboration"
187
+ },
188
+ "safety": {
189
+ "$ref": "#/definitions/Safety"
190
+ },
191
+ "deployment": {
192
+ "$ref": "#/definitions/Deployment"
193
+ },
194
+ "reasoning": {
195
+ "$ref": "#/definitions/Reasoning"
196
+ },
197
+ "prompts": {
198
+ "$ref": "#/definitions/Prompts"
199
+ },
200
+ "knowledge_graph": {
201
+ "$ref": "#/definitions/KnowledgeGraph"
202
+ },
203
+ "identity": {
204
+ "$ref": "#/definitions/Identity"
205
+ },
206
+ "runtimes": {
207
+ "type": "object",
208
+ "description": "Runtime environment configurations for executing the agent across different platforms",
209
+ "additionalProperties": {
210
+ "type": "object",
211
+ "properties": {
212
+ "enabled": {
213
+ "type": "boolean",
214
+ "description": "Whether this runtime is enabled for the agent"
215
+ },
216
+ "endpoint": {
217
+ "type": "string",
218
+ "description": "API endpoint for the runtime service",
219
+ "format": "uri"
220
+ },
221
+ "model": {
222
+ "type": "string",
223
+ "enum": ["opus", "sonnet", "haiku"],
224
+ "description": "AI model to use (for AI-powered runtimes like Claude Code)"
225
+ },
226
+ "allowedTools": {
227
+ "type": "array",
228
+ "items": {
229
+ "type": "string"
230
+ },
231
+ "description": "List of tools that can be used in this runtime (supports glob patterns like 'Bash(git:*)')"
232
+ }
233
+ },
234
+ "additionalProperties": true
235
+ },
236
+ "examples": [
237
+ {
238
+ "gitlab-duo": {
239
+ "enabled": true,
240
+ "endpoint": "http://gdk.test:5052"
241
+ },
242
+ "claude-code": {
243
+ "enabled": true,
244
+ "model": "opus",
245
+ "allowedTools": ["Edit", "Write", "Read", "Bash(git:*)", "Bash(glab:*)"]
246
+ },
247
+ "cursor": {
248
+ "enabled": false
249
+ }
250
+ }
251
+ ]
252
+ }
253
+ },
254
+ "additionalProperties": true
255
+ },
256
+ "Taxonomy": {
257
+ "type": "object",
258
+ "required": [
259
+ "domain"
260
+ ],
261
+ "properties": {
262
+ "domain": {
263
+ "type": "string",
264
+ "description": "Primary domain classification",
265
+ "examples": [
266
+ "infrastructure",
267
+ "security",
268
+ "compliance",
269
+ "documentation"
270
+ ]
271
+ },
272
+ "subdomain": {
273
+ "type": "string",
274
+ "description": "Secondary classification within domain",
275
+ "examples": [
276
+ "kubernetes",
277
+ "vulnerability",
278
+ "generation"
279
+ ]
280
+ },
281
+ "capability": {
282
+ "type": "string",
283
+ "description": "Specific capability or function",
284
+ "examples": [
285
+ "troubleshooting",
286
+ "scanning",
287
+ "optimization"
288
+ ]
289
+ }
290
+ },
291
+ "additionalProperties": false
292
+ },
293
+ "LLMConfig": {
294
+ "type": "object",
295
+ "required": [
296
+ "provider",
297
+ "model"
298
+ ],
299
+ "properties": {
300
+ "provider": {
301
+ "type": "string",
302
+ "enum": [
303
+ "openai",
304
+ "anthropic",
305
+ "google",
306
+ "azure",
307
+ "ollama",
308
+ "custom"
309
+ ],
310
+ "description": "LLM provider"
311
+ },
312
+ "model": {
313
+ "type": "string",
314
+ "description": "Model identifier",
315
+ "examples": [
316
+ "gpt-4",
317
+ "claude-3-sonnet-20240229",
318
+ "gemini-pro"
319
+ ]
320
+ },
321
+ "temperature": {
322
+ "type": "number",
323
+ "minimum": 0,
324
+ "maximum": 2,
325
+ "description": "Sampling temperature for response generation"
326
+ },
327
+ "maxTokens": {
328
+ "type": "integer",
329
+ "minimum": 1,
330
+ "description": "Maximum tokens per request"
331
+ },
332
+ "topP": {
333
+ "type": "number",
334
+ "minimum": 0,
335
+ "maximum": 1,
336
+ "description": "Nucleus sampling parameter"
337
+ },
338
+ "frequencyPenalty": {
339
+ "type": "number",
340
+ "minimum": -2,
341
+ "maximum": 2,
342
+ "description": "Frequency penalty for token generation"
343
+ },
344
+ "presencePenalty": {
345
+ "type": "number",
346
+ "minimum": -2,
347
+ "maximum": 2,
348
+ "description": "Presence penalty for token generation"
349
+ },
350
+ "fallback_models": {
351
+ "type": "array",
352
+ "description": "Fallback models to use if primary model fails",
353
+ "items": {
354
+ "type": "object",
355
+ "properties": {
356
+ "provider": {
357
+ "type": "string",
358
+ "enum": ["openai", "anthropic", "google", "azure", "ollama", "custom"]
359
+ },
360
+ "model": {
361
+ "type": "string"
362
+ }
363
+ },
364
+ "required": ["provider", "model"]
365
+ }
366
+ },
367
+ "retry_config": {
368
+ "type": "object",
369
+ "description": "Retry configuration for LLM calls",
370
+ "properties": {
371
+ "max_attempts": {
372
+ "type": "integer",
373
+ "minimum": 1,
374
+ "maximum": 5,
375
+ "default": 3
376
+ },
377
+ "backoff_strategy": {
378
+ "type": "string",
379
+ "enum": ["fixed", "exponential"],
380
+ "default": "exponential"
381
+ }
382
+ }
383
+ },
384
+ "cost_tracking": {
385
+ "type": "object",
386
+ "description": "Cost tracking and budgeting",
387
+ "properties": {
388
+ "enabled": {
389
+ "type": "boolean",
390
+ "default": false
391
+ },
392
+ "budget_alert_threshold": {
393
+ "type": "number",
394
+ "minimum": 0,
395
+ "description": "Alert when cost exceeds this threshold"
396
+ },
397
+ "cost_allocation_tags": {
398
+ "type": "object",
399
+ "additionalProperties": {
400
+ "type": "string"
401
+ },
402
+ "description": "Tags for cost allocation"
403
+ }
404
+ }
405
+ }
406
+ },
407
+ "additionalProperties": false
408
+ },
409
+ "Tool": {
410
+ "type": "object",
411
+ "required": [
412
+ "type"
413
+ ],
414
+ "properties": {
415
+ "type": {
416
+ "type": "string",
417
+ "enum": [
418
+ "mcp",
419
+ "kubernetes",
420
+ "http",
421
+ "grpc",
422
+ "function",
423
+ "a2a",
424
+ "custom"
425
+ ],
426
+ "description": "Tool integration type"
427
+ },
428
+ "name": {
429
+ "type": "string",
430
+ "description": "Tool name/identifier"
431
+ },
432
+ "server": {
433
+ "type": "string",
434
+ "description": "MCP server name (for type=mcp)"
435
+ },
436
+ "namespace": {
437
+ "type": "string",
438
+ "description": "Kubernetes namespace (for type=kubernetes or mcp)"
439
+ },
440
+ "endpoint": {
441
+ "type": "string",
442
+ "description": "HTTP/gRPC endpoint (for type=http/grpc)"
443
+ },
444
+ "capabilities": {
445
+ "type": "array",
446
+ "items": {
447
+ "$ref": "#/definitions/Capability"
448
+ },
449
+ "description": "Specific capabilities/operations from this tool"
450
+ },
451
+ "config": {
452
+ "type": "object",
453
+ "description": "Tool-specific configuration",
454
+ "additionalProperties": true
455
+ },
456
+ "auth": {
457
+ "type": "object",
458
+ "properties": {
459
+ "type": {
460
+ "type": "string",
461
+ "enum": [
462
+ "bearer",
463
+ "oauth2",
464
+ "mtls",
465
+ "apikey",
466
+ "none"
467
+ ]
468
+ },
469
+ "credentials": {
470
+ "type": "string",
471
+ "description": "Reference to secret/credential (not the actual secret)"
472
+ },
473
+ "scopes": {
474
+ "type": "array",
475
+ "items": {
476
+ "type": "string"
477
+ },
478
+ "description": "OAuth2 scopes or permission scopes required"
479
+ }
480
+ }
481
+ },
482
+ "transport": {
483
+ "$ref": "#/definitions/Transport"
484
+ },
485
+ "compliance_tags": {
486
+ "type": "array",
487
+ "items": {
488
+ "type": "string"
489
+ },
490
+ "description": "Compliance framework tags (e.g., 'pii', 'hipaa', 'gdpr', 'fedramp')"
491
+ },
492
+ "health_check": {
493
+ "type": "object",
494
+ "description": "Health check configuration for this tool",
495
+ "properties": {
496
+ "enabled": {
497
+ "type": "boolean",
498
+ "default": false
499
+ },
500
+ "endpoint": {
501
+ "type": "string",
502
+ "description": "Health check endpoint"
503
+ },
504
+ "interval_seconds": {
505
+ "type": "integer",
506
+ "minimum": 1,
507
+ "default": 30
508
+ },
509
+ "timeout_seconds": {
510
+ "type": "integer",
511
+ "minimum": 1,
512
+ "default": 5
513
+ }
514
+ }
515
+ },
516
+ "circuit_breaker": {
517
+ "type": "object",
518
+ "description": "Circuit breaker configuration for this tool",
519
+ "properties": {
520
+ "enabled": {
521
+ "type": "boolean",
522
+ "default": false
523
+ },
524
+ "failure_threshold": {
525
+ "type": "integer",
526
+ "minimum": 1,
527
+ "default": 5
528
+ },
529
+ "timeout_seconds": {
530
+ "type": "number",
531
+ "minimum": 0,
532
+ "default": 60
533
+ }
534
+ }
535
+ }
536
+ },
537
+ "additionalProperties": false
538
+ },
539
+ "Capability": {
540
+ "type": "object",
541
+ "required": ["name"],
542
+ "properties": {
543
+ "name": {
544
+ "type": "string",
545
+ "description": "Capability name/identifier"
546
+ },
547
+ "description": {
548
+ "type": "string",
549
+ "description": "Human-readable description of the capability"
550
+ },
551
+ "version": {
552
+ "type": "string",
553
+ "pattern": "^[0-9]+\\.[0-9]+$",
554
+ "description": "Capability version (major.minor format)"
555
+ },
556
+ "deprecated": {
557
+ "type": "boolean",
558
+ "default": false,
559
+ "description": "Whether this capability is deprecated"
560
+ },
561
+ "deprecation_message": {
562
+ "type": "string",
563
+ "description": "Message explaining deprecation and migration path"
564
+ },
565
+ "input_schema": {
566
+ "type": "object",
567
+ "description": "JSON Schema for capability input"
568
+ },
569
+ "output_schema": {
570
+ "type": "object",
571
+ "description": "JSON Schema for capability output"
572
+ },
573
+ "examples": {
574
+ "type": "array",
575
+ "description": "Example invocations of this capability",
576
+ "items": {
577
+ "type": "object",
578
+ "properties": {
579
+ "name": {
580
+ "type": "string",
581
+ "description": "Example name"
582
+ },
583
+ "description": {
584
+ "type": "string",
585
+ "description": "Example description"
586
+ },
587
+ "input": {
588
+ "type": "object",
589
+ "description": "Example input"
590
+ },
591
+ "output": {
592
+ "type": "object",
593
+ "description": "Expected output"
594
+ }
595
+ }
596
+ }
597
+ },
598
+ "transport": {
599
+ "$ref": "#/definitions/Transport"
600
+ },
601
+ "scopes": {
602
+ "type": "array",
603
+ "items": {
604
+ "type": "string"
605
+ },
606
+ "description": "Required permission scopes for this capability"
607
+ },
608
+ "compliance_tags": {
609
+ "type": "array",
610
+ "items": {
611
+ "type": "string"
612
+ },
613
+ "description": "Compliance framework tags for this capability"
614
+ },
615
+ "timeout": {
616
+ "type": "object",
617
+ "description": "Timeout configuration for capability execution",
618
+ "properties": {
619
+ "execution_seconds": {
620
+ "type": "number",
621
+ "minimum": 0,
622
+ "description": "Maximum execution time in seconds"
623
+ },
624
+ "connection_seconds": {
625
+ "type": "number",
626
+ "minimum": 0,
627
+ "description": "Connection timeout in seconds"
628
+ }
629
+ }
630
+ },
631
+ "retry_policy": {
632
+ "type": "object",
633
+ "description": "Retry policy for failed capability invocations",
634
+ "properties": {
635
+ "max_attempts": {
636
+ "type": "integer",
637
+ "minimum": 1,
638
+ "maximum": 10,
639
+ "default": 3,
640
+ "description": "Maximum retry attempts"
641
+ },
642
+ "backoff_strategy": {
643
+ "type": "string",
644
+ "enum": ["fixed", "exponential", "linear"],
645
+ "default": "exponential",
646
+ "description": "Backoff strategy between retries"
647
+ },
648
+ "initial_delay_ms": {
649
+ "type": "integer",
650
+ "minimum": 0,
651
+ "default": 1000,
652
+ "description": "Initial delay in milliseconds"
653
+ },
654
+ "max_delay_ms": {
655
+ "type": "integer",
656
+ "minimum": 0,
657
+ "default": 30000,
658
+ "description": "Maximum delay in milliseconds"
659
+ },
660
+ "retryable_errors": {
661
+ "type": "array",
662
+ "items": {
663
+ "type": "string"
664
+ },
665
+ "description": "Error codes/types that should trigger retry"
666
+ }
667
+ }
668
+ },
669
+ "error_handling": {
670
+ "type": "object",
671
+ "description": "Error handling configuration",
672
+ "properties": {
673
+ "fallback_capability": {
674
+ "type": "string",
675
+ "description": "Fallback capability to use on failure"
676
+ },
677
+ "error_mapping": {
678
+ "type": "object",
679
+ "description": "Map internal errors to standard error codes",
680
+ "additionalProperties": {
681
+ "type": "string"
682
+ }
683
+ },
684
+ "on_error": {
685
+ "type": "string",
686
+ "enum": ["fail", "fallback", "ignore", "retry"],
687
+ "default": "fail",
688
+ "description": "Action to take on error"
689
+ }
690
+ }
691
+ },
692
+ "caching": {
693
+ "type": "object",
694
+ "description": "Caching configuration for capability results",
695
+ "properties": {
696
+ "enabled": {
697
+ "type": "boolean",
698
+ "default": false,
699
+ "description": "Enable result caching"
700
+ },
701
+ "ttl_seconds": {
702
+ "type": "integer",
703
+ "minimum": 0,
704
+ "description": "Cache TTL in seconds"
705
+ },
706
+ "cache_key_fields": {
707
+ "type": "array",
708
+ "items": {
709
+ "type": "string"
710
+ },
711
+ "description": "Input fields to use for cache key generation"
712
+ },
713
+ "invalidation_strategy": {
714
+ "type": "string",
715
+ "enum": ["ttl", "manual", "event_driven"],
716
+ "default": "ttl"
717
+ }
718
+ }
719
+ },
720
+ "idempotency": {
721
+ "type": "object",
722
+ "description": "Idempotency configuration",
723
+ "properties": {
724
+ "enabled": {
725
+ "type": "boolean",
726
+ "default": false,
727
+ "description": "Whether this capability is idempotent"
728
+ },
729
+ "key_fields": {
730
+ "type": "array",
731
+ "items": {
732
+ "type": "string"
733
+ },
734
+ "description": "Fields used to determine idempotency"
735
+ },
736
+ "ttl_seconds": {
737
+ "type": "integer",
738
+ "minimum": 0,
739
+ "description": "How long to track idempotency keys"
740
+ }
741
+ }
742
+ }
743
+ },
744
+ "additionalProperties": false
745
+ },
746
+ "Transport": {
747
+ "type": "object",
748
+ "description": "Transport metadata for protocol-specific configuration (v0.2.5)",
749
+ "properties": {
750
+ "protocol": {
751
+ "type": "string",
752
+ "enum": [
753
+ "http",
754
+ "grpc",
755
+ "a2a",
756
+ "mcp",
757
+ "websocket",
758
+ "custom"
759
+ ],
760
+ "description": "Transport protocol"
761
+ },
762
+ "streaming": {
763
+ "type": "string",
764
+ "enum": [
765
+ "none",
766
+ "request",
767
+ "response",
768
+ "bidirectional"
769
+ ],
770
+ "default": "none",
771
+ "description": "Streaming mode for the transport"
772
+ },
773
+ "binding": {
774
+ "type": "string",
775
+ "description": "Path or endpoint binding (e.g., '/api/v1/chat', 'myservice.MyMethod')"
776
+ },
777
+ "content_type": {
778
+ "type": "string",
779
+ "description": "Content type for HTTP transports",
780
+ "examples": [
781
+ "application/json",
782
+ "application/x-ndjson",
783
+ "text/event-stream"
784
+ ]
785
+ },
786
+ "rateLimit": {
787
+ "type": "object",
788
+ "description": "Rate limiting configuration for this transport",
789
+ "properties": {
790
+ "requestsPerMinute": {
791
+ "type": "integer",
792
+ "minimum": 1,
793
+ "description": "Maximum requests per minute"
794
+ },
795
+ "requestsPerHour": {
796
+ "type": "integer",
797
+ "minimum": 1,
798
+ "description": "Maximum requests per hour"
799
+ },
800
+ "burstLimit": {
801
+ "type": "integer",
802
+ "minimum": 1,
803
+ "description": "Maximum burst of concurrent requests"
804
+ },
805
+ "strategy": {
806
+ "type": "string",
807
+ "enum": ["fixed_window", "sliding_window", "token_bucket", "leaky_bucket"],
808
+ "default": "sliding_window",
809
+ "description": "Rate limiting algorithm"
810
+ },
811
+ "onExceeded": {
812
+ "type": "string",
813
+ "enum": ["reject", "queue", "throttle"],
814
+ "default": "reject",
815
+ "description": "Behavior when rate limit is exceeded"
816
+ }
817
+ }
818
+ }
819
+ },
820
+ "additionalProperties": false
821
+ },
822
+ "State": {
823
+ "type": "object",
824
+ "description": "Agent state and memory configuration (v0.2.5)",
825
+ "properties": {
826
+ "mode": {
827
+ "type": "string",
828
+ "enum": [
829
+ "stateless",
830
+ "session",
831
+ "long_running"
832
+ ],
833
+ "default": "stateless",
834
+ "description": "State management mode"
835
+ },
836
+ "storage": {
837
+ "type": "object",
838
+ "properties": {
839
+ "type": {
840
+ "type": "string",
841
+ "enum": [
842
+ "memory",
843
+ "vector-db",
844
+ "kv",
845
+ "rdbms",
846
+ "custom"
847
+ ],
848
+ "default": "memory",
849
+ "description": "Storage backend type"
850
+ },
851
+ "retention": {
852
+ "type": "string",
853
+ "description": "Retention period (e.g., '30d', '1y', 'forever')",
854
+ "examples": [
855
+ "24h",
856
+ "7d",
857
+ "30d",
858
+ "1y",
859
+ "forever"
860
+ ]
861
+ },
862
+ "config": {
863
+ "type": "object",
864
+ "description": "Storage-specific configuration",
865
+ "additionalProperties": true
866
+ },
867
+ "encryption": {
868
+ "type": "object",
869
+ "description": "Encryption configuration for stored state data",
870
+ "properties": {
871
+ "enabled": {
872
+ "type": "boolean",
873
+ "default": false,
874
+ "description": "Enable encryption for state storage"
875
+ },
876
+ "algorithm": {
877
+ "type": "string",
878
+ "enum": ["aes-256-gcm", "aes-256-cbc", "chacha20-poly1305"],
879
+ "default": "aes-256-gcm",
880
+ "description": "Encryption algorithm"
881
+ },
882
+ "keyRef": {
883
+ "type": "string",
884
+ "description": "Secret reference for encryption key (e.g., 'vault:secret/data/agent-keys')"
885
+ },
886
+ "keyRotation": {
887
+ "type": "object",
888
+ "properties": {
889
+ "enabled": {
890
+ "type": "boolean",
891
+ "default": false
892
+ },
893
+ "interval": {
894
+ "type": "string",
895
+ "description": "Key rotation interval (e.g., '30d', '90d')"
896
+ }
897
+ }
898
+ }
899
+ }
900
+ }
901
+ },
902
+ "additionalProperties": false
903
+ },
904
+ "context_window": {
905
+ "type": "object",
906
+ "properties": {
907
+ "max_messages": {
908
+ "type": "integer",
909
+ "minimum": 1,
910
+ "description": "Maximum messages to retain in context"
911
+ },
912
+ "max_tokens": {
913
+ "type": "integer",
914
+ "minimum": 1,
915
+ "description": "Maximum tokens to retain in context"
916
+ },
917
+ "strategy": {
918
+ "type": "string",
919
+ "enum": [
920
+ "sliding_window",
921
+ "summarization",
922
+ "importance_weighted"
923
+ ],
924
+ "default": "sliding_window",
925
+ "description": "Context management strategy"
926
+ }
927
+ },
928
+ "additionalProperties": false
929
+ }
930
+ },
931
+ "additionalProperties": false
932
+ },
933
+ "Autonomy": {
934
+ "type": "object",
935
+ "properties": {
936
+ "level": {
937
+ "type": "string",
938
+ "enum": [
939
+ "supervised",
940
+ "autonomous",
941
+ "fully_autonomous"
942
+ ],
943
+ "description": "Level of autonomy for agent decision-making"
944
+ },
945
+ "approval_required": {
946
+ "type": "boolean",
947
+ "description": "Whether human approval is required for actions"
948
+ },
949
+ "allowed_actions": {
950
+ "type": "array",
951
+ "items": {
952
+ "type": "string"
953
+ },
954
+ "description": "Whitelist of permitted actions"
955
+ },
956
+ "blocked_actions": {
957
+ "type": "array",
958
+ "items": {
959
+ "type": "string"
960
+ },
961
+ "description": "Blacklist of forbidden actions"
962
+ },
963
+ "escalation_policy": {
964
+ "type": "object",
965
+ "description": "Rules for escalating to human oversight"
966
+ }
967
+ },
968
+ "additionalProperties": false
969
+ },
970
+ "Constraints": {
971
+ "type": "object",
972
+ "properties": {
973
+ "cost": {
974
+ "type": "object",
975
+ "properties": {
976
+ "maxTokensPerDay": {
977
+ "type": "integer",
978
+ "minimum": 0
979
+ },
980
+ "maxTokensPerRequest": {
981
+ "type": "integer",
982
+ "minimum": 0
983
+ },
984
+ "maxCostPerDay": {
985
+ "type": "number",
986
+ "minimum": 0
987
+ },
988
+ "currency": {
989
+ "type": "string",
990
+ "pattern": "^[A-Z]{3}$",
991
+ "default": "USD"
992
+ }
993
+ }
994
+ },
995
+ "performance": {
996
+ "type": "object",
997
+ "properties": {
998
+ "maxLatencySeconds": {
999
+ "type": "number",
1000
+ "minimum": 0
1001
+ },
1002
+ "maxConcurrentRequests": {
1003
+ "type": "integer",
1004
+ "minimum": 1
1005
+ },
1006
+ "timeoutSeconds": {
1007
+ "type": "number",
1008
+ "minimum": 0
1009
+ }
1010
+ }
1011
+ },
1012
+ "resources": {
1013
+ "type": "object",
1014
+ "properties": {
1015
+ "cpu": {
1016
+ "type": "string",
1017
+ "description": "CPU limit (Kubernetes format: 100m, 1, 2.5)"
1018
+ },
1019
+ "memory": {
1020
+ "type": "string",
1021
+ "description": "Memory limit (Kubernetes format: 128Mi, 1Gi)"
1022
+ },
1023
+ "gpu": {
1024
+ "type": "string",
1025
+ "description": "GPU requirement"
1026
+ }
1027
+ }
1028
+ }
1029
+ },
1030
+ "additionalProperties": false
1031
+ },
1032
+ "Observability": {
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "tracing": {
1036
+ "type": "object",
1037
+ "properties": {
1038
+ "enabled": {
1039
+ "type": "boolean",
1040
+ "default": true
1041
+ },
1042
+ "exporter": {
1043
+ "type": "string",
1044
+ "enum": [
1045
+ "otlp",
1046
+ "jaeger",
1047
+ "zipkin",
1048
+ "custom"
1049
+ ]
1050
+ },
1051
+ "endpoint": {
1052
+ "type": "string"
1053
+ }
1054
+ }
1055
+ },
1056
+ "metrics": {
1057
+ "type": "object",
1058
+ "properties": {
1059
+ "enabled": {
1060
+ "type": "boolean",
1061
+ "default": true
1062
+ },
1063
+ "exporter": {
1064
+ "type": "string",
1065
+ "enum": [
1066
+ "prometheus",
1067
+ "otlp",
1068
+ "custom"
1069
+ ]
1070
+ },
1071
+ "endpoint": {
1072
+ "type": "string"
1073
+ }
1074
+ }
1075
+ },
1076
+ "logging": {
1077
+ "type": "object",
1078
+ "properties": {
1079
+ "level": {
1080
+ "type": "string",
1081
+ "enum": [
1082
+ "debug",
1083
+ "info",
1084
+ "warn",
1085
+ "error"
1086
+ ],
1087
+ "default": "info"
1088
+ },
1089
+ "format": {
1090
+ "type": "string",
1091
+ "enum": [
1092
+ "json",
1093
+ "text"
1094
+ ],
1095
+ "default": "json"
1096
+ }
1097
+ }
1098
+ },
1099
+ "alerting": {
1100
+ "type": "object",
1101
+ "description": "Alerting configuration",
1102
+ "properties": {
1103
+ "enabled": {
1104
+ "type": "boolean",
1105
+ "default": false
1106
+ },
1107
+ "channels": {
1108
+ "type": "array",
1109
+ "items": {
1110
+ "type": "string",
1111
+ "enum": ["email", "slack", "pagerduty", "webhook", "sns"]
1112
+ },
1113
+ "description": "Alert notification channels"
1114
+ },
1115
+ "rules": {
1116
+ "type": "array",
1117
+ "items": {
1118
+ "type": "object",
1119
+ "properties": {
1120
+ "name": {
1121
+ "type": "string"
1122
+ },
1123
+ "condition": {
1124
+ "type": "string",
1125
+ "description": "Alert condition (e.g., 'error_rate > 5%')"
1126
+ },
1127
+ "severity": {
1128
+ "type": "string",
1129
+ "enum": ["critical", "warning", "info"]
1130
+ }
1131
+ }
1132
+ }
1133
+ }
1134
+ }
1135
+ },
1136
+ "slo": {
1137
+ "type": "object",
1138
+ "description": "Service Level Objectives",
1139
+ "properties": {
1140
+ "availability": {
1141
+ "type": "number",
1142
+ "minimum": 0,
1143
+ "maximum": 100,
1144
+ "description": "Target availability percentage"
1145
+ },
1146
+ "latency_p95_ms": {
1147
+ "type": "number",
1148
+ "minimum": 0,
1149
+ "description": "P95 latency target in milliseconds"
1150
+ },
1151
+ "error_budget": {
1152
+ "type": "number",
1153
+ "minimum": 0,
1154
+ "maximum": 100,
1155
+ "description": "Allowed error budget percentage"
1156
+ }
1157
+ }
1158
+ }
1159
+ },
1160
+ "additionalProperties": false
1161
+ },
1162
+ "KAgentExtension": {
1163
+ "type": "object",
1164
+ "description": "kagent.dev Kubernetes-native agent deployment extension",
1165
+ "properties": {
1166
+ "kubernetes": {
1167
+ "type": "object",
1168
+ "properties": {
1169
+ "namespace": {
1170
+ "type": "string",
1171
+ "default": "default",
1172
+ "description": "Target Kubernetes namespace"
1173
+ },
1174
+ "labels": {
1175
+ "type": "object",
1176
+ "additionalProperties": {
1177
+ "type": "string"
1178
+ },
1179
+ "description": "Kubernetes labels for agent CRD"
1180
+ },
1181
+ "annotations": {
1182
+ "type": "object",
1183
+ "additionalProperties": {
1184
+ "type": "string"
1185
+ },
1186
+ "description": "Kubernetes annotations"
1187
+ }
1188
+ }
1189
+ },
1190
+ "deployment": {
1191
+ "type": "object",
1192
+ "properties": {
1193
+ "replicas": {
1194
+ "type": "integer",
1195
+ "minimum": 1,
1196
+ "default": 1
1197
+ },
1198
+ "strategy": {
1199
+ "type": "string",
1200
+ "enum": [
1201
+ "rolling-update",
1202
+ "recreate"
1203
+ ],
1204
+ "default": "rolling-update"
1205
+ }
1206
+ }
1207
+ },
1208
+ "api_version": {
1209
+ "type": "string",
1210
+ "description": "kagent.dev API version (e.g., kagent.dev/v1alpha2)",
1211
+ "default": "kagent.dev/v1alpha2"
1212
+ }
1213
+ },
1214
+ "additionalProperties": true
1215
+ },
1216
+ "BuildKitExtension": {
1217
+ "type": "object",
1218
+ "description": "Agent BuildKit deployment and orchestration extension",
1219
+ "properties": {
1220
+ "deployment": {
1221
+ "type": "object",
1222
+ "properties": {
1223
+ "replicas": {
1224
+ "type": "object",
1225
+ "properties": {
1226
+ "min": {
1227
+ "type": "integer",
1228
+ "default": 1
1229
+ },
1230
+ "max": {
1231
+ "type": "integer",
1232
+ "default": 4
1233
+ }
1234
+ }
1235
+ }
1236
+ }
1237
+ },
1238
+ "container": {
1239
+ "type": "object",
1240
+ "properties": {
1241
+ "image": {
1242
+ "type": "string",
1243
+ "description": "Container image"
1244
+ },
1245
+ "runtime": {
1246
+ "type": "string",
1247
+ "enum": [
1248
+ "docker",
1249
+ "podman",
1250
+ "containerd"
1251
+ ],
1252
+ "default": "docker"
1253
+ },
1254
+ "resources": {
1255
+ "type": "object",
1256
+ "description": "Container resource limits"
1257
+ }
1258
+ }
1259
+ }
1260
+ },
1261
+ "additionalProperties": true
1262
+ },
1263
+ "DrupalExtension": {
1264
+ "type": "object",
1265
+ "description": "Drupal LLM Platform integration extension",
1266
+ "properties": {
1267
+ "module": {
1268
+ "type": "string",
1269
+ "pattern": "^[a-z][a-z0-9_]*$",
1270
+ "description": "Drupal module that owns this agent"
1271
+ },
1272
+ "service": {
1273
+ "type": "string",
1274
+ "pattern": "^[a-z][a-z0-9_]*\\.[a-z][a-z0-9_]*$",
1275
+ "description": "Drupal service ID (module.service format)"
1276
+ },
1277
+ "dependencies": {
1278
+ "type": "array",
1279
+ "items": {
1280
+ "type": "string",
1281
+ "pattern": "^[a-z][a-z0-9_]*$"
1282
+ },
1283
+ "description": "Required Drupal modules"
1284
+ },
1285
+ "database": {
1286
+ "type": "object",
1287
+ "properties": {
1288
+ "tables": {
1289
+ "type": "array",
1290
+ "items": {
1291
+ "type": "string"
1292
+ }
1293
+ },
1294
+ "migrations": {
1295
+ "type": "array",
1296
+ "items": {
1297
+ "type": "string"
1298
+ }
1299
+ }
1300
+ }
1301
+ }
1302
+ },
1303
+ "additionalProperties": true
1304
+ },
1305
+ "LibreChatExtension": {
1306
+ "type": "object",
1307
+ "description": "LibreChat integration extension",
1308
+ "properties": {
1309
+ "enabled": {
1310
+ "type": "boolean",
1311
+ "default": true
1312
+ },
1313
+ "agent_id": {
1314
+ "type": "string",
1315
+ "description": "LibreChat agent identifier"
1316
+ },
1317
+ "endpoint": {
1318
+ "type": "string",
1319
+ "description": "LibreChat API endpoint"
1320
+ },
1321
+ "authentication": {
1322
+ "type": "object",
1323
+ "description": "LibreChat authentication configuration"
1324
+ }
1325
+ },
1326
+ "additionalProperties": true
1327
+ },
1328
+ "MCPExtension": {
1329
+ "type": "object",
1330
+ "description": "Model Context Protocol (MCP) extension",
1331
+ "properties": {
1332
+ "enabled": {
1333
+ "type": "boolean",
1334
+ "default": true
1335
+ },
1336
+ "server_type": {
1337
+ "type": "string",
1338
+ "enum": [
1339
+ "stdio",
1340
+ "sse",
1341
+ "websocket"
1342
+ ],
1343
+ "default": "stdio"
1344
+ },
1345
+ "server_name": {
1346
+ "type": "string",
1347
+ "description": "MCP server name"
1348
+ },
1349
+ "config": {
1350
+ "type": "object",
1351
+ "description": "MCP server configuration"
1352
+ },
1353
+ "resources": {
1354
+ "type": "array",
1355
+ "description": "MCP resources exposed by this agent",
1356
+ "items": {
1357
+ "type": "object",
1358
+ "required": ["uri", "name"],
1359
+ "properties": {
1360
+ "uri": {
1361
+ "type": "string",
1362
+ "description": "Resource URI (e.g., file://, http://, custom://)"
1363
+ },
1364
+ "name": {
1365
+ "type": "string",
1366
+ "description": "Resource display name"
1367
+ },
1368
+ "description": {
1369
+ "type": "string",
1370
+ "description": "Resource description"
1371
+ },
1372
+ "mimeType": {
1373
+ "type": "string",
1374
+ "description": "Resource MIME type"
1375
+ }
1376
+ }
1377
+ }
1378
+ },
1379
+ "prompts": {
1380
+ "type": "array",
1381
+ "description": "MCP prompts exposed by this agent",
1382
+ "items": {
1383
+ "type": "object",
1384
+ "required": ["name"],
1385
+ "properties": {
1386
+ "name": {
1387
+ "type": "string",
1388
+ "description": "Prompt identifier"
1389
+ },
1390
+ "description": {
1391
+ "type": "string",
1392
+ "description": "Prompt description"
1393
+ },
1394
+ "arguments": {
1395
+ "type": "array",
1396
+ "description": "Prompt arguments",
1397
+ "items": {
1398
+ "type": "object",
1399
+ "required": ["name"],
1400
+ "properties": {
1401
+ "name": {
1402
+ "type": "string"
1403
+ },
1404
+ "description": {
1405
+ "type": "string"
1406
+ },
1407
+ "required": {
1408
+ "type": "boolean",
1409
+ "default": false
1410
+ }
1411
+ }
1412
+ }
1413
+ }
1414
+ }
1415
+ }
1416
+ },
1417
+ "tools": {
1418
+ "type": "array",
1419
+ "description": "MCP tools configuration",
1420
+ "items": {
1421
+ "type": "object",
1422
+ "required": ["name"],
1423
+ "properties": {
1424
+ "name": {
1425
+ "type": "string",
1426
+ "description": "Tool name"
1427
+ },
1428
+ "description": {
1429
+ "type": "string",
1430
+ "description": "Tool description"
1431
+ },
1432
+ "inputSchema": {
1433
+ "type": "object",
1434
+ "description": "JSON Schema for tool input"
1435
+ }
1436
+ }
1437
+ }
1438
+ }
1439
+ },
1440
+ "additionalProperties": true
1441
+ },
1442
+ "LangChainExtension": {
1443
+ "type": "object",
1444
+ "description": "LangChain framework integration extension",
1445
+ "properties": {
1446
+ "enabled": {
1447
+ "type": "boolean",
1448
+ "default": false
1449
+ },
1450
+ "tool_class": {
1451
+ "type": "string",
1452
+ "description": "LangChain tool class name"
1453
+ },
1454
+ "chain_type": {
1455
+ "type": "string",
1456
+ "enum": [
1457
+ "llm",
1458
+ "retrieval",
1459
+ "agent",
1460
+ "sequential",
1461
+ "custom"
1462
+ ]
1463
+ },
1464
+ "memory": {
1465
+ "type": "object",
1466
+ "properties": {
1467
+ "type": {
1468
+ "type": "string",
1469
+ "enum": [
1470
+ "buffer",
1471
+ "summary",
1472
+ "conversation",
1473
+ "vector"
1474
+ ]
1475
+ },
1476
+ "max_tokens": {
1477
+ "type": "integer"
1478
+ }
1479
+ }
1480
+ }
1481
+ },
1482
+ "additionalProperties": true
1483
+ },
1484
+ "CrewAIExtension": {
1485
+ "type": "object",
1486
+ "description": "CrewAI framework integration extension",
1487
+ "properties": {
1488
+ "enabled": {
1489
+ "type": "boolean",
1490
+ "default": false
1491
+ },
1492
+ "agent_type": {
1493
+ "type": "string",
1494
+ "enum": [
1495
+ "worker",
1496
+ "manager",
1497
+ "researcher",
1498
+ "analyst",
1499
+ "custom"
1500
+ ]
1501
+ },
1502
+ "role": {
1503
+ "type": "string",
1504
+ "description": "CrewAI agent role"
1505
+ },
1506
+ "goal": {
1507
+ "type": "string",
1508
+ "description": "CrewAI agent goal"
1509
+ },
1510
+ "backstory": {
1511
+ "type": "string",
1512
+ "description": "CrewAI agent backstory"
1513
+ },
1514
+ "tools": {
1515
+ "type": "array",
1516
+ "items": {
1517
+ "type": "string"
1518
+ },
1519
+ "description": "CrewAI tool names"
1520
+ }
1521
+ },
1522
+ "additionalProperties": true
1523
+ },
1524
+ "OpenAIAgentsExtension": {
1525
+ "type": "object",
1526
+ "description": "OpenAI Agents SDK integration extension",
1527
+ "properties": {
1528
+ "enabled": {
1529
+ "type": "boolean",
1530
+ "default": false,
1531
+ "description": "Enable OpenAI Agents SDK bridge"
1532
+ },
1533
+ "agent_id": {
1534
+ "type": "string",
1535
+ "description": "OpenAI agent ID (optional, auto-generated if not provided)"
1536
+ },
1537
+ "instructions": {
1538
+ "type": "string",
1539
+ "description": "Agent instructions/prompt (overrides spec.role if provided)"
1540
+ },
1541
+ "model": {
1542
+ "type": "string",
1543
+ "enum": [
1544
+ "gpt-4o",
1545
+ "gpt-4o-mini",
1546
+ "gpt-4-turbo",
1547
+ "gpt-3.5-turbo"
1548
+ ],
1549
+ "default": "gpt-4o-mini",
1550
+ "description": "OpenAI model to use for the agent"
1551
+ },
1552
+ "tools_mapping": {
1553
+ "type": "array",
1554
+ "description": "Map OSSA capabilities to OpenAI tools",
1555
+ "items": {
1556
+ "type": "object",
1557
+ "required": [
1558
+ "ossa_capability"
1559
+ ],
1560
+ "properties": {
1561
+ "ossa_capability": {
1562
+ "type": "string",
1563
+ "description": "OSSA capability name to map"
1564
+ },
1565
+ "openai_tool_name": {
1566
+ "type": "string",
1567
+ "description": "OpenAI tool name (defaults to ossa_capability if not provided)"
1568
+ },
1569
+ "description": {
1570
+ "type": "string",
1571
+ "description": "Tool description (defaults to OSSA capability description)"
1572
+ },
1573
+ "parameters": {
1574
+ "type": "object",
1575
+ "description": "OpenAI tool parameter schema (auto-generated from OSSA input_schema if not provided)"
1576
+ }
1577
+ },
1578
+ "additionalProperties": false
1579
+ }
1580
+ },
1581
+ "sub_agents": {
1582
+ "type": "array",
1583
+ "description": "Sub-agent handoffs configuration",
1584
+ "items": {
1585
+ "type": "object",
1586
+ "required": [
1587
+ "agent_id",
1588
+ "ossa_agent_ref"
1589
+ ],
1590
+ "properties": {
1591
+ "agent_id": {
1592
+ "type": "string",
1593
+ "description": "OpenAI sub-agent identifier"
1594
+ },
1595
+ "ossa_agent_ref": {
1596
+ "type": "string",
1597
+ "description": "Reference to OSSA agent (metadata.name or agent ID)"
1598
+ },
1599
+ "handoff_conditions": {
1600
+ "type": "array",
1601
+ "items": {
1602
+ "type": "string"
1603
+ },
1604
+ "description": "Conditions that trigger handoff to this sub-agent"
1605
+ },
1606
+ "instructions": {
1607
+ "type": "string",
1608
+ "description": "Sub-agent specific instructions"
1609
+ }
1610
+ },
1611
+ "additionalProperties": false
1612
+ }
1613
+ },
1614
+ "guardrails": {
1615
+ "type": "object",
1616
+ "description": "Safety guardrails configuration",
1617
+ "properties": {
1618
+ "enabled": {
1619
+ "type": "boolean",
1620
+ "default": true
1621
+ },
1622
+ "policies": {
1623
+ "type": "array",
1624
+ "items": {
1625
+ "type": "string"
1626
+ },
1627
+ "description": "Guardrail policy names (maps to OSSA compliance frameworks)"
1628
+ },
1629
+ "max_tool_calls": {
1630
+ "type": "integer",
1631
+ "minimum": 1,
1632
+ "description": "Maximum tool calls per agent execution"
1633
+ },
1634
+ "timeout_seconds": {
1635
+ "type": "integer",
1636
+ "minimum": 1,
1637
+ "description": "Maximum execution time in seconds"
1638
+ }
1639
+ },
1640
+ "additionalProperties": false
1641
+ },
1642
+ "memory": {
1643
+ "type": "object",
1644
+ "description": "Session memory configuration",
1645
+ "properties": {
1646
+ "enabled": {
1647
+ "type": "boolean",
1648
+ "default": false
1649
+ },
1650
+ "type": {
1651
+ "type": "string",
1652
+ "enum": [
1653
+ "session",
1654
+ "persistent"
1655
+ ],
1656
+ "default": "session",
1657
+ "description": "Memory storage type"
1658
+ },
1659
+ "max_messages": {
1660
+ "type": "integer",
1661
+ "minimum": 1,
1662
+ "description": "Maximum messages to retain in memory"
1663
+ }
1664
+ },
1665
+ "additionalProperties": false
1666
+ },
1667
+ "tracing": {
1668
+ "type": "object",
1669
+ "description": "Observability and tracing configuration",
1670
+ "properties": {
1671
+ "enabled": {
1672
+ "type": "boolean",
1673
+ "default": true
1674
+ },
1675
+ "provider": {
1676
+ "type": "string",
1677
+ "enum": [
1678
+ "langfuse",
1679
+ "langsmith",
1680
+ "custom"
1681
+ ],
1682
+ "default": "langfuse",
1683
+ "description": "Tracing provider"
1684
+ },
1685
+ "endpoint": {
1686
+ "type": "string",
1687
+ "description": "Custom tracing endpoint (for provider=custom)"
1688
+ }
1689
+ },
1690
+ "additionalProperties": false
1691
+ }
1692
+ },
1693
+ "additionalProperties": true
1694
+ },
1695
+ "CursorExtension": {
1696
+ "type": "object",
1697
+ "description": "Cursor IDE agent integration extension",
1698
+ "properties": {
1699
+ "enabled": {
1700
+ "type": "boolean",
1701
+ "default": true,
1702
+ "description": "Enable Cursor IDE integration"
1703
+ },
1704
+ "agent_type": {
1705
+ "type": "string",
1706
+ "enum": [
1707
+ "composer",
1708
+ "chat",
1709
+ "background",
1710
+ "cloud"
1711
+ ],
1712
+ "default": "composer",
1713
+ "description": "Cursor agent type (composer, chat, background, or cloud)"
1714
+ },
1715
+ "workspace_config": {
1716
+ "type": "object",
1717
+ "properties": {
1718
+ "rules_file": {
1719
+ "type": "string",
1720
+ "description": "Path to .cursorrules file (default: .cursor/.cursorrules)"
1721
+ },
1722
+ "context_files": {
1723
+ "type": "array",
1724
+ "items": {
1725
+ "type": "string"
1726
+ },
1727
+ "description": "Files to include in agent context"
1728
+ },
1729
+ "ignore_patterns": {
1730
+ "type": "array",
1731
+ "items": {
1732
+ "type": "string"
1733
+ },
1734
+ "description": "Glob patterns to exclude from context"
1735
+ }
1736
+ }
1737
+ },
1738
+ "capabilities": {
1739
+ "type": "object",
1740
+ "properties": {
1741
+ "code_generation": {
1742
+ "type": "boolean",
1743
+ "default": true
1744
+ },
1745
+ "code_review": {
1746
+ "type": "boolean",
1747
+ "default": false
1748
+ },
1749
+ "refactoring": {
1750
+ "type": "boolean",
1751
+ "default": false
1752
+ },
1753
+ "testing": {
1754
+ "type": "boolean",
1755
+ "default": false
1756
+ }
1757
+ }
1758
+ },
1759
+ "model": {
1760
+ "type": "object",
1761
+ "properties": {
1762
+ "provider": {
1763
+ "type": "string",
1764
+ "enum": [
1765
+ "openai",
1766
+ "anthropic",
1767
+ "custom"
1768
+ ],
1769
+ "default": "openai"
1770
+ },
1771
+ "name": {
1772
+ "type": "string",
1773
+ "description": "Model name (e.g., gpt-4, claude-3-opus)"
1774
+ }
1775
+ }
1776
+ }
1777
+ },
1778
+ "additionalProperties": true
1779
+ },
1780
+ "LangflowExtension": {
1781
+ "type": "object",
1782
+ "description": "Langflow workflow orchestration extension",
1783
+ "properties": {
1784
+ "enabled": {
1785
+ "type": "boolean",
1786
+ "default": false,
1787
+ "description": "Enable Langflow integration"
1788
+ },
1789
+ "flow_id": {
1790
+ "type": "string",
1791
+ "description": "Langflow flow identifier"
1792
+ },
1793
+ "flow_name": {
1794
+ "type": "string",
1795
+ "description": "Human-readable flow name"
1796
+ },
1797
+ "endpoint": {
1798
+ "type": "string",
1799
+ "description": "Langflow API endpoint"
1800
+ },
1801
+ "api_key": {
1802
+ "type": "string",
1803
+ "description": "Langflow API key (reference to secret)"
1804
+ },
1805
+ "components": {
1806
+ "type": "array",
1807
+ "description": "Langflow components used in this agent",
1808
+ "items": {
1809
+ "type": "object",
1810
+ "properties": {
1811
+ "id": {
1812
+ "type": "string"
1813
+ },
1814
+ "type": {
1815
+ "type": "string"
1816
+ },
1817
+ "name": {
1818
+ "type": "string"
1819
+ }
1820
+ }
1821
+ }
1822
+ },
1823
+ "dataflow": {
1824
+ "type": "object",
1825
+ "description": "Data flow configuration between components"
1826
+ }
1827
+ },
1828
+ "additionalProperties": true
1829
+ },
1830
+ "AutoGenExtension": {
1831
+ "type": "object",
1832
+ "description": "AutoGen multi-agent framework extension",
1833
+ "properties": {
1834
+ "enabled": {
1835
+ "type": "boolean",
1836
+ "default": false,
1837
+ "description": "Enable AutoGen integration"
1838
+ },
1839
+ "agent_type": {
1840
+ "type": "string",
1841
+ "enum": [
1842
+ "assistant",
1843
+ "user_proxy",
1844
+ "groupchat",
1845
+ "custom"
1846
+ ],
1847
+ "description": "AutoGen agent type"
1848
+ },
1849
+ "system_message": {
1850
+ "type": "string",
1851
+ "description": "System message for AutoGen agent (overrides spec.role if provided)"
1852
+ },
1853
+ "human_input_mode": {
1854
+ "type": "string",
1855
+ "enum": [
1856
+ "ALWAYS",
1857
+ "NEVER",
1858
+ "TERMINATE"
1859
+ ],
1860
+ "default": "NEVER",
1861
+ "description": "When to request human input"
1862
+ },
1863
+ "code_execution": {
1864
+ "type": "object",
1865
+ "properties": {
1866
+ "enabled": {
1867
+ "type": "boolean",
1868
+ "default": false
1869
+ },
1870
+ "work_dir": {
1871
+ "type": "string",
1872
+ "description": "Working directory for code execution"
1873
+ },
1874
+ "use_docker": {
1875
+ "type": "boolean",
1876
+ "default": false,
1877
+ "description": "Execute code in Docker container"
1878
+ }
1879
+ }
1880
+ },
1881
+ "max_consecutive_auto_reply": {
1882
+ "type": "integer",
1883
+ "minimum": 1,
1884
+ "default": 10,
1885
+ "description": "Maximum consecutive auto-replies before human input"
1886
+ },
1887
+ "groupchat": {
1888
+ "type": "object",
1889
+ "description": "Group chat configuration (for agent_type=groupchat)",
1890
+ "properties": {
1891
+ "agents": {
1892
+ "type": "array",
1893
+ "items": {
1894
+ "type": "string"
1895
+ },
1896
+ "description": "Other agent IDs in the group"
1897
+ },
1898
+ "max_round": {
1899
+ "type": "integer",
1900
+ "minimum": 1,
1901
+ "description": "Maximum rounds in group chat"
1902
+ }
1903
+ }
1904
+ }
1905
+ },
1906
+ "additionalProperties": true
1907
+ },
1908
+ "VercelAIExtension": {
1909
+ "type": "object",
1910
+ "description": "Vercel AI SDK integration extension",
1911
+ "properties": {
1912
+ "enabled": {
1913
+ "type": "boolean",
1914
+ "default": false,
1915
+ "description": "Enable Vercel AI SDK integration"
1916
+ },
1917
+ "runtime": {
1918
+ "type": "string",
1919
+ "enum": [
1920
+ "edge",
1921
+ "nodejs"
1922
+ ],
1923
+ "default": "edge",
1924
+ "description": "Runtime environment (edge or nodejs)"
1925
+ },
1926
+ "stream": {
1927
+ "type": "boolean",
1928
+ "default": true,
1929
+ "description": "Enable streaming responses"
1930
+ },
1931
+ "route": {
1932
+ "type": "string",
1933
+ "description": "API route path (e.g., /api/chat)"
1934
+ },
1935
+ "tools": {
1936
+ "type": "array",
1937
+ "description": "Vercel AI SDK tools configuration",
1938
+ "items": {
1939
+ "type": "object",
1940
+ "properties": {
1941
+ "name": {
1942
+ "type": "string"
1943
+ },
1944
+ "description": {
1945
+ "type": "string"
1946
+ },
1947
+ "parameters": {
1948
+ "type": "object",
1949
+ "description": "Tool parameters schema (JSON Schema)"
1950
+ }
1951
+ }
1952
+ }
1953
+ },
1954
+ "experimental": {
1955
+ "type": "object",
1956
+ "description": "Experimental Vercel AI SDK features",
1957
+ "additionalProperties": true
1958
+ }
1959
+ },
1960
+ "additionalProperties": true
1961
+ },
1962
+ "LlamaIndexExtension": {
1963
+ "type": "object",
1964
+ "description": "LlamaIndex framework integration extension",
1965
+ "properties": {
1966
+ "enabled": {
1967
+ "type": "boolean",
1968
+ "default": false,
1969
+ "description": "Enable LlamaIndex integration"
1970
+ },
1971
+ "agent_type": {
1972
+ "type": "string",
1973
+ "enum": [
1974
+ "query_engine",
1975
+ "chat_engine",
1976
+ "retriever",
1977
+ "custom"
1978
+ ],
1979
+ "description": "LlamaIndex agent/engine type"
1980
+ },
1981
+ "llm": {
1982
+ "type": "object",
1983
+ "properties": {
1984
+ "provider": {
1985
+ "type": "string",
1986
+ "enum": [
1987
+ "openai",
1988
+ "anthropic",
1989
+ "local",
1990
+ "custom"
1991
+ ]
1992
+ },
1993
+ "model": {
1994
+ "type": "string"
1995
+ },
1996
+ "temperature": {
1997
+ "type": "number",
1998
+ "minimum": 0,
1999
+ "maximum": 2
2000
+ }
2001
+ }
2002
+ },
2003
+ "vector_store": {
2004
+ "type": "object",
2005
+ "description": "Vector store configuration for RAG",
2006
+ "properties": {
2007
+ "type": {
2008
+ "type": "string",
2009
+ "enum": [
2010
+ "pinecone",
2011
+ "weaviate",
2012
+ "chroma",
2013
+ "qdrant",
2014
+ "milvus",
2015
+ "custom"
2016
+ ]
2017
+ },
2018
+ "config": {
2019
+ "type": "object",
2020
+ "additionalProperties": true
2021
+ }
2022
+ }
2023
+ },
2024
+ "retrieval": {
2025
+ "type": "object",
2026
+ "description": "Retrieval configuration",
2027
+ "properties": {
2028
+ "top_k": {
2029
+ "type": "integer",
2030
+ "minimum": 1,
2031
+ "default": 5,
2032
+ "description": "Number of documents to retrieve"
2033
+ },
2034
+ "similarity_top_k": {
2035
+ "type": "integer",
2036
+ "minimum": 1
2037
+ }
2038
+ }
2039
+ },
2040
+ "tools": {
2041
+ "type": "array",
2042
+ "description": "LlamaIndex tools/query modules",
2043
+ "items": {
2044
+ "type": "object",
2045
+ "properties": {
2046
+ "name": {
2047
+ "type": "string"
2048
+ },
2049
+ "type": {
2050
+ "type": "string"
2051
+ }
2052
+ }
2053
+ }
2054
+ }
2055
+ },
2056
+ "additionalProperties": true
2057
+ },
2058
+ "LangGraphExtension": {
2059
+ "type": "object",
2060
+ "description": "LangGraph state machine agent extension",
2061
+ "properties": {
2062
+ "enabled": {
2063
+ "type": "boolean",
2064
+ "default": false,
2065
+ "description": "Enable LangGraph integration"
2066
+ },
2067
+ "graph_name": {
2068
+ "type": "string",
2069
+ "description": "LangGraph graph/state machine name"
2070
+ },
2071
+ "state_schema": {
2072
+ "type": "object",
2073
+ "description": "State schema definition (TypedDict structure)"
2074
+ },
2075
+ "nodes": {
2076
+ "type": "array",
2077
+ "description": "Graph nodes configuration",
2078
+ "items": {
2079
+ "type": "object",
2080
+ "properties": {
2081
+ "name": {
2082
+ "type": "string"
2083
+ },
2084
+ "function": {
2085
+ "type": "string",
2086
+ "description": "Node function name"
2087
+ }
2088
+ }
2089
+ }
2090
+ },
2091
+ "edges": {
2092
+ "type": "array",
2093
+ "description": "Graph edges/transitions",
2094
+ "items": {
2095
+ "type": "object",
2096
+ "properties": {
2097
+ "from": {
2098
+ "type": "string"
2099
+ },
2100
+ "to": {
2101
+ "type": "string"
2102
+ },
2103
+ "condition": {
2104
+ "type": "string",
2105
+ "description": "Condition function name (optional)"
2106
+ }
2107
+ }
2108
+ }
2109
+ },
2110
+ "checkpoint": {
2111
+ "type": "object",
2112
+ "description": "Checkpoint configuration for state persistence",
2113
+ "properties": {
2114
+ "enabled": {
2115
+ "type": "boolean",
2116
+ "default": false
2117
+ },
2118
+ "type": {
2119
+ "type": "string",
2120
+ "enum": [
2121
+ "memory",
2122
+ "sqlite",
2123
+ "postgres",
2124
+ "custom"
2125
+ ]
2126
+ }
2127
+ }
2128
+ }
2129
+ },
2130
+ "additionalProperties": true
2131
+ },
2132
+ "AnthropicExtension": {
2133
+ "type": "object",
2134
+ "description": "Anthropic Claude API integration extension",
2135
+ "properties": {
2136
+ "enabled": {
2137
+ "type": "boolean",
2138
+ "default": false,
2139
+ "description": "Enable Anthropic Claude integration"
2140
+ },
2141
+ "model": {
2142
+ "type": "string",
2143
+ "enum": [
2144
+ "claude-opus-4-5-20251101",
2145
+ "claude-sonnet-4-5-20250929",
2146
+ "claude-haiku-4-5-20251001",
2147
+ "claude-3-5-sonnet-20241022",
2148
+ "claude-3-5-haiku-20241022",
2149
+ "claude-3-opus-20240229",
2150
+ "claude-3-sonnet-20240229",
2151
+ "claude-3-haiku-20240307"
2152
+ ],
2153
+ "default": "claude-sonnet-4-5-20250929",
2154
+ "description": "Claude model version"
2155
+ },
2156
+ "system": {
2157
+ "type": "string",
2158
+ "description": "System prompt (overrides spec.role if provided)"
2159
+ },
2160
+ "max_tokens": {
2161
+ "type": "integer",
2162
+ "minimum": 1,
2163
+ "maximum": 32000,
2164
+ "default": 4096,
2165
+ "description": "Maximum tokens in response (Claude 4.5 supports up to 32K output tokens)"
2166
+ },
2167
+ "temperature": {
2168
+ "type": "number",
2169
+ "minimum": 0,
2170
+ "maximum": 1,
2171
+ "default": 1,
2172
+ "description": "Sampling temperature"
2173
+ },
2174
+ "tools": {
2175
+ "type": "array",
2176
+ "description": "Claude tools/capabilities",
2177
+ "items": {
2178
+ "type": "object",
2179
+ "properties": {
2180
+ "name": {
2181
+ "type": "string"
2182
+ },
2183
+ "description": {
2184
+ "type": "string"
2185
+ },
2186
+ "input_schema": {
2187
+ "type": "object",
2188
+ "description": "Tool input schema (JSON Schema)"
2189
+ }
2190
+ },
2191
+ "required": [
2192
+ "name",
2193
+ "description",
2194
+ "input_schema"
2195
+ ]
2196
+ }
2197
+ },
2198
+ "streaming": {
2199
+ "type": "boolean",
2200
+ "default": false,
2201
+ "description": "Enable streaming responses"
2202
+ },
2203
+ "stop_sequences": {
2204
+ "type": "array",
2205
+ "items": {
2206
+ "type": "string"
2207
+ },
2208
+ "description": "Stop sequences for response generation"
2209
+ }
2210
+ },
2211
+ "additionalProperties": true
2212
+ },
2213
+ "GoogleADKExtension": {
2214
+ "type": "object",
2215
+ "description": "Google Agent Development Kit (ADK) integration extension (v0.2.5)",
2216
+ "properties": {
2217
+ "enabled": {
2218
+ "type": "boolean",
2219
+ "default": false,
2220
+ "description": "Enable Google ADK integration"
2221
+ },
2222
+ "agent_type": {
2223
+ "type": "string",
2224
+ "enum": [
2225
+ "llm_agent",
2226
+ "sequential_agent",
2227
+ "parallel_agent",
2228
+ "loop_agent",
2229
+ "conditional_agent",
2230
+ "custom"
2231
+ ],
2232
+ "default": "llm_agent",
2233
+ "description": "ADK agent type"
2234
+ },
2235
+ "model": {
2236
+ "type": "string",
2237
+ "description": "Gemini model to use",
2238
+ "examples": [
2239
+ "gemini-2.0-flash-exp",
2240
+ "gemini-1.5-pro"
2241
+ ]
2242
+ },
2243
+ "instruction": {
2244
+ "type": "string",
2245
+ "description": "Agent instruction (overrides spec.role if provided)"
2246
+ },
2247
+ "tools": {
2248
+ "type": "array",
2249
+ "description": "ADK tools configuration",
2250
+ "items": {
2251
+ "type": "object",
2252
+ "properties": {
2253
+ "name": {
2254
+ "type": "string"
2255
+ },
2256
+ "type": {
2257
+ "type": "string",
2258
+ "enum": [
2259
+ "function",
2260
+ "agent",
2261
+ "mcp_server"
2262
+ ]
2263
+ },
2264
+ "config": {
2265
+ "type": "object",
2266
+ "additionalProperties": true
2267
+ }
2268
+ }
2269
+ }
2270
+ },
2271
+ "sub_agents": {
2272
+ "type": "array",
2273
+ "description": "Sub-agent references for orchestration",
2274
+ "items": {
2275
+ "type": "string"
2276
+ }
2277
+ },
2278
+ "session": {
2279
+ "type": "object",
2280
+ "description": "Session management configuration",
2281
+ "properties": {
2282
+ "service": {
2283
+ "type": "string",
2284
+ "enum": [
2285
+ "in_memory",
2286
+ "database",
2287
+ "vertex_ai"
2288
+ ],
2289
+ "default": "in_memory"
2290
+ },
2291
+ "state_schema": {
2292
+ "type": "object",
2293
+ "description": "Session state schema"
2294
+ }
2295
+ }
2296
+ },
2297
+ "memory": {
2298
+ "type": "object",
2299
+ "description": "Memory service configuration",
2300
+ "properties": {
2301
+ "enabled": {
2302
+ "type": "boolean",
2303
+ "default": false
2304
+ },
2305
+ "service": {
2306
+ "type": "string",
2307
+ "enum": [
2308
+ "in_memory",
2309
+ "vertex_ai_rag"
2310
+ ]
2311
+ }
2312
+ }
2313
+ },
2314
+ "callbacks": {
2315
+ "type": "object",
2316
+ "description": "Lifecycle callbacks",
2317
+ "properties": {
2318
+ "before_agent_callback": {
2319
+ "type": "string"
2320
+ },
2321
+ "after_agent_callback": {
2322
+ "type": "string"
2323
+ },
2324
+ "before_model_callback": {
2325
+ "type": "string"
2326
+ },
2327
+ "after_model_callback": {
2328
+ "type": "string"
2329
+ }
2330
+ }
2331
+ }
2332
+ },
2333
+ "additionalProperties": true
2334
+ },
2335
+ "A2AExtension": {
2336
+ "type": "object",
2337
+ "description": "Agent-to-Agent (A2A) protocol extension for inter-agent communication",
2338
+ "properties": {
2339
+ "enabled": {
2340
+ "type": "boolean",
2341
+ "default": false,
2342
+ "description": "Enable A2A protocol support"
2343
+ },
2344
+ "agent_card": {
2345
+ "type": "object",
2346
+ "description": "A2A Agent Card configuration for discovery",
2347
+ "properties": {
2348
+ "name": {
2349
+ "type": "string",
2350
+ "description": "Agent display name"
2351
+ },
2352
+ "description": {
2353
+ "type": "string",
2354
+ "description": "Agent description for discovery"
2355
+ },
2356
+ "url": {
2357
+ "type": "string",
2358
+ "format": "uri",
2359
+ "description": "Agent endpoint URL"
2360
+ },
2361
+ "version": {
2362
+ "type": "string",
2363
+ "description": "Agent version"
2364
+ },
2365
+ "capabilities": {
2366
+ "type": "array",
2367
+ "items": {
2368
+ "type": "string"
2369
+ },
2370
+ "description": "List of capabilities the agent exposes"
2371
+ },
2372
+ "authentication": {
2373
+ "type": "object",
2374
+ "properties": {
2375
+ "schemes": {
2376
+ "type": "array",
2377
+ "items": {
2378
+ "type": "string",
2379
+ "enum": ["bearer", "oauth2", "mtls", "apikey", "none"]
2380
+ },
2381
+ "description": "Supported authentication schemes"
2382
+ }
2383
+ }
2384
+ },
2385
+ "provider": {
2386
+ "type": "object",
2387
+ "properties": {
2388
+ "organization": {
2389
+ "type": "string"
2390
+ },
2391
+ "url": {
2392
+ "type": "string",
2393
+ "format": "uri"
2394
+ }
2395
+ }
2396
+ }
2397
+ }
2398
+ },
2399
+ "supported_content_types": {
2400
+ "type": "array",
2401
+ "items": {
2402
+ "type": "string"
2403
+ },
2404
+ "default": ["application/json"],
2405
+ "description": "Content types the agent can process",
2406
+ "examples": [
2407
+ ["application/json", "text/plain", "application/x-ndjson"]
2408
+ ]
2409
+ },
2410
+ "skills": {
2411
+ "type": "array",
2412
+ "description": "Skills exposed via A2A protocol",
2413
+ "items": {
2414
+ "type": "object",
2415
+ "properties": {
2416
+ "id": {
2417
+ "type": "string",
2418
+ "description": "Skill identifier"
2419
+ },
2420
+ "name": {
2421
+ "type": "string",
2422
+ "description": "Skill display name"
2423
+ },
2424
+ "description": {
2425
+ "type": "string",
2426
+ "description": "Skill description"
2427
+ },
2428
+ "input_modes": {
2429
+ "type": "array",
2430
+ "items": {
2431
+ "type": "string",
2432
+ "enum": ["text", "file", "data"]
2433
+ }
2434
+ },
2435
+ "output_modes": {
2436
+ "type": "array",
2437
+ "items": {
2438
+ "type": "string",
2439
+ "enum": ["text", "file", "data"]
2440
+ }
2441
+ }
2442
+ }
2443
+ }
2444
+ },
2445
+ "streaming": {
2446
+ "type": "string",
2447
+ "enum": ["none", "response"],
2448
+ "default": "none",
2449
+ "description": "A2A streaming mode"
2450
+ },
2451
+ "push_notifications": {
2452
+ "type": "object",
2453
+ "description": "Push notification configuration",
2454
+ "properties": {
2455
+ "enabled": {
2456
+ "type": "boolean",
2457
+ "default": false
2458
+ },
2459
+ "webhook_url": {
2460
+ "type": "string",
2461
+ "format": "uri",
2462
+ "description": "Webhook URL for push notifications"
2463
+ }
2464
+ }
2465
+ }
2466
+ },
2467
+ "additionalProperties": true
2468
+ },
2469
+ "AgentsMdExtension": {
2470
+ "type": "object",
2471
+ "description": "OpenAI agents.md repository-level agent guidance extension. Generates and consumes AGENTS.md files for AI coding agents. See https://agents.md and https://github.com/openai/agents.md",
2472
+ "properties": {
2473
+ "enabled": {
2474
+ "type": "boolean",
2475
+ "default": false,
2476
+ "description": "Enable agents.md generation and integration"
2477
+ },
2478
+ "generate": {
2479
+ "type": "boolean",
2480
+ "default": true,
2481
+ "description": "Auto-generate AGENTS.md from manifest when enabled"
2482
+ },
2483
+ "output_path": {
2484
+ "type": "string",
2485
+ "default": "AGENTS.md",
2486
+ "description": "Output path for generated AGENTS.md file (e.g., 'AGENTS.md', '.github/AGENTS.md')"
2487
+ },
2488
+ "sections": {
2489
+ "type": "object",
2490
+ "description": "Configuration for AGENTS.md sections",
2491
+ "properties": {
2492
+ "dev_environment": {
2493
+ "$ref": "#/definitions/AgentsMdSection"
2494
+ },
2495
+ "testing": {
2496
+ "$ref": "#/definitions/AgentsMdSection"
2497
+ },
2498
+ "pr_instructions": {
2499
+ "$ref": "#/definitions/AgentsMdSection"
2500
+ },
2501
+ "code_style": {
2502
+ "$ref": "#/definitions/AgentsMdSection"
2503
+ },
2504
+ "security": {
2505
+ "$ref": "#/definitions/AgentsMdSection"
2506
+ },
2507
+ "custom": {
2508
+ "type": "array",
2509
+ "description": "Custom sections to include in AGENTS.md",
2510
+ "items": {
2511
+ "type": "object",
2512
+ "required": ["title", "content"],
2513
+ "properties": {
2514
+ "title": {
2515
+ "type": "string",
2516
+ "description": "Section title/header"
2517
+ },
2518
+ "content": {
2519
+ "type": "string",
2520
+ "description": "Section content in markdown format"
2521
+ }
2522
+ }
2523
+ }
2524
+ }
2525
+ },
2526
+ "additionalProperties": false
2527
+ },
2528
+ "sync": {
2529
+ "type": "object",
2530
+ "description": "Synchronization settings between manifest and AGENTS.md",
2531
+ "properties": {
2532
+ "on_manifest_change": {
2533
+ "type": "boolean",
2534
+ "default": true,
2535
+ "description": "Regenerate AGENTS.md when manifest changes"
2536
+ },
2537
+ "include_comments": {
2538
+ "type": "boolean",
2539
+ "default": true,
2540
+ "description": "Include OSSA metadata comments in generated AGENTS.md"
2541
+ },
2542
+ "watch": {
2543
+ "type": "boolean",
2544
+ "default": false,
2545
+ "description": "Enable file watching for automatic sync"
2546
+ }
2547
+ },
2548
+ "additionalProperties": false
2549
+ },
2550
+ "mapping": {
2551
+ "type": "object",
2552
+ "description": "Bidirectional mapping configuration between OSSA and agents.md",
2553
+ "properties": {
2554
+ "tools_to_dev_environment": {
2555
+ "type": "boolean",
2556
+ "default": true,
2557
+ "description": "Map spec.tools to dev environment tips section"
2558
+ },
2559
+ "constraints_to_testing": {
2560
+ "type": "boolean",
2561
+ "default": true,
2562
+ "description": "Map spec.constraints to testing requirements section"
2563
+ },
2564
+ "autonomy_to_pr_instructions": {
2565
+ "type": "boolean",
2566
+ "default": true,
2567
+ "description": "Map spec.autonomy to PR approval workflow hints"
2568
+ },
2569
+ "role_from_agents_md": {
2570
+ "type": "boolean",
2571
+ "default": false,
2572
+ "description": "Parse AGENTS.md to infer spec.role hints"
2573
+ }
2574
+ },
2575
+ "additionalProperties": false
2576
+ },
2577
+ "cursor_integration": {
2578
+ "type": "boolean",
2579
+ "default": false,
2580
+ "description": "Generate Cursor-compatible AGENTS.md content (pairs with extensions.cursor)"
2581
+ },
2582
+ "nested_files": {
2583
+ "type": "array",
2584
+ "description": "Generate nested AGENTS.md files for subdirectories (monorepo support)",
2585
+ "items": {
2586
+ "type": "object",
2587
+ "required": ["path"],
2588
+ "properties": {
2589
+ "path": {
2590
+ "type": "string",
2591
+ "description": "Subdirectory path for nested AGENTS.md"
2592
+ },
2593
+ "inherit": {
2594
+ "type": "boolean",
2595
+ "default": true,
2596
+ "description": "Inherit settings from root AGENTS.md"
2597
+ },
2598
+ "sections": {
2599
+ "type": "object",
2600
+ "description": "Override sections for this nested file"
2601
+ }
2602
+ }
2603
+ }
2604
+ }
2605
+ },
2606
+ "additionalProperties": true
2607
+ },
2608
+ "AgentsMdSection": {
2609
+ "type": "object",
2610
+ "description": "Configuration for an individual AGENTS.md section",
2611
+ "properties": {
2612
+ "enabled": {
2613
+ "type": "boolean",
2614
+ "default": true,
2615
+ "description": "Include this section in generated AGENTS.md"
2616
+ },
2617
+ "source": {
2618
+ "type": "string",
2619
+ "description": "OSSA manifest path to derive content from (e.g., 'spec.tools', 'spec.constraints')"
2620
+ },
2621
+ "custom": {
2622
+ "type": "string",
2623
+ "description": "Custom markdown content for this section (overrides source)"
2624
+ },
2625
+ "title": {
2626
+ "type": "string",
2627
+ "description": "Custom title for the section header"
2628
+ },
2629
+ "append": {
2630
+ "type": "string",
2631
+ "description": "Additional content to append after auto-generated content"
2632
+ }
2633
+ },
2634
+ "additionalProperties": false
2635
+ },
2636
+ "Security": {
2637
+ "type": "object",
2638
+ "description": "Security configuration for agent operations",
2639
+ "properties": {
2640
+ "authentication": {
2641
+ "type": "object",
2642
+ "properties": {
2643
+ "required": {
2644
+ "type": "boolean",
2645
+ "default": true,
2646
+ "description": "Whether authentication is required"
2647
+ },
2648
+ "methods": {
2649
+ "type": "array",
2650
+ "items": {
2651
+ "type": "string",
2652
+ "enum": ["bearer", "oauth2", "mtls", "apikey", "jwt", "saml"]
2653
+ },
2654
+ "description": "Supported authentication methods"
2655
+ },
2656
+ "mfa_required": {
2657
+ "type": "boolean",
2658
+ "default": false,
2659
+ "description": "Require multi-factor authentication"
2660
+ }
2661
+ }
2662
+ },
2663
+ "authorization": {
2664
+ "type": "object",
2665
+ "properties": {
2666
+ "model": {
2667
+ "type": "string",
2668
+ "enum": ["rbac", "abac", "acl", "custom"],
2669
+ "default": "rbac",
2670
+ "description": "Authorization model"
2671
+ },
2672
+ "roles": {
2673
+ "type": "array",
2674
+ "items": {
2675
+ "type": "string"
2676
+ },
2677
+ "description": "Required roles for agent access"
2678
+ },
2679
+ "permissions": {
2680
+ "type": "array",
2681
+ "items": {
2682
+ "type": "string"
2683
+ },
2684
+ "description": "Required permissions"
2685
+ }
2686
+ }
2687
+ },
2688
+ "encryption": {
2689
+ "type": "object",
2690
+ "properties": {
2691
+ "in_transit": {
2692
+ "type": "object",
2693
+ "properties": {
2694
+ "enabled": {
2695
+ "type": "boolean",
2696
+ "default": true
2697
+ },
2698
+ "tls_version": {
2699
+ "type": "string",
2700
+ "enum": ["1.2", "1.3"],
2701
+ "default": "1.3"
2702
+ },
2703
+ "cipher_suites": {
2704
+ "type": "array",
2705
+ "items": {
2706
+ "type": "string"
2707
+ }
2708
+ }
2709
+ }
2710
+ },
2711
+ "at_rest": {
2712
+ "type": "object",
2713
+ "properties": {
2714
+ "enabled": {
2715
+ "type": "boolean",
2716
+ "default": false
2717
+ },
2718
+ "algorithm": {
2719
+ "type": "string",
2720
+ "enum": ["aes-256-gcm", "aes-256-cbc", "chacha20-poly1305"],
2721
+ "default": "aes-256-gcm"
2722
+ },
2723
+ "key_management": {
2724
+ "type": "string",
2725
+ "enum": ["kms", "vault", "hsm", "manual"],
2726
+ "description": "Key management system"
2727
+ }
2728
+ }
2729
+ }
2730
+ }
2731
+ },
2732
+ "secrets": {
2733
+ "type": "object",
2734
+ "properties": {
2735
+ "provider": {
2736
+ "type": "string",
2737
+ "enum": ["vault", "aws_secrets_manager", "azure_key_vault", "gcp_secret_manager", "kubernetes"],
2738
+ "description": "Secret management provider"
2739
+ },
2740
+ "rotation": {
2741
+ "type": "object",
2742
+ "properties": {
2743
+ "enabled": {
2744
+ "type": "boolean",
2745
+ "default": false
2746
+ },
2747
+ "interval_days": {
2748
+ "type": "integer",
2749
+ "minimum": 1,
2750
+ "description": "Secret rotation interval in days"
2751
+ }
2752
+ }
2753
+ }
2754
+ }
2755
+ },
2756
+ "audit": {
2757
+ "type": "object",
2758
+ "properties": {
2759
+ "enabled": {
2760
+ "type": "boolean",
2761
+ "default": true
2762
+ },
2763
+ "log_level": {
2764
+ "type": "string",
2765
+ "enum": ["minimal", "standard", "detailed"],
2766
+ "default": "standard"
2767
+ },
2768
+ "retention_days": {
2769
+ "type": "integer",
2770
+ "minimum": 1,
2771
+ "description": "Audit log retention period"
2772
+ },
2773
+ "pii_redaction": {
2774
+ "type": "boolean",
2775
+ "default": true,
2776
+ "description": "Redact PII from audit logs"
2777
+ }
2778
+ }
2779
+ },
2780
+ "compliance": {
2781
+ "type": "object",
2782
+ "properties": {
2783
+ "frameworks": {
2784
+ "type": "array",
2785
+ "items": {
2786
+ "type": "string",
2787
+ "enum": ["soc2", "hipaa", "gdpr", "fedramp", "pci-dss", "iso27001"]
2788
+ },
2789
+ "description": "Compliance frameworks this agent adheres to"
2790
+ },
2791
+ "data_residency": {
2792
+ "type": "array",
2793
+ "items": {
2794
+ "type": "string"
2795
+ },
2796
+ "description": "Allowed data residency regions (ISO 3166-1 alpha-2)"
2797
+ }
2798
+ }
2799
+ }
2800
+ },
2801
+ "additionalProperties": false
2802
+ },
2803
+ "Reliability": {
2804
+ "type": "object",
2805
+ "description": "Reliability and resilience configuration",
2806
+ "properties": {
2807
+ "sla": {
2808
+ "type": "object",
2809
+ "properties": {
2810
+ "availability_percent": {
2811
+ "type": "number",
2812
+ "minimum": 0,
2813
+ "maximum": 100,
2814
+ "description": "Target availability percentage (e.g., 99.9)"
2815
+ },
2816
+ "latency_p50_ms": {
2817
+ "type": "number",
2818
+ "minimum": 0,
2819
+ "description": "P50 latency target in milliseconds"
2820
+ },
2821
+ "latency_p95_ms": {
2822
+ "type": "number",
2823
+ "minimum": 0,
2824
+ "description": "P95 latency target in milliseconds"
2825
+ },
2826
+ "latency_p99_ms": {
2827
+ "type": "number",
2828
+ "minimum": 0,
2829
+ "description": "P99 latency target in milliseconds"
2830
+ },
2831
+ "error_rate_percent": {
2832
+ "type": "number",
2833
+ "minimum": 0,
2834
+ "maximum": 100,
2835
+ "description": "Maximum acceptable error rate percentage"
2836
+ }
2837
+ }
2838
+ },
2839
+ "circuit_breaker": {
2840
+ "type": "object",
2841
+ "properties": {
2842
+ "enabled": {
2843
+ "type": "boolean",
2844
+ "default": true
2845
+ },
2846
+ "failure_threshold": {
2847
+ "type": "integer",
2848
+ "minimum": 1,
2849
+ "default": 5,
2850
+ "description": "Number of failures before opening circuit"
2851
+ },
2852
+ "timeout_seconds": {
2853
+ "type": "number",
2854
+ "minimum": 0,
2855
+ "default": 60,
2856
+ "description": "Time to wait before attempting to close circuit"
2857
+ },
2858
+ "half_open_requests": {
2859
+ "type": "integer",
2860
+ "minimum": 1,
2861
+ "default": 3,
2862
+ "description": "Number of test requests in half-open state"
2863
+ }
2864
+ }
2865
+ },
2866
+ "health_check": {
2867
+ "type": "object",
2868
+ "properties": {
2869
+ "enabled": {
2870
+ "type": "boolean",
2871
+ "default": true
2872
+ },
2873
+ "endpoint": {
2874
+ "type": "string",
2875
+ "description": "Health check endpoint path"
2876
+ },
2877
+ "interval_seconds": {
2878
+ "type": "integer",
2879
+ "minimum": 1,
2880
+ "default": 30,
2881
+ "description": "Health check interval"
2882
+ },
2883
+ "timeout_seconds": {
2884
+ "type": "integer",
2885
+ "minimum": 1,
2886
+ "default": 5
2887
+ },
2888
+ "unhealthy_threshold": {
2889
+ "type": "integer",
2890
+ "minimum": 1,
2891
+ "default": 3,
2892
+ "description": "Consecutive failures before marking unhealthy"
2893
+ },
2894
+ "healthy_threshold": {
2895
+ "type": "integer",
2896
+ "minimum": 1,
2897
+ "default": 2,
2898
+ "description": "Consecutive successes before marking healthy"
2899
+ }
2900
+ }
2901
+ },
2902
+ "failover": {
2903
+ "type": "object",
2904
+ "properties": {
2905
+ "enabled": {
2906
+ "type": "boolean",
2907
+ "default": false
2908
+ },
2909
+ "strategy": {
2910
+ "type": "string",
2911
+ "enum": ["active-passive", "active-active", "round-robin"],
2912
+ "default": "active-passive"
2913
+ },
2914
+ "fallback_agents": {
2915
+ "type": "array",
2916
+ "items": {
2917
+ "type": "string"
2918
+ },
2919
+ "description": "List of fallback agent IDs"
2920
+ }
2921
+ }
2922
+ },
2923
+ "disaster_recovery": {
2924
+ "type": "object",
2925
+ "properties": {
2926
+ "enabled": {
2927
+ "type": "boolean",
2928
+ "default": false
2929
+ },
2930
+ "rpo_minutes": {
2931
+ "type": "integer",
2932
+ "minimum": 0,
2933
+ "description": "Recovery Point Objective in minutes"
2934
+ },
2935
+ "rto_minutes": {
2936
+ "type": "integer",
2937
+ "minimum": 0,
2938
+ "description": "Recovery Time Objective in minutes"
2939
+ },
2940
+ "backup_regions": {
2941
+ "type": "array",
2942
+ "items": {
2943
+ "type": "string"
2944
+ },
2945
+ "description": "Backup deployment regions"
2946
+ }
2947
+ }
2948
+ }
2949
+ },
2950
+ "additionalProperties": false
2951
+ },
2952
+ "Collaboration": {
2953
+ "type": "object",
2954
+ "description": "Multi-agent collaboration and orchestration",
2955
+ "properties": {
2956
+ "mode": {
2957
+ "type": "string",
2958
+ "enum": ["standalone", "collaborative", "orchestrated"],
2959
+ "default": "standalone",
2960
+ "description": "Agent collaboration mode"
2961
+ },
2962
+ "handoffs": {
2963
+ "type": "array",
2964
+ "description": "Agent handoff configuration",
2965
+ "items": {
2966
+ "type": "object",
2967
+ "properties": {
2968
+ "target_agent": {
2969
+ "type": "string",
2970
+ "description": "Target agent ID for handoff"
2971
+ },
2972
+ "conditions": {
2973
+ "type": "array",
2974
+ "items": {
2975
+ "type": "string"
2976
+ },
2977
+ "description": "Conditions that trigger handoff"
2978
+ },
2979
+ "context_transfer": {
2980
+ "type": "string",
2981
+ "enum": ["full", "partial", "minimal"],
2982
+ "default": "partial",
2983
+ "description": "How much context to transfer"
2984
+ }
2985
+ }
2986
+ }
2987
+ },
2988
+ "delegation": {
2989
+ "type": "object",
2990
+ "properties": {
2991
+ "enabled": {
2992
+ "type": "boolean",
2993
+ "default": false
2994
+ },
2995
+ "allowed_agents": {
2996
+ "type": "array",
2997
+ "items": {
2998
+ "type": "string"
2999
+ },
3000
+ "description": "Agents this agent can delegate to"
3001
+ },
3002
+ "max_depth": {
3003
+ "type": "integer",
3004
+ "minimum": 1,
3005
+ "default": 3,
3006
+ "description": "Maximum delegation depth"
3007
+ }
3008
+ }
3009
+ },
3010
+ "communication": {
3011
+ "type": "object",
3012
+ "properties": {
3013
+ "protocols": {
3014
+ "type": "array",
3015
+ "items": {
3016
+ "type": "string",
3017
+ "enum": ["a2a", "mcp", "http", "grpc", "websocket"]
3018
+ },
3019
+ "description": "Supported inter-agent communication protocols"
3020
+ },
3021
+ "message_format": {
3022
+ "type": "string",
3023
+ "enum": ["json", "protobuf", "msgpack"],
3024
+ "default": "json"
3025
+ }
3026
+ }
3027
+ },
3028
+ "orchestration": {
3029
+ "type": "object",
3030
+ "properties": {
3031
+ "role": {
3032
+ "type": "string",
3033
+ "enum": ["orchestrator", "worker", "both"],
3034
+ "description": "Agent's role in orchestration"
3035
+ },
3036
+ "workflow_engine": {
3037
+ "type": "string",
3038
+ "enum": ["langgraph", "autogen", "crewai", "custom"],
3039
+ "description": "Workflow orchestration engine"
3040
+ }
3041
+ }
3042
+ }
3043
+ },
3044
+ "additionalProperties": false
3045
+ },
3046
+ "Safety": {
3047
+ "type": "object",
3048
+ "description": "Safety and content moderation configuration",
3049
+ "properties": {
3050
+ "content_filtering": {
3051
+ "type": "object",
3052
+ "properties": {
3053
+ "enabled": {
3054
+ "type": "boolean",
3055
+ "default": true
3056
+ },
3057
+ "categories": {
3058
+ "type": "array",
3059
+ "items": {
3060
+ "type": "string",
3061
+ "enum": ["hate", "violence", "sexual", "self-harm", "profanity", "pii"]
3062
+ },
3063
+ "description": "Content categories to filter"
3064
+ },
3065
+ "threshold": {
3066
+ "type": "string",
3067
+ "enum": ["low", "medium", "high"],
3068
+ "default": "medium",
3069
+ "description": "Filtering sensitivity threshold"
3070
+ },
3071
+ "action": {
3072
+ "type": "string",
3073
+ "enum": ["block", "warn", "log"],
3074
+ "default": "block",
3075
+ "description": "Action when harmful content detected"
3076
+ }
3077
+ }
3078
+ },
3079
+ "pii_detection": {
3080
+ "type": "object",
3081
+ "properties": {
3082
+ "enabled": {
3083
+ "type": "boolean",
3084
+ "default": true
3085
+ },
3086
+ "types": {
3087
+ "type": "array",
3088
+ "items": {
3089
+ "type": "string",
3090
+ "enum": ["email", "phone", "ssn", "credit_card", "ip_address", "name", "address"]
3091
+ },
3092
+ "description": "PII types to detect"
3093
+ },
3094
+ "action": {
3095
+ "type": "string",
3096
+ "enum": ["redact", "block", "warn", "log"],
3097
+ "default": "redact",
3098
+ "description": "Action when PII detected"
3099
+ }
3100
+ }
3101
+ },
3102
+ "rate_limiting": {
3103
+ "type": "object",
3104
+ "properties": {
3105
+ "enabled": {
3106
+ "type": "boolean",
3107
+ "default": true
3108
+ },
3109
+ "requests_per_minute": {
3110
+ "type": "integer",
3111
+ "minimum": 1,
3112
+ "description": "Maximum requests per minute per user"
3113
+ },
3114
+ "requests_per_hour": {
3115
+ "type": "integer",
3116
+ "minimum": 1,
3117
+ "description": "Maximum requests per hour per user"
3118
+ },
3119
+ "burst_limit": {
3120
+ "type": "integer",
3121
+ "minimum": 1,
3122
+ "description": "Maximum burst requests"
3123
+ }
3124
+ }
3125
+ },
3126
+ "guardrails": {
3127
+ "type": "object",
3128
+ "properties": {
3129
+ "enabled": {
3130
+ "type": "boolean",
3131
+ "default": true
3132
+ },
3133
+ "policies": {
3134
+ "type": "array",
3135
+ "items": {
3136
+ "type": "object",
3137
+ "properties": {
3138
+ "name": {
3139
+ "type": "string"
3140
+ },
3141
+ "type": {
3142
+ "type": "string",
3143
+ "enum": ["input", "output", "both"]
3144
+ },
3145
+ "rules": {
3146
+ "type": "array",
3147
+ "items": {
3148
+ "type": "string"
3149
+ }
3150
+ }
3151
+ }
3152
+ },
3153
+ "description": "Safety guardrail policies"
3154
+ },
3155
+ "max_tool_calls": {
3156
+ "type": "integer",
3157
+ "minimum": 1,
3158
+ "description": "Maximum tool calls per execution"
3159
+ },
3160
+ "max_execution_time_seconds": {
3161
+ "type": "integer",
3162
+ "minimum": 1,
3163
+ "description": "Maximum execution time"
3164
+ }
3165
+ }
3166
+ },
3167
+ "human_in_loop": {
3168
+ "type": "object",
3169
+ "properties": {
3170
+ "enabled": {
3171
+ "type": "boolean",
3172
+ "default": false
3173
+ },
3174
+ "triggers": {
3175
+ "type": "array",
3176
+ "items": {
3177
+ "type": "string",
3178
+ "enum": ["high_risk_action", "low_confidence", "policy_violation", "user_request"]
3179
+ },
3180
+ "description": "Conditions that trigger human review"
3181
+ },
3182
+ "timeout_seconds": {
3183
+ "type": "integer",
3184
+ "minimum": 1,
3185
+ "description": "Timeout waiting for human response"
3186
+ }
3187
+ }
3188
+ }
3189
+ },
3190
+ "additionalProperties": false
3191
+ },
3192
+ "Deployment": {
3193
+ "type": "object",
3194
+ "description": "Deployment and lifecycle management configuration",
3195
+ "properties": {
3196
+ "strategy": {
3197
+ "type": "string",
3198
+ "enum": ["rolling", "blue-green", "canary", "recreate"],
3199
+ "default": "rolling",
3200
+ "description": "Deployment strategy"
3201
+ },
3202
+ "canary": {
3203
+ "type": "object",
3204
+ "properties": {
3205
+ "enabled": {
3206
+ "type": "boolean",
3207
+ "default": false
3208
+ },
3209
+ "initial_traffic_percent": {
3210
+ "type": "number",
3211
+ "minimum": 0,
3212
+ "maximum": 100,
3213
+ "default": 10,
3214
+ "description": "Initial traffic percentage for canary"
3215
+ },
3216
+ "increment_percent": {
3217
+ "type": "number",
3218
+ "minimum": 0,
3219
+ "maximum": 100,
3220
+ "default": 10,
3221
+ "description": "Traffic increment per step"
3222
+ },
3223
+ "interval_minutes": {
3224
+ "type": "integer",
3225
+ "minimum": 1,
3226
+ "default": 5,
3227
+ "description": "Time between traffic increments"
3228
+ },
3229
+ "success_criteria": {
3230
+ "type": "object",
3231
+ "properties": {
3232
+ "error_rate_threshold": {
3233
+ "type": "number",
3234
+ "minimum": 0,
3235
+ "maximum": 100
3236
+ },
3237
+ "latency_p95_threshold_ms": {
3238
+ "type": "number",
3239
+ "minimum": 0
3240
+ }
3241
+ }
3242
+ }
3243
+ }
3244
+ },
3245
+ "rollback": {
3246
+ "type": "object",
3247
+ "properties": {
3248
+ "enabled": {
3249
+ "type": "boolean",
3250
+ "default": true
3251
+ },
3252
+ "automatic": {
3253
+ "type": "boolean",
3254
+ "default": false,
3255
+ "description": "Automatically rollback on failure"
3256
+ },
3257
+ "triggers": {
3258
+ "type": "array",
3259
+ "items": {
3260
+ "type": "string",
3261
+ "enum": ["error_rate", "latency", "health_check", "manual"]
3262
+ },
3263
+ "description": "Conditions that trigger rollback"
3264
+ }
3265
+ }
3266
+ },
3267
+ "versioning": {
3268
+ "type": "object",
3269
+ "properties": {
3270
+ "scheme": {
3271
+ "type": "string",
3272
+ "enum": ["semver", "timestamp", "git_sha"],
3273
+ "default": "semver"
3274
+ },
3275
+ "compatibility": {
3276
+ "type": "string",
3277
+ "enum": ["backward", "forward", "both", "none"],
3278
+ "default": "backward",
3279
+ "description": "Version compatibility mode"
3280
+ }
3281
+ }
3282
+ },
3283
+ "testing": {
3284
+ "type": "object",
3285
+ "properties": {
3286
+ "dry_run": {
3287
+ "type": "boolean",
3288
+ "default": false,
3289
+ "description": "Enable dry-run mode for testing"
3290
+ },
3291
+ "shadow_mode": {
3292
+ "type": "boolean",
3293
+ "default": false,
3294
+ "description": "Run in shadow mode (process but don't act)"
3295
+ },
3296
+ "test_traffic_percent": {
3297
+ "type": "number",
3298
+ "minimum": 0,
3299
+ "maximum": 100,
3300
+ "description": "Percentage of traffic to use for testing"
3301
+ }
3302
+ }
3303
+ },
3304
+ "lifecycle": {
3305
+ "type": "object",
3306
+ "properties": {
3307
+ "startup_probe": {
3308
+ "type": "object",
3309
+ "properties": {
3310
+ "enabled": {
3311
+ "type": "boolean",
3312
+ "default": true
3313
+ },
3314
+ "initial_delay_seconds": {
3315
+ "type": "integer",
3316
+ "minimum": 0,
3317
+ "default": 0
3318
+ },
3319
+ "period_seconds": {
3320
+ "type": "integer",
3321
+ "minimum": 1,
3322
+ "default": 10
3323
+ },
3324
+ "failure_threshold": {
3325
+ "type": "integer",
3326
+ "minimum": 1,
3327
+ "default": 3
3328
+ }
3329
+ }
3330
+ },
3331
+ "readiness_probe": {
3332
+ "type": "object",
3333
+ "properties": {
3334
+ "enabled": {
3335
+ "type": "boolean",
3336
+ "default": true
3337
+ },
3338
+ "period_seconds": {
3339
+ "type": "integer",
3340
+ "minimum": 1,
3341
+ "default": 10
3342
+ }
3343
+ }
3344
+ },
3345
+ "liveness_probe": {
3346
+ "type": "object",
3347
+ "properties": {
3348
+ "enabled": {
3349
+ "type": "boolean",
3350
+ "default": true
3351
+ },
3352
+ "period_seconds": {
3353
+ "type": "integer",
3354
+ "minimum": 1,
3355
+ "default": 30
3356
+ }
3357
+ }
3358
+ },
3359
+ "graceful_shutdown": {
3360
+ "type": "object",
3361
+ "properties": {
3362
+ "enabled": {
3363
+ "type": "boolean",
3364
+ "default": true
3365
+ },
3366
+ "timeout_seconds": {
3367
+ "type": "integer",
3368
+ "minimum": 0,
3369
+ "default": 30,
3370
+ "description": "Time to wait for graceful shutdown"
3371
+ }
3372
+ }
3373
+ }
3374
+ }
3375
+ }
3376
+ },
3377
+ "additionalProperties": false
3378
+ },
3379
+ "Reasoning": {
3380
+ "type": "object",
3381
+ "description": "Reasoning strategy configuration for agent decision-making (ReAct, CoT, ToT)",
3382
+ "properties": {
3383
+ "strategy": {
3384
+ "type": "string",
3385
+ "enum": ["react", "cot", "tree_of_thought", "custom"],
3386
+ "default": "react",
3387
+ "description": "Reasoning strategy: ReAct (Reason+Act), Chain of Thought, Tree of Thought, or custom"
3388
+ },
3389
+ "max_steps": {
3390
+ "type": "integer",
3391
+ "minimum": 1,
3392
+ "maximum": 100,
3393
+ "default": 10,
3394
+ "description": "Maximum reasoning steps before termination"
3395
+ },
3396
+ "max_depth": {
3397
+ "type": "integer",
3398
+ "minimum": 1,
3399
+ "maximum": 20,
3400
+ "default": 5,
3401
+ "description": "Maximum depth for tree-based strategies"
3402
+ },
3403
+ "trace_enabled": {
3404
+ "type": "boolean",
3405
+ "default": true,
3406
+ "description": "Export reasoning traces to observability system"
3407
+ },
3408
+ "export_format": {
3409
+ "type": "string",
3410
+ "enum": ["otel", "json", "markdown"],
3411
+ "default": "otel",
3412
+ "description": "Format for reasoning trace export"
3413
+ },
3414
+ "self_reflection": {
3415
+ "type": "object",
3416
+ "description": "Self-reflection configuration for reasoning verification",
3417
+ "properties": {
3418
+ "enabled": {
3419
+ "type": "boolean",
3420
+ "default": false,
3421
+ "description": "Enable self-reflection during reasoning"
3422
+ },
3423
+ "trigger": {
3424
+ "type": "string",
3425
+ "enum": ["every_step", "on_failure", "on_uncertainty"],
3426
+ "default": "on_failure",
3427
+ "description": "When to trigger self-reflection"
3428
+ },
3429
+ "threshold": {
3430
+ "type": "number",
3431
+ "minimum": 0,
3432
+ "maximum": 1,
3433
+ "default": 0.7,
3434
+ "description": "Confidence threshold for uncertainty-based reflection"
3435
+ }
3436
+ }
3437
+ }
3438
+ },
3439
+ "additionalProperties": false
3440
+ },
3441
+ "Prompts": {
3442
+ "type": "object",
3443
+ "description": "Structured prompt management with templating and versioning",
3444
+ "properties": {
3445
+ "system": {
3446
+ "type": "object",
3447
+ "description": "System prompt configuration",
3448
+ "properties": {
3449
+ "template": {
3450
+ "type": "string",
3451
+ "description": "Path to system prompt template file (relative to manifest)"
3452
+ },
3453
+ "version": {
3454
+ "type": "string",
3455
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$",
3456
+ "description": "Semantic version of prompt template for A/B testing"
3457
+ },
3458
+ "variables": {
3459
+ "type": "object",
3460
+ "additionalProperties": {
3461
+ "type": "string"
3462
+ },
3463
+ "description": "Template variables for interpolation"
3464
+ }
3465
+ }
3466
+ },
3467
+ "user": {
3468
+ "type": "object",
3469
+ "description": "User prompt template configuration",
3470
+ "properties": {
3471
+ "template": {
3472
+ "type": "string",
3473
+ "description": "Path to user prompt template file"
3474
+ },
3475
+ "variables": {
3476
+ "type": "object",
3477
+ "additionalProperties": {
3478
+ "type": "string"
3479
+ }
3480
+ }
3481
+ }
3482
+ },
3483
+ "few_shot_examples": {
3484
+ "type": "array",
3485
+ "description": "Few-shot examples for in-context learning",
3486
+ "maxItems": 20,
3487
+ "items": {
3488
+ "type": "object",
3489
+ "required": ["input", "output"],
3490
+ "properties": {
3491
+ "input": {
3492
+ "type": "string",
3493
+ "description": "Example user input"
3494
+ },
3495
+ "output": {
3496
+ "type": "string",
3497
+ "description": "Expected agent output"
3498
+ },
3499
+ "context": {
3500
+ "type": "string",
3501
+ "description": "Optional context for the example"
3502
+ }
3503
+ }
3504
+ }
3505
+ },
3506
+ "registry": {
3507
+ "type": "object",
3508
+ "description": "External prompt registry configuration",
3509
+ "properties": {
3510
+ "enabled": {
3511
+ "type": "boolean",
3512
+ "default": false
3513
+ },
3514
+ "provider": {
3515
+ "type": "string",
3516
+ "enum": ["local", "langfuse", "promptlayer", "custom"],
3517
+ "description": "Prompt registry provider"
3518
+ },
3519
+ "endpoint": {
3520
+ "type": "string",
3521
+ "format": "uri",
3522
+ "description": "Registry API endpoint"
3523
+ }
3524
+ }
3525
+ }
3526
+ },
3527
+ "additionalProperties": false
3528
+ },
3529
+ "KnowledgeGraph": {
3530
+ "type": "object",
3531
+ "description": "Knowledge graph integration for entity relationships and persistent memory",
3532
+ "properties": {
3533
+ "enabled": {
3534
+ "type": "boolean",
3535
+ "default": false,
3536
+ "description": "Enable knowledge graph integration"
3537
+ },
3538
+ "provider": {
3539
+ "type": "string",
3540
+ "enum": ["neo4j", "neptune", "dgraph", "memgraph", "custom"],
3541
+ "description": "Knowledge graph provider"
3542
+ },
3543
+ "connection": {
3544
+ "type": "object",
3545
+ "description": "Connection configuration",
3546
+ "required": ["endpoint"],
3547
+ "properties": {
3548
+ "endpoint": {
3549
+ "type": "string",
3550
+ "description": "Connection endpoint URI (e.g., bolt://localhost:7687)"
3551
+ },
3552
+ "database": {
3553
+ "type": "string",
3554
+ "description": "Database name"
3555
+ },
3556
+ "credentials_ref": {
3557
+ "type": "string",
3558
+ "description": "Reference to credentials (K8s secret, env var name)"
3559
+ }
3560
+ }
3561
+ },
3562
+ "schema": {
3563
+ "type": "object",
3564
+ "description": "Graph schema constraints",
3565
+ "properties": {
3566
+ "entity_types": {
3567
+ "type": "array",
3568
+ "items": {
3569
+ "type": "string"
3570
+ },
3571
+ "description": "Allowed entity types in the graph",
3572
+ "examples": [["Agent", "Tool", "Session", "Interaction"]]
3573
+ },
3574
+ "relationship_types": {
3575
+ "type": "array",
3576
+ "items": {
3577
+ "type": "string"
3578
+ },
3579
+ "description": "Allowed relationship types",
3580
+ "examples": [["INVOKED", "DELEGATED_TO", "RESPONDED_TO"]]
3581
+ }
3582
+ }
3583
+ },
3584
+ "sync": {
3585
+ "type": "object",
3586
+ "description": "Synchronization configuration",
3587
+ "properties": {
3588
+ "mode": {
3589
+ "type": "string",
3590
+ "enum": ["real_time", "batch", "on_demand"],
3591
+ "default": "batch",
3592
+ "description": "Sync mode"
3593
+ },
3594
+ "batch_size": {
3595
+ "type": "integer",
3596
+ "minimum": 1,
3597
+ "default": 100,
3598
+ "description": "Number of entities per batch"
3599
+ },
3600
+ "interval": {
3601
+ "type": "string",
3602
+ "pattern": "^\\d+[smh]$",
3603
+ "description": "Sync interval (e.g., 60s, 5m, 1h)"
3604
+ }
3605
+ }
3606
+ }
3607
+ },
3608
+ "additionalProperties": false
3609
+ },
3610
+ "Identity": {
3611
+ "type": "object",
3612
+ "description": "Agent identity configuration for tracing and observability. Defines how runtime identifiers are generated for debugging multi-instance deployments.",
3613
+ "properties": {
3614
+ "instance_id": {
3615
+ "type": "object",
3616
+ "description": "Unique identifier for this agent instance (distinguishes same agent on different pods)",
3617
+ "required": ["generation", "scope"],
3618
+ "properties": {
3619
+ "generation": {
3620
+ "type": "string",
3621
+ "enum": ["uuid_v4", "ulid", "custom"],
3622
+ "default": "uuid_v4",
3623
+ "description": "ID generation strategy"
3624
+ },
3625
+ "scope": {
3626
+ "type": "string",
3627
+ "enum": ["pod", "process", "request"],
3628
+ "default": "pod",
3629
+ "description": "When to generate new instance ID"
3630
+ },
3631
+ "custom_generator": {
3632
+ "type": "string",
3633
+ "description": "Custom generator function reference (when generation=custom)"
3634
+ }
3635
+ }
3636
+ },
3637
+ "session_id": {
3638
+ "type": "object",
3639
+ "description": "Identifier for conversation/workflow session",
3640
+ "properties": {
3641
+ "generation": {
3642
+ "type": "string",
3643
+ "enum": ["uuid_v4", "ulid", "custom"],
3644
+ "default": "uuid_v4"
3645
+ },
3646
+ "scope": {
3647
+ "type": "string",
3648
+ "enum": ["conversation", "workflow", "batch"],
3649
+ "default": "conversation",
3650
+ "description": "Session boundary"
3651
+ }
3652
+ }
3653
+ },
3654
+ "interaction_id": {
3655
+ "type": "object",
3656
+ "description": "Unique identifier for each prompt/response turn (critical for log correlation)",
3657
+ "required": ["generation", "scope"],
3658
+ "properties": {
3659
+ "generation": {
3660
+ "type": "string",
3661
+ "enum": ["uuid_v4", "ulid", "custom"],
3662
+ "default": "uuid_v4"
3663
+ },
3664
+ "scope": {
3665
+ "type": "string",
3666
+ "enum": ["turn", "request"],
3667
+ "default": "turn",
3668
+ "description": "Interaction boundary"
3669
+ }
3670
+ }
3671
+ },
3672
+ "propagation": {
3673
+ "type": "object",
3674
+ "description": "How identity propagates across agent boundaries",
3675
+ "properties": {
3676
+ "inherit_session": {
3677
+ "type": "boolean",
3678
+ "default": true,
3679
+ "description": "Child agents inherit parent session_id"
3680
+ },
3681
+ "trace_context": {
3682
+ "type": "string",
3683
+ "enum": ["w3c", "b3", "jaeger", "none"],
3684
+ "default": "w3c",
3685
+ "description": "Trace context propagation format"
3686
+ },
3687
+ "baggage": {
3688
+ "type": "boolean",
3689
+ "default": true,
3690
+ "description": "Enable W3C Baggage for custom context"
3691
+ }
3692
+ }
3693
+ }
3694
+ },
3695
+ "required": ["instance_id", "interaction_id"],
3696
+ "additionalProperties": false
3697
+ }
3698
+ }
3699
+ }