coreason-manifest 0.10.0__py3-none-any.whl → 0.12.0__py3-none-any.whl

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 (30) hide show
  1. coreason_manifest/__init__.py +35 -82
  2. coreason_manifest/{definitions/base.py → common.py} +18 -1
  3. coreason_manifest/governance.py +83 -0
  4. coreason_manifest/schemas/coreason-v2.schema.json +462 -0
  5. coreason_manifest/v2/__init__.py +1 -0
  6. coreason_manifest/v2/governance.py +144 -0
  7. coreason_manifest/v2/io.py +132 -0
  8. coreason_manifest/v2/resolver.py +67 -0
  9. coreason_manifest/v2/spec/__init__.py +1 -0
  10. coreason_manifest/v2/spec/contracts.py +34 -0
  11. coreason_manifest/v2/spec/definitions.py +196 -0
  12. coreason_manifest/v2/validator.py +48 -0
  13. {coreason_manifest-0.10.0.dist-info → coreason_manifest-0.12.0.dist-info}/METADATA +48 -71
  14. coreason_manifest-0.12.0.dist-info/RECORD +20 -0
  15. coreason_manifest/definitions/__init__.py +0 -60
  16. coreason_manifest/definitions/agent.py +0 -370
  17. coreason_manifest/definitions/audit.py +0 -181
  18. coreason_manifest/definitions/events.py +0 -423
  19. coreason_manifest/definitions/message.py +0 -188
  20. coreason_manifest/definitions/simulation.py +0 -79
  21. coreason_manifest/definitions/simulation_config.py +0 -46
  22. coreason_manifest/definitions/topology.py +0 -341
  23. coreason_manifest/recipes.py +0 -84
  24. coreason_manifest/schemas/agent.schema.json +0 -1051
  25. coreason_manifest/schemas/recipe.schema.json +0 -813
  26. coreason_manifest/v1/__init__.py +0 -15
  27. coreason_manifest-0.10.0.dist-info/RECORD +0 -22
  28. {coreason_manifest-0.10.0.dist-info → coreason_manifest-0.12.0.dist-info}/WHEEL +0 -0
  29. {coreason_manifest-0.10.0.dist-info → coreason_manifest-0.12.0.dist-info}/licenses/LICENSE +0 -0
  30. {coreason_manifest-0.10.0.dist-info → coreason_manifest-0.12.0.dist-info}/licenses/NOTICE +0 -0
@@ -1,1051 +0,0 @@
1
- {
2
- "$defs": {
3
- "AgentDependencies": {
4
- "additionalProperties": false,
5
- "description": "External dependencies for the Agent.\n\nAttributes:\n tools: List of MCP tool requirements.\n libraries: List of Python packages required (if code execution is allowed).",
6
- "properties": {
7
- "tools": {
8
- "description": "List of MCP tool requirements.",
9
- "items": {
10
- "anyOf": [
11
- {
12
- "$ref": "#/$defs/ToolRequirement"
13
- },
14
- {
15
- "$ref": "#/$defs/InlineToolDefinition"
16
- }
17
- ]
18
- },
19
- "title": "Tools",
20
- "type": "array"
21
- },
22
- "libraries": {
23
- "description": "List of Python packages required (if code execution is allowed).",
24
- "items": {
25
- "type": "string"
26
- },
27
- "title": "Libraries",
28
- "type": "array"
29
- }
30
- },
31
- "title": "AgentDependencies",
32
- "type": "object"
33
- },
34
- "AgentInterface": {
35
- "additionalProperties": false,
36
- "description": "Interface definition for the Agent.\n\nAttributes:\n inputs: Typed arguments the agent accepts (JSON Schema).\n outputs: Typed structure of the result.",
37
- "properties": {
38
- "inputs": {
39
- "additionalProperties": true,
40
- "description": "Typed arguments the agent accepts (JSON Schema).",
41
- "title": "Inputs",
42
- "type": "object"
43
- },
44
- "outputs": {
45
- "additionalProperties": true,
46
- "description": "Typed structure of the result.",
47
- "title": "Outputs",
48
- "type": "object"
49
- },
50
- "injected_params": {
51
- "description": "List of parameters injected by the system.",
52
- "items": {
53
- "type": "string"
54
- },
55
- "title": "Injected Params",
56
- "type": "array"
57
- }
58
- },
59
- "required": [
60
- "inputs",
61
- "outputs"
62
- ],
63
- "title": "AgentInterface",
64
- "type": "object"
65
- },
66
- "AgentMetadata": {
67
- "additionalProperties": false,
68
- "description": "Metadata for the Agent.\n\nAttributes:\n id: Unique Identifier for the Agent (UUID).\n version: Semantic Version of the Agent.\n name: Name of the Agent.\n author: Author of the Agent.\n created_at: Creation timestamp (ISO 8601).",
69
- "properties": {
70
- "id": {
71
- "description": "Unique Identifier for the Agent (UUID).",
72
- "format": "uuid",
73
- "title": "Id",
74
- "type": "string"
75
- },
76
- "version": {
77
- "description": "Semantic Version of the Agent.",
78
- "pattern": "^[vV]*(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-]+)*))?$",
79
- "title": "Version",
80
- "type": "string"
81
- },
82
- "name": {
83
- "description": "Name of the Agent.",
84
- "minLength": 1,
85
- "title": "Name",
86
- "type": "string"
87
- },
88
- "author": {
89
- "description": "Author of the Agent.",
90
- "minLength": 1,
91
- "title": "Author",
92
- "type": "string"
93
- },
94
- "created_at": {
95
- "description": "Creation timestamp (ISO 8601).",
96
- "format": "date-time",
97
- "title": "Created At",
98
- "type": "string"
99
- },
100
- "requires_auth": {
101
- "default": false,
102
- "description": "Whether the agent requires user authentication.",
103
- "title": "Requires Auth",
104
- "type": "boolean"
105
- }
106
- },
107
- "required": [
108
- "id",
109
- "version",
110
- "name",
111
- "author",
112
- "created_at"
113
- ],
114
- "title": "AgentMetadata",
115
- "type": "object"
116
- },
117
- "AgentNode": {
118
- "additionalProperties": false,
119
- "description": "A node that calls a specific atomic agent.\n\nAttributes:\n type: The type of the node (must be 'agent').\n agent_name: The name of the atomic agent to call.\n system_prompt: Overrides the registry default prompt. Required for ad-hoc/optimized agents.\n config: Runtime-specific configuration (e.g., model parameters, temperature). Merged with registry defaults.\n overrides: Runtime overrides for the agent (e.g., temperature, prompt_template_vars).",
120
- "properties": {
121
- "id": {
122
- "description": "Unique identifier for the node.",
123
- "title": "Id",
124
- "type": "string"
125
- },
126
- "council_config": {
127
- "anyOf": [
128
- {
129
- "$ref": "#/$defs/CouncilConfig"
130
- },
131
- {
132
- "type": "null"
133
- }
134
- ],
135
- "default": null,
136
- "description": "Optional configuration for architectural triangulation."
137
- },
138
- "visual": {
139
- "anyOf": [
140
- {
141
- "$ref": "#/$defs/VisualMetadata"
142
- },
143
- {
144
- "type": "null"
145
- }
146
- ],
147
- "default": null,
148
- "description": "Visual metadata for the UI."
149
- },
150
- "metadata": {
151
- "additionalProperties": true,
152
- "description": "Generic metadata for operational context (e.g. cost tracking, SLAs).",
153
- "title": "Metadata",
154
- "type": "object"
155
- },
156
- "type": {
157
- "const": "agent",
158
- "default": "agent",
159
- "description": "Discriminator for AgentNode.",
160
- "title": "Type",
161
- "type": "string"
162
- },
163
- "agent_name": {
164
- "description": "The name of the atomic agent to call.",
165
- "title": "Agent Name",
166
- "type": "string"
167
- },
168
- "system_prompt": {
169
- "anyOf": [
170
- {
171
- "type": "string"
172
- },
173
- {
174
- "type": "null"
175
- }
176
- ],
177
- "default": null,
178
- "description": "Overrides the registry default prompt. Required for ad-hoc/optimized agents.",
179
- "title": "System Prompt"
180
- },
181
- "config": {
182
- "anyOf": [
183
- {
184
- "additionalProperties": true,
185
- "type": "object"
186
- },
187
- {
188
- "type": "null"
189
- }
190
- ],
191
- "default": null,
192
- "description": "Runtime-specific configuration (e.g., model parameters, temperature). Merged with registry defaults.",
193
- "title": "Config"
194
- },
195
- "overrides": {
196
- "anyOf": [
197
- {
198
- "additionalProperties": true,
199
- "type": "object"
200
- },
201
- {
202
- "type": "null"
203
- }
204
- ],
205
- "default": null,
206
- "description": "Runtime overrides for the agent (e.g., temperature, prompt_template_vars).",
207
- "title": "Overrides"
208
- }
209
- },
210
- "required": [
211
- "id",
212
- "agent_name"
213
- ],
214
- "title": "AgentNode",
215
- "type": "object"
216
- },
217
- "AgentRuntimeConfig": {
218
- "additionalProperties": false,
219
- "description": "Configuration of the Agent execution.\n\nAttributes:\n nodes: A collection of execution units (Agents, Tools, Logic).\n edges: Directed connections defining control flow.\n entry_point: The ID of the starting node.\n llm_config: Specific LLM parameters.",
220
- "properties": {
221
- "nodes": {
222
- "description": "A collection of execution units.",
223
- "items": {
224
- "description": "Polymorphic node definition.",
225
- "discriminator": {
226
- "mapping": {
227
- "agent": "#/$defs/AgentNode",
228
- "human": "#/$defs/HumanNode",
229
- "logic": "#/$defs/LogicNode",
230
- "map": "#/$defs/MapNode",
231
- "recipe": "#/$defs/RecipeNode"
232
- },
233
- "propertyName": "type"
234
- },
235
- "oneOf": [
236
- {
237
- "$ref": "#/$defs/AgentNode"
238
- },
239
- {
240
- "$ref": "#/$defs/HumanNode"
241
- },
242
- {
243
- "$ref": "#/$defs/LogicNode"
244
- },
245
- {
246
- "$ref": "#/$defs/RecipeNode"
247
- },
248
- {
249
- "$ref": "#/$defs/MapNode"
250
- }
251
- ]
252
- },
253
- "title": "Nodes",
254
- "type": "array"
255
- },
256
- "edges": {
257
- "description": "Directed connections defining control flow.",
258
- "items": {
259
- "$ref": "#/$defs/Edge"
260
- },
261
- "title": "Edges",
262
- "type": "array"
263
- },
264
- "entry_point": {
265
- "anyOf": [
266
- {
267
- "type": "string"
268
- },
269
- {
270
- "type": "null"
271
- }
272
- ],
273
- "default": null,
274
- "description": "The ID of the starting node.",
275
- "title": "Entry Point"
276
- },
277
- "model_config": {
278
- "$ref": "#/$defs/ModelConfig",
279
- "description": "Specific LLM parameters."
280
- },
281
- "system_prompt": {
282
- "anyOf": [
283
- {
284
- "type": "string"
285
- },
286
- {
287
- "type": "null"
288
- }
289
- ],
290
- "default": null,
291
- "description": "The global system prompt/instruction for the agent.",
292
- "title": "System Prompt"
293
- }
294
- },
295
- "required": [
296
- "model_config"
297
- ],
298
- "title": "AgentRuntimeConfig",
299
- "type": "object"
300
- },
301
- "CouncilConfig": {
302
- "additionalProperties": false,
303
- "description": "Configuration for 'Architectural Triangulation'.\n\nAttributes:\n strategy: The strategy for the council (e.g., 'consensus').\n voters: List of agents or models that vote.",
304
- "properties": {
305
- "strategy": {
306
- "default": "consensus",
307
- "description": "The strategy for the council, e.g., 'consensus'.",
308
- "title": "Strategy",
309
- "type": "string"
310
- },
311
- "voters": {
312
- "description": "List of agents or models that vote.",
313
- "items": {
314
- "type": "string"
315
- },
316
- "title": "Voters",
317
- "type": "array"
318
- }
319
- },
320
- "required": [
321
- "voters"
322
- ],
323
- "title": "CouncilConfig",
324
- "type": "object"
325
- },
326
- "DataMapping": {
327
- "additionalProperties": false,
328
- "description": "Defines how to transform data between parent and child.",
329
- "properties": {
330
- "source": {
331
- "description": "The path/key source.",
332
- "title": "Source",
333
- "type": "string"
334
- },
335
- "strategy": {
336
- "$ref": "#/$defs/DataMappingStrategy",
337
- "default": "direct",
338
- "description": "The mapping strategy."
339
- }
340
- },
341
- "required": [
342
- "source"
343
- ],
344
- "title": "DataMapping",
345
- "type": "object"
346
- },
347
- "DataMappingStrategy": {
348
- "description": "Strategy for mapping data.",
349
- "enum": [
350
- "direct",
351
- "jsonpath",
352
- "literal"
353
- ],
354
- "title": "DataMappingStrategy",
355
- "type": "string"
356
- },
357
- "Edge": {
358
- "additionalProperties": false,
359
- "description": "Represents a connection between two nodes.\n\nAttributes:\n source_node_id: The ID of the source node.\n target_node_id: The ID of the target node.\n condition: Optional Python expression for conditional branching.",
360
- "properties": {
361
- "source_node_id": {
362
- "description": "The ID of the source node.",
363
- "title": "Source Node Id",
364
- "type": "string"
365
- },
366
- "target_node_id": {
367
- "description": "The ID of the target node.",
368
- "title": "Target Node Id",
369
- "type": "string"
370
- },
371
- "condition": {
372
- "anyOf": [
373
- {
374
- "type": "string"
375
- },
376
- {
377
- "type": "null"
378
- }
379
- ],
380
- "default": null,
381
- "description": "Optional Python expression for conditional branching.",
382
- "title": "Condition"
383
- }
384
- },
385
- "required": [
386
- "source_node_id",
387
- "target_node_id"
388
- ],
389
- "title": "Edge",
390
- "type": "object"
391
- },
392
- "HumanNode": {
393
- "additionalProperties": false,
394
- "description": "A node that pauses execution for user input/approval.\n\nAttributes:\n type: The type of the node (must be 'human').\n timeout_seconds: Optional timeout in seconds for the user interaction.",
395
- "properties": {
396
- "id": {
397
- "description": "Unique identifier for the node.",
398
- "title": "Id",
399
- "type": "string"
400
- },
401
- "council_config": {
402
- "anyOf": [
403
- {
404
- "$ref": "#/$defs/CouncilConfig"
405
- },
406
- {
407
- "type": "null"
408
- }
409
- ],
410
- "default": null,
411
- "description": "Optional configuration for architectural triangulation."
412
- },
413
- "visual": {
414
- "anyOf": [
415
- {
416
- "$ref": "#/$defs/VisualMetadata"
417
- },
418
- {
419
- "type": "null"
420
- }
421
- ],
422
- "default": null,
423
- "description": "Visual metadata for the UI."
424
- },
425
- "metadata": {
426
- "additionalProperties": true,
427
- "description": "Generic metadata for operational context (e.g. cost tracking, SLAs).",
428
- "title": "Metadata",
429
- "type": "object"
430
- },
431
- "type": {
432
- "const": "human",
433
- "default": "human",
434
- "description": "Discriminator for HumanNode.",
435
- "title": "Type",
436
- "type": "string"
437
- },
438
- "timeout_seconds": {
439
- "anyOf": [
440
- {
441
- "type": "integer"
442
- },
443
- {
444
- "type": "null"
445
- }
446
- ],
447
- "default": null,
448
- "description": "Optional timeout in seconds for the user interaction.",
449
- "title": "Timeout Seconds"
450
- }
451
- },
452
- "required": [
453
- "id"
454
- ],
455
- "title": "HumanNode",
456
- "type": "object"
457
- },
458
- "InlineToolDefinition": {
459
- "additionalProperties": false,
460
- "description": "Definition of an inline tool.\n\nAttributes:\n name: Name of the tool.\n description: Description of the tool.\n parameters: JSON Schema of parameters.\n type: The type of the tool (must be 'function').",
461
- "properties": {
462
- "name": {
463
- "description": "Name of the tool.",
464
- "title": "Name",
465
- "type": "string"
466
- },
467
- "description": {
468
- "description": "Description of the tool.",
469
- "title": "Description",
470
- "type": "string"
471
- },
472
- "parameters": {
473
- "additionalProperties": true,
474
- "description": "JSON Schema of parameters.",
475
- "title": "Parameters",
476
- "type": "object"
477
- },
478
- "type": {
479
- "const": "function",
480
- "default": "function",
481
- "description": "The type of the tool (must be 'function').",
482
- "title": "Type",
483
- "type": "string"
484
- }
485
- },
486
- "required": [
487
- "name",
488
- "description",
489
- "parameters"
490
- ],
491
- "title": "InlineToolDefinition",
492
- "type": "object"
493
- },
494
- "LogicNode": {
495
- "additionalProperties": false,
496
- "description": "A node that executes pure Python logic.\n\nAttributes:\n type: The type of the node (must be 'logic').\n code: The Python logic code to execute.",
497
- "properties": {
498
- "id": {
499
- "description": "Unique identifier for the node.",
500
- "title": "Id",
501
- "type": "string"
502
- },
503
- "council_config": {
504
- "anyOf": [
505
- {
506
- "$ref": "#/$defs/CouncilConfig"
507
- },
508
- {
509
- "type": "null"
510
- }
511
- ],
512
- "default": null,
513
- "description": "Optional configuration for architectural triangulation."
514
- },
515
- "visual": {
516
- "anyOf": [
517
- {
518
- "$ref": "#/$defs/VisualMetadata"
519
- },
520
- {
521
- "type": "null"
522
- }
523
- ],
524
- "default": null,
525
- "description": "Visual metadata for the UI."
526
- },
527
- "metadata": {
528
- "additionalProperties": true,
529
- "description": "Generic metadata for operational context (e.g. cost tracking, SLAs).",
530
- "title": "Metadata",
531
- "type": "object"
532
- },
533
- "type": {
534
- "const": "logic",
535
- "default": "logic",
536
- "description": "Discriminator for LogicNode.",
537
- "title": "Type",
538
- "type": "string"
539
- },
540
- "code": {
541
- "description": "The Python logic code to execute.",
542
- "title": "Code",
543
- "type": "string"
544
- }
545
- },
546
- "required": [
547
- "id",
548
- "code"
549
- ],
550
- "title": "LogicNode",
551
- "type": "object"
552
- },
553
- "MapNode": {
554
- "additionalProperties": false,
555
- "description": "A node that spawns multiple parallel executions of a sub-branch.\n\nAttributes:\n type: The type of the node (must be 'map').\n items_path: Dot-notation path to the list in the state.\n processor_node_id: The node (or subgraph) to run for each item.\n concurrency_limit: Max parallel executions.",
556
- "properties": {
557
- "id": {
558
- "description": "Unique identifier for the node.",
559
- "title": "Id",
560
- "type": "string"
561
- },
562
- "council_config": {
563
- "anyOf": [
564
- {
565
- "$ref": "#/$defs/CouncilConfig"
566
- },
567
- {
568
- "type": "null"
569
- }
570
- ],
571
- "default": null,
572
- "description": "Optional configuration for architectural triangulation."
573
- },
574
- "visual": {
575
- "anyOf": [
576
- {
577
- "$ref": "#/$defs/VisualMetadata"
578
- },
579
- {
580
- "type": "null"
581
- }
582
- ],
583
- "default": null,
584
- "description": "Visual metadata for the UI."
585
- },
586
- "metadata": {
587
- "additionalProperties": true,
588
- "description": "Generic metadata for operational context (e.g. cost tracking, SLAs).",
589
- "title": "Metadata",
590
- "type": "object"
591
- },
592
- "type": {
593
- "const": "map",
594
- "default": "map",
595
- "description": "Discriminator for MapNode.",
596
- "title": "Type",
597
- "type": "string"
598
- },
599
- "items_path": {
600
- "description": "Dot-notation path to the list in the state.",
601
- "title": "Items Path",
602
- "type": "string"
603
- },
604
- "processor_node_id": {
605
- "description": "The node (or subgraph) to run for each item.",
606
- "title": "Processor Node Id",
607
- "type": "string"
608
- },
609
- "concurrency_limit": {
610
- "description": "Max parallel executions.",
611
- "title": "Concurrency Limit",
612
- "type": "integer"
613
- }
614
- },
615
- "required": [
616
- "id",
617
- "items_path",
618
- "processor_node_id",
619
- "concurrency_limit"
620
- ],
621
- "title": "MapNode",
622
- "type": "object"
623
- },
624
- "ModelConfig": {
625
- "additionalProperties": false,
626
- "description": "LLM Configuration parameters.\n\nAttributes:\n model: The LLM model identifier.\n temperature: Temperature for generation.\n system_prompt: The default system prompt/persona for the agent.\n persona: The full persona definition (name, description, directives).",
627
- "properties": {
628
- "model": {
629
- "description": "The LLM model identifier.",
630
- "title": "Model",
631
- "type": "string"
632
- },
633
- "temperature": {
634
- "description": "Temperature for generation.",
635
- "maximum": 2.0,
636
- "minimum": 0.0,
637
- "title": "Temperature",
638
- "type": "number"
639
- },
640
- "system_prompt": {
641
- "anyOf": [
642
- {
643
- "type": "string"
644
- },
645
- {
646
- "type": "null"
647
- }
648
- ],
649
- "default": null,
650
- "description": "The default system prompt/persona for the agent.",
651
- "title": "System Prompt"
652
- },
653
- "persona": {
654
- "anyOf": [
655
- {
656
- "$ref": "#/$defs/Persona"
657
- },
658
- {
659
- "type": "null"
660
- }
661
- ],
662
- "default": null,
663
- "description": "The full persona definition (name, description, directives)."
664
- }
665
- },
666
- "required": [
667
- "model",
668
- "temperature"
669
- ],
670
- "title": "ModelConfig",
671
- "type": "object"
672
- },
673
- "ObservabilityConfig": {
674
- "additionalProperties": false,
675
- "description": "Observability configuration.\n\nAttributes:\n trace_level: Level of tracing detail.\n retention_policy: Retention policy identifier (e.g., '30_days').\n encryption_key_id: Optional ID of the key used for log encryption.",
676
- "properties": {
677
- "trace_level": {
678
- "$ref": "#/$defs/TraceLevel",
679
- "default": "full"
680
- },
681
- "retention_policy": {
682
- "default": "30_days",
683
- "description": "Retention policy identifier.",
684
- "title": "Retention Policy",
685
- "type": "string"
686
- },
687
- "encryption_key_id": {
688
- "anyOf": [
689
- {
690
- "type": "string"
691
- },
692
- {
693
- "type": "null"
694
- }
695
- ],
696
- "default": null,
697
- "description": "Optional ID of the key used for log encryption.",
698
- "title": "Encryption Key Id"
699
- }
700
- },
701
- "title": "ObservabilityConfig",
702
- "type": "object"
703
- },
704
- "Persona": {
705
- "additionalProperties": false,
706
- "description": "Definition of an Agent Persona.\n\nAttributes:\n name: Name of the persona.\n description: Description of the persona.\n directives: List of specific instructions or directives.",
707
- "properties": {
708
- "name": {
709
- "description": "Name of the persona.",
710
- "title": "Name",
711
- "type": "string"
712
- },
713
- "description": {
714
- "description": "Description of the persona.",
715
- "title": "Description",
716
- "type": "string"
717
- },
718
- "directives": {
719
- "description": "List of specific instructions or directives.",
720
- "items": {
721
- "type": "string"
722
- },
723
- "title": "Directives",
724
- "type": "array"
725
- }
726
- },
727
- "required": [
728
- "name",
729
- "description",
730
- "directives"
731
- ],
732
- "title": "Persona",
733
- "type": "object"
734
- },
735
- "PolicyConfig": {
736
- "additionalProperties": false,
737
- "description": "Governance policy configuration.\n\nAttributes:\n budget_caps: Dictionary defining budget limits (e.g., {\"total_cost\": 10.0, \"total_tokens\": 1000}).\n human_in_the_loop: List of Node IDs that require human approval.\n allowed_domains: List of allowed domains for external access.",
738
- "properties": {
739
- "budget_caps": {
740
- "additionalProperties": {
741
- "type": "number"
742
- },
743
- "description": "Budget limits.",
744
- "title": "Budget Caps",
745
- "type": "object"
746
- },
747
- "human_in_the_loop": {
748
- "description": "Node IDs requiring human approval.",
749
- "items": {
750
- "type": "string"
751
- },
752
- "title": "Human In The Loop",
753
- "type": "array"
754
- },
755
- "allowed_domains": {
756
- "description": "Allowed domains for external access.",
757
- "items": {
758
- "type": "string"
759
- },
760
- "title": "Allowed Domains",
761
- "type": "array"
762
- }
763
- },
764
- "title": "PolicyConfig",
765
- "type": "object"
766
- },
767
- "RecipeNode": {
768
- "additionalProperties": false,
769
- "description": "A node that executes another Recipe as a sub-graph.\n\nAttributes:\n type: The type of the node (must be 'recipe').\n recipe_id: The ID of the recipe to execute.\n input_mapping: How parent state maps to child inputs (parent_key -> child_key).\n output_mapping: How child result maps back to parent state (child_key -> parent_key).",
770
- "properties": {
771
- "id": {
772
- "description": "Unique identifier for the node.",
773
- "title": "Id",
774
- "type": "string"
775
- },
776
- "council_config": {
777
- "anyOf": [
778
- {
779
- "$ref": "#/$defs/CouncilConfig"
780
- },
781
- {
782
- "type": "null"
783
- }
784
- ],
785
- "default": null,
786
- "description": "Optional configuration for architectural triangulation."
787
- },
788
- "visual": {
789
- "anyOf": [
790
- {
791
- "$ref": "#/$defs/VisualMetadata"
792
- },
793
- {
794
- "type": "null"
795
- }
796
- ],
797
- "default": null,
798
- "description": "Visual metadata for the UI."
799
- },
800
- "metadata": {
801
- "additionalProperties": true,
802
- "description": "Generic metadata for operational context (e.g. cost tracking, SLAs).",
803
- "title": "Metadata",
804
- "type": "object"
805
- },
806
- "type": {
807
- "const": "recipe",
808
- "default": "recipe",
809
- "description": "Discriminator for RecipeNode.",
810
- "title": "Type",
811
- "type": "string"
812
- },
813
- "recipe_id": {
814
- "description": "The ID of the recipe to execute.",
815
- "title": "Recipe Id",
816
- "type": "string"
817
- },
818
- "input_mapping": {
819
- "additionalProperties": {
820
- "anyOf": [
821
- {
822
- "type": "string"
823
- },
824
- {
825
- "$ref": "#/$defs/DataMapping"
826
- }
827
- ]
828
- },
829
- "description": "Mapping of parent state keys to child input keys.",
830
- "title": "Input Mapping",
831
- "type": "object"
832
- },
833
- "output_mapping": {
834
- "additionalProperties": {
835
- "anyOf": [
836
- {
837
- "type": "string"
838
- },
839
- {
840
- "$ref": "#/$defs/DataMapping"
841
- }
842
- ]
843
- },
844
- "description": "Mapping of child output keys to parent state keys.",
845
- "title": "Output Mapping",
846
- "type": "object"
847
- }
848
- },
849
- "required": [
850
- "id",
851
- "recipe_id",
852
- "input_mapping",
853
- "output_mapping"
854
- ],
855
- "title": "RecipeNode",
856
- "type": "object"
857
- },
858
- "ToolRequirement": {
859
- "additionalProperties": false,
860
- "description": "Requirement for an MCP tool.\n\nAttributes:\n uri: The MCP endpoint URI.\n hash: Integrity check for the tool definition (SHA256).\n scopes: List of permissions required.\n risk_level: The risk level of the tool.",
861
- "properties": {
862
- "uri": {
863
- "description": "The MCP endpoint URI.",
864
- "format": "uri",
865
- "minLength": 1,
866
- "title": "Uri",
867
- "type": "string"
868
- },
869
- "hash": {
870
- "description": "Integrity check for the tool definition (SHA256).",
871
- "pattern": "^[a-fA-F0-9]{64}$",
872
- "title": "Hash",
873
- "type": "string"
874
- },
875
- "scopes": {
876
- "description": "List of permissions required.",
877
- "items": {
878
- "type": "string"
879
- },
880
- "title": "Scopes",
881
- "type": "array"
882
- },
883
- "risk_level": {
884
- "$ref": "#/$defs/ToolRiskLevel",
885
- "description": "The risk level of the tool."
886
- }
887
- },
888
- "required": [
889
- "uri",
890
- "hash",
891
- "scopes",
892
- "risk_level"
893
- ],
894
- "title": "ToolRequirement",
895
- "type": "object"
896
- },
897
- "ToolRiskLevel": {
898
- "description": "Risk level for the tool.",
899
- "enum": [
900
- "safe",
901
- "standard",
902
- "critical"
903
- ],
904
- "title": "ToolRiskLevel",
905
- "type": "string"
906
- },
907
- "TraceLevel": {
908
- "description": "Level of tracing detail.",
909
- "enum": [
910
- "full",
911
- "metadata_only",
912
- "none"
913
- ],
914
- "title": "TraceLevel",
915
- "type": "string"
916
- },
917
- "VisualMetadata": {
918
- "additionalProperties": false,
919
- "description": "Data explicitly for the UI.\n\nAttributes:\n label: The label to display for the node.\n x_y_coordinates: The X and Y coordinates for the node on the canvas.\n icon: The icon to represent the node.\n animation_style: The animation style for the node.",
920
- "properties": {
921
- "label": {
922
- "anyOf": [
923
- {
924
- "type": "string"
925
- },
926
- {
927
- "type": "null"
928
- }
929
- ],
930
- "default": null,
931
- "description": "The label to display for the node.",
932
- "title": "Label"
933
- },
934
- "x_y_coordinates": {
935
- "anyOf": [
936
- {
937
- "items": {
938
- "type": "number"
939
- },
940
- "type": "array"
941
- },
942
- {
943
- "type": "null"
944
- }
945
- ],
946
- "default": null,
947
- "description": "The X and Y coordinates for the node on the canvas.",
948
- "title": "X Y Coordinates"
949
- },
950
- "icon": {
951
- "anyOf": [
952
- {
953
- "type": "string"
954
- },
955
- {
956
- "type": "null"
957
- }
958
- ],
959
- "default": null,
960
- "description": "The icon to represent the node.",
961
- "title": "Icon"
962
- },
963
- "animation_style": {
964
- "anyOf": [
965
- {
966
- "type": "string"
967
- },
968
- {
969
- "type": "null"
970
- }
971
- ],
972
- "default": null,
973
- "description": "The animation style for the node.",
974
- "title": "Animation Style"
975
- }
976
- },
977
- "title": "VisualMetadata",
978
- "type": "object"
979
- }
980
- },
981
- "$id": "https://coreason.ai/schemas/agent.schema.json",
982
- "additionalProperties": false,
983
- "description": "The definitive source of truth for CoReason Agent definitions.",
984
- "properties": {
985
- "metadata": {
986
- "$ref": "#/$defs/AgentMetadata"
987
- },
988
- "interface": {
989
- "$ref": "#/$defs/AgentInterface"
990
- },
991
- "config": {
992
- "$ref": "#/$defs/AgentRuntimeConfig"
993
- },
994
- "dependencies": {
995
- "$ref": "#/$defs/AgentDependencies"
996
- },
997
- "policy": {
998
- "anyOf": [
999
- {
1000
- "$ref": "#/$defs/PolicyConfig"
1001
- },
1002
- {
1003
- "type": "null"
1004
- }
1005
- ],
1006
- "default": null,
1007
- "description": "Governance policy configuration."
1008
- },
1009
- "observability": {
1010
- "anyOf": [
1011
- {
1012
- "$ref": "#/$defs/ObservabilityConfig"
1013
- },
1014
- {
1015
- "type": "null"
1016
- }
1017
- ],
1018
- "default": null,
1019
- "description": "Observability configuration."
1020
- },
1021
- "custom_metadata": {
1022
- "anyOf": [
1023
- {
1024
- "additionalProperties": true,
1025
- "type": "object"
1026
- },
1027
- {
1028
- "type": "null"
1029
- }
1030
- ],
1031
- "default": null,
1032
- "description": "Container for arbitrary metadata extensions without breaking validation.",
1033
- "title": "Custom Metadata"
1034
- },
1035
- "integrity_hash": {
1036
- "description": "SHA256 hash of the source code.",
1037
- "pattern": "^[a-fA-F0-9]{64}$",
1038
- "title": "Integrity Hash",
1039
- "type": "string"
1040
- }
1041
- },
1042
- "required": [
1043
- "metadata",
1044
- "interface",
1045
- "config",
1046
- "dependencies",
1047
- "integrity_hash"
1048
- ],
1049
- "title": "CoReason Agent Manifest",
1050
- "type": "object"
1051
- }