coreason-manifest 0.7.0__py3-none-any.whl → 0.10.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.
@@ -2,14 +2,19 @@
2
2
  "$defs": {
3
3
  "AgentDependencies": {
4
4
  "additionalProperties": false,
5
- "description": "External dependencies for the Agent.\n\nAttributes:\n tools: List of MCP capability URIs required.\n libraries: List of Python packages required (if code execution is allowed).",
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
6
  "properties": {
7
7
  "tools": {
8
- "description": "List of MCP capability URIs required.",
8
+ "description": "List of MCP tool requirements.",
9
9
  "items": {
10
- "format": "uri",
11
- "minLength": 1,
12
- "type": "string"
10
+ "anyOf": [
11
+ {
12
+ "$ref": "#/$defs/ToolRequirement"
13
+ },
14
+ {
15
+ "$ref": "#/$defs/InlineToolDefinition"
16
+ }
17
+ ]
13
18
  },
14
19
  "title": "Tools",
15
20
  "type": "array"
@@ -109,33 +114,516 @@
109
114
  "title": "AgentMetadata",
110
115
  "type": "object"
111
116
  },
112
- "AgentTopology": {
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": {
113
218
  "additionalProperties": false,
114
- "description": "Topology of the Agent execution.\n\nAttributes:\n steps: A directed acyclic graph (DAG) of execution steps.\n llm_config: Specific LLM parameters.",
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.",
115
220
  "properties": {
116
- "steps": {
117
- "description": "A directed acyclic graph (DAG) of execution steps.",
221
+ "nodes": {
222
+ "description": "A collection of execution units.",
118
223
  "items": {
119
- "$ref": "#/$defs/Step"
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
+ ]
120
252
  },
121
- "title": "Steps",
253
+ "title": "Nodes",
122
254
  "type": "array"
123
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
+ },
124
277
  "model_config": {
125
278
  "$ref": "#/$defs/ModelConfig",
126
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"
127
293
  }
128
294
  },
129
295
  "required": [
130
- "steps",
131
296
  "model_config"
132
297
  ],
133
- "title": "AgentTopology",
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",
134
622
  "type": "object"
135
623
  },
136
624
  "ModelConfig": {
137
625
  "additionalProperties": false,
138
- "description": "LLM Configuration parameters.\n\nAttributes:\n model: The LLM model identifier.\n temperature: Temperature for generation.",
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).",
139
627
  "properties": {
140
628
  "model": {
141
629
  "description": "The LLM model identifier.",
@@ -148,6 +636,31 @@
148
636
  "minimum": 0.0,
149
637
  "title": "Temperature",
150
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)."
151
664
  }
152
665
  },
153
666
  "required": [
@@ -157,34 +670,311 @@
157
670
  "title": "ModelConfig",
158
671
  "type": "object"
159
672
  },
160
- "Step": {
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": {
161
768
  "additionalProperties": false,
162
- "description": "A single step in the execution graph.\n\nAttributes:\n id: Unique identifier for the step.\n description: Description of the step.",
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).",
163
770
  "properties": {
164
771
  "id": {
165
- "description": "Unique identifier for the step.",
166
- "minLength": 1,
772
+ "description": "Unique identifier for the node.",
167
773
  "title": "Id",
168
774
  "type": "string"
169
775
  },
170
- "description": {
776
+ "council_config": {
171
777
  "anyOf": [
172
778
  {
173
- "type": "string"
779
+ "$ref": "#/$defs/CouncilConfig"
174
780
  },
175
781
  {
176
782
  "type": "null"
177
783
  }
178
784
  ],
179
785
  "default": null,
180
- "description": "Description of the step.",
181
- "title": "Description"
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"
182
847
  }
183
848
  },
184
849
  "required": [
185
- "id"
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"
186
913
  ],
187
- "title": "Step",
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",
188
978
  "type": "object"
189
979
  }
190
980
  },
@@ -198,12 +988,50 @@
198
988
  "interface": {
199
989
  "$ref": "#/$defs/AgentInterface"
200
990
  },
201
- "topology": {
202
- "$ref": "#/$defs/AgentTopology"
991
+ "config": {
992
+ "$ref": "#/$defs/AgentRuntimeConfig"
203
993
  },
204
994
  "dependencies": {
205
995
  "$ref": "#/$defs/AgentDependencies"
206
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
+ },
207
1035
  "integrity_hash": {
208
1036
  "description": "SHA256 hash of the source code.",
209
1037
  "pattern": "^[a-fA-F0-9]{64}$",
@@ -214,7 +1042,7 @@
214
1042
  "required": [
215
1043
  "metadata",
216
1044
  "interface",
217
- "topology",
1045
+ "config",
218
1046
  "dependencies",
219
1047
  "integrity_hash"
220
1048
  ],