0xray 2.1.3 → 2.2.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/.opencode/codex.codex +1 -1
- package/.opencode/commands/dependency-audit.md +3 -3
- package/.opencode/enforcer-config.json +2 -2
- package/README.md +3 -3
- package/dist/CHANGELOG.md +43 -0
- package/dist/README.md +3 -3
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/cli/commands/govern.d.ts +29 -0
- package/dist/cli/commands/govern.js +152 -0
- package/dist/cli/index.js +29 -216
- package/dist/core/boot-orchestrator.js +1 -1
- package/dist/core/features-config.js +1 -1
- package/dist/core/framework-logger.js +30 -1
- package/dist/delegation/index.d.ts +1 -2
- package/dist/delegation/index.js +1 -2
- package/dist/enforcement/enforcer-tools.js +1 -1
- package/dist/execution/proposal-applier.d.ts +1 -9
- package/dist/execution/proposal-applier.js +18 -173
- package/dist/governance/codex-policy.service.d.ts +7 -25
- package/dist/governance/codex-policy.service.js +8 -26
- package/dist/governance/governance-core.d.ts +22 -28
- package/dist/governance/governance-core.js +31 -101
- package/dist/governance/governance-service.d.ts +1 -0
- package/dist/governance/governance-service.js +67 -4
- package/dist/governance/governance-types.d.ts +5 -2
- package/dist/inference/index.d.ts +3 -4
- package/dist/inference/inference-accumulator.js +1 -1
- package/dist/inference/inference-cycle.d.ts +12 -18
- package/dist/inference/inference-cycle.js +120 -335
- package/dist/integrations/base/index.d.ts +0 -1
- package/dist/integrations/base/index.js +0 -2
- package/dist/integrations/grok/hooks/pre-tool-use.js +4 -18
- package/dist/integrations/hermes-agent/bridge.mjs +10 -1
- package/dist/mcps/config/server-config-registry.js +1 -1
- package/dist/mcps/governance.server.js +4 -5
- package/dist/mcps/knowledge-skills/api-design.server.js +10 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +10 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +10 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +10 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +10 -0
- package/dist/mcps/knowledge-skills/content-creator.server.js +10 -0
- package/dist/mcps/knowledge-skills/database-design.server.js +10 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +10 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.js +10 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +10 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.js +10 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.js +10 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +10 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +10 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.js +10 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +10 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +10 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +10 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.d.ts +4 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +33 -14
- package/dist/mcps/knowledge-skills/strategist.server.js +10 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.js +11 -1
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +10 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +10 -0
- package/dist/mcps/registry.json +1 -1
- package/dist/metrics/agent-metrics.d.ts +2 -1
- package/dist/nucleus/govern-http.d.ts +59 -0
- package/dist/nucleus/govern-http.js +172 -0
- package/dist/nucleus/index.d.ts +14 -0
- package/dist/nucleus/index.js +9 -0
- package/dist/nucleus/kernel.d.ts +51 -0
- package/dist/nucleus/kernel.js +62 -0
- package/dist/nucleus/plugin-registry.d.ts +104 -0
- package/dist/nucleus/plugin-registry.js +147 -0
- package/dist/orchestrator/orchestrator.d.ts +0 -1
- package/dist/orchestrator/orchestrator.js +0 -21
- package/dist/postprocessor/PostProcessor.d.ts +13 -1
- package/dist/postprocessor/PostProcessor.js +41 -1
- package/dist/postprocessor/autofix/AutoFixEngine.d.ts +0 -8
- package/dist/postprocessor/autofix/AutoFixEngine.js +0 -54
- package/dist/postprocessor/metamorphosis/MetamorphosisEngine.d.ts +25 -0
- package/dist/postprocessor/metamorphosis/MetamorphosisEngine.js +10 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.d.ts +68 -0
- package/dist/postprocessor/metamorphosis/SelfProposalEngine.js +371 -0
- package/dist/skills/orchestrator/SKILL.md +1 -1
- package/dist/skills/registry.json +1 -1
- package/dist/state/index.d.ts +0 -2
- package/package.json +4 -3
- package/scripts/node/universal-version-manager.js +3 -3
- package/src/mcps/config/__tests__/server-config-registry.test.ts +6 -15
- package/src/mcps/config/server-config-registry.ts +1 -1
- package/src/mcps/governance.server.ts +4 -6
- package/src/mcps/knowledge-skills/api-design.server.ts +9 -0
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +9 -0
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +9 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +9 -0
- package/src/mcps/knowledge-skills/code-review.server.ts +9 -0
- package/src/mcps/knowledge-skills/content-creator.server.ts +9 -0
- package/src/mcps/knowledge-skills/database-design.server.ts +9 -0
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +9 -0
- package/src/mcps/knowledge-skills/git-workflow.server.ts +9 -0
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +9 -0
- package/src/mcps/knowledge-skills/log-monitor.server.ts +9 -0
- package/src/mcps/knowledge-skills/mobile-development.server.ts +9 -0
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +9 -0
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +9 -0
- package/src/mcps/knowledge-skills/project-analysis.server.ts +9 -0
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +9 -0
- package/src/mcps/knowledge-skills/security-audit.server.ts +9 -0
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +9 -0
- package/src/mcps/knowledge-skills/session-management.server.ts +1 -0
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +44 -29
- package/src/mcps/knowledge-skills/strategist.server.ts +9 -0
- package/src/mcps/knowledge-skills/tech-writer.server.ts +10 -1
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +9 -0
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +9 -0
- package/src/mcps/registry.json +1 -1
- package/src/opencode/codex.codex +1 -1
- package/src/opencode/commands/dependency-audit.md +3 -3
- package/src/opencode/enforcer-config.json +2 -2
- package/src/skills/orchestrator/SKILL.md +1 -1
- package/src/skills/registry.json +1 -1
- package/xray/codex.json +1 -1
- package/xray/config.json +1 -1
- package/xray/features.json +1 -1
- package/xray/integrations.json +3 -3
- package/.opencode/agents/testing-best-practices.yml +0 -12
- package/dist/analytics/consent-manager.d.ts +0 -93
- package/dist/analytics/consent-manager.js +0 -258
- package/dist/analytics/simple-pattern-analyzer.d.ts +0 -80
- package/dist/analytics/simple-pattern-analyzer.js +0 -297
- package/dist/cli/commands/analytics-disable.d.ts +0 -9
- package/dist/cli/commands/analytics-disable.js +0 -72
- package/dist/cli/commands/analytics-enable-action.d.ts +0 -8
- package/dist/cli/commands/analytics-enable-action.js +0 -82
- package/dist/cli/commands/analytics-preview.d.ts +0 -9
- package/dist/cli/commands/analytics-preview.js +0 -106
- package/dist/cli/commands/analytics-status.d.ts +0 -9
- package/dist/cli/commands/analytics-status.js +0 -68
- package/dist/cli/server.d.ts +0 -1
- package/dist/cli/server.js +0 -147
- package/dist/core/errors.d.ts +0 -3
- package/dist/core/errors.js +0 -10
- package/dist/core/logging-config.d.ts +0 -11
- package/dist/core/logging-config.js +0 -43
- package/dist/core/trace-context.d.ts +0 -12
- package/dist/core/trace-context.js +0 -33
- package/dist/delegation/voting-coordinator.d.ts +0 -49
- package/dist/delegation/voting-coordinator.js +0 -375
- package/dist/enforcement/test-auto-healing.d.ts +0 -83
- package/dist/enforcement/test-auto-healing.js +0 -325
- package/dist/integrations/base/ExampleIntegration.d.ts +0 -47
- package/dist/integrations/base/ExampleIntegration.js +0 -181
- package/dist/mcps/knowledge-skills/testing-best-practices.server.d.ts +0 -34
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +0 -831
- package/dist/mcps/orchestrator.server.d.ts +0 -10
- package/dist/mcps/orchestrator.server.js +0 -19
- package/dist/orchestrator/self-direction-activation.d.ts +0 -109
- package/dist/orchestrator/self-direction-activation.js +0 -245
- package/dist/orchestrator/universal-librarian-consultation.d.ts +0 -98
- package/dist/orchestrator/universal-librarian-consultation.js +0 -216
- package/dist/orchestrator/universal-registry-bridge.d.ts +0 -85
- package/dist/orchestrator/universal-registry-bridge.js +0 -247
- package/dist/performance/performance-budget-enforcer.d.ts +0 -158
- package/dist/performance/performance-budget-enforcer.js +0 -434
- package/dist/performance/performance-regression-tester.d.ts +0 -108
- package/dist/performance/performance-regression-tester.js +0 -342
- package/dist/skills/testing-best-practices/SKILL.md +0 -37
- package/dist/state/context-providers.d.ts +0 -4
- package/dist/state/context-providers.js +0 -1
- package/dist/state/state-types.d.ts +0 -5
- package/dist/state/state-types.js +0 -1
- package/dist/utils/batch-operations.d.ts +0 -25
- package/dist/utils/batch-operations.js +0 -292
- package/dist/utils/test-template-generator.d.ts +0 -25
- package/dist/utils/test-template-generator.js +0 -178
- package/dist/utils/token-manager.d.ts +0 -48
- package/dist/utils/token-manager.js +0 -163
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +0 -136
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +0 -1183
- package/src/mcps/orchestrator.server.ts +0 -34
- package/src/opencode/agents/testing-best-practices.yml +0 -12
- package/src/skills/testing-best-practices/SKILL.md +0 -37
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { mcpClientManager } from '../mcps/mcp-client.js';
|
|
19
19
|
import { callInProcessSkill } from '../mcps/in-process-skill-registry.js';
|
|
20
|
+
import { pluginRegistry } from '../nucleus/plugin-registry.js';
|
|
20
21
|
import { getGovernanceIntegration, } from '../integrations/governance/index.js';
|
|
21
|
-
import { mergeVotes } from './governance-core.js';
|
|
22
|
+
import { mergeVotes, calculateMetamorphosisScore } from './governance-core.js';
|
|
22
23
|
import { frameworkLogger } from '../core/framework-logger.js';
|
|
23
24
|
export class GovernanceService {
|
|
24
25
|
constructor() {
|
|
@@ -59,7 +60,7 @@ export class GovernanceService {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
// Run governance with end-to-end timeout
|
|
62
|
-
const result = await this.runGovernanceWithTimeout(proposals, context, requireExternal, timeoutMs);
|
|
63
|
+
const result = await this.runGovernanceWithTimeout(proposals, context, requireExternal, timeoutMs, options?.metamorphosisThreshold);
|
|
63
64
|
// Check abstention threshold
|
|
64
65
|
if (result.results.length > 0 && maxAbstentionThreshold < 1.0) {
|
|
65
66
|
const totalVotes = result.results.reduce((sum, r) => sum + r.votes.length, 0);
|
|
@@ -91,7 +92,7 @@ export class GovernanceService {
|
|
|
91
92
|
},
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
|
-
async runGovernanceWithTimeout(proposals, context, requireExternal, timeoutMs) {
|
|
95
|
+
async runGovernanceWithTimeout(proposals, context, requireExternal, timeoutMs, metamorphosisThreshold) {
|
|
95
96
|
const controller = new AbortController();
|
|
96
97
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
97
98
|
try {
|
|
@@ -112,13 +113,33 @@ export class GovernanceService {
|
|
|
112
113
|
...(externalVotes[index] || []),
|
|
113
114
|
];
|
|
114
115
|
const merged = mergeVotes(votes);
|
|
115
|
-
|
|
116
|
+
const isMetamorphosis = proposal.type === 'metamorphosis' || proposal.source === 'metamorphosis';
|
|
117
|
+
const result = {
|
|
116
118
|
proposalId: proposal.id,
|
|
117
119
|
finalDecision: merged.finalDecision,
|
|
118
120
|
averageConfidence: merged.averageConfidence,
|
|
119
121
|
votes,
|
|
120
122
|
reasoningSummary: merged.reasoningSummary,
|
|
121
123
|
};
|
|
124
|
+
// Metamorphosis resonance scoring: only for self-evolution proposals
|
|
125
|
+
if (isMetamorphosis) {
|
|
126
|
+
const threshold = metamorphosisThreshold ?? 0.7;
|
|
127
|
+
const metaInput = {
|
|
128
|
+
averageConfidence: merged.averageConfidence,
|
|
129
|
+
proposalType: proposal.type,
|
|
130
|
+
};
|
|
131
|
+
const externalConfidence = externalVotes[index]?.[0]?.confidence;
|
|
132
|
+
if (externalConfidence !== undefined) {
|
|
133
|
+
metaInput.historicalCoherence = externalConfidence;
|
|
134
|
+
}
|
|
135
|
+
result.metamorphosisScore = calculateMetamorphosisScore(metaInput);
|
|
136
|
+
// Reject metamorphosis proposals that don't meet the threshold
|
|
137
|
+
if (result.metamorphosisScore < threshold && result.finalDecision === 'approve') {
|
|
138
|
+
result.finalDecision = 'needs_revision';
|
|
139
|
+
result.reasoningSummary += ` | Metamorphosis score ${result.metamorphosisScore} below threshold ${threshold}`;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return result;
|
|
122
143
|
});
|
|
123
144
|
return { results };
|
|
124
145
|
}
|
|
@@ -129,6 +150,45 @@ export class GovernanceService {
|
|
|
129
150
|
async callSkillServer(serverName, proposals, context) {
|
|
130
151
|
const votes = [];
|
|
131
152
|
const useInProcess = process.env.VERCEL === '1';
|
|
153
|
+
// v3: Try pluginRegistry first for dynamically registered skills.
|
|
154
|
+
// Built-in skills (code-review, security-audit, researcher) fall through
|
|
155
|
+
// to MCP or in-process paths. Custom plugins registered via
|
|
156
|
+
// pluginRegistry.register() are resolved here.
|
|
157
|
+
if (pluginRegistry.has(serverName) && !this.isBuiltInSkill(serverName)) {
|
|
158
|
+
frameworkLogger.log('governance-service', 'plugin-skill-resolved', 'info', {
|
|
159
|
+
server: serverName,
|
|
160
|
+
mode: 'plugin-registry',
|
|
161
|
+
});
|
|
162
|
+
for (const proposal of proposals) {
|
|
163
|
+
try {
|
|
164
|
+
const result = await pluginRegistry.callSkill(serverName, {
|
|
165
|
+
proposalTitle: proposal.title,
|
|
166
|
+
proposalDescription: proposal.description,
|
|
167
|
+
evidence: proposal.evidence || [],
|
|
168
|
+
proposalType: proposal.type,
|
|
169
|
+
});
|
|
170
|
+
const text = result?.content?.[0]?.text || '';
|
|
171
|
+
const vote = this.parseVoteFromText(serverName, text);
|
|
172
|
+
votes.push(vote);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
frameworkLogger.log('governance-service', 'plugin-skill-error', 'error', {
|
|
176
|
+
server: serverName,
|
|
177
|
+
proposal: proposal.title,
|
|
178
|
+
error: error instanceof Error ? error.message : String(error),
|
|
179
|
+
mode: 'plugin-registry',
|
|
180
|
+
});
|
|
181
|
+
votes.push({
|
|
182
|
+
server: serverName,
|
|
183
|
+
decision: 'abstain',
|
|
184
|
+
confidence: 0.3,
|
|
185
|
+
reasoning: `Plugin skill ${serverName} failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return votes;
|
|
190
|
+
}
|
|
191
|
+
// Built-in skills: use MCP (standard surface) or in-process (Vercel)
|
|
132
192
|
for (const proposal of proposals) {
|
|
133
193
|
try {
|
|
134
194
|
let text = '';
|
|
@@ -263,6 +323,9 @@ export class GovernanceService {
|
|
|
263
323
|
reasoning: reasoningMatch?.[1]?.trim() || 'No reasoning provided',
|
|
264
324
|
};
|
|
265
325
|
}
|
|
326
|
+
isBuiltInSkill(name) {
|
|
327
|
+
return name === 'code-review' || name === 'security-audit' || name === 'researcher';
|
|
328
|
+
}
|
|
266
329
|
}
|
|
267
330
|
// Singleton for convenience
|
|
268
331
|
let governanceServiceInstance = null;
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
* These types are used by the GovernanceService, Governance MCP,
|
|
4
4
|
* and all integrations.
|
|
5
5
|
*/
|
|
6
|
-
export type ProposalType = 'fix' | 'refactor' | 'guard' | 'automate' | 'codify' | 'strategic' | 'compliance';
|
|
6
|
+
export type ProposalType = 'fix' | 'refactor' | 'guard' | 'automate' | 'codify' | 'strategic' | 'compliance' | 'metamorphosis';
|
|
7
7
|
export interface GovernanceProposal {
|
|
8
8
|
id: string;
|
|
9
9
|
type: ProposalType;
|
|
10
10
|
title: string;
|
|
11
11
|
description: string;
|
|
12
12
|
evidence?: string[];
|
|
13
|
-
source?: 'inference' | 'reflection' | 'manual' | 'ci' | 'phase-planning';
|
|
13
|
+
source?: 'inference' | 'reflection' | 'manual' | 'ci' | 'phase-planning' | 'metamorphosis';
|
|
14
14
|
confidence?: number;
|
|
15
15
|
metadata?: Record<string, unknown>;
|
|
16
16
|
}
|
|
@@ -35,6 +35,8 @@ export interface GovernanceResult {
|
|
|
35
35
|
recommendedActions?: string[];
|
|
36
36
|
externalContext?: Record<string, unknown>;
|
|
37
37
|
moralOverride?: 'rejected_critical' | 'downgraded_significant' | 'none';
|
|
38
|
+
/** Metamorphosis resonance score: does this change increase the system's ability to govern complex future states? 0-1. Only present when proposal.type === 'metamorphosis'. */
|
|
39
|
+
metamorphosisScore?: number;
|
|
38
40
|
}
|
|
39
41
|
export interface GovernanceContext {
|
|
40
42
|
project?: string;
|
|
@@ -49,6 +51,7 @@ export interface GovernOptions {
|
|
|
49
51
|
enableSolarAdjustment?: boolean;
|
|
50
52
|
timeoutMs?: number;
|
|
51
53
|
maxAbstentionThreshold?: number;
|
|
54
|
+
metamorphosisThreshold?: number;
|
|
52
55
|
}
|
|
53
56
|
export interface GovernanceRequest {
|
|
54
57
|
proposals: GovernanceProposal[];
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export { analyzeStructuralPatterns } from "./semantic-patterns.js";
|
|
2
2
|
export type { StructuralPattern } from "./semantic-patterns.js";
|
|
3
3
|
export { captureSessionInference, saveSessionInference, } from "./session-capture.js";
|
|
4
|
-
export type { SessionInference,
|
|
4
|
+
export type { SessionInference, SessionMetrics, } from "./session-capture.js";
|
|
5
5
|
export { shouldTriggerCycle, accumulateCorpus } from "./inference-accumulator.js";
|
|
6
|
-
export type { InferenceCorpus, RecurringPattern, RecurringProblem } from "./inference-accumulator.js";
|
|
7
6
|
export { InferenceCycle } from "./inference-cycle.js";
|
|
8
|
-
export type { InferenceProposal, InferenceCycleResult
|
|
7
|
+
export type { InferenceProposal, InferenceCycleResult } from "./inference-cycle.js";
|
|
9
8
|
export { DeployVerifier } from "./deploy-verifier.js";
|
|
10
|
-
export type { DeployVerificationResult
|
|
9
|
+
export type { DeployVerificationResult } from "./deploy-verifier.js";
|
|
@@ -108,7 +108,7 @@ function loadLastCycleDate(filePath) {
|
|
|
108
108
|
return null;
|
|
109
109
|
try {
|
|
110
110
|
const data = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
111
|
-
return data.completedAt || data.timestamp || null;
|
|
111
|
+
return data.completedAt || data.cycleState?.completedAt || data.timestamp || null;
|
|
112
112
|
}
|
|
113
113
|
catch {
|
|
114
114
|
return null;
|
|
@@ -43,7 +43,6 @@ export declare class InferenceCycle {
|
|
|
43
43
|
private static instances;
|
|
44
44
|
private static reEntryLock;
|
|
45
45
|
private static governedProposalIds;
|
|
46
|
-
private static votingCoordinator;
|
|
47
46
|
static getInstance(projectRoot?: string, options?: InferenceCycleOptions): InferenceCycle;
|
|
48
47
|
static resetInstance(): void;
|
|
49
48
|
private inferenceDir;
|
|
@@ -58,7 +57,6 @@ export declare class InferenceCycle {
|
|
|
58
57
|
maybeRunCycle(): Promise<InferenceCycleResult>;
|
|
59
58
|
private generateProposals;
|
|
60
59
|
private adjustFromHistory;
|
|
61
|
-
private getCoordinator;
|
|
62
60
|
private applyProposals;
|
|
63
61
|
private applyProposalWork;
|
|
64
62
|
private applyCodeChange;
|
|
@@ -67,32 +65,28 @@ export declare class InferenceCycle {
|
|
|
67
65
|
private extractTargetFiles;
|
|
68
66
|
private researcherReview;
|
|
69
67
|
private governProposals;
|
|
70
|
-
private isGovernanceMcpPreferred;
|
|
71
|
-
private parseGovernanceMcpResponse;
|
|
72
|
-
/**
|
|
73
|
-
* Oscillator 1: Internal VotingCoordinator-based governance
|
|
74
|
-
*/
|
|
75
|
-
private governProposalsInternal;
|
|
76
68
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
69
|
+
* Map InferenceProposal.source to GovernanceProposal.source.
|
|
70
|
+
* Inference-specific sources (recurring_problem, recurring_pattern, wrong_turn)
|
|
71
|
+
* all normalize to 'inference'. Future tuning/mod-specific sources can be added here.
|
|
80
72
|
*/
|
|
81
|
-
private
|
|
73
|
+
private static readonly SOURCE_MAP;
|
|
82
74
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
75
|
+
* Convert InferenceProposal[] to GovernanceRequest and route through
|
|
76
|
+
* the nucleus kernel (handleGovernRequest). This is the v3 uniform path.
|
|
85
77
|
*/
|
|
86
|
-
private
|
|
78
|
+
private governViaNucleus;
|
|
87
79
|
/**
|
|
88
|
-
*
|
|
80
|
+
* Convert a GovernanceResponse (nucleus kernel format) back to the
|
|
81
|
+
* InferenceCycleResult["votes"] format that the rest of the cycle expects.
|
|
89
82
|
*/
|
|
90
|
-
private
|
|
83
|
+
private convertNucleusResponse;
|
|
84
|
+
private isGovernanceMcpPreferred;
|
|
85
|
+
private parseGovernanceMcpResponse;
|
|
91
86
|
private invokeAgentInternal;
|
|
92
87
|
private invokeViaOpencode;
|
|
93
88
|
private parseSubagentVotes;
|
|
94
89
|
private getGovernanceStateManager;
|
|
95
|
-
private saveGovernanceState;
|
|
96
90
|
private extractTextFromNdjson;
|
|
97
91
|
private resolveOpencodeRoot;
|
|
98
92
|
private rejectNoQuorum;
|