@nahisaho/musubix-mcp-server 1.1.16 → 1.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/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/symbolic-tools.d.ts +67 -0
- package/dist/tools/symbolic-tools.d.ts.map +1 -0
- package/dist/tools/symbolic-tools.js +608 -0
- package/dist/tools/symbolic-tools.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export type { ServerTransport, MCPServerConfig, ToolDefinition, ToolHandler, Too
|
|
|
23
23
|
export { DEFAULT_SERVER_CONFIG } from './types.js';
|
|
24
24
|
export { MCPServer, createMCPServer, type MCPServerEvents } from './server.js';
|
|
25
25
|
export { sddTools, getSddTools, createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, } from './tools/index.js';
|
|
26
|
+
export { symbolicTools, getSymbolicTools, filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, } from './tools/index.js';
|
|
26
27
|
export { sddPrompts, getSddPrompts, requirementsAnalysisPrompt, requirementsReviewPrompt, designGenerationPrompt, designReviewPrompt, taskDecompositionPrompt, projectSteeringPrompt, } from './prompts/index.js';
|
|
27
28
|
export { sddResources, sddResourceTemplates, getSddResources, getSddResourceTemplates, constitutionResource, earsPatternsResource, c4PatternsResource, adrTemplateResource, requirementDocTemplate, designDocTemplate, taskDocTemplate, } from './resources/index.js';
|
|
28
29
|
export { PlatformAdapter, createPlatformAdapter, getSupportedPlatforms, getPlatformConfig, type PlatformType, type PlatformCapabilities, type PlatformConfig, type PlatformDetectionResult, PLATFORM_CONFIGS, } from './platform/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EACL,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,aAAa,EACb,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EACL,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,aAAa,EACb,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDjF"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,8 @@ export { DEFAULT_SERVER_CONFIG } from './types.js';
|
|
|
25
25
|
export { MCPServer, createMCPServer } from './server.js';
|
|
26
26
|
// SDD Tools
|
|
27
27
|
export { sddTools, getSddTools, createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, } from './tools/index.js';
|
|
28
|
+
// Symbolic Tools
|
|
29
|
+
export { symbolicTools, getSymbolicTools, filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, } from './tools/index.js';
|
|
28
30
|
// SDD Prompts
|
|
29
31
|
export { sddPrompts, getSddPrompts, requirementsAnalysisPrompt, requirementsReviewPrompt, designGenerationPrompt, designReviewPrompt, taskDecompositionPrompt, projectSteeringPrompt, } from './prompts/index.js';
|
|
30
32
|
// SDD Resources
|
|
@@ -52,10 +54,16 @@ export async function startServer(options = {}) {
|
|
|
52
54
|
transport,
|
|
53
55
|
port,
|
|
54
56
|
});
|
|
57
|
+
// Import symbolic tools
|
|
58
|
+
const { symbolicTools } = await import('./tools/index.js');
|
|
55
59
|
// Register all SDD tools, prompts, and resources
|
|
56
60
|
for (const tool of sddTools) {
|
|
57
61
|
server.registerTool(tool);
|
|
58
62
|
}
|
|
63
|
+
// Register symbolic tools
|
|
64
|
+
for (const tool of symbolicTools) {
|
|
65
|
+
server.registerTool(tool);
|
|
66
|
+
}
|
|
59
67
|
for (const prompt of sddPrompts) {
|
|
60
68
|
server.registerPrompt(prompt);
|
|
61
69
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -5,4 +5,9 @@
|
|
|
5
5
|
* @module tools
|
|
6
6
|
*/
|
|
7
7
|
export { createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, sddTools, getSddTools, } from './sdd-tools.js';
|
|
8
|
+
export { filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, symbolicTools, getSymbolicTools, } from './symbolic-tools.js';
|
|
9
|
+
/**
|
|
10
|
+
* Get all available tools
|
|
11
|
+
*/
|
|
12
|
+
export declare function getAllTools(): any[];
|
|
8
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAgB,WAAW,UAI1B"}
|
package/dist/tools/index.js
CHANGED
|
@@ -5,4 +5,13 @@
|
|
|
5
5
|
* @module tools
|
|
6
6
|
*/
|
|
7
7
|
export { createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, sddTools, getSddTools, } from './sdd-tools.js';
|
|
8
|
+
export { filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, symbolicTools, getSymbolicTools, } from './symbolic-tools.js';
|
|
9
|
+
/**
|
|
10
|
+
* Get all available tools
|
|
11
|
+
*/
|
|
12
|
+
export function getAllTools() {
|
|
13
|
+
const { getSddTools } = require('./sdd-tools.js');
|
|
14
|
+
const { getSymbolicTools } = require('./symbolic-tools.js');
|
|
15
|
+
return [...getSddTools(), ...getSymbolicTools()];
|
|
16
|
+
}
|
|
8
17
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,WAAW,EAAE,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Symbolic Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for symbolic reasoning capabilities in MUSUBIX MCP Server.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module tools/symbolic
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-SYMB-001 - Symbolic Reasoning Requirements
|
|
10
|
+
* @see TSK-SYMB-008 - MCP Tool Integration
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolDefinition } from '../types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Filter code candidates through symbolic pipeline
|
|
15
|
+
*
|
|
16
|
+
* @description
|
|
17
|
+
* Processes generated code through hallucination detection,
|
|
18
|
+
* constitution checking, and confidence estimation.
|
|
19
|
+
*/
|
|
20
|
+
export declare const filterCodeTool: ToolDefinition;
|
|
21
|
+
/**
|
|
22
|
+
* Detect hallucinations in code
|
|
23
|
+
*
|
|
24
|
+
* @description
|
|
25
|
+
* Checks for references to non-existent APIs, modules, or symbols.
|
|
26
|
+
*/
|
|
27
|
+
export declare const detectHallucinationsTool: ToolDefinition;
|
|
28
|
+
/**
|
|
29
|
+
* Check constitution compliance
|
|
30
|
+
*
|
|
31
|
+
* @description
|
|
32
|
+
* Validates code against the 9 constitutional articles.
|
|
33
|
+
*/
|
|
34
|
+
export declare const checkConstitutionTool: ToolDefinition;
|
|
35
|
+
/**
|
|
36
|
+
* Estimate confidence score
|
|
37
|
+
*
|
|
38
|
+
* @description
|
|
39
|
+
* Estimates confidence score for generated code with breakdown.
|
|
40
|
+
*/
|
|
41
|
+
export declare const estimateConfidenceTool: ToolDefinition;
|
|
42
|
+
/**
|
|
43
|
+
* Get symbolic pipeline info
|
|
44
|
+
*
|
|
45
|
+
* @description
|
|
46
|
+
* Returns information about the symbolic processing pipeline.
|
|
47
|
+
*/
|
|
48
|
+
export declare const getPipelineInfoTool: ToolDefinition;
|
|
49
|
+
/**
|
|
50
|
+
* Formal verification using EARS to SMT-LIB conversion and Z3
|
|
51
|
+
*
|
|
52
|
+
* @description
|
|
53
|
+
* Converts EARS requirements to formal specifications and verifies
|
|
54
|
+
* using Z3 theorem prover with graceful degradation.
|
|
55
|
+
*
|
|
56
|
+
* @traceability TSK-SYMB-012
|
|
57
|
+
*/
|
|
58
|
+
export declare const formalVerifyTool: ToolDefinition;
|
|
59
|
+
/**
|
|
60
|
+
* All symbolic tools
|
|
61
|
+
*/
|
|
62
|
+
export declare const symbolicTools: ToolDefinition[];
|
|
63
|
+
/**
|
|
64
|
+
* Get all symbolic tool definitions
|
|
65
|
+
*/
|
|
66
|
+
export declare function getSymbolicTools(): ToolDefinition[];
|
|
67
|
+
//# sourceMappingURL=symbolic-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolic-tools.d.ts","sourceRoot":"","sources":["../../src/tools/symbolic-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC;AA8C3E;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,cA+E5B,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,cA8EtC,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,cA6FnC,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,cA0EpC,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,cA+CjC,CAAC;AAMF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAoM9B,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,EAOzC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD"}
|
|
@@ -0,0 +1,608 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Symbolic Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for symbolic reasoning capabilities in MUSUBIX MCP Server.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module tools/symbolic
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-SYMB-001 - Symbolic Reasoning Requirements
|
|
10
|
+
* @see TSK-SYMB-008 - MCP Tool Integration
|
|
11
|
+
*/
|
|
12
|
+
import { createSymbolicPipeline, processSymbolic,
|
|
13
|
+
// Phase 2: Formal Verification
|
|
14
|
+
EarsToFormalSpecConverter, VerificationConditionGenerator, Z3Adapter, } from '@nahisaho/musubix-core';
|
|
15
|
+
/**
|
|
16
|
+
* Create text content helper
|
|
17
|
+
*/
|
|
18
|
+
function text(content) {
|
|
19
|
+
return { type: 'text', text: content };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Success result helper
|
|
23
|
+
*/
|
|
24
|
+
function success(content) {
|
|
25
|
+
const textContent = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
|
|
26
|
+
return {
|
|
27
|
+
content: [text(textContent)],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Error result helper
|
|
32
|
+
*/
|
|
33
|
+
function error(message) {
|
|
34
|
+
return {
|
|
35
|
+
content: [text(`Error: ${message}`)],
|
|
36
|
+
isError: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// ============================================================
|
|
40
|
+
// Code Filtering Tools
|
|
41
|
+
// ============================================================
|
|
42
|
+
/**
|
|
43
|
+
* Filter code candidates through symbolic pipeline
|
|
44
|
+
*
|
|
45
|
+
* @description
|
|
46
|
+
* Processes generated code through hallucination detection,
|
|
47
|
+
* constitution checking, and confidence estimation.
|
|
48
|
+
*/
|
|
49
|
+
export const filterCodeTool = {
|
|
50
|
+
name: 'symbolic_filter_code',
|
|
51
|
+
description: 'Filter LLM-generated code through symbolic validation pipeline (hallucination detection, constitution compliance, confidence estimation)',
|
|
52
|
+
inputSchema: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
properties: {
|
|
55
|
+
code: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
description: 'Generated code to filter',
|
|
58
|
+
},
|
|
59
|
+
language: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'Programming language of the code',
|
|
62
|
+
default: 'typescript',
|
|
63
|
+
},
|
|
64
|
+
projectPath: {
|
|
65
|
+
type: 'string',
|
|
66
|
+
description: 'Path to the project root for context',
|
|
67
|
+
},
|
|
68
|
+
dependencies: {
|
|
69
|
+
type: 'array',
|
|
70
|
+
items: { type: 'string' },
|
|
71
|
+
description: 'List of project dependencies',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
required: ['code'],
|
|
75
|
+
},
|
|
76
|
+
handler: async (args) => {
|
|
77
|
+
try {
|
|
78
|
+
const { code, language, projectPath, dependencies } = args;
|
|
79
|
+
const candidate = {
|
|
80
|
+
code,
|
|
81
|
+
language: language ?? 'typescript',
|
|
82
|
+
metadata: {
|
|
83
|
+
generatedAt: new Date().toISOString(),
|
|
84
|
+
model: 'unknown',
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
const context = {
|
|
88
|
+
projectPath: projectPath ?? process.cwd(),
|
|
89
|
+
symbols: [],
|
|
90
|
+
dependencies: dependencies ?? [],
|
|
91
|
+
requirements: [],
|
|
92
|
+
};
|
|
93
|
+
const input = {
|
|
94
|
+
candidates: [candidate],
|
|
95
|
+
projectContext: context,
|
|
96
|
+
};
|
|
97
|
+
const { filterOutput, routingResults } = await processSymbolic(input);
|
|
98
|
+
return success({
|
|
99
|
+
action: 'filter_code',
|
|
100
|
+
result: {
|
|
101
|
+
filtered: filterOutput.filteredCandidates.length > 0,
|
|
102
|
+
hallucinationReport: filterOutput.hallucinationReport,
|
|
103
|
+
constitutionReport: filterOutput.constitutionReport,
|
|
104
|
+
routing: routingResults[0],
|
|
105
|
+
},
|
|
106
|
+
recommendation: routingResults[0]?.decision === 'accept'
|
|
107
|
+
? 'Code passed symbolic validation'
|
|
108
|
+
: routingResults[0]?.decision === 'verify'
|
|
109
|
+
? 'Code requires human verification'
|
|
110
|
+
: 'Code should be regenerated',
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
return error(e instanceof Error ? e.message : String(e));
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
// ============================================================
|
|
119
|
+
// Hallucination Detection Tools
|
|
120
|
+
// ============================================================
|
|
121
|
+
/**
|
|
122
|
+
* Detect hallucinations in code
|
|
123
|
+
*
|
|
124
|
+
* @description
|
|
125
|
+
* Checks for references to non-existent APIs, modules, or symbols.
|
|
126
|
+
*/
|
|
127
|
+
export const detectHallucinationsTool = {
|
|
128
|
+
name: 'symbolic_detect_hallucinations',
|
|
129
|
+
description: 'Detect hallucinated references (non-existent APIs, modules, symbols) in generated code',
|
|
130
|
+
inputSchema: {
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
code: {
|
|
134
|
+
type: 'string',
|
|
135
|
+
description: 'Code to check for hallucinations',
|
|
136
|
+
},
|
|
137
|
+
knownSymbols: {
|
|
138
|
+
type: 'array',
|
|
139
|
+
items: {
|
|
140
|
+
type: 'object',
|
|
141
|
+
properties: {
|
|
142
|
+
name: { type: 'string' },
|
|
143
|
+
type: { type: 'string', enum: ['function', 'class', 'variable', 'interface', 'type'] },
|
|
144
|
+
path: { type: 'string' },
|
|
145
|
+
},
|
|
146
|
+
required: ['name', 'type'],
|
|
147
|
+
},
|
|
148
|
+
description: 'Known project symbols to validate against',
|
|
149
|
+
},
|
|
150
|
+
dependencies: {
|
|
151
|
+
type: 'array',
|
|
152
|
+
items: { type: 'string' },
|
|
153
|
+
description: 'Known package dependencies',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
required: ['code'],
|
|
157
|
+
},
|
|
158
|
+
handler: async (args) => {
|
|
159
|
+
try {
|
|
160
|
+
const { code, knownSymbols, dependencies } = args;
|
|
161
|
+
const pipeline = createSymbolicPipeline();
|
|
162
|
+
const candidate = {
|
|
163
|
+
code,
|
|
164
|
+
language: 'typescript',
|
|
165
|
+
metadata: { generatedAt: new Date().toISOString(), model: 'unknown' },
|
|
166
|
+
};
|
|
167
|
+
const context = {
|
|
168
|
+
projectPath: process.cwd(),
|
|
169
|
+
symbols: knownSymbols?.map((s) => ({
|
|
170
|
+
name: s.name,
|
|
171
|
+
type: s.type,
|
|
172
|
+
path: s.path ?? '',
|
|
173
|
+
})) ?? [],
|
|
174
|
+
dependencies: dependencies ?? [],
|
|
175
|
+
requirements: [],
|
|
176
|
+
};
|
|
177
|
+
const result = await pipeline.hallucinationDetector.detect(candidate, context);
|
|
178
|
+
return success({
|
|
179
|
+
action: 'detect_hallucinations',
|
|
180
|
+
hasHallucinations: result.hasHallucinations,
|
|
181
|
+
items: result.items.map((item) => ({
|
|
182
|
+
type: item.type,
|
|
183
|
+
identifier: item.identifier,
|
|
184
|
+
location: item.location,
|
|
185
|
+
suggestions: item.suggestions,
|
|
186
|
+
})),
|
|
187
|
+
summary: result.hasHallucinations
|
|
188
|
+
? `Found ${result.items.length} potential hallucination(s)`
|
|
189
|
+
: 'No hallucinations detected',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
return error(e instanceof Error ? e.message : String(e));
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
// ============================================================
|
|
198
|
+
// Constitution Validation Tools
|
|
199
|
+
// ============================================================
|
|
200
|
+
/**
|
|
201
|
+
* Check constitution compliance
|
|
202
|
+
*
|
|
203
|
+
* @description
|
|
204
|
+
* Validates code against the 9 constitutional articles.
|
|
205
|
+
*/
|
|
206
|
+
export const checkConstitutionTool = {
|
|
207
|
+
name: 'symbolic_check_constitution',
|
|
208
|
+
description: 'Check code compliance against the 9 constitutional articles',
|
|
209
|
+
inputSchema: {
|
|
210
|
+
type: 'object',
|
|
211
|
+
properties: {
|
|
212
|
+
code: {
|
|
213
|
+
type: 'string',
|
|
214
|
+
description: 'Code to validate',
|
|
215
|
+
},
|
|
216
|
+
context: {
|
|
217
|
+
type: 'object',
|
|
218
|
+
properties: {
|
|
219
|
+
hasLibraryStructure: { type: 'boolean' },
|
|
220
|
+
hasCLI: { type: 'boolean' },
|
|
221
|
+
hasTests: { type: 'boolean' },
|
|
222
|
+
earsRequirements: { type: 'array', items: { type: 'string' } },
|
|
223
|
+
hasSteeringReference: { type: 'boolean' },
|
|
224
|
+
documentedPatterns: { type: 'array', items: { type: 'string' } },
|
|
225
|
+
hasADR: { type: 'boolean' },
|
|
226
|
+
hasQualityGates: { type: 'boolean' },
|
|
227
|
+
},
|
|
228
|
+
description: 'Project context for constitution checks',
|
|
229
|
+
},
|
|
230
|
+
articles: {
|
|
231
|
+
type: 'array',
|
|
232
|
+
items: {
|
|
233
|
+
type: 'string',
|
|
234
|
+
enum: ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
|
|
235
|
+
},
|
|
236
|
+
description: 'Specific articles to check (default: all)',
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
required: ['code'],
|
|
240
|
+
},
|
|
241
|
+
handler: async (args) => {
|
|
242
|
+
try {
|
|
243
|
+
const { code, context, articles } = args;
|
|
244
|
+
const pipeline = createSymbolicPipeline();
|
|
245
|
+
const checkInput = {
|
|
246
|
+
code,
|
|
247
|
+
context: {
|
|
248
|
+
hasLibraryStructure: context?.hasLibraryStructure ?? false,
|
|
249
|
+
hasCLI: context?.hasCLI ?? false,
|
|
250
|
+
hasTests: context?.hasTests ?? false,
|
|
251
|
+
earsRequirements: context?.earsRequirements ?? [],
|
|
252
|
+
traceabilityLinks: [],
|
|
253
|
+
hasSteeringReference: context?.hasSteeringReference ?? false,
|
|
254
|
+
documentedPatterns: context?.documentedPatterns ?? [],
|
|
255
|
+
hasADR: context?.hasADR ?? false,
|
|
256
|
+
hasQualityGates: context?.hasQualityGates ?? false,
|
|
257
|
+
},
|
|
258
|
+
requirements: [],
|
|
259
|
+
};
|
|
260
|
+
const report = await pipeline.constitutionRegistry.generateReport(checkInput);
|
|
261
|
+
// Filter articles if specified
|
|
262
|
+
const filteredResults = articles
|
|
263
|
+
? report.articleResults.filter((r) => articles.includes(r.article))
|
|
264
|
+
: report.articleResults;
|
|
265
|
+
return success({
|
|
266
|
+
action: 'check_constitution',
|
|
267
|
+
overallPassed: report.overallPassed,
|
|
268
|
+
checkedArticles: filteredResults.length,
|
|
269
|
+
results: filteredResults.map((r) => {
|
|
270
|
+
const rule = pipeline.constitutionRegistry.getRule(r.article);
|
|
271
|
+
return {
|
|
272
|
+
article: r.article,
|
|
273
|
+
name: rule?.name ?? `Article ${r.article}`,
|
|
274
|
+
passed: r.passed,
|
|
275
|
+
violations: r.violations.map((v) => ({
|
|
276
|
+
severity: v.severity,
|
|
277
|
+
message: v.message,
|
|
278
|
+
suggestion: v.suggestion,
|
|
279
|
+
})),
|
|
280
|
+
};
|
|
281
|
+
}),
|
|
282
|
+
summary: report.overallPassed
|
|
283
|
+
? 'All constitution articles passed'
|
|
284
|
+
: `${report.articleResults.filter((r) => !r.passed).length} article(s) have violations`,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
catch (e) {
|
|
288
|
+
return error(e instanceof Error ? e.message : String(e));
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
// ============================================================
|
|
293
|
+
// Confidence Estimation Tools
|
|
294
|
+
// ============================================================
|
|
295
|
+
/**
|
|
296
|
+
* Estimate confidence score
|
|
297
|
+
*
|
|
298
|
+
* @description
|
|
299
|
+
* Estimates confidence score for generated code with breakdown.
|
|
300
|
+
*/
|
|
301
|
+
export const estimateConfidenceTool = {
|
|
302
|
+
name: 'symbolic_estimate_confidence',
|
|
303
|
+
description: 'Estimate confidence score (0.0-1.0) for generated code with breakdown by syntactic, semantic, factual, and consistency factors',
|
|
304
|
+
inputSchema: {
|
|
305
|
+
type: 'object',
|
|
306
|
+
properties: {
|
|
307
|
+
code: {
|
|
308
|
+
type: 'string',
|
|
309
|
+
description: 'Code to estimate confidence for',
|
|
310
|
+
},
|
|
311
|
+
language: {
|
|
312
|
+
type: 'string',
|
|
313
|
+
description: 'Programming language',
|
|
314
|
+
default: 'typescript',
|
|
315
|
+
},
|
|
316
|
+
hallucinationCount: {
|
|
317
|
+
type: 'number',
|
|
318
|
+
description: 'Number of detected hallucinations (if known)',
|
|
319
|
+
default: 0,
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
required: ['code'],
|
|
323
|
+
},
|
|
324
|
+
handler: async (args) => {
|
|
325
|
+
try {
|
|
326
|
+
const { code, language, hallucinationCount } = args;
|
|
327
|
+
const pipeline = createSymbolicPipeline();
|
|
328
|
+
const candidate = {
|
|
329
|
+
code,
|
|
330
|
+
language: language ?? 'typescript',
|
|
331
|
+
metadata: { generatedAt: new Date().toISOString(), model: 'unknown' },
|
|
332
|
+
};
|
|
333
|
+
const context = {
|
|
334
|
+
projectPath: process.cwd(),
|
|
335
|
+
symbols: [],
|
|
336
|
+
dependencies: [],
|
|
337
|
+
requirements: [],
|
|
338
|
+
};
|
|
339
|
+
const estimation = await pipeline.confidenceEstimator.estimate(candidate, context, hallucinationCount ?? 0);
|
|
340
|
+
const routing = pipeline.router.route(estimation);
|
|
341
|
+
return success({
|
|
342
|
+
action: 'estimate_confidence',
|
|
343
|
+
score: estimation.score,
|
|
344
|
+
breakdown: estimation.breakdown,
|
|
345
|
+
riskFactors: estimation.riskFactors,
|
|
346
|
+
routing: {
|
|
347
|
+
decision: routing.decision,
|
|
348
|
+
verificationRequirements: routing.verificationRequirements,
|
|
349
|
+
},
|
|
350
|
+
recommendation: routing.decision === 'accept'
|
|
351
|
+
? 'Code has high confidence, safe to use'
|
|
352
|
+
: routing.decision === 'verify'
|
|
353
|
+
? 'Code requires human review before use'
|
|
354
|
+
: 'Code should be regenerated with improved context',
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
catch (e) {
|
|
358
|
+
return error(e instanceof Error ? e.message : String(e));
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
};
|
|
362
|
+
// ============================================================
|
|
363
|
+
// Pipeline Information Tool
|
|
364
|
+
// ============================================================
|
|
365
|
+
/**
|
|
366
|
+
* Get symbolic pipeline info
|
|
367
|
+
*
|
|
368
|
+
* @description
|
|
369
|
+
* Returns information about the symbolic processing pipeline.
|
|
370
|
+
*/
|
|
371
|
+
export const getPipelineInfoTool = {
|
|
372
|
+
name: 'symbolic_pipeline_info',
|
|
373
|
+
description: 'Get information about the symbolic processing pipeline and its configuration',
|
|
374
|
+
inputSchema: {
|
|
375
|
+
type: 'object',
|
|
376
|
+
properties: {},
|
|
377
|
+
required: [],
|
|
378
|
+
},
|
|
379
|
+
handler: async () => {
|
|
380
|
+
try {
|
|
381
|
+
const pipeline = createSymbolicPipeline();
|
|
382
|
+
return success({
|
|
383
|
+
action: 'pipeline_info',
|
|
384
|
+
components: {
|
|
385
|
+
filter: 'SemanticCodeFilterPipeline',
|
|
386
|
+
hallucinationDetector: 'HallucinationDetector',
|
|
387
|
+
constitutionRegistry: {
|
|
388
|
+
type: 'ConstitutionRuleRegistry',
|
|
389
|
+
ruleCount: pipeline.constitutionRegistry.ruleCount,
|
|
390
|
+
},
|
|
391
|
+
confidenceEstimator: 'ConfidenceEstimator',
|
|
392
|
+
router: 'ConfidenceBasedRouter',
|
|
393
|
+
errorHandler: 'ErrorHandler',
|
|
394
|
+
},
|
|
395
|
+
thresholds: {
|
|
396
|
+
acceptThreshold: 0.8,
|
|
397
|
+
verifyThreshold: 0.5,
|
|
398
|
+
regenerateBelow: 0.5,
|
|
399
|
+
maxRegenerationAttempts: 3,
|
|
400
|
+
},
|
|
401
|
+
constitutionArticles: [
|
|
402
|
+
{ article: 'I', name: 'Library-First' },
|
|
403
|
+
{ article: 'II', name: 'CLI Interface' },
|
|
404
|
+
{ article: 'III', name: 'Test-First' },
|
|
405
|
+
{ article: 'IV', name: 'EARS Format' },
|
|
406
|
+
{ article: 'V', name: 'Traceability' },
|
|
407
|
+
{ article: 'VI', name: 'Project Memory' },
|
|
408
|
+
{ article: 'VII', name: 'Design Patterns' },
|
|
409
|
+
{ article: 'VIII', name: 'Decision Records' },
|
|
410
|
+
{ article: 'IX', name: 'Quality Gates' },
|
|
411
|
+
],
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
catch (e) {
|
|
415
|
+
return error(e instanceof Error ? e.message : String(e));
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
};
|
|
419
|
+
// ============================================================
|
|
420
|
+
// Formal Verification Tool (Phase 2)
|
|
421
|
+
// ============================================================
|
|
422
|
+
/**
|
|
423
|
+
* Formal verification using EARS to SMT-LIB conversion and Z3
|
|
424
|
+
*
|
|
425
|
+
* @description
|
|
426
|
+
* Converts EARS requirements to formal specifications and verifies
|
|
427
|
+
* using Z3 theorem prover with graceful degradation.
|
|
428
|
+
*
|
|
429
|
+
* @traceability TSK-SYMB-012
|
|
430
|
+
*/
|
|
431
|
+
export const formalVerifyTool = {
|
|
432
|
+
name: 'sdd_formal_verify',
|
|
433
|
+
description: 'Perform formal verification on EARS requirements using Z3 theorem prover. ' +
|
|
434
|
+
'Converts requirements to SMT-LIB format and generates verification conditions.',
|
|
435
|
+
inputSchema: {
|
|
436
|
+
type: 'object',
|
|
437
|
+
properties: {
|
|
438
|
+
requirements: {
|
|
439
|
+
type: 'array',
|
|
440
|
+
description: 'Array of EARS requirements to verify',
|
|
441
|
+
items: {
|
|
442
|
+
type: 'object',
|
|
443
|
+
properties: {
|
|
444
|
+
id: { type: 'string', description: 'Requirement ID (e.g., REQ-001)' },
|
|
445
|
+
text: { type: 'string', description: 'EARS requirement text' },
|
|
446
|
+
priority: {
|
|
447
|
+
type: 'string',
|
|
448
|
+
enum: ['P0', 'P1', 'P2'],
|
|
449
|
+
description: 'Priority level',
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
required: ['id', 'text'],
|
|
453
|
+
},
|
|
454
|
+
},
|
|
455
|
+
verificationMode: {
|
|
456
|
+
type: 'string',
|
|
457
|
+
enum: ['full', 'syntax-only', 'vc-generation'],
|
|
458
|
+
description: 'Verification mode: full (with Z3), syntax-only (parse only), vc-generation (generate VCs without Z3)',
|
|
459
|
+
},
|
|
460
|
+
timeout: {
|
|
461
|
+
type: 'number',
|
|
462
|
+
description: 'Timeout in milliseconds for Z3 execution (default: 5000)',
|
|
463
|
+
},
|
|
464
|
+
},
|
|
465
|
+
required: ['requirements'],
|
|
466
|
+
},
|
|
467
|
+
handler: async (args) => {
|
|
468
|
+
try {
|
|
469
|
+
const requirements = args.requirements;
|
|
470
|
+
const mode = args.verificationMode || 'full';
|
|
471
|
+
const timeout = args.timeout || 5000;
|
|
472
|
+
if (!requirements || requirements.length === 0) {
|
|
473
|
+
return error('At least one requirement is required');
|
|
474
|
+
}
|
|
475
|
+
// Initialize converters
|
|
476
|
+
const earsConverter = new EarsToFormalSpecConverter();
|
|
477
|
+
const vcGenerator = new VerificationConditionGenerator();
|
|
478
|
+
const z3Adapter = new Z3Adapter({ timeoutMs: timeout });
|
|
479
|
+
// Check Z3 availability
|
|
480
|
+
const z3Available = await z3Adapter.isAvailable();
|
|
481
|
+
// Process each requirement
|
|
482
|
+
const results = [];
|
|
483
|
+
let totalVcs = 0;
|
|
484
|
+
let successfulParses = 0;
|
|
485
|
+
let verifiedCount = 0;
|
|
486
|
+
// Collect all parsed requirements for batch processing
|
|
487
|
+
const parsedRequirements = [];
|
|
488
|
+
const parseErrors = new Map();
|
|
489
|
+
for (const req of requirements) {
|
|
490
|
+
const parseResult = earsConverter.parse(req.id, req.text);
|
|
491
|
+
if (parseResult.success) {
|
|
492
|
+
parsedRequirements.push(req);
|
|
493
|
+
successfulParses++;
|
|
494
|
+
}
|
|
495
|
+
else {
|
|
496
|
+
parseErrors.set(req.id, parseResult.error);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
// Convert all requirements to formal spec
|
|
500
|
+
const formalSpec = earsConverter.convertAll(parsedRequirements);
|
|
501
|
+
// Process results for each requirement
|
|
502
|
+
for (const req of requirements) {
|
|
503
|
+
const result = {
|
|
504
|
+
requirementId: req.id,
|
|
505
|
+
parsed: false,
|
|
506
|
+
patternType: null,
|
|
507
|
+
smtLib: null,
|
|
508
|
+
vcCount: 0,
|
|
509
|
+
verified: null,
|
|
510
|
+
z3Result: null,
|
|
511
|
+
errors: [],
|
|
512
|
+
};
|
|
513
|
+
if (parseErrors.has(req.id)) {
|
|
514
|
+
result.errors.push(parseErrors.get(req.id) || 'Unknown parse error');
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
result.parsed = true;
|
|
518
|
+
// Find corresponding AST node
|
|
519
|
+
const astNode = formalSpec.astNodes.find((n) => n.requirementId === req.id);
|
|
520
|
+
if (astNode) {
|
|
521
|
+
result.patternType = astNode.pattern;
|
|
522
|
+
}
|
|
523
|
+
// Find corresponding SMT output
|
|
524
|
+
const smtOutput = formalSpec.smtOutputs.find((s) => s.requirementId === req.id);
|
|
525
|
+
if (smtOutput && mode !== 'syntax-only') {
|
|
526
|
+
result.smtLib = smtOutput.smtLib;
|
|
527
|
+
}
|
|
528
|
+
// Generate VCs from AST if available
|
|
529
|
+
if (astNode && mode !== 'syntax-only') {
|
|
530
|
+
const vcResult = vcGenerator.fromEarsAst([astNode]);
|
|
531
|
+
result.vcCount = vcResult.conditions.length;
|
|
532
|
+
totalVcs += vcResult.conditions.length;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
results.push(result);
|
|
536
|
+
}
|
|
537
|
+
// Perform Z3 verification if full mode and Z3 available
|
|
538
|
+
if (mode === 'full' && z3Available && formalSpec.combinedSmtLib) {
|
|
539
|
+
// Collect all VCs
|
|
540
|
+
const allVcs = formalSpec.astNodes.flatMap((ast) => vcGenerator.fromEarsAst([ast]).conditions);
|
|
541
|
+
if (allVcs.length > 0) {
|
|
542
|
+
const verifyResult = await z3Adapter.verifyAll(allVcs, formalSpec.combinedSmtLib);
|
|
543
|
+
// Count verified
|
|
544
|
+
const verifiedVcs = verifyResult.vcResults.filter((r) => r.status === 'verified').length;
|
|
545
|
+
verifiedCount = verifiedVcs;
|
|
546
|
+
// Update results with verification info
|
|
547
|
+
for (const result of results) {
|
|
548
|
+
if (result.parsed) {
|
|
549
|
+
const reqVcResults = verifyResult.vcResults.filter((r) => r.vcId.startsWith(result.requirementId));
|
|
550
|
+
if (reqVcResults.length > 0) {
|
|
551
|
+
const verified = reqVcResults.filter((r) => r.status === 'verified').length;
|
|
552
|
+
result.verified = verified === reqVcResults.length;
|
|
553
|
+
result.z3Result = {
|
|
554
|
+
verified,
|
|
555
|
+
total: reqVcResults.length,
|
|
556
|
+
verdict: verifyResult.overallVerdict,
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
// Summary
|
|
564
|
+
const summary = {
|
|
565
|
+
totalRequirements: requirements.length,
|
|
566
|
+
successfullyParsed: successfulParses,
|
|
567
|
+
totalVcsGenerated: totalVcs,
|
|
568
|
+
z3Available,
|
|
569
|
+
verified: mode === 'full' ? verifiedCount : null,
|
|
570
|
+
mode,
|
|
571
|
+
};
|
|
572
|
+
return success({
|
|
573
|
+
action: 'formal_verify',
|
|
574
|
+
summary,
|
|
575
|
+
results,
|
|
576
|
+
recommendation: !z3Available && mode === 'full'
|
|
577
|
+
? 'Z3 is not installed. Install Z3 for full formal verification, or use vc-generation mode.'
|
|
578
|
+
: successfulParses === requirements.length
|
|
579
|
+
? 'All requirements successfully parsed and processed'
|
|
580
|
+
: `${requirements.length - successfulParses} requirement(s) failed to parse. Check EARS syntax.`,
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
catch (e) {
|
|
584
|
+
return error(e instanceof Error ? e.message : String(e));
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
};
|
|
588
|
+
// ============================================================
|
|
589
|
+
// Exports
|
|
590
|
+
// ============================================================
|
|
591
|
+
/**
|
|
592
|
+
* All symbolic tools
|
|
593
|
+
*/
|
|
594
|
+
export const symbolicTools = [
|
|
595
|
+
filterCodeTool,
|
|
596
|
+
detectHallucinationsTool,
|
|
597
|
+
checkConstitutionTool,
|
|
598
|
+
estimateConfidenceTool,
|
|
599
|
+
getPipelineInfoTool,
|
|
600
|
+
formalVerifyTool,
|
|
601
|
+
];
|
|
602
|
+
/**
|
|
603
|
+
* Get all symbolic tool definitions
|
|
604
|
+
*/
|
|
605
|
+
export function getSymbolicTools() {
|
|
606
|
+
return symbolicTools;
|
|
607
|
+
}
|
|
608
|
+
//# sourceMappingURL=symbolic-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbolic-tools.js","sourceRoot":"","sources":["../../src/tools/symbolic-tools.ts"],"names":[],"mappings":"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"}
|