@hilbras/omninode 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -219,7 +219,7 @@ interface Task {
219
219
  result?: TaskResult;
220
220
  }
221
221
 
222
- /** Pipeline engine: coordinating multiple AI operations (§14). */
222
+ /** Pipeline engine: coordinating multiple AI operations (§14, §15). */
223
223
 
224
224
  type PipelineStepKind = "research" | "collect" | "analyze" | "plan" | "execute" | "custom";
225
225
  type PipelineStepCondition = "always" | "on-success" | "on-failure";
@@ -228,8 +228,11 @@ interface PipelineStep {
228
228
  kind: PipelineStepKind;
229
229
  /** Agents fanned out for research steps. */
230
230
  agents?: string[];
231
- /** Model used for plan steps, e.g. "my-gateway:chatgpt". */
231
+ /** Single agent for analyze/execute/custom steps. */
232
+ agent?: string;
233
+ /** Model used for plan steps, as "provider:model-id". */
232
234
  model?: string;
235
+ /** Defaults to the previous step (implicit sequential chain). */
233
236
  dependsOn?: string[];
234
237
  condition?: PipelineStepCondition;
235
238
  retries?: number;
@@ -237,13 +240,19 @@ interface PipelineStep {
237
240
  interface PipelineDefinition {
238
241
  id: string;
239
242
  name?: string;
243
+ /** Default objective; can be overridden at run time. */
244
+ objective?: string;
245
+ /** Optional role applied to research/execute tasks. */
246
+ role?: string;
240
247
  steps: PipelineStep[];
241
248
  }
242
249
  type PipelineRunStatus = "pending" | "running" | "completed" | "failed" | "cancelled";
243
250
  interface PipelineStepRun {
244
251
  stepId: string;
245
- taskId?: string;
246
252
  status: TaskStatus;
253
+ /** Tasks created for this step (research fans out to several). */
254
+ taskIds?: string[];
255
+ error?: string;
247
256
  }
248
257
  interface PipelineRun {
249
258
  id: string;
@@ -252,6 +261,8 @@ interface PipelineRun {
252
261
  startedAt?: string;
253
262
  finishedAt?: string;
254
263
  stepRuns: PipelineStepRun[];
264
+ /** Structured reports gathered across all steps (Phase 6 builds on this). */
265
+ reports?: Report[];
255
266
  }
256
267
 
257
268
  /** Agent ↔ OmniNode communication protocol (§21). */
@@ -400,7 +411,7 @@ interface IChatProvider extends IProvider {
400
411
  }
401
412
 
402
413
  /** Typed error hierarchy shared across the whole codebase (§4.1 — error model). */
403
- type OmniNodeErrorCode = "CONFIG_NOT_FOUND" | "CONFIG_INVALID" | "PROVIDER_NOT_FOUND" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_FAILED" | "MODEL_NOT_FOUND" | "AGENT_NOT_FOUND" | "AGENT_FAILED" | "AGENT_TIMEOUT" | "TASK_INVALID" | "TASK_NOT_FOUND" | "TASK_FAILED" | "PIPELINE_INVALID" | "PIPELINE_FAILED" | "PROTOCOL_VIOLATION" | "MEMORY_UNAVAILABLE" | "NOT_IMPLEMENTED" | "CLI_USAGE" | "INTERNAL";
414
+ type OmniNodeErrorCode = "CONFIG_NOT_FOUND" | "CONFIG_INVALID" | "PROVIDER_NOT_FOUND" | "PROVIDER_UNAVAILABLE" | "PROVIDER_AUTH_FAILED" | "MODEL_NOT_FOUND" | "AGENT_NOT_FOUND" | "AGENT_FAILED" | "AGENT_TIMEOUT" | "TASK_INVALID" | "TASK_NOT_FOUND" | "TASK_FAILED" | "PIPELINE_NOT_FOUND" | "PIPELINE_INVALID" | "PIPELINE_FAILED" | "PROTOCOL_VIOLATION" | "MEMORY_UNAVAILABLE" | "NOT_IMPLEMENTED" | "CLI_USAGE" | "INTERNAL";
404
415
  interface OmniNodeErrorOptions {
405
416
  cause?: unknown;
406
417
  details?: Record<string, unknown>;
@@ -423,7 +434,7 @@ declare class TaskError extends OmniNodeError {
423
434
  constructor(code: "TASK_INVALID" | "TASK_NOT_FOUND" | "TASK_FAILED", message: string, options?: OmniNodeErrorOptions);
424
435
  }
425
436
  declare class PipelineError extends OmniNodeError {
426
- constructor(code: "PIPELINE_INVALID" | "PIPELINE_FAILED", message: string, options?: OmniNodeErrorOptions);
437
+ constructor(code: "PIPELINE_NOT_FOUND" | "PIPELINE_INVALID" | "PIPELINE_FAILED", message: string, options?: OmniNodeErrorOptions);
427
438
  }
428
439
  declare class ProtocolError extends OmniNodeError {
429
440
  constructor(message: string, options?: OmniNodeErrorOptions);
@@ -558,6 +569,98 @@ declare const roleConfigSchema: z.ZodObject<{
558
569
  preferred_agents?: string[] | undefined;
559
570
  system_prompt?: string | undefined;
560
571
  }>;
572
+ declare const pipelineStepConfigSchema: z.ZodObject<{
573
+ id: z.ZodString;
574
+ kind: z.ZodEnum<["research", "collect", "analyze", "plan", "execute", "custom"]>;
575
+ agents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
576
+ agent: z.ZodOptional<z.ZodString>;
577
+ model: z.ZodOptional<z.ZodString>;
578
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
579
+ retries: z.ZodOptional<z.ZodNumber>;
580
+ condition: z.ZodOptional<z.ZodEnum<["always", "on-success", "on-failure"]>>;
581
+ }, "strict", z.ZodTypeAny, {
582
+ id: string;
583
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
584
+ agents?: string[] | undefined;
585
+ agent?: string | undefined;
586
+ model?: string | undefined;
587
+ depends_on?: string[] | undefined;
588
+ retries?: number | undefined;
589
+ condition?: "always" | "on-success" | "on-failure" | undefined;
590
+ }, {
591
+ id: string;
592
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
593
+ agents?: string[] | undefined;
594
+ agent?: string | undefined;
595
+ model?: string | undefined;
596
+ depends_on?: string[] | undefined;
597
+ retries?: number | undefined;
598
+ condition?: "always" | "on-success" | "on-failure" | undefined;
599
+ }>;
600
+ declare const pipelineConfigSchema: z.ZodObject<{
601
+ id: z.ZodString;
602
+ name: z.ZodOptional<z.ZodString>;
603
+ objective: z.ZodOptional<z.ZodString>;
604
+ role: z.ZodOptional<z.ZodString>;
605
+ steps: z.ZodArray<z.ZodObject<{
606
+ id: z.ZodString;
607
+ kind: z.ZodEnum<["research", "collect", "analyze", "plan", "execute", "custom"]>;
608
+ agents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
609
+ agent: z.ZodOptional<z.ZodString>;
610
+ model: z.ZodOptional<z.ZodString>;
611
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
612
+ retries: z.ZodOptional<z.ZodNumber>;
613
+ condition: z.ZodOptional<z.ZodEnum<["always", "on-success", "on-failure"]>>;
614
+ }, "strict", z.ZodTypeAny, {
615
+ id: string;
616
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
617
+ agents?: string[] | undefined;
618
+ agent?: string | undefined;
619
+ model?: string | undefined;
620
+ depends_on?: string[] | undefined;
621
+ retries?: number | undefined;
622
+ condition?: "always" | "on-success" | "on-failure" | undefined;
623
+ }, {
624
+ id: string;
625
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
626
+ agents?: string[] | undefined;
627
+ agent?: string | undefined;
628
+ model?: string | undefined;
629
+ depends_on?: string[] | undefined;
630
+ retries?: number | undefined;
631
+ condition?: "always" | "on-success" | "on-failure" | undefined;
632
+ }>, "many">;
633
+ }, "strict", z.ZodTypeAny, {
634
+ id: string;
635
+ steps: {
636
+ id: string;
637
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
638
+ agents?: string[] | undefined;
639
+ agent?: string | undefined;
640
+ model?: string | undefined;
641
+ depends_on?: string[] | undefined;
642
+ retries?: number | undefined;
643
+ condition?: "always" | "on-success" | "on-failure" | undefined;
644
+ }[];
645
+ role?: string | undefined;
646
+ name?: string | undefined;
647
+ objective?: string | undefined;
648
+ }, {
649
+ id: string;
650
+ steps: {
651
+ id: string;
652
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
653
+ agents?: string[] | undefined;
654
+ agent?: string | undefined;
655
+ model?: string | undefined;
656
+ depends_on?: string[] | undefined;
657
+ retries?: number | undefined;
658
+ condition?: "always" | "on-success" | "on-failure" | undefined;
659
+ }[];
660
+ role?: string | undefined;
661
+ name?: string | undefined;
662
+ objective?: string | undefined;
663
+ }>;
561
664
  declare const projectConfigSchema: z.ZodObject<{
562
665
  name: z.ZodString;
563
666
  providers: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -645,6 +748,70 @@ declare const projectConfigSchema: z.ZodObject<{
645
748
  preferred_agents?: string[] | undefined;
646
749
  system_prompt?: string | undefined;
647
750
  }>, "many">>;
751
+ pipelines: z.ZodDefault<z.ZodArray<z.ZodObject<{
752
+ id: z.ZodString;
753
+ name: z.ZodOptional<z.ZodString>;
754
+ objective: z.ZodOptional<z.ZodString>;
755
+ role: z.ZodOptional<z.ZodString>;
756
+ steps: z.ZodArray<z.ZodObject<{
757
+ id: z.ZodString;
758
+ kind: z.ZodEnum<["research", "collect", "analyze", "plan", "execute", "custom"]>;
759
+ agents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
760
+ agent: z.ZodOptional<z.ZodString>;
761
+ model: z.ZodOptional<z.ZodString>;
762
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
763
+ retries: z.ZodOptional<z.ZodNumber>;
764
+ condition: z.ZodOptional<z.ZodEnum<["always", "on-success", "on-failure"]>>;
765
+ }, "strict", z.ZodTypeAny, {
766
+ id: string;
767
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
768
+ agents?: string[] | undefined;
769
+ agent?: string | undefined;
770
+ model?: string | undefined;
771
+ depends_on?: string[] | undefined;
772
+ retries?: number | undefined;
773
+ condition?: "always" | "on-success" | "on-failure" | undefined;
774
+ }, {
775
+ id: string;
776
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
777
+ agents?: string[] | undefined;
778
+ agent?: string | undefined;
779
+ model?: string | undefined;
780
+ depends_on?: string[] | undefined;
781
+ retries?: number | undefined;
782
+ condition?: "always" | "on-success" | "on-failure" | undefined;
783
+ }>, "many">;
784
+ }, "strict", z.ZodTypeAny, {
785
+ id: string;
786
+ steps: {
787
+ id: string;
788
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
789
+ agents?: string[] | undefined;
790
+ agent?: string | undefined;
791
+ model?: string | undefined;
792
+ depends_on?: string[] | undefined;
793
+ retries?: number | undefined;
794
+ condition?: "always" | "on-success" | "on-failure" | undefined;
795
+ }[];
796
+ role?: string | undefined;
797
+ name?: string | undefined;
798
+ objective?: string | undefined;
799
+ }, {
800
+ id: string;
801
+ steps: {
802
+ id: string;
803
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
804
+ agents?: string[] | undefined;
805
+ agent?: string | undefined;
806
+ model?: string | undefined;
807
+ depends_on?: string[] | undefined;
808
+ retries?: number | undefined;
809
+ condition?: "always" | "on-success" | "on-failure" | undefined;
810
+ }[];
811
+ role?: string | undefined;
812
+ name?: string | undefined;
813
+ objective?: string | undefined;
814
+ }>, "many">>;
648
815
  memory: z.ZodOptional<z.ZodObject<{
649
816
  provider: z.ZodString;
650
817
  }, "strict", z.ZodTypeAny, {
@@ -654,15 +821,6 @@ declare const projectConfigSchema: z.ZodObject<{
654
821
  }>>;
655
822
  }, "strict", z.ZodTypeAny, {
656
823
  name: string;
657
- providers: {
658
- name: string;
659
- type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
660
- base_url: string;
661
- api_key_env_var?: string | undefined;
662
- headers?: Record<string, string> | undefined;
663
- enabled?: boolean | undefined;
664
- metadata?: Record<string, unknown> | undefined;
665
- }[];
666
824
  agents: {
667
825
  name: string;
668
826
  type: "native" | "process" | "cli";
@@ -674,6 +832,15 @@ declare const projectConfigSchema: z.ZodObject<{
674
832
  env?: Record<string, string> | undefined;
675
833
  timeout_ms?: number | undefined;
676
834
  }[];
835
+ providers: {
836
+ name: string;
837
+ type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
838
+ base_url: string;
839
+ api_key_env_var?: string | undefined;
840
+ headers?: Record<string, string> | undefined;
841
+ enabled?: boolean | undefined;
842
+ metadata?: Record<string, unknown> | undefined;
843
+ }[];
677
844
  roles: {
678
845
  name: string;
679
846
  id: string;
@@ -684,20 +851,27 @@ declare const projectConfigSchema: z.ZodObject<{
684
851
  preferred_agents?: string[] | undefined;
685
852
  system_prompt?: string | undefined;
686
853
  }[];
854
+ pipelines: {
855
+ id: string;
856
+ steps: {
857
+ id: string;
858
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
859
+ agents?: string[] | undefined;
860
+ agent?: string | undefined;
861
+ model?: string | undefined;
862
+ depends_on?: string[] | undefined;
863
+ retries?: number | undefined;
864
+ condition?: "always" | "on-success" | "on-failure" | undefined;
865
+ }[];
866
+ role?: string | undefined;
867
+ name?: string | undefined;
868
+ objective?: string | undefined;
869
+ }[];
687
870
  memory?: {
688
871
  provider: string;
689
872
  } | undefined;
690
873
  }, {
691
874
  name: string;
692
- providers?: {
693
- name: string;
694
- type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
695
- base_url: string;
696
- api_key_env_var?: string | undefined;
697
- headers?: Record<string, string> | undefined;
698
- enabled?: boolean | undefined;
699
- metadata?: Record<string, unknown> | undefined;
700
- }[] | undefined;
701
875
  agents?: {
702
876
  name: string;
703
877
  type?: "native" | "process" | "cli" | undefined;
@@ -709,6 +883,15 @@ declare const projectConfigSchema: z.ZodObject<{
709
883
  input_mode?: "stdin" | "arg" | "protocol" | undefined;
710
884
  timeout_ms?: number | undefined;
711
885
  }[] | undefined;
886
+ providers?: {
887
+ name: string;
888
+ type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
889
+ base_url: string;
890
+ api_key_env_var?: string | undefined;
891
+ headers?: Record<string, string> | undefined;
892
+ enabled?: boolean | undefined;
893
+ metadata?: Record<string, unknown> | undefined;
894
+ }[] | undefined;
712
895
  roles?: {
713
896
  name: string;
714
897
  id: string;
@@ -719,6 +902,22 @@ declare const projectConfigSchema: z.ZodObject<{
719
902
  preferred_agents?: string[] | undefined;
720
903
  system_prompt?: string | undefined;
721
904
  }[] | undefined;
905
+ pipelines?: {
906
+ id: string;
907
+ steps: {
908
+ id: string;
909
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
910
+ agents?: string[] | undefined;
911
+ agent?: string | undefined;
912
+ model?: string | undefined;
913
+ depends_on?: string[] | undefined;
914
+ retries?: number | undefined;
915
+ condition?: "always" | "on-success" | "on-failure" | undefined;
916
+ }[];
917
+ role?: string | undefined;
918
+ name?: string | undefined;
919
+ objective?: string | undefined;
920
+ }[] | undefined;
722
921
  memory?: {
723
922
  provider: string;
724
923
  } | undefined;
@@ -811,6 +1010,70 @@ declare const appConfigSchema: z.ZodObject<{
811
1010
  preferred_agents?: string[] | undefined;
812
1011
  system_prompt?: string | undefined;
813
1012
  }>, "many">>;
1013
+ pipelines: z.ZodDefault<z.ZodArray<z.ZodObject<{
1014
+ id: z.ZodString;
1015
+ name: z.ZodOptional<z.ZodString>;
1016
+ objective: z.ZodOptional<z.ZodString>;
1017
+ role: z.ZodOptional<z.ZodString>;
1018
+ steps: z.ZodArray<z.ZodObject<{
1019
+ id: z.ZodString;
1020
+ kind: z.ZodEnum<["research", "collect", "analyze", "plan", "execute", "custom"]>;
1021
+ agents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1022
+ agent: z.ZodOptional<z.ZodString>;
1023
+ model: z.ZodOptional<z.ZodString>;
1024
+ depends_on: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1025
+ retries: z.ZodOptional<z.ZodNumber>;
1026
+ condition: z.ZodOptional<z.ZodEnum<["always", "on-success", "on-failure"]>>;
1027
+ }, "strict", z.ZodTypeAny, {
1028
+ id: string;
1029
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1030
+ agents?: string[] | undefined;
1031
+ agent?: string | undefined;
1032
+ model?: string | undefined;
1033
+ depends_on?: string[] | undefined;
1034
+ retries?: number | undefined;
1035
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1036
+ }, {
1037
+ id: string;
1038
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1039
+ agents?: string[] | undefined;
1040
+ agent?: string | undefined;
1041
+ model?: string | undefined;
1042
+ depends_on?: string[] | undefined;
1043
+ retries?: number | undefined;
1044
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1045
+ }>, "many">;
1046
+ }, "strict", z.ZodTypeAny, {
1047
+ id: string;
1048
+ steps: {
1049
+ id: string;
1050
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1051
+ agents?: string[] | undefined;
1052
+ agent?: string | undefined;
1053
+ model?: string | undefined;
1054
+ depends_on?: string[] | undefined;
1055
+ retries?: number | undefined;
1056
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1057
+ }[];
1058
+ role?: string | undefined;
1059
+ name?: string | undefined;
1060
+ objective?: string | undefined;
1061
+ }, {
1062
+ id: string;
1063
+ steps: {
1064
+ id: string;
1065
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1066
+ agents?: string[] | undefined;
1067
+ agent?: string | undefined;
1068
+ model?: string | undefined;
1069
+ depends_on?: string[] | undefined;
1070
+ retries?: number | undefined;
1071
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1072
+ }[];
1073
+ role?: string | undefined;
1074
+ name?: string | undefined;
1075
+ objective?: string | undefined;
1076
+ }>, "many">>;
814
1077
  memory: z.ZodOptional<z.ZodObject<{
815
1078
  provider: z.ZodString;
816
1079
  }, "strict", z.ZodTypeAny, {
@@ -820,15 +1083,6 @@ declare const appConfigSchema: z.ZodObject<{
820
1083
  }>>;
821
1084
  }, "strict", z.ZodTypeAny, {
822
1085
  name: string;
823
- providers: {
824
- name: string;
825
- type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
826
- base_url: string;
827
- api_key_env_var?: string | undefined;
828
- headers?: Record<string, string> | undefined;
829
- enabled?: boolean | undefined;
830
- metadata?: Record<string, unknown> | undefined;
831
- }[];
832
1086
  agents: {
833
1087
  name: string;
834
1088
  type: "native" | "process" | "cli";
@@ -840,6 +1094,15 @@ declare const appConfigSchema: z.ZodObject<{
840
1094
  env?: Record<string, string> | undefined;
841
1095
  timeout_ms?: number | undefined;
842
1096
  }[];
1097
+ providers: {
1098
+ name: string;
1099
+ type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
1100
+ base_url: string;
1101
+ api_key_env_var?: string | undefined;
1102
+ headers?: Record<string, string> | undefined;
1103
+ enabled?: boolean | undefined;
1104
+ metadata?: Record<string, unknown> | undefined;
1105
+ }[];
843
1106
  roles: {
844
1107
  name: string;
845
1108
  id: string;
@@ -850,20 +1113,27 @@ declare const appConfigSchema: z.ZodObject<{
850
1113
  preferred_agents?: string[] | undefined;
851
1114
  system_prompt?: string | undefined;
852
1115
  }[];
1116
+ pipelines: {
1117
+ id: string;
1118
+ steps: {
1119
+ id: string;
1120
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1121
+ agents?: string[] | undefined;
1122
+ agent?: string | undefined;
1123
+ model?: string | undefined;
1124
+ depends_on?: string[] | undefined;
1125
+ retries?: number | undefined;
1126
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1127
+ }[];
1128
+ role?: string | undefined;
1129
+ name?: string | undefined;
1130
+ objective?: string | undefined;
1131
+ }[];
853
1132
  memory?: {
854
1133
  provider: string;
855
1134
  } | undefined;
856
1135
  }, {
857
1136
  name: string;
858
- providers?: {
859
- name: string;
860
- type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
861
- base_url: string;
862
- api_key_env_var?: string | undefined;
863
- headers?: Record<string, string> | undefined;
864
- enabled?: boolean | undefined;
865
- metadata?: Record<string, unknown> | undefined;
866
- }[] | undefined;
867
1137
  agents?: {
868
1138
  name: string;
869
1139
  type?: "native" | "process" | "cli" | undefined;
@@ -875,6 +1145,15 @@ declare const appConfigSchema: z.ZodObject<{
875
1145
  input_mode?: "stdin" | "arg" | "protocol" | undefined;
876
1146
  timeout_ms?: number | undefined;
877
1147
  }[] | undefined;
1148
+ providers?: {
1149
+ name: string;
1150
+ type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
1151
+ base_url: string;
1152
+ api_key_env_var?: string | undefined;
1153
+ headers?: Record<string, string> | undefined;
1154
+ enabled?: boolean | undefined;
1155
+ metadata?: Record<string, unknown> | undefined;
1156
+ }[] | undefined;
878
1157
  roles?: {
879
1158
  name: string;
880
1159
  id: string;
@@ -885,6 +1164,22 @@ declare const appConfigSchema: z.ZodObject<{
885
1164
  preferred_agents?: string[] | undefined;
886
1165
  system_prompt?: string | undefined;
887
1166
  }[] | undefined;
1167
+ pipelines?: {
1168
+ id: string;
1169
+ steps: {
1170
+ id: string;
1171
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1172
+ agents?: string[] | undefined;
1173
+ agent?: string | undefined;
1174
+ model?: string | undefined;
1175
+ depends_on?: string[] | undefined;
1176
+ retries?: number | undefined;
1177
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1178
+ }[];
1179
+ role?: string | undefined;
1180
+ name?: string | undefined;
1181
+ objective?: string | undefined;
1182
+ }[] | undefined;
888
1183
  memory?: {
889
1184
  provider: string;
890
1185
  } | undefined;
@@ -899,15 +1194,6 @@ declare const appConfigSchema: z.ZodObject<{
899
1194
  }, "strict", z.ZodTypeAny, {
900
1195
  project: {
901
1196
  name: string;
902
- providers: {
903
- name: string;
904
- type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
905
- base_url: string;
906
- api_key_env_var?: string | undefined;
907
- headers?: Record<string, string> | undefined;
908
- enabled?: boolean | undefined;
909
- metadata?: Record<string, unknown> | undefined;
910
- }[];
911
1197
  agents: {
912
1198
  name: string;
913
1199
  type: "native" | "process" | "cli";
@@ -919,6 +1205,15 @@ declare const appConfigSchema: z.ZodObject<{
919
1205
  env?: Record<string, string> | undefined;
920
1206
  timeout_ms?: number | undefined;
921
1207
  }[];
1208
+ providers: {
1209
+ name: string;
1210
+ type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
1211
+ base_url: string;
1212
+ api_key_env_var?: string | undefined;
1213
+ headers?: Record<string, string> | undefined;
1214
+ enabled?: boolean | undefined;
1215
+ metadata?: Record<string, unknown> | undefined;
1216
+ }[];
922
1217
  roles: {
923
1218
  name: string;
924
1219
  id: string;
@@ -929,6 +1224,22 @@ declare const appConfigSchema: z.ZodObject<{
929
1224
  preferred_agents?: string[] | undefined;
930
1225
  system_prompt?: string | undefined;
931
1226
  }[];
1227
+ pipelines: {
1228
+ id: string;
1229
+ steps: {
1230
+ id: string;
1231
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1232
+ agents?: string[] | undefined;
1233
+ agent?: string | undefined;
1234
+ model?: string | undefined;
1235
+ depends_on?: string[] | undefined;
1236
+ retries?: number | undefined;
1237
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1238
+ }[];
1239
+ role?: string | undefined;
1240
+ name?: string | undefined;
1241
+ objective?: string | undefined;
1242
+ }[];
932
1243
  memory?: {
933
1244
  provider: string;
934
1245
  } | undefined;
@@ -939,15 +1250,6 @@ declare const appConfigSchema: z.ZodObject<{
939
1250
  }, {
940
1251
  project: {
941
1252
  name: string;
942
- providers?: {
943
- name: string;
944
- type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
945
- base_url: string;
946
- api_key_env_var?: string | undefined;
947
- headers?: Record<string, string> | undefined;
948
- enabled?: boolean | undefined;
949
- metadata?: Record<string, unknown> | undefined;
950
- }[] | undefined;
951
1253
  agents?: {
952
1254
  name: string;
953
1255
  type?: "native" | "process" | "cli" | undefined;
@@ -959,6 +1261,15 @@ declare const appConfigSchema: z.ZodObject<{
959
1261
  input_mode?: "stdin" | "arg" | "protocol" | undefined;
960
1262
  timeout_ms?: number | undefined;
961
1263
  }[] | undefined;
1264
+ providers?: {
1265
+ name: string;
1266
+ type: "custom" | "openai-compatible" | "omnihilbras" | "openrouter" | "local";
1267
+ base_url: string;
1268
+ api_key_env_var?: string | undefined;
1269
+ headers?: Record<string, string> | undefined;
1270
+ enabled?: boolean | undefined;
1271
+ metadata?: Record<string, unknown> | undefined;
1272
+ }[] | undefined;
962
1273
  roles?: {
963
1274
  name: string;
964
1275
  id: string;
@@ -969,6 +1280,22 @@ declare const appConfigSchema: z.ZodObject<{
969
1280
  preferred_agents?: string[] | undefined;
970
1281
  system_prompt?: string | undefined;
971
1282
  }[] | undefined;
1283
+ pipelines?: {
1284
+ id: string;
1285
+ steps: {
1286
+ id: string;
1287
+ kind: "custom" | "research" | "collect" | "analyze" | "plan" | "execute";
1288
+ agents?: string[] | undefined;
1289
+ agent?: string | undefined;
1290
+ model?: string | undefined;
1291
+ depends_on?: string[] | undefined;
1292
+ retries?: number | undefined;
1293
+ condition?: "always" | "on-success" | "on-failure" | undefined;
1294
+ }[];
1295
+ role?: string | undefined;
1296
+ name?: string | undefined;
1297
+ objective?: string | undefined;
1298
+ }[] | undefined;
972
1299
  memory?: {
973
1300
  provider: string;
974
1301
  } | undefined;
@@ -980,6 +1307,8 @@ declare const appConfigSchema: z.ZodObject<{
980
1307
  type ProviderConfigYaml = z.infer<typeof providerConfigSchema>;
981
1308
  type AgentConfigYaml = z.infer<typeof agentConfigSchema>;
982
1309
  type RoleConfigYaml = z.infer<typeof roleConfigSchema>;
1310
+ type PipelineConfigYaml = z.infer<typeof pipelineConfigSchema>;
1311
+ type PipelineStepConfigYaml = z.infer<typeof pipelineStepConfigSchema>;
983
1312
  type ProjectConfigYaml = z.infer<typeof projectConfigSchema>;
984
1313
  type AppConfigYaml = z.infer<typeof appConfigSchema>;
985
1314
 
@@ -989,6 +1318,7 @@ interface AppConfig {
989
1318
  providers: ProviderConfig[];
990
1319
  agents: AgentConfig[];
991
1320
  roles: RoleDefinition[];
1321
+ pipelines: PipelineDefinition[];
992
1322
  memory?: {
993
1323
  provider: string;
994
1324
  };
@@ -1143,10 +1473,16 @@ interface TaskStore {
1143
1473
  }
1144
1474
  declare class FileTaskStore implements TaskStore {
1145
1475
  private readonly filePath;
1476
+ /**
1477
+ * Read-modify-write operations are serialized: parallel pipeline tasks
1478
+ * would otherwise race on the JSON file (last writer wins).
1479
+ */
1480
+ private queue;
1146
1481
  constructor(directory?: string);
1147
1482
  save(task: Task): Promise<void>;
1148
1483
  get(id: string): Promise<Task | undefined>;
1149
1484
  list(filter?: TaskStoreFilter): Promise<Task[]>;
1485
+ private synchronized;
1150
1486
  private load;
1151
1487
  private write;
1152
1488
  }
@@ -1184,6 +1520,75 @@ declare class TaskEngine {
1184
1520
 
1185
1521
  declare function createTaskEngine(config: AppConfig, log?: Logger, directory?: string): TaskEngine;
1186
1522
 
1187
- declare const OMNINODE_VERSION = "0.5.2";
1523
+ interface PipelineRunFilter {
1524
+ pipelineId?: string;
1525
+ status?: PipelineRunStatus;
1526
+ }
1527
+ interface PipelineRunStore {
1528
+ save(run: PipelineRun): Promise<void>;
1529
+ get(id: string): Promise<PipelineRun | undefined>;
1530
+ list(filter?: PipelineRunFilter): Promise<PipelineRun[]>;
1531
+ }
1532
+ declare class FilePipelineRunStore implements PipelineRunStore {
1533
+ private readonly filePath;
1534
+ private queue;
1535
+ constructor(directory?: string);
1536
+ save(run: PipelineRun): Promise<void>;
1537
+ get(id: string): Promise<PipelineRun | undefined>;
1538
+ list(filter?: PipelineRunFilter): Promise<PipelineRun[]>;
1539
+ private synchronized;
1540
+ private load;
1541
+ private write;
1542
+ }
1543
+
1544
+ type ChatFn = (modelRef: string, messages: ChatMessage[]) => Promise<string>;
1545
+ interface PipelineEngineOptions {
1546
+ tasks: TaskEngine;
1547
+ agents: AgentRegistry;
1548
+ roles: RoleRegistry;
1549
+ providers: AppConfig["project"]["providers"];
1550
+ store: PipelineRunStore;
1551
+ chat?: ChatFn;
1552
+ log?: Logger;
1553
+ }
1554
+ interface RunPipelineOptions {
1555
+ objective?: string;
1556
+ onStep?: (stepRun: PipelineStepRun) => void;
1557
+ }
1558
+ declare class PipelineEngine {
1559
+ private readonly options;
1560
+ private readonly log;
1561
+ constructor(options: PipelineEngineOptions);
1562
+ get store(): PipelineRunStore;
1563
+ /** Structural + semantic validation (§27 Phase 5 — pipeline parser). */
1564
+ validate(def: PipelineDefinition): void;
1565
+ private assertAcyclic;
1566
+ /**
1567
+ * Steps run sequentially in definition order unless they declare explicit
1568
+ * dependencies, which enable parallel branches.
1569
+ */
1570
+ private effectiveDependencies;
1571
+ run(def: PipelineDefinition, options?: RunPipelineOptions): Promise<PipelineRun>;
1572
+ get(runId: string): Promise<PipelineRun | undefined>;
1573
+ listRuns(filter?: {
1574
+ pipelineId?: string;
1575
+ }): Promise<PipelineRun[]>;
1576
+ private shouldRun;
1577
+ private executeStep;
1578
+ private executeStepOnce;
1579
+ /** Research fan-out: one task per agent, in parallel (§15). */
1580
+ private runFanOut;
1581
+ private runSingle;
1582
+ private runPlan;
1583
+ private getChat;
1584
+ }
1585
+ /** Default chat function: resolves "provider:model" against the configured providers. */
1586
+ declare function createDefaultChatFn(providers: AppConfig["project"]["providers"]): ChatFn;
1587
+
1588
+ /** Assembles a PipelineEngine from the project configuration (local-first defaults). */
1589
+
1590
+ declare function buildPipelineEngine(config: AppConfig, log?: Logger): PipelineEngine;
1591
+
1592
+ declare const OMNINODE_VERSION = "0.6.0";
1188
1593
 
1189
- export { type AgentConfig, type AgentConfigYaml, AgentError, type AgentInfo, type AgentInputMode, type AgentIntegrationType, AgentRegistry, type AgentStatus, type AgentTaskInput, type AgentTaskOutput, type AgentToNodeMessage, type AppConfig, type AppConfigYaml, type ChatMessage, type ChatRequest, type ChatResponse, type ChatRole, type ChatUsage, type Confidence, ConfigError, ConsoleLogSink, type CreateTaskInput, type DiscoveryResult, type EnvelopeMeta, FileTaskStore, type Finding, type FindingSeverity, type HttpRequestOptions, type HttpResponse, type IAgent, type IChatProvider, type IMemoryProvider, type IProvider, type LoadConfigOptions, type LogLevel, type LogSink, Logger, type LoggerOptions, type MemoryEntry, MemoryError, type MemoryQuery, type MemoryScope, type MessageEnvelope, type ModelCapabilities, type ModelFilter, type ModelInfo, ModelRegistry, type ModelStatus, type NodeToAgentMessage, OMNINODE_VERSION, OPENAI_COMPATIBLE_TYPES, type OmniHilbrasConnectionResult, OmniHilbrasProvider, OmniNodeError, type OmniNodeErrorCode, type OmniNodeErrorOptions, OpenAICompatibleProvider, type PipelineDefinition, PipelineError, type PipelineRun, type PipelineRunStatus, type PipelineStep, type PipelineStepCondition, type PipelineStepKind, type PipelineStepRun, ProcessAgent, type Project, type ProjectConfigYaml, ProtocolError, type ProviderConfig, type ProviderConfigYaml, ProviderError, type ProviderHealth, type ProviderStatus, type ProviderType, type Report, type RoleConfigYaml, type RoleDefinition, RoleRegistry, type Task, type TaskContext, TaskEngine, type TaskEngineOptions, TaskError, type TaskResult, type TaskStatus, type TaskStore, type TaskStoreFilter, type WritableLike, agentConfigSchema, appConfigSchema, authHeaders, buildAgentRegistry, buildRoleRegistry, composeTaskText, createAgent, createProvider, createTaskEngine, defaultProjectConfigYaml, expandEnvRefs, findConfigFile, isOmniNodeError, loadConfig, logger, projectConfigSchema, providerConfigSchema, registryKey, requestJson, resolveApiKey, roleConfigSchema };
1594
+ export { type AgentConfig, type AgentConfigYaml, AgentError, type AgentInfo, type AgentInputMode, type AgentIntegrationType, AgentRegistry, type AgentStatus, type AgentTaskInput, type AgentTaskOutput, type AgentToNodeMessage, type AppConfig, type AppConfigYaml, type ChatFn, type ChatMessage, type ChatRequest, type ChatResponse, type ChatRole, type ChatUsage, type Confidence, ConfigError, ConsoleLogSink, type CreateTaskInput, type DiscoveryResult, type EnvelopeMeta, FilePipelineRunStore, FileTaskStore, type Finding, type FindingSeverity, type HttpRequestOptions, type HttpResponse, type IAgent, type IChatProvider, type IMemoryProvider, type IProvider, type LoadConfigOptions, type LogLevel, type LogSink, Logger, type LoggerOptions, type MemoryEntry, MemoryError, type MemoryQuery, type MemoryScope, type MessageEnvelope, type ModelCapabilities, type ModelFilter, type ModelInfo, ModelRegistry, type ModelStatus, type NodeToAgentMessage, OMNINODE_VERSION, OPENAI_COMPATIBLE_TYPES, type OmniHilbrasConnectionResult, OmniHilbrasProvider, OmniNodeError, type OmniNodeErrorCode, type OmniNodeErrorOptions, OpenAICompatibleProvider, type PipelineConfigYaml, type PipelineDefinition, PipelineEngine, type PipelineEngineOptions, PipelineError, type PipelineRun, type PipelineRunFilter, type PipelineRunStatus, type PipelineRunStore, type PipelineStep, type PipelineStepCondition, type PipelineStepConfigYaml, type PipelineStepKind, type PipelineStepRun, ProcessAgent, type Project, type ProjectConfigYaml, ProtocolError, type ProviderConfig, type ProviderConfigYaml, ProviderError, type ProviderHealth, type ProviderStatus, type ProviderType, type Report, type RoleConfigYaml, type RoleDefinition, RoleRegistry, type RunPipelineOptions, type Task, type TaskContext, TaskEngine, type TaskEngineOptions, TaskError, type TaskResult, type TaskStatus, type TaskStore, type TaskStoreFilter, type WritableLike, agentConfigSchema, appConfigSchema, authHeaders, buildAgentRegistry, buildPipelineEngine, buildRoleRegistry, composeTaskText, createAgent, createDefaultChatFn, createProvider, createTaskEngine, defaultProjectConfigYaml, expandEnvRefs, findConfigFile, isOmniNodeError, loadConfig, logger, pipelineConfigSchema, pipelineStepConfigSchema, projectConfigSchema, providerConfigSchema, registryKey, requestJson, resolveApiKey, roleConfigSchema };