@defai.digital/discussion-domain 13.0.3 → 13.1.1

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 (73) hide show
  1. package/dist/budget-manager.d.ts +79 -0
  2. package/dist/budget-manager.d.ts.map +1 -0
  3. package/dist/budget-manager.js +155 -0
  4. package/dist/budget-manager.js.map +1 -0
  5. package/dist/confidence-extractor.d.ts +60 -0
  6. package/dist/confidence-extractor.d.ts.map +1 -0
  7. package/dist/confidence-extractor.js +251 -0
  8. package/dist/confidence-extractor.js.map +1 -0
  9. package/dist/consensus/synthesis.d.ts.map +1 -1
  10. package/dist/consensus/synthesis.js +2 -0
  11. package/dist/consensus/synthesis.js.map +1 -1
  12. package/dist/consensus/voting.d.ts +3 -0
  13. package/dist/consensus/voting.d.ts.map +1 -1
  14. package/dist/consensus/voting.js +15 -4
  15. package/dist/consensus/voting.js.map +1 -1
  16. package/dist/context-tracker.d.ts +77 -0
  17. package/dist/context-tracker.d.ts.map +1 -0
  18. package/dist/context-tracker.js +177 -0
  19. package/dist/context-tracker.js.map +1 -0
  20. package/dist/cost-tracker.d.ts +123 -0
  21. package/dist/cost-tracker.d.ts.map +1 -0
  22. package/dist/cost-tracker.js +196 -0
  23. package/dist/cost-tracker.js.map +1 -0
  24. package/dist/executor.d.ts.map +1 -1
  25. package/dist/executor.js +9 -0
  26. package/dist/executor.js.map +1 -1
  27. package/dist/index.d.ts +7 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +12 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/participant-resolver.d.ts +111 -0
  32. package/dist/participant-resolver.d.ts.map +1 -0
  33. package/dist/participant-resolver.js +160 -0
  34. package/dist/participant-resolver.js.map +1 -0
  35. package/dist/patterns/round-robin.d.ts +3 -0
  36. package/dist/patterns/round-robin.d.ts.map +1 -1
  37. package/dist/patterns/round-robin.js +41 -2
  38. package/dist/patterns/round-robin.js.map +1 -1
  39. package/dist/patterns/synthesis.d.ts +3 -0
  40. package/dist/patterns/synthesis.d.ts.map +1 -1
  41. package/dist/patterns/synthesis.js +77 -3
  42. package/dist/patterns/synthesis.js.map +1 -1
  43. package/dist/prompts/templates.d.ts +1 -0
  44. package/dist/prompts/templates.d.ts.map +1 -1
  45. package/dist/prompts/templates.js +3 -1
  46. package/dist/prompts/templates.js.map +1 -1
  47. package/dist/provider-bridge.d.ts +3 -1
  48. package/dist/provider-bridge.d.ts.map +1 -1
  49. package/dist/provider-bridge.js +48 -32
  50. package/dist/provider-bridge.js.map +1 -1
  51. package/dist/recursive-executor.d.ts +80 -0
  52. package/dist/recursive-executor.d.ts.map +1 -0
  53. package/dist/recursive-executor.js +354 -0
  54. package/dist/recursive-executor.js.map +1 -0
  55. package/dist/types.d.ts +83 -0
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/package.json +2 -2
  59. package/src/budget-manager.ts +272 -0
  60. package/src/confidence-extractor.ts +321 -0
  61. package/src/consensus/synthesis.ts +2 -0
  62. package/src/consensus/voting.ts +22 -6
  63. package/src/context-tracker.ts +307 -0
  64. package/src/cost-tracker.ts +363 -0
  65. package/src/executor.ts +9 -0
  66. package/src/index.ts +72 -0
  67. package/src/participant-resolver.ts +297 -0
  68. package/src/patterns/round-robin.ts +48 -2
  69. package/src/patterns/synthesis.ts +89 -3
  70. package/src/prompts/templates.ts +4 -2
  71. package/src/provider-bridge.ts +52 -31
  72. package/src/recursive-executor.ts +510 -0
  73. package/src/types.ts +120 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Discussion Budget Manager
3
+ *
4
+ * Manages timeout budgets across recursive discussions using configurable strategies.
5
+ * Supports fixed, cascade, and budget allocation strategies.
6
+ *
7
+ * Invariants:
8
+ * - INV-DISC-610: Child timeout ≤ parent remaining budget
9
+ * - INV-DISC-611: Minimum time reserved for synthesis
10
+ * - INV-DISC-612: Total timeout includes all nested calls
11
+ * - INV-DISC-613: Strategy applied consistently
12
+ */
13
+ import { type TimeoutConfig, type TimeoutStrategy } from '@defai.digital/contracts';
14
+ /**
15
+ * Budget allocation result for a discussion level
16
+ */
17
+ export interface BudgetAllocation {
18
+ /** Timeout for provider calls at this level */
19
+ providerTimeoutMs: number;
20
+ /** Time reserved for synthesis at this level */
21
+ synthesisTimeMs: number;
22
+ /** Total budget for this level */
23
+ totalLevelBudgetMs: number;
24
+ /** Budget available for sub-discussions */
25
+ subDiscussionBudgetMs: number;
26
+ }
27
+ /**
28
+ * Budget status snapshot
29
+ */
30
+ export interface BudgetStatus {
31
+ /** Total budget configured */
32
+ totalBudgetMs: number;
33
+ /** Time elapsed since start */
34
+ elapsedMs: number;
35
+ /** Remaining budget */
36
+ remainingMs: number;
37
+ /** Current depth */
38
+ currentDepth: number;
39
+ /** Budget used per level */
40
+ usageByLevel: Map<number, number>;
41
+ /** Whether budget is exhausted */
42
+ exhausted: boolean;
43
+ /** Utilization percentage */
44
+ utilizationPercent: number;
45
+ }
46
+ /**
47
+ * Discussion budget manager interface
48
+ */
49
+ export interface DiscussionBudgetManager {
50
+ /** Get budget allocation for a specific depth */
51
+ getAllocation(depth: number): BudgetAllocation;
52
+ /** Get current budget status */
53
+ getStatus(): BudgetStatus;
54
+ /** Record time spent at a level */
55
+ recordUsage(depth: number, elapsedMs: number): void;
56
+ /** Get remaining budget for a depth */
57
+ getRemainingBudget(depth: number): number;
58
+ /** Check if budget allows sub-discussion at depth */
59
+ canAllocateSubDiscussion(depth: number): boolean;
60
+ /** Get timeout for provider call at depth */
61
+ getProviderTimeout(depth: number): number;
62
+ /** Get the configured strategy */
63
+ getStrategy(): TimeoutStrategy;
64
+ /** Create a child budget manager for sub-discussion */
65
+ createChildManager(startingBudgetMs: number): DiscussionBudgetManager;
66
+ }
67
+ /**
68
+ * Creates a discussion budget manager
69
+ */
70
+ export declare function createBudgetManager(config?: Partial<TimeoutConfig>, maxDepth?: number): DiscussionBudgetManager;
71
+ /**
72
+ * Utility to format budget status for logging
73
+ */
74
+ export declare function formatBudgetStatus(status: BudgetStatus): string;
75
+ /**
76
+ * Calculate recommended providers based on remaining budget
77
+ */
78
+ export declare function recommendProvidersForBudget(remainingMs: number, perProviderEstimateMs: number, minProviders?: number, maxProviders?: number): number;
79
+ //# sourceMappingURL=budget-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-manager.d.ts","sourceRoot":"","sources":["../src/budget-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EAKrB,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAE1B,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IAExB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IAEtB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IAEpB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,4BAA4B;IAC5B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,kCAAkC;IAClC,SAAS,EAAE,OAAO,CAAC;IAEnB,6BAA6B;IAC7B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAE/C,gCAAgC;IAChC,SAAS,IAAI,YAAY,CAAC;IAE1B,mCAAmC;IACnC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD,uCAAuC;IACvC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1C,qDAAqD;IACrD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjD,6CAA6C;IAC7C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1C,kCAAkC;IAClC,WAAW,IAAI,eAAe,CAAC;IAE/B,uDAAuD;IACvD,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,uBAAuB,CAAC;CACvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,EACnC,QAAQ,SAAuB,GAC9B,uBAAuB,CAmIzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmB/D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,EAC7B,YAAY,SAAI,EAChB,YAAY,SAAI,GACf,MAAM,CAMR"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Discussion Budget Manager
3
+ *
4
+ * Manages timeout budgets across recursive discussions using configurable strategies.
5
+ * Supports fixed, cascade, and budget allocation strategies.
6
+ *
7
+ * Invariants:
8
+ * - INV-DISC-610: Child timeout ≤ parent remaining budget
9
+ * - INV-DISC-611: Minimum time reserved for synthesis
10
+ * - INV-DISC-612: Total timeout includes all nested calls
11
+ * - INV-DISC-613: Strategy applied consistently
12
+ */
13
+ import { getTimeoutForLevel, DEFAULT_TOTAL_BUDGET_MS, MIN_SYNTHESIS_TIME_MS, MAX_DISCUSSION_DEPTH, } from '@defai.digital/contracts';
14
+ /**
15
+ * Creates a discussion budget manager
16
+ */
17
+ export function createBudgetManager(config = {}, maxDepth = MAX_DISCUSSION_DEPTH) {
18
+ // Apply defaults
19
+ const timeoutConfig = {
20
+ strategy: config.strategy ?? 'cascade',
21
+ totalBudgetMs: config.totalBudgetMs ?? DEFAULT_TOTAL_BUDGET_MS,
22
+ minSynthesisMs: config.minSynthesisMs ?? MIN_SYNTHESIS_TIME_MS,
23
+ levelTimeouts: config.levelTimeouts,
24
+ };
25
+ const startTime = Date.now();
26
+ const usageByLevel = new Map();
27
+ // Pre-calculate allocations for each level
28
+ const allocations = new Map();
29
+ for (let depth = 0; depth <= maxDepth; depth++) {
30
+ const levelTimeout = getTimeoutForLevel(timeoutConfig, depth, maxDepth);
31
+ const synthesisTime = timeoutConfig.minSynthesisMs;
32
+ const providerTime = Math.max(synthesisTime, levelTimeout - synthesisTime);
33
+ // Calculate sub-discussion budget (for next level)
34
+ let subBudget = 0;
35
+ if (depth < maxDepth) {
36
+ subBudget = getTimeoutForLevel(timeoutConfig, depth + 1, maxDepth);
37
+ }
38
+ allocations.set(depth, {
39
+ providerTimeoutMs: providerTime,
40
+ synthesisTimeMs: synthesisTime,
41
+ totalLevelBudgetMs: levelTimeout,
42
+ subDiscussionBudgetMs: subBudget,
43
+ });
44
+ }
45
+ return {
46
+ getAllocation(depth) {
47
+ const allocation = allocations.get(Math.min(depth, maxDepth));
48
+ if (!allocation) {
49
+ // Fallback for unexpected depth
50
+ return {
51
+ providerTimeoutMs: timeoutConfig.minSynthesisMs,
52
+ synthesisTimeMs: timeoutConfig.minSynthesisMs,
53
+ totalLevelBudgetMs: timeoutConfig.minSynthesisMs * 2,
54
+ subDiscussionBudgetMs: 0,
55
+ };
56
+ }
57
+ return { ...allocation };
58
+ },
59
+ getStatus() {
60
+ const elapsedMs = Date.now() - startTime;
61
+ const remainingMs = Math.max(0, timeoutConfig.totalBudgetMs - elapsedMs);
62
+ // Find current depth (highest level with usage)
63
+ let currentDepth = 0;
64
+ for (const [depth] of usageByLevel) {
65
+ if (depth > currentDepth) {
66
+ currentDepth = depth;
67
+ }
68
+ }
69
+ return {
70
+ totalBudgetMs: timeoutConfig.totalBudgetMs,
71
+ elapsedMs,
72
+ remainingMs,
73
+ currentDepth,
74
+ usageByLevel: new Map(usageByLevel),
75
+ exhausted: remainingMs <= 0,
76
+ utilizationPercent: (elapsedMs / timeoutConfig.totalBudgetMs) * 100,
77
+ };
78
+ },
79
+ recordUsage(depth, elapsedMs) {
80
+ const current = usageByLevel.get(depth) ?? 0;
81
+ usageByLevel.set(depth, current + elapsedMs);
82
+ },
83
+ getRemainingBudget(depth) {
84
+ const elapsedMs = Date.now() - startTime;
85
+ const totalRemaining = Math.max(0, timeoutConfig.totalBudgetMs - elapsedMs);
86
+ // Get level allocation
87
+ const allocation = allocations.get(depth);
88
+ if (!allocation) {
89
+ return 0;
90
+ }
91
+ // Usage at this level
92
+ const levelUsage = usageByLevel.get(depth) ?? 0;
93
+ const levelRemaining = Math.max(0, allocation.totalLevelBudgetMs - levelUsage);
94
+ // Return minimum of total remaining and level remaining
95
+ return Math.min(totalRemaining, levelRemaining);
96
+ },
97
+ canAllocateSubDiscussion(depth) {
98
+ // Check if we can go deeper
99
+ if (depth >= maxDepth) {
100
+ return false;
101
+ }
102
+ // Check remaining budget
103
+ const remaining = this.getRemainingBudget(depth);
104
+ const minRequired = timeoutConfig.minSynthesisMs * 2; // Min for sub-discussion
105
+ return remaining >= minRequired;
106
+ },
107
+ getProviderTimeout(depth) {
108
+ const allocation = this.getAllocation(depth);
109
+ const remaining = this.getRemainingBudget(depth);
110
+ // Don't exceed remaining budget
111
+ return Math.min(allocation.providerTimeoutMs, remaining);
112
+ },
113
+ getStrategy() {
114
+ return timeoutConfig.strategy;
115
+ },
116
+ createChildManager(startingBudgetMs) {
117
+ // Create a new manager with reduced budget
118
+ return createBudgetManager({
119
+ ...timeoutConfig,
120
+ totalBudgetMs: startingBudgetMs,
121
+ }, maxDepth);
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * Utility to format budget status for logging
127
+ */
128
+ export function formatBudgetStatus(status) {
129
+ const lines = [
130
+ `Budget Status:`,
131
+ ` Total: ${status.totalBudgetMs}ms`,
132
+ ` Elapsed: ${status.elapsedMs}ms`,
133
+ ` Remaining: ${status.remainingMs}ms`,
134
+ ` Utilization: ${status.utilizationPercent.toFixed(1)}%`,
135
+ ` Current Depth: ${status.currentDepth}`,
136
+ ` Exhausted: ${status.exhausted}`,
137
+ ];
138
+ if (status.usageByLevel.size > 0) {
139
+ lines.push(` Usage by Level:`);
140
+ for (const [depth, usage] of status.usageByLevel) {
141
+ lines.push(` Level ${depth}: ${usage}ms`);
142
+ }
143
+ }
144
+ return lines.join('\n');
145
+ }
146
+ /**
147
+ * Calculate recommended providers based on remaining budget
148
+ */
149
+ export function recommendProvidersForBudget(remainingMs, perProviderEstimateMs, minProviders = 2, maxProviders = 6) {
150
+ // Calculate how many providers we can fit
151
+ const possibleProviders = Math.floor(remainingMs / perProviderEstimateMs);
152
+ // Clamp to valid range
153
+ return Math.max(minProviders, Math.min(maxProviders, possibleProviders));
154
+ }
155
+ //# sourceMappingURL=budget-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-manager.js","sourceRoot":"","sources":["../src/budget-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Confidence Extractor
3
+ *
4
+ * Extracts confidence scores from provider responses for early exit decisions.
5
+ * Supports cascading confidence where high-confidence first responses can
6
+ * short-circuit the discussion.
7
+ *
8
+ * Invariants:
9
+ * - INV-DISC-622: Confidence threshold configurable (default 0.9)
10
+ * - INV-DISC-623: Minimum 2 providers for quality
11
+ */
12
+ import type { CascadingConfidenceConfig } from '@defai.digital/contracts';
13
+ /**
14
+ * Result of confidence extraction from a response
15
+ */
16
+ export interface ExtractedConfidence {
17
+ /** Confidence score 0-1, or null if not extractable */
18
+ score: number | null;
19
+ /** Method used to extract confidence */
20
+ method: 'explicit' | 'heuristic' | 'none';
21
+ /** Explanation of confidence assessment */
22
+ explanation?: string;
23
+ }
24
+ /**
25
+ * Result of early exit evaluation
26
+ */
27
+ export interface EarlyExitDecision {
28
+ /** Whether to exit early */
29
+ shouldExit: boolean;
30
+ /** Reason for decision */
31
+ reason: string;
32
+ /** Confidence score that triggered decision */
33
+ confidence?: number;
34
+ /** Number of providers that responded */
35
+ providerCount: number;
36
+ }
37
+ /**
38
+ * Default cascading confidence config
39
+ */
40
+ export declare const DEFAULT_CASCADING_CONFIDENCE: Required<CascadingConfidenceConfig>;
41
+ /**
42
+ * Extract confidence score from a provider response
43
+ */
44
+ export declare function extractConfidence(content: string): ExtractedConfidence;
45
+ /**
46
+ * Evaluate whether to exit early based on provider responses
47
+ */
48
+ export declare function evaluateEarlyExit(responses: Array<{
49
+ provider: string;
50
+ content: string;
51
+ confidence: number | undefined;
52
+ }>, config?: CascadingConfidenceConfig): EarlyExitDecision;
53
+ /**
54
+ * Calculate agreement score between provider responses
55
+ * Higher score = more agreement = higher effective confidence
56
+ */
57
+ export declare function calculateAgreementScore(responses: Array<{
58
+ content: string;
59
+ }>): number;
60
+ //# sourceMappingURL=confidence-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidence-extractor.d.ts","sourceRoot":"","sources":["../src/confidence-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,wCAAwC;IACxC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IAE1C,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,UAAU,EAAE,OAAO,CAAC;IAEpB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,yBAAyB,CAI5E,CAAC;AA+CF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAgGtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,EACvF,MAAM,GAAE,yBAAwD,GAC/D,iBAAiB,CAoEnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACpC,MAAM,CAsCR"}
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Confidence Extractor
3
+ *
4
+ * Extracts confidence scores from provider responses for early exit decisions.
5
+ * Supports cascading confidence where high-confidence first responses can
6
+ * short-circuit the discussion.
7
+ *
8
+ * Invariants:
9
+ * - INV-DISC-622: Confidence threshold configurable (default 0.9)
10
+ * - INV-DISC-623: Minimum 2 providers for quality
11
+ */
12
+ /**
13
+ * Default cascading confidence config
14
+ */
15
+ export const DEFAULT_CASCADING_CONFIDENCE = {
16
+ enabled: true,
17
+ threshold: 0.9,
18
+ minProviders: 2,
19
+ };
20
+ /**
21
+ * Patterns for extracting explicit confidence from responses
22
+ */
23
+ const CONFIDENCE_PATTERNS = [
24
+ // "Confidence: 95%" or "Confidence: 0.95"
25
+ /confidence[:\s]+(\d+(?:\.\d+)?)\s*%?/i,
26
+ // "I am 95% confident" or "95% certain"
27
+ /(?:am|is)\s+(\d+(?:\.\d+)?)\s*%?\s*(?:confident|certain|sure)/i,
28
+ // "[HIGH CONFIDENCE]" markers
29
+ /\[(?:very\s+)?high\s+confidence\]/i,
30
+ /\[medium\s+confidence\]/i,
31
+ /\[low\s+confidence\]/i,
32
+ ];
33
+ /**
34
+ * Heuristic confidence indicators
35
+ */
36
+ const HIGH_CONFIDENCE_PHRASES = [
37
+ 'definitely',
38
+ 'certainly',
39
+ 'absolutely',
40
+ 'without a doubt',
41
+ 'clearly',
42
+ 'obviously',
43
+ 'undoubtedly',
44
+ 'i am confident',
45
+ 'i am certain',
46
+ 'i strongly believe',
47
+ ];
48
+ const LOW_CONFIDENCE_PHRASES = [
49
+ 'perhaps',
50
+ 'maybe',
51
+ 'might',
52
+ 'could be',
53
+ 'not sure',
54
+ 'uncertain',
55
+ 'possibly',
56
+ 'it depends',
57
+ 'hard to say',
58
+ 'difficult to determine',
59
+ 'i think',
60
+ 'it seems',
61
+ ];
62
+ /**
63
+ * Extract confidence score from a provider response
64
+ */
65
+ export function extractConfidence(content) {
66
+ if (!content || content.trim().length === 0) {
67
+ return { score: null, method: 'none' };
68
+ }
69
+ const normalizedContent = content.toLowerCase();
70
+ // Try explicit patterns first
71
+ for (const pattern of CONFIDENCE_PATTERNS) {
72
+ const match = pattern.exec(content);
73
+ if (match) {
74
+ // Check for marker-based confidence
75
+ if (match[0].includes('high confidence')) {
76
+ return {
77
+ score: 0.9,
78
+ method: 'explicit',
79
+ explanation: 'Explicit high confidence marker found',
80
+ };
81
+ }
82
+ if (match[0].includes('medium confidence')) {
83
+ return {
84
+ score: 0.6,
85
+ method: 'explicit',
86
+ explanation: 'Explicit medium confidence marker found',
87
+ };
88
+ }
89
+ if (match[0].includes('low confidence')) {
90
+ return {
91
+ score: 0.3,
92
+ method: 'explicit',
93
+ explanation: 'Explicit low confidence marker found',
94
+ };
95
+ }
96
+ // Numeric confidence
97
+ if (match[1]) {
98
+ let score = parseFloat(match[1]);
99
+ // Normalize percentage to 0-1
100
+ if (score > 1) {
101
+ score = score / 100;
102
+ }
103
+ // Clamp to valid range
104
+ score = Math.max(0, Math.min(1, score));
105
+ return {
106
+ score,
107
+ method: 'explicit',
108
+ explanation: `Explicit confidence: ${(score * 100).toFixed(0)}%`,
109
+ };
110
+ }
111
+ }
112
+ }
113
+ // Fall back to heuristic analysis
114
+ const highCount = HIGH_CONFIDENCE_PHRASES.filter(phrase => normalizedContent.includes(phrase)).length;
115
+ const lowCount = LOW_CONFIDENCE_PHRASES.filter(phrase => normalizedContent.includes(phrase)).length;
116
+ if (highCount > 0 || lowCount > 0) {
117
+ // Calculate heuristic score based on phrase counts
118
+ const netConfidence = highCount - lowCount;
119
+ let score;
120
+ if (netConfidence >= 2) {
121
+ score = 0.85;
122
+ }
123
+ else if (netConfidence === 1) {
124
+ score = 0.75;
125
+ }
126
+ else if (netConfidence === 0) {
127
+ score = 0.6;
128
+ }
129
+ else if (netConfidence === -1) {
130
+ score = 0.45;
131
+ }
132
+ else {
133
+ score = 0.3;
134
+ }
135
+ return {
136
+ score,
137
+ method: 'heuristic',
138
+ explanation: `Heuristic: ${highCount} high-confidence phrases, ${lowCount} low-confidence phrases`,
139
+ };
140
+ }
141
+ // Response length heuristic - longer, more detailed responses often indicate confidence
142
+ const wordCount = content.split(/\s+/).length;
143
+ if (wordCount > 200) {
144
+ return {
145
+ score: 0.7,
146
+ method: 'heuristic',
147
+ explanation: 'Detailed response suggests moderate-high confidence',
148
+ };
149
+ }
150
+ return { score: null, method: 'none' };
151
+ }
152
+ /**
153
+ * Evaluate whether to exit early based on provider responses
154
+ */
155
+ export function evaluateEarlyExit(responses, config = DEFAULT_CASCADING_CONFIDENCE) {
156
+ // Early exit disabled
157
+ if (!config.enabled) {
158
+ return {
159
+ shouldExit: false,
160
+ reason: 'Cascading confidence disabled',
161
+ providerCount: responses.length,
162
+ };
163
+ }
164
+ // Not enough providers yet
165
+ if (responses.length < config.minProviders) {
166
+ return {
167
+ shouldExit: false,
168
+ reason: `Need at least ${config.minProviders} providers, have ${responses.length}`,
169
+ providerCount: responses.length,
170
+ };
171
+ }
172
+ // Check if all responses have high confidence
173
+ const confidences = [];
174
+ for (const response of responses) {
175
+ // Use provided confidence or extract it
176
+ const confidence = response.confidence ?? extractConfidence(response.content).score;
177
+ if (confidence !== null) {
178
+ confidences.push(confidence);
179
+ }
180
+ }
181
+ if (confidences.length === 0) {
182
+ return {
183
+ shouldExit: false,
184
+ reason: 'No confidence scores available',
185
+ providerCount: responses.length,
186
+ };
187
+ }
188
+ // Calculate average confidence
189
+ const avgConfidence = confidences.reduce((a, b) => a + b, 0) / confidences.length;
190
+ // Check if average exceeds threshold
191
+ if (avgConfidence >= config.threshold) {
192
+ return {
193
+ shouldExit: true,
194
+ reason: `Average confidence ${(avgConfidence * 100).toFixed(0)}% exceeds threshold ${(config.threshold * 100).toFixed(0)}%`,
195
+ confidence: avgConfidence,
196
+ providerCount: responses.length,
197
+ };
198
+ }
199
+ // Check if first provider has high confidence (cascading pattern)
200
+ const firstConfidence = confidences[0];
201
+ if (firstConfidence !== undefined && firstConfidence >= config.threshold && responses.length >= config.minProviders) {
202
+ return {
203
+ shouldExit: true,
204
+ reason: `First provider confidence ${(firstConfidence * 100).toFixed(0)}% exceeds threshold`,
205
+ confidence: firstConfidence,
206
+ providerCount: responses.length,
207
+ };
208
+ }
209
+ return {
210
+ shouldExit: false,
211
+ reason: `Average confidence ${(avgConfidence * 100).toFixed(0)}% below threshold ${(config.threshold * 100).toFixed(0)}%`,
212
+ confidence: avgConfidence,
213
+ providerCount: responses.length,
214
+ };
215
+ }
216
+ /**
217
+ * Calculate agreement score between provider responses
218
+ * Higher score = more agreement = higher effective confidence
219
+ */
220
+ export function calculateAgreementScore(responses) {
221
+ if (responses.length < 2) {
222
+ return 1.0; // Single response has perfect "agreement"
223
+ }
224
+ // Simple heuristic: check for common key phrases/conclusions
225
+ const keywords = new Map();
226
+ for (const response of responses) {
227
+ const words = response.content
228
+ .toLowerCase()
229
+ .split(/\s+/)
230
+ .filter(w => w.length > 4); // Only meaningful words
231
+ for (const word of words) {
232
+ keywords.set(word, (keywords.get(word) || 0) + 1);
233
+ }
234
+ }
235
+ // Count words that appear in multiple responses
236
+ let sharedCount = 0;
237
+ const totalUniqueWords = keywords.size;
238
+ for (const count of keywords.values()) {
239
+ if (count > 1) {
240
+ sharedCount++;
241
+ }
242
+ }
243
+ if (totalUniqueWords === 0) {
244
+ return 0.5; // Default for empty responses
245
+ }
246
+ // Calculate agreement ratio (0-1)
247
+ const agreementRatio = sharedCount / totalUniqueWords;
248
+ // Scale to reasonable range (0.3 - 1.0)
249
+ return 0.3 + agreementRatio * 0.7;
250
+ }
251
+ //# sourceMappingURL=confidence-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidence-extractor.js","sourceRoot":"","sources":["../src/confidence-extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../src/consensus/synthesis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAQ1G,qBAAa,kBAAmB,YAAW,iBAAiB;IAC1D,QAAQ,CAAC,MAAM,EAAG,WAAW,CAAU;IAEjC,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiGpF,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,uBAAuB;CAiBhC"}
1
+ {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../src/consensus/synthesis.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAQ1G,qBAAa,kBAAmB,YAAW,iBAAiB;IAC1D,QAAQ,CAAC,MAAM,EAAG,WAAW,CAAU;IAEjC,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiGpF,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,uBAAuB;CAiBhC"}
@@ -98,6 +98,8 @@ export class SynthesisConsensus {
98
98
  provider: r.provider,
99
99
  content: r.content,
100
100
  role: r.role,
101
+ // Indicate if this is an agent with domain expertise (INV-DISC-642)
102
+ isAgent: r.isAgent,
101
103
  })));
102
104
  }
103
105
  analyzeSynthesis(synthesis, providers) {
@@ -1 +1 @@
1
- {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/consensus/synthesis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/consensus/synthesis.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@
3
3
  *
4
4
  * Tallies votes from all providers and determines winner based on
5
5
  * raw counts or confidence-weighted scores.
6
+ *
7
+ * Invariants:
8
+ * - INV-DISC-642: Agent responses weighted by agentWeightMultiplier (default 1.5x)
6
9
  */
7
10
  import type { ConsensusExecutor, ConsensusExecutionContext, ConsensusExecutionResult } from '../types.js';
8
11
  export declare class VotingConsensus implements ConsensusExecutor {
@@ -1 +1 @@
1
- {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/consensus/voting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAQ1G,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IAE9B,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAwDpF,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,UAAU;YA6CJ,mBAAmB;IAgDjC,OAAO,CAAC,uBAAuB;CA4BhC"}
1
+ {"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/consensus/voting.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAa1G,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IAE9B,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAwDpF,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,UAAU;YAoDJ,mBAAmB;IAgDjC,OAAO,CAAC,uBAAuB;CA4BhC"}