@uluops/core 0.8.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +84 -25
  2. package/dist/ai/AIProvider.d.ts.map +1 -1
  3. package/dist/ai/AIProvider.js +28 -12
  4. package/dist/ai/AIProvider.js.map +1 -1
  5. package/dist/ai/ModelCatalog.js +2 -2
  6. package/dist/ai/ModelCatalog.js.map +1 -1
  7. package/dist/ai/ToolAdapter.d.ts.map +1 -1
  8. package/dist/ai/ToolAdapter.js +16 -27
  9. package/dist/ai/ToolAdapter.js.map +1 -1
  10. package/dist/ai/{ShellExecutor.d.ts.map → shellExecutor.d.ts.map} +1 -1
  11. package/dist/ai/{ShellExecutor.js → shellExecutor.js} +3 -2
  12. package/dist/ai/{ShellExecutor.js.map → shellExecutor.js.map} +1 -1
  13. package/dist/analysis/AnalysisSummaryExtractor.d.ts +135 -0
  14. package/dist/analysis/AnalysisSummaryExtractor.d.ts.map +1 -0
  15. package/dist/analysis/AnalysisSummaryExtractor.js +465 -0
  16. package/dist/analysis/AnalysisSummaryExtractor.js.map +1 -0
  17. package/dist/analysis/index.d.ts +2 -0
  18. package/dist/analysis/index.d.ts.map +1 -0
  19. package/dist/analysis/index.js +2 -0
  20. package/dist/analysis/index.js.map +1 -0
  21. package/dist/client/UluOpsClient.d.ts +12 -9
  22. package/dist/client/UluOpsClient.d.ts.map +1 -1
  23. package/dist/client/UluOpsClient.js +76 -47
  24. package/dist/client/UluOpsClient.js.map +1 -1
  25. package/dist/constants.d.ts +4 -3
  26. package/dist/constants.d.ts.map +1 -1
  27. package/dist/constants.js +13 -3
  28. package/dist/constants.js.map +1 -1
  29. package/dist/errors/index.d.ts +38 -8
  30. package/dist/errors/index.d.ts.map +1 -1
  31. package/dist/errors/index.js +52 -7
  32. package/dist/errors/index.js.map +1 -1
  33. package/dist/executor/AgentExecutor.d.ts +2 -0
  34. package/dist/executor/AgentExecutor.d.ts.map +1 -1
  35. package/dist/executor/AgentExecutor.js +33 -16
  36. package/dist/executor/AgentExecutor.js.map +1 -1
  37. package/dist/executor/CommandExecutor.d.ts +3 -1
  38. package/dist/executor/CommandExecutor.d.ts.map +1 -1
  39. package/dist/executor/CommandExecutor.js +17 -39
  40. package/dist/executor/CommandExecutor.js.map +1 -1
  41. package/dist/executor/PipelineExecutor.d.ts +12 -4
  42. package/dist/executor/PipelineExecutor.d.ts.map +1 -1
  43. package/dist/executor/PipelineExecutor.js +127 -23
  44. package/dist/executor/PipelineExecutor.js.map +1 -1
  45. package/dist/executor/ToolHandler.d.ts +5 -0
  46. package/dist/executor/ToolHandler.d.ts.map +1 -1
  47. package/dist/executor/ToolHandler.js +23 -14
  48. package/dist/executor/ToolHandler.js.map +1 -1
  49. package/dist/executor/WorkflowExecutor.d.ts +18 -2
  50. package/dist/executor/WorkflowExecutor.d.ts.map +1 -1
  51. package/dist/executor/WorkflowExecutor.js +107 -37
  52. package/dist/executor/WorkflowExecutor.js.map +1 -1
  53. package/dist/executor/classifyDecision.d.ts +2 -1
  54. package/dist/executor/classifyDecision.d.ts.map +1 -1
  55. package/dist/executor/classifyDecision.js +4 -2
  56. package/dist/executor/classifyDecision.js.map +1 -1
  57. package/dist/executor/mapCategory.d.ts +5 -0
  58. package/dist/executor/mapCategory.d.ts.map +1 -0
  59. package/dist/executor/mapCategory.js +5 -0
  60. package/dist/executor/mapCategory.js.map +1 -0
  61. package/dist/executor/preflight.d.ts.map +1 -1
  62. package/dist/executor/preflight.js +53 -12
  63. package/dist/executor/preflight.js.map +1 -1
  64. package/dist/index.d.ts +6 -5
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +5 -3
  67. package/dist/index.js.map +1 -1
  68. package/dist/parser/OutputExtractor.d.ts +7 -25
  69. package/dist/parser/OutputExtractor.d.ts.map +1 -1
  70. package/dist/parser/OutputExtractor.js +23 -528
  71. package/dist/parser/OutputExtractor.js.map +1 -1
  72. package/dist/parser/OutputNormalizer.d.ts +45 -0
  73. package/dist/parser/OutputNormalizer.d.ts.map +1 -0
  74. package/dist/parser/OutputNormalizer.js +572 -0
  75. package/dist/parser/OutputNormalizer.js.map +1 -0
  76. package/dist/parser/outputSchemas.d.ts +266 -36
  77. package/dist/parser/outputSchemas.d.ts.map +1 -1
  78. package/dist/parser/outputSchemas.js +109 -0
  79. package/dist/parser/outputSchemas.js.map +1 -1
  80. package/dist/registry/RegistryClient.d.ts +9 -7
  81. package/dist/registry/RegistryClient.d.ts.map +1 -1
  82. package/dist/registry/RegistryClient.js +82 -51
  83. package/dist/registry/RegistryClient.js.map +1 -1
  84. package/dist/submission/SubmissionClient.d.ts +81 -0
  85. package/dist/submission/SubmissionClient.d.ts.map +1 -0
  86. package/dist/submission/SubmissionClient.js +266 -0
  87. package/dist/submission/SubmissionClient.js.map +1 -0
  88. package/dist/types/agent.d.ts +13 -1
  89. package/dist/types/agent.d.ts.map +1 -1
  90. package/dist/types/command.d.ts +1 -1
  91. package/dist/types/command.d.ts.map +1 -1
  92. package/dist/types/config.d.ts +21 -7
  93. package/dist/types/config.d.ts.map +1 -1
  94. package/dist/types/execution.d.ts +7 -0
  95. package/dist/types/execution.d.ts.map +1 -1
  96. package/dist/types/index.d.ts +1 -1
  97. package/dist/types/pipeline.d.ts +18 -6
  98. package/dist/types/pipeline.d.ts.map +1 -1
  99. package/dist/types/registry.d.ts +11 -4
  100. package/dist/types/registry.d.ts.map +1 -1
  101. package/dist/types/submission.d.ts +116 -0
  102. package/dist/types/submission.d.ts.map +1 -0
  103. package/dist/types/submission.js +2 -0
  104. package/dist/types/submission.js.map +1 -0
  105. package/dist/types/validation.d.ts +4 -0
  106. package/dist/types/validation.d.ts.map +1 -1
  107. package/dist/types/workflow.d.ts +7 -1
  108. package/dist/types/workflow.d.ts.map +1 -1
  109. package/dist/utils/aggregateScores.d.ts +26 -0
  110. package/dist/utils/aggregateScores.d.ts.map +1 -0
  111. package/dist/utils/aggregateScores.js +45 -0
  112. package/dist/utils/aggregateScores.js.map +1 -0
  113. package/dist/utils/parseRef.d.ts.map +1 -1
  114. package/dist/utils/parseRef.js +3 -1
  115. package/dist/utils/parseRef.js.map +1 -1
  116. package/dist/utils/topoSort.d.ts.map +1 -1
  117. package/dist/utils/topoSort.js +5 -2
  118. package/dist/utils/topoSort.js.map +1 -1
  119. package/dist/validation/ValidationClient.d.ts +30 -0
  120. package/dist/validation/ValidationClient.d.ts.map +1 -1
  121. package/dist/validation/ValidationClient.js +106 -18
  122. package/dist/validation/ValidationClient.js.map +1 -1
  123. package/package.json +6 -6
  124. package/dist/ai/index.d.ts +0 -6
  125. package/dist/ai/index.d.ts.map +0 -1
  126. package/dist/ai/index.js +0 -4
  127. package/dist/ai/index.js.map +0 -1
  128. package/dist/registry/index.d.ts +0 -2
  129. package/dist/registry/index.d.ts.map +0 -1
  130. package/dist/registry/index.js +0 -2
  131. package/dist/registry/index.js.map +0 -1
  132. package/dist/validation/index.d.ts +0 -2
  133. package/dist/validation/index.d.ts.map +0 -1
  134. package/dist/validation/index.js +0 -2
  135. package/dist/validation/index.js.map +0 -1
  136. /package/dist/ai/{ShellExecutor.d.ts → shellExecutor.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/types/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/types/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import type { ExecutionResult, Recommendation } from './execution.js';
2
+ import type { AgentResult } from './agent.js';
3
+ import type { ResolvedDefinition } from './registry.js';
4
+ /**
5
+ * SDK's high-level run submission input
6
+ */
7
+ export interface RunSubmission {
8
+ /** Project name */
9
+ project: string;
10
+ /** Workflow/definition name */
11
+ workflowType: string;
12
+ /** Execution result to submit (agent results are also accepted) */
13
+ result: ExecutionResult | AgentResult;
14
+ /** Optional idempotency key */
15
+ idempotencyKey?: string;
16
+ /** Optional raw markdown output */
17
+ rawMarkdown?: string;
18
+ /** Resolved definition — enables analysis summary extraction at submission time.
19
+ * Passed through from UluOpsClient.trackIfEnabled() when available. */
20
+ resolvedDefinition?: ResolvedDefinition;
21
+ }
22
+ /**
23
+ * SDK's high-level response after submission.
24
+ *
25
+ * Correlation contains issue counts from the Submission API.
26
+ * For full issue details (CorrelatedIssue arrays), use `@uluops/ops-sdk` directly.
27
+ */
28
+ export interface RunSubmissionResponse {
29
+ /** Unique run identifier */
30
+ runId: string;
31
+ /** Run number within project */
32
+ runNumber: number;
33
+ /** Project ID */
34
+ projectId: string;
35
+ /** Dashboard URL for this run */
36
+ dashboardUrl: string;
37
+ /** Whether all gates passed */
38
+ allGatesPassed: boolean;
39
+ /** Average score across validators */
40
+ averageScore: number;
41
+ /** Issue correlation counts from submission API */
42
+ correlation: {
43
+ newIssues: number;
44
+ recurringIssues: number;
45
+ regressions: number;
46
+ };
47
+ /** Whether this was a deduplicated response */
48
+ deduplicated: boolean;
49
+ }
50
+ /**
51
+ * Recommendation with fingerprint from submission service
52
+ */
53
+ export interface FingerprintedRecommendation extends Recommendation {
54
+ /** Stable fingerprint for correlation */
55
+ fingerprint: string;
56
+ /** First seen timestamp */
57
+ firstSeen: string;
58
+ /** Occurrence count across runs */
59
+ occurrenceCount: number;
60
+ /** Status */
61
+ status: 'new' | 'recurring' | 'resolved';
62
+ }
63
+ /**
64
+ * Regression information
65
+ */
66
+ export interface RegressionInfo {
67
+ /** Recommendation that regressed */
68
+ recommendation: FingerprintedRecommendation;
69
+ /** Previous run where it was resolved */
70
+ previousRunId: string;
71
+ /** How long it was resolved */
72
+ resolvedDuration: string;
73
+ }
74
+ /**
75
+ * Query options for submission service run history
76
+ */
77
+ export interface SubmissionQueryOptions {
78
+ /** Filter by project */
79
+ project?: string;
80
+ /** Filter by workflow type */
81
+ workflowType?: string;
82
+ /** Limit results (1-100) */
83
+ limit?: number;
84
+ }
85
+ /**
86
+ * Run history entry - matches Submission API Run model
87
+ */
88
+ export interface RunHistoryEntry {
89
+ /** Run UUID */
90
+ id: string;
91
+ /** Project UUID */
92
+ projectId: string;
93
+ /** Sequential run number within project */
94
+ runNumber: number;
95
+ /** Workflow type */
96
+ workflowType: string;
97
+ /** Run timestamp */
98
+ timestamp: string;
99
+ /** Whether all gates passed */
100
+ allGatesPassed: boolean;
101
+ /** Average score across validators */
102
+ averageScore: number;
103
+ /** Raw markdown output (if stored) */
104
+ rawMarkdown?: string;
105
+ /** Archive timestamp (if archived) */
106
+ archivedAt?: string;
107
+ /** Archive reason (if archived) */
108
+ archiveReason?: string;
109
+ /** Idempotency key (if provided) */
110
+ idempotencyKey?: string;
111
+ /** Creation timestamp */
112
+ createdAt: string;
113
+ /** Last update timestamp */
114
+ updatedAt: string;
115
+ }
116
+ //# sourceMappingURL=submission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/types/submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IAErB,mEAAmE;IACnE,MAAM,EAAE,eAAe,GAAG,WAAW,CAAC;IAEtC,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;2EACuE;IACvE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IAErB,+BAA+B;IAC/B,cAAc,EAAE,OAAO,CAAC;IAExB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,+CAA+C;IAC/C,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IAExB,aAAa;IACb,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,cAAc,EAAE,2BAA2B,CAAC;IAE5C,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IAEtB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,+BAA+B;IAC/B,cAAc,EAAE,OAAO,CAAC;IAExB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=submission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/types/submission.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import type { ExecutionResult, Recommendation } from './execution.js';
2
2
  import type { AgentResult } from './agent.js';
3
+ import type { ResolvedDefinition } from './registry.js';
3
4
  /**
4
5
  * SDK's high-level run submission input
5
6
  */
@@ -14,6 +15,9 @@ export interface RunSubmission {
14
15
  idempotencyKey?: string;
15
16
  /** Optional raw markdown output */
16
17
  rawMarkdown?: string;
18
+ /** Resolved definition — enables analysis summary extraction at submission time.
19
+ * Passed through from UluOpsClient.trackIfEnabled() when available. */
20
+ resolvedDefinition?: ResolvedDefinition;
17
21
  }
18
22
  /**
19
23
  * SDK's high-level response after submission.
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IAErB,mEAAmE;IACnE,MAAM,EAAE,eAAe,GAAG,WAAW,CAAC;IAEtC,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAC;IAExB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,+CAA+C;IAC/C,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IAExB,aAAa;IACb,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,cAAc,EAAE,2BAA2B,CAAC;IAE5C,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IAEtB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAC;IAExB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IAErB,mEAAmE;IACnE,MAAM,EAAE,eAAe,GAAG,WAAW,CAAC;IAEtC,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;2EACuE;IACvE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAC;IAExB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,+CAA+C;IAC/C,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IAExB,aAAa;IACb,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,cAAc,EAAE,2BAA2B,CAAC;IAE5C,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IAEtB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAC;IAExB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -23,7 +23,11 @@ export interface WorkflowDefinition {
23
23
  /** Maximum concurrent phases (default: unlimited) */
24
24
  max_parallel?: number;
25
25
  };
26
- /** Result aggregation */
26
+ /** Result aggregation.
27
+ *
28
+ * All declared methods are enacted by WorkflowExecutor.aggregate() (fixed
29
+ * 2026-04-16 — previously only weighted_average was implemented regardless
30
+ * of method). CommandExecutor.aggregateResults() was fixed in 25b434a. */
27
31
  aggregation: {
28
32
  /** Score aggregation */
29
33
  score: {
@@ -49,6 +53,8 @@ export interface PhaseDefinition {
49
53
  type?: 'validate' | 'execute' | 'mixed';
50
54
  /** Commands to execute in this phase (refs in name@version format) */
51
55
  commands: string[];
56
+ /** Agent refs to execute directly (refs in name@version format, from WDL steps[].agent) */
57
+ agentRefs?: string[];
52
58
  /** Execute commands in parallel */
53
59
  parallel?: boolean;
54
60
  /** Phase dependencies */
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/types/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/types/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared score aggregation for multi-agent/multi-phase results.
3
+ *
4
+ * Used by both CommandExecutor and WorkflowExecutor to eliminate
5
+ * duplicated switch blocks that had already begun to diverge
6
+ * (Math.round applied in WorkflowExecutor but not CommandExecutor).
7
+ *
8
+ * Both callers now get consistent behavior: weighted_average and
9
+ * average are rounded to the nearest integer.
10
+ */
11
+ export type AggregationMethod = 'min' | 'max' | 'sum' | 'weighted_average' | 'average';
12
+ export interface ScoredItem {
13
+ /** Key used to look up weight in the weights map */
14
+ key: string;
15
+ score: number;
16
+ }
17
+ /**
18
+ * Aggregate scores using the specified method.
19
+ *
20
+ * @param items - Scored items with keys for weight lookup
21
+ * @param method - Aggregation method (defaults to 'average')
22
+ * @param weights - Weight map keyed by item key (defaults to equal weight of 1)
23
+ * @returns Aggregated score, rounded for average/weighted_average
24
+ */
25
+ export declare function aggregateScores(items: ScoredItem[], method?: string, weights?: Record<string, number>): number;
26
+ //# sourceMappingURL=aggregateScores.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregateScores.d.ts","sourceRoot":"","sources":["../../src/utils/aggregateScores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAEvF,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EAAE,EACnB,MAAM,GAAE,MAAkB,EAC1B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,MAAM,CA0BR"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Shared score aggregation for multi-agent/multi-phase results.
3
+ *
4
+ * Used by both CommandExecutor and WorkflowExecutor to eliminate
5
+ * duplicated switch blocks that had already begun to diverge
6
+ * (Math.round applied in WorkflowExecutor but not CommandExecutor).
7
+ *
8
+ * Both callers now get consistent behavior: weighted_average and
9
+ * average are rounded to the nearest integer.
10
+ */
11
+ /**
12
+ * Aggregate scores using the specified method.
13
+ *
14
+ * @param items - Scored items with keys for weight lookup
15
+ * @param method - Aggregation method (defaults to 'average')
16
+ * @param weights - Weight map keyed by item key (defaults to equal weight of 1)
17
+ * @returns Aggregated score, rounded for average/weighted_average
18
+ */
19
+ export function aggregateScores(items, method = 'average', weights = {}) {
20
+ if (items.length === 0)
21
+ return 0;
22
+ const scores = items.map(i => i.score);
23
+ switch (method) {
24
+ case 'min':
25
+ return Math.min(...scores);
26
+ case 'max':
27
+ return Math.max(...scores);
28
+ case 'sum':
29
+ return scores.reduce((a, b) => a + b, 0);
30
+ case 'weighted_average': {
31
+ let totalWeight = 0;
32
+ let weightedSum = 0;
33
+ for (const item of items) {
34
+ const w = weights[item.key] ?? 1;
35
+ totalWeight += w;
36
+ weightedSum += item.score * w;
37
+ }
38
+ return totalWeight > 0 ? Math.round(weightedSum / totalWeight) : 0;
39
+ }
40
+ case 'average':
41
+ default:
42
+ return Math.round(scores.reduce((a, b) => a + b, 0) / scores.length);
43
+ }
44
+ }
45
+ //# sourceMappingURL=aggregateScores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregateScores.js","sourceRoot":"","sources":["../../src/utils/aggregateScores.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,SAAiB,SAAS,EAC1B,UAAkC,EAAE;IAEpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjC,WAAW,IAAI,CAAC,CAAC;gBACjB,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,SAAS,CAAC;QACf;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseRef.d.ts","sourceRoot":"","sources":["../../src/utils/parseRef.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAIjF"}
1
+ {"version":3,"file":"parseRef.d.ts","sourceRoot":"","sources":["../../src/utils/parseRef.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAMjF"}
@@ -11,6 +11,8 @@ export function parseRef(ref) {
11
11
  const atIndex = ref.indexOf('@');
12
12
  if (atIndex === -1)
13
13
  return [ref, undefined];
14
- return [ref.slice(0, atIndex), ref.slice(atIndex + 1) || undefined];
14
+ const version = ref.slice(atIndex + 1) || undefined;
15
+ // 'latest' is a tag, not a semver version — treat as unversioned (resolve latest published)
16
+ return [ref.slice(0, atIndex), version === 'latest' ? undefined : version];
15
17
  }
16
18
  //# sourceMappingURL=parseRef.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseRef.js","sourceRoot":"","sources":["../../src/utils/parseRef.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"parseRef.js","sourceRoot":"","sources":["../../src/utils/parseRef.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IACpD,4FAA4F;IAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC7E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"topoSort.d.ts","sourceRoot":"","sources":["../../src/utils/topoSort.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAqD7E"}
1
+ {"version":3,"file":"topoSort.d.ts","sourceRoot":"","sources":["../../src/utils/topoSort.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAuD7E"}
@@ -5,6 +5,7 @@
5
5
  * have their dependencies satisfied by phases in earlier levels.
6
6
  * Phases within the same level are independent and can run in parallel.
7
7
  */
8
+ import { ConfigurationError } from '../errors/index.js';
8
9
  /**
9
10
  * Group phases into topological execution levels.
10
11
  *
@@ -26,7 +27,8 @@ export function topoGroupLevels(phases) {
26
27
  for (const phase of phases) {
27
28
  for (const dep of phase.depends_on ?? []) {
28
29
  if (!phaseMap.has(dep)) {
29
- throw new Error(`Phase "${phase.id}" depends on "${dep}" which does not exist`);
30
+ throw new ConfigurationError(`Phase "${phase.id}" depends on "${dep}" which does not exist. ` +
31
+ `Available phases: ${[...phaseMap.keys()].join(', ')}`);
30
32
  }
31
33
  }
32
34
  }
@@ -48,7 +50,8 @@ export function topoGroupLevels(phases) {
48
50
  const remaining = phases
49
51
  .filter(p => !placed.has(p.id))
50
52
  .map(p => p.id);
51
- throw new Error(`Cycle detected in phase dependencies: ${remaining.join(', ')}`);
53
+ throw new ConfigurationError(`Cycle detected in phase dependencies: ${remaining.join(', ')}. ` +
54
+ `Check depends_on fields for circular references.`);
52
55
  }
53
56
  for (const phase of level) {
54
57
  placed.add(phase.id);
@@ -1 +1 @@
1
- {"version":3,"file":"topoSort.js","sourceRoot":"","sources":["../../src/utils/topoSort.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAA4B,MAAW;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAa,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,CAAC,EAAE,iBAAiB,GAAG,wBAAwB,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5D,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,wCAAwC;YACxC,MAAM,SAAS,GAAG,MAAM;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,yCAAyC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"topoSort.js","sourceRoot":"","sources":["../../src/utils/topoSort.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAA4B,MAAW;IACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAa,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,kBAAkB,CAC1B,UAAU,KAAK,CAAC,EAAE,iBAAiB,GAAG,0BAA0B;oBAChE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAE5D,IAAI,gBAAgB,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,wCAAwC;YACxC,MAAM,SAAS,GAAG,MAAM;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClB,MAAM,IAAI,kBAAkB,CAC1B,yCAAyC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjE,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -15,6 +15,7 @@ import type { RunSubmission, RunSubmissionResponse, RunHistoryEntry, ValidationQ
15
15
  export declare class ValidationClient {
16
16
  private config;
17
17
  private ops;
18
+ private readonly analysisExtractor;
18
19
  constructor(config: ResolvedConfig);
19
20
  /**
20
21
  * Submit execution results to validation service
@@ -39,10 +40,39 @@ export declare class ValidationClient {
39
40
  * Get details for a specific run by ID
40
41
  */
41
42
  getRun(runId: string): Promise<RunSubmissionResponse>;
43
+ /**
44
+ * Determine if a decision is positive using decisionCategory (agents) or raw string fallback.
45
+ * Resolves Aporia A3: cognitive lens agents with non-PASS positive decisions
46
+ * (EXAMINED, VITAL, FLOWING, etc.) now correctly report allGatesPassed: true.
47
+ */
48
+ private isPositiveDecision;
42
49
  /**
43
50
  * Transform SDK RunSubmission to OpsClient SaveFeaturesListInput format
44
51
  */
45
52
  private transformToOpsInput;
53
+ /**
54
+ * Check if a result is an AgentResult (type === 'agent').
55
+ */
56
+ private isAgentResult;
57
+ /**
58
+ * Check if a result is a WorkflowResult with decomposable phases.
59
+ */
60
+ private isWorkflowResult;
61
+ /**
62
+ * Extract individual agent entries from workflow phases.
63
+ * Each command result within a phase becomes its own agent entry.
64
+ */
65
+ private extractWorkflowAgents;
66
+ /**
67
+ * Convert a single ExecutionResult or AgentResult into an agent tracker entry.
68
+ */
69
+ private resultToAgent;
70
+ /**
71
+ * Convert a CommandResult into an agent tracker entry.
72
+ */
73
+ private commandToAgent;
74
+ /** Extract token metrics into the tracker's expected shape. */
75
+ private extractTokens;
46
76
  /**
47
77
  * Create a local-only response when tracking is disabled
48
78
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationClient.d.ts","sourceRoot":"","sources":["../../src/validation/ValidationClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAE5H;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAGf,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,GAAG,CAAY;gBAEH,MAAM,EAAE,cAAc;IAQ1C;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwBvE;;;;OAIG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,GAAG,WAAW,GACpC,OAAO,CAAC;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IAYF;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,GAChD,OAAO,CAAC,eAAe,EAAE,CAAC;IAuB7B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkB3D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoD3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
1
+ {"version":3,"file":"ValidationClient.d.ts","sourceRoot":"","sources":["../../src/validation/ValidationClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAG5H;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAIf,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;gBAEhD,MAAM,EAAE,cAAc;IAQ1C;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwBvE;;;;OAIG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,GAAG,WAAW,GACpC,OAAO,CAAC;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IAYF;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,GAChD,OAAO,CAAC,eAAe,EAAE,CAAC;IAuB7B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkB3D;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB,+DAA+D;IAC/D,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
@@ -1,4 +1,5 @@
1
1
  import { OpsClient } from '@uluops/ops-sdk';
2
+ import { AnalysisSummaryExtractor } from '../analysis/AnalysisSummaryExtractor.js';
2
3
  /**
3
4
  * Thin wrapper around @uluops/ops-sdk for execution result submission.
4
5
  *
@@ -12,6 +13,7 @@ import { OpsClient } from '@uluops/ops-sdk';
12
13
  export class ValidationClient {
13
14
  config;
14
15
  ops;
16
+ analysisExtractor = new AnalysisSummaryExtractor();
15
17
  constructor(config) {
16
18
  this.config = config;
17
19
  this.ops = new OpsClient({
@@ -102,36 +104,45 @@ export class ValidationClient {
102
104
  // ─────────────────────────────────────────────────────────────────────────────
103
105
  // Private Methods
104
106
  // ─────────────────────────────────────────────────────────────────────────────
107
+ /**
108
+ * Determine if a decision is positive using decisionCategory (agents) or raw string fallback.
109
+ * Resolves Aporia A3: cognitive lens agents with non-PASS positive decisions
110
+ * (EXAMINED, VITAL, FLOWING, etc.) now correctly report allGatesPassed: true.
111
+ */
112
+ isPositiveDecision(result) {
113
+ if ('decisionCategory' in result && result.decisionCategory) {
114
+ return result.decisionCategory === 'positive';
115
+ }
116
+ return result.decision === 'PASS' || result.decision === 'SHIP';
117
+ }
105
118
  /**
106
119
  * Transform SDK RunSubmission to OpsClient SaveFeaturesListInput format
107
120
  */
108
121
  transformToOpsInput(submission) {
109
122
  const { result } = submission;
123
+ // Workflow/pipeline results: decompose phases into per-agent entries
124
+ const agents = this.isWorkflowResult(result)
125
+ ? this.extractWorkflowAgents(result)
126
+ : [this.resultToAgent(result)];
127
+ // Extract analysis summary and records when definition is available and result is an agent
128
+ let analysisSummary;
129
+ let analysisRecords;
130
+ if (submission.resolvedDefinition && this.isAgentResult(result)) {
131
+ const analysis = this.analysisExtractor.extract(result, submission.resolvedDefinition);
132
+ analysisSummary = analysis.summary;
133
+ analysisRecords = analysis.records.length > 0 ? analysis.records : undefined;
134
+ }
110
135
  return {
111
136
  project: submission.project,
112
137
  workflowType: submission.workflowType,
113
138
  idempotencyKey: submission.idempotencyKey,
114
- agents: [{
115
- name: result.name,
116
- score: result.score ?? 0,
117
- maxScore: 100,
118
- decision: result.decision,
119
- model: result.metrics.model,
120
- tokens: {
121
- inputTokens: result.metrics.inputTokens,
122
- outputTokens: result.metrics.outputTokens,
123
- cacheCreationTokens: result.metrics.cacheCreationTokens,
124
- cacheReadTokens: result.metrics.cacheReadTokens,
125
- totalEffectiveTokens: result.metrics.totalEffectiveTokens,
126
- },
127
- durationMs: result.metrics.durationMs,
128
- }],
139
+ agents,
129
140
  recommendations: result.recommendations.map(r => ({
130
141
  agent: r.agent ?? 'unknown',
131
142
  title: r.title,
132
143
  priority: r.priority,
133
144
  severity: r.severity,
134
- failureCode: r.failureCode,
145
+ failureCode: r.failureCode && /^(STR|SEM|PRA|EPI)-[A-Z]{3}\/[CHMLI]$/.test(r.failureCode) ? r.failureCode : undefined,
135
146
  failureDomain: r.failureDomain,
136
147
  failureMode: r.failureMode,
137
148
  category: r.category,
@@ -146,13 +157,90 @@ export class ValidationClient {
146
157
  timestamp: new Date().toISOString(),
147
158
  rawMarkdown: submission.rawMarkdown,
148
159
  summary: {
149
- allGatesPassed: result.decision === 'PASS' || result.decision === 'SHIP',
160
+ allGatesPassed: this.isPositiveDecision(result),
150
161
  averageScore: result.score ?? 0,
151
162
  },
152
163
  definitionType: result.type,
153
164
  definitionName: result.name,
154
165
  definitionVersion: result.version !== 'unknown' ? result.version : undefined,
155
166
  definitionHash: result.definitionHash?.replace(/^sha256:/, ''),
167
+ definitionMinSubscription: result.minSubscription,
168
+ analysisSummary,
169
+ analysisRecords,
170
+ };
171
+ }
172
+ /**
173
+ * Check if a result is an AgentResult (type === 'agent').
174
+ */
175
+ isAgentResult(result) {
176
+ return result.type === 'agent';
177
+ }
178
+ /**
179
+ * Check if a result is a WorkflowResult with decomposable phases.
180
+ */
181
+ isWorkflowResult(result) {
182
+ return result.type === 'workflow' && 'phases' in result && Array.isArray(result.phases);
183
+ }
184
+ /**
185
+ * Extract individual agent entries from workflow phases.
186
+ * Each command result within a phase becomes its own agent entry.
187
+ */
188
+ extractWorkflowAgents(result) {
189
+ const agents = [];
190
+ for (const phase of result.phases) {
191
+ if (phase.decision === 'skipped' || phase.decision === 'aborted')
192
+ continue;
193
+ for (const cmd of phase.commands) {
194
+ agents.push(this.commandToAgent(cmd));
195
+ }
196
+ }
197
+ // Fallback: if no agents were extracted (all phases skipped), create a single entry
198
+ if (agents.length === 0) {
199
+ agents.push(this.resultToAgent(result));
200
+ }
201
+ return agents;
202
+ }
203
+ /**
204
+ * Convert a single ExecutionResult or AgentResult into an agent tracker entry.
205
+ */
206
+ resultToAgent(result) {
207
+ return {
208
+ name: result.name,
209
+ definitionVersion: result.version !== 'unknown' ? result.version : undefined,
210
+ score: result.score ?? 0,
211
+ maxScore: 100,
212
+ decision: result.decision,
213
+ summary: 'summary' in result ? result.summary : undefined,
214
+ model: result.metrics.model,
215
+ tokens: this.extractTokens(result.metrics),
216
+ durationMs: result.metrics.durationMs,
217
+ };
218
+ }
219
+ /**
220
+ * Convert a CommandResult into an agent tracker entry.
221
+ */
222
+ commandToAgent(cmd) {
223
+ return {
224
+ name: cmd.name,
225
+ definitionVersion: cmd.version !== 'unknown' ? cmd.version : undefined,
226
+ score: cmd.score ?? 0,
227
+ maxScore: cmd.maxScore ?? 100,
228
+ decision: cmd.decision,
229
+ summary: undefined,
230
+ model: cmd.metrics.model,
231
+ tokens: this.extractTokens(cmd.metrics),
232
+ durationMs: cmd.metrics.durationMs,
233
+ };
234
+ }
235
+ /** Extract token metrics into the tracker's expected shape. */
236
+ extractTokens(metrics) {
237
+ return {
238
+ inputTokens: metrics.inputTokens,
239
+ outputTokens: metrics.outputTokens,
240
+ cacheCreationTokens: metrics.cacheCreationTokens,
241
+ cacheReadTokens: metrics.cacheReadTokens,
242
+ thinkingTokens: metrics.thinkingTokens,
243
+ totalEffectiveTokens: metrics.totalEffectiveTokens,
156
244
  };
157
245
  }
158
246
  /**
@@ -164,7 +252,7 @@ export class ValidationClient {
164
252
  runNumber: 0,
165
253
  projectId: 'local',
166
254
  dashboardUrl: '',
167
- allGatesPassed: submission.result.decision === 'PASS' || submission.result.decision === 'SHIP',
255
+ allGatesPassed: this.isPositiveDecision(submission.result),
168
256
  averageScore: submission.result.score ?? 0,
169
257
  correlation: {
170
258
  newIssues: submission.result.recommendations.length,