quantum-suitability-validator-mcp 1.0.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.
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ export const ReportInputSchema = z.object({
3
+ problem_description: z.string()
4
+ .min(20, 'Problem description must be at least 20 characters')
5
+ .max(5000, 'Problem description must not exceed 5000 characters')
6
+ .describe('Description of the problem proposed for quantum computing. ' +
7
+ 'Minimum 20 characters. Include what it computes and what a win looks like.'),
8
+ industry: z.string()
9
+ .max(100, 'Industry must not exceed 100 characters')
10
+ .optional()
11
+ .describe('Industry or sector context (e.g. finance, logistics, pharma, energy, manufacturing)'),
12
+ objective_type: z.enum(['optimisation', 'simulation', 'sampling', 'ml', 'cryptography', 'other'])
13
+ .optional()
14
+ .describe('Primary objective type: optimisation, simulation, sampling, ml, cryptography, or other'),
15
+ current_classical_method: z.string()
16
+ .min(5, 'Classical method must be at least 5 characters')
17
+ .max(500, 'Classical method description must not exceed 500 characters')
18
+ .describe('REQUIRED. Current classical algorithm or solver being used ' +
19
+ '(e.g. OR-Tools, CPLEX, MIP, heuristics, Monte Carlo). ' +
20
+ 'Used for baseline strength assessment and hardware fit scoring.'),
21
+ constraints_description: z.string()
22
+ .min(5, 'Constraints description must be at least 5 characters')
23
+ .max(1000, 'Constraints description must not exceed 1000 characters')
24
+ .describe('REQUIRED. Description of problem constraints -- equality constraints, ' +
25
+ 'cardinality limits, if/then rules, etc. Used for QUBO formulation risk analysis.'),
26
+ variables_estimate: z.number()
27
+ .int('Variables estimate must be an integer')
28
+ .min(1, 'Variables estimate must be at least 1')
29
+ .max(10000000, 'Variables estimate must not exceed 10,000,000')
30
+ .optional()
31
+ .describe('Estimated number of decision variables in the problem'),
32
+ success_metric: z.string()
33
+ .max(500, 'Success metric must not exceed 500 characters')
34
+ .optional()
35
+ .describe('Measurable success criterion -- what improvement vs baseline makes this worth a pilot ' +
36
+ '(e.g. "10% cost reduction vs OR-Tools baseline on 200-node benchmark")'),
37
+ response_format: z.enum(['markdown', 'json'])
38
+ .default('json')
39
+ .describe("Output format: 'json' for machine-readable agent use (default), 'markdown' for human-readable display")
40
+ }).strict();
41
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/schemas/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5B,GAAG,CAAC,EAAE,EAAE,oDAAoD,CAAC;SAC7D,GAAG,CAAC,IAAI,EAAE,qDAAqD,CAAC;SAChE,QAAQ,CACP,6DAA6D;QAC7D,4EAA4E,CAC7E;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,GAAG,CAAC,GAAG,EAAE,yCAAyC,CAAC;SACnD,QAAQ,EAAE;SACV,QAAQ,CAAC,qFAAqF,CAAC;IAClG,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;SAC9F,QAAQ,EAAE;SACV,QAAQ,CAAC,wFAAwF,CAAC;IACrG,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE;SACjC,GAAG,CAAC,CAAC,EAAE,gDAAgD,CAAC;SACxD,GAAG,CAAC,GAAG,EAAE,6DAA6D,CAAC;SACvE,QAAQ,CACP,6DAA6D;QAC7D,wDAAwD;QACxD,iEAAiE,CAClE;IACH,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE;SAChC,GAAG,CAAC,CAAC,EAAE,uDAAuD,CAAC;SAC/D,GAAG,CAAC,IAAI,EAAE,yDAAyD,CAAC;SACpE,QAAQ,CACP,wEAAwE;QACxE,kFAAkF,CACnF;IACH,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;SAC3B,GAAG,CAAC,uCAAuC,CAAC;SAC5C,GAAG,CAAC,CAAC,EAAE,uCAAuC,CAAC;SAC/C,GAAG,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SAC9D,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACpE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;SACvB,GAAG,CAAC,GAAG,EAAE,+CAA+C,CAAC;SACzD,QAAQ,EAAE;SACV,QAAQ,CACP,wFAAwF;QACxF,wEAAwE,CACzE;IACH,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;SAC1C,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,uGAAuG,CAAC;CACrH,CAAC,CAAC,MAAM,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-client.d.ts","sourceRoot":"","sources":["../../src/services/claude-client.ts"],"names":[],"mappings":"AAYA,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAOjD"}
@@ -0,0 +1,32 @@
1
+ import Anthropic from '@anthropic-ai/sdk';
2
+ import { SYSTEM_PROMPT } from '../constants.js';
3
+ let anthropicClient = null;
4
+ function getClient() {
5
+ if (!anthropicClient) {
6
+ anthropicClient = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
7
+ }
8
+ return anthropicClient;
9
+ }
10
+ export async function callClaude(userPrompt) {
11
+ const client = getClient();
12
+ const response = await client.messages.create({
13
+ model: 'claude-sonnet-4-6',
14
+ max_tokens: 4096,
15
+ system: SYSTEM_PROMPT,
16
+ messages: [{ role: 'user', content: userPrompt }]
17
+ });
18
+ const textBlock = response.content.find(b => b.type === 'text');
19
+ if (!textBlock || textBlock.type !== 'text') {
20
+ throw new Error('No text content in Claude response');
21
+ }
22
+ return textBlock.text;
23
+ }
24
+ export function parseClaudeJSON(raw) {
25
+ const cleaned = raw
26
+ .replace(/^```json\s*/im, '')
27
+ .replace(/^```\s*/im, '')
28
+ .replace(/\s*```\s*$/im, '')
29
+ .trim();
30
+ return JSON.parse(cleaned);
31
+ }
32
+ //# sourceMappingURL=claude-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-client.js","sourceRoot":"","sources":["../../src/services/claude-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,IAAI,eAAe,GAAqB,IAAI,CAAC;AAE7C,SAAS,SAAS;IAChB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KAClD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe,CAAI,GAAW;IAC5C,MAAM,OAAO,GAAG,GAAG;SAChB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assess.d.ts","sourceRoot":"","sources":["../../src/tools/assess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA+ChD,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CA6CrE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAiCjE"}
@@ -0,0 +1,106 @@
1
+ import { callClaude, parseClaudeJSON } from '../services/claude-client.js';
2
+ import { nowISO, LEGAL_DISCLAIMER, PRO_UPGRADE_URL } from '../constants.js';
3
+ function buildAssessPrompt(params) {
4
+ return [
5
+ 'Assess the following quantum computing initiative proposal.',
6
+ '',
7
+ `PROBLEM DESCRIPTION: ${params.problem_description}`,
8
+ `INDUSTRY: ${params.industry ?? 'not specified'}`,
9
+ `OBJECTIVE TYPE: ${params.objective_type ?? 'not specified'}`,
10
+ `CURRENT CLASSICAL METHOD: ${params.current_classical_method ?? 'not provided'}`,
11
+ `CONSTRAINTS DESCRIPTION: ${params.constraints_description ?? 'not provided'}`,
12
+ `VARIABLE ESTIMATE: ${params.variables_estimate != null ? String(params.variables_estimate) : 'not provided'}`,
13
+ '',
14
+ 'Return ONLY a JSON object. No markdown. No explanation. Match this structure exactly:',
15
+ '{',
16
+ ' "verdict": "<RECOMMENDED_NOW|BENCHMARK_ONLY|HYBRID_ONLY|SIMULATOR_ONLY|NOT_RECOMMENDED|NOT_QUANTUM_AMENABLE|INSUFFICIENT_INFORMATION>",',
17
+ ' "suitability_score": <float 0.0-1.0>,',
18
+ ' "confidence_score": <float 0.0-1.0>,',
19
+ ' "problem_class": ["<combinatorial_optimisation|portfolio_optimisation|molecular_simulation|ml_kernel|cryptography_pqc|sampling_monte_carlo|other>"],',
20
+ ' "dominant_blockers": ["<string>"],',
21
+ ' "hype_flags": ["<string or empty array>"],',
22
+ ' "baseline_question": "What is your classical baseline today, and what metric must improve for this to matter?",',
23
+ ' "next_best_action": "<specific actionable recommendation>",',
24
+ ' "agent_action": "<ESCALATE_TO_POC|ROUTE_TO_SIMULATOR|DEFINE_BASELINE_FIRST|REJECT|REQUEST_MORE_INFORMATION>"',
25
+ '}'
26
+ ].join('\n');
27
+ }
28
+ function clamp(v) {
29
+ if (typeof v !== 'number' || isNaN(v))
30
+ return 0;
31
+ return Math.min(1, Math.max(0, v));
32
+ }
33
+ export async function runAssess(params) {
34
+ try {
35
+ const raw = await callClaude(buildAssessPrompt(params));
36
+ const parsed = parseClaudeJSON(raw);
37
+ const isInsufficient = parsed.verdict === 'INSUFFICIENT_INFORMATION';
38
+ const output = {
39
+ verdict: parsed.verdict,
40
+ suitability_score: clamp(parsed.suitability_score),
41
+ confidence_score: clamp(parsed.confidence_score),
42
+ problem_class: (parsed.problem_class ?? []),
43
+ dominant_blockers: parsed.dominant_blockers ?? [],
44
+ hype_flags: parsed.hype_flags ?? [],
45
+ baseline_question: parsed.baseline_question ??
46
+ 'What is your classical baseline today, and what metric must improve for this to matter?',
47
+ next_best_action: parsed.next_best_action ?? '',
48
+ agent_action: parsed.agent_action,
49
+ analysis_type: 'AI-assisted quantum triage -- NOT a substitute for experimental physicist review',
50
+ checked_at: nowISO(),
51
+ _disclaimer: LEGAL_DISCLAIMER
52
+ };
53
+ if (!isInsufficient) {
54
+ output._upgrade_notice =
55
+ 'Verdict delivered. The full Quantum Readiness Report -- formulation path, hardware family fit, ' +
56
+ 'error budget viability, and validation plan -- is Pro only. ' +
57
+ `Upgrade at kordagencies.com.`;
58
+ }
59
+ return { output };
60
+ }
61
+ catch (err) {
62
+ return {
63
+ error: {
64
+ error: 'Assessment failed',
65
+ likely_cause: err instanceof Error ? err.message : 'Unexpected error during AI analysis',
66
+ agent_action: 'Retry once with a more specific problem description. ' +
67
+ 'If error persists, contact support at ojas@kordagencies.com.',
68
+ upgrade_url: PRO_UPGRADE_URL
69
+ }
70
+ };
71
+ }
72
+ }
73
+ export function formatAssessMarkdown(output) {
74
+ const lines = [
75
+ '## Quantum Suitability Assessment',
76
+ `**Verdict:** ${output.verdict}`,
77
+ `**Suitability Score:** ${output.suitability_score.toFixed(2)}`,
78
+ `**Confidence Score:** ${output.confidence_score.toFixed(2)}`,
79
+ `**Agent Action:** ${output.agent_action}`,
80
+ '',
81
+ `**Problem Class:** ${output.problem_class.join(', ')}`,
82
+ '',
83
+ '**Dominant Blockers:**',
84
+ ...(output.dominant_blockers.length
85
+ ? output.dominant_blockers.map(b => `- ${b}`)
86
+ : ['- None identified']),
87
+ '',
88
+ '**Hype Flags:**',
89
+ ...(output.hype_flags.length
90
+ ? output.hype_flags.map(f => `- ${f}`)
91
+ : ['- None detected']),
92
+ '',
93
+ `**Baseline Question:** ${output.baseline_question}`,
94
+ '',
95
+ `**Next Best Action:** ${output.next_best_action}`,
96
+ '',
97
+ `*${output.analysis_type}*`,
98
+ `*Checked at: ${output.checked_at}*`
99
+ ];
100
+ if (output._upgrade_notice) {
101
+ lines.push('', `**Upgrade Notice:** ${output._upgrade_notice}`);
102
+ }
103
+ lines.push('', `*${output._disclaimer}*`);
104
+ return lines.join('\n');
105
+ }
106
+ //# sourceMappingURL=assess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assess.js","sourceRoot":"","sources":["../../src/tools/assess.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAc5E,SAAS,iBAAiB,CAAC,MAAmB;IAC5C,OAAO;QACL,6DAA6D;QAC7D,EAAE;QACF,wBAAwB,MAAM,CAAC,mBAAmB,EAAE;QACpD,aAAa,MAAM,CAAC,QAAQ,IAAI,eAAe,EAAE;QACjD,mBAAmB,MAAM,CAAC,cAAc,IAAI,eAAe,EAAE;QAC7D,6BAA6B,MAAM,CAAC,wBAAwB,IAAI,cAAc,EAAE;QAChF,4BAA4B,MAAM,CAAC,uBAAuB,IAAI,cAAc,EAAE;QAC9E,sBAAsB,MAAM,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE;QAC9G,EAAE;QACF,uFAAuF;QACvF,GAAG;QACH,2IAA2I;QAC3I,yCAAyC;QACzC,wCAAwC;QACxC,wJAAwJ;QACxJ,sCAAsC;QACtC,8CAA8C;QAC9C,mHAAmH;QACnH,+DAA+D;QAC/D,gHAAgH;QAChH,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,eAAe,CAAuB,GAAG,CAAC,CAAC;QAE1D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,KAAK,0BAA0B,CAAC;QAErE,MAAM,MAAM,GAAiB;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAkC;YAClD,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAClD,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAChD,aAAa,EAAE,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAkC;YAC5E,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;YACjD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;YACnC,iBAAiB,EACf,MAAM,CAAC,iBAAiB;gBACxB,yFAAyF;YAC3F,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,EAAE;YAC/C,YAAY,EAAE,MAAM,CAAC,YAA4C;YACjE,aAAa,EAAE,kFAAkF;YACjG,UAAU,EAAE,MAAM,EAAE;YACpB,WAAW,EAAE,gBAAgB;SAC9B,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,CAAC,eAAe;gBACpB,iGAAiG;oBACjG,8DAA8D;oBAC9D,8BAA8B,CAAC;QACnC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE;gBACL,KAAK,EAAE,mBAAmB;gBAC1B,YAAY,EACV,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qCAAqC;gBAC5E,YAAY,EACV,uDAAuD;oBACvD,8DAA8D;gBAChE,WAAW,EAAE,eAAe;aAC7B;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,MAAM,KAAK,GAAG;QACZ,mCAAmC;QACnC,gBAAgB,MAAM,CAAC,OAAO,EAAE;QAChC,0BAA0B,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC/D,yBAAyB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC7D,qBAAqB,MAAM,CAAC,YAAY,EAAE;QAC1C,EAAE;QACF,sBAAsB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACvD,EAAE;QACF,wBAAwB;QACxB,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM;YACjC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC1B,EAAE;QACF,iBAAiB;QACjB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;YAC1B,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACxB,EAAE;QACF,0BAA0B,MAAM,CAAC,iBAAiB,EAAE;QACpD,EAAE;QACF,yBAAyB,MAAM,CAAC,gBAAgB,EAAE;QAClD,EAAE;QACF,IAAI,MAAM,CAAC,aAAa,GAAG;QAC3B,gBAAgB,MAAM,CAAC,UAAU,GAAG;KACrC,CAAC;IAEF,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/tools/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AA0G9D,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAgErE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmDjE"}
@@ -0,0 +1,175 @@
1
+ import { callClaude, parseClaudeJSON } from '../services/claude-client.js';
2
+ import { nowISO, LEGAL_DISCLAIMER } from '../constants.js';
3
+ function buildReportPrompt(params) {
4
+ return [
5
+ 'Generate a full Quantum Readiness Report for the following initiative.',
6
+ '',
7
+ `PROBLEM DESCRIPTION: ${params.problem_description}`,
8
+ `INDUSTRY: ${params.industry ?? 'not specified'}`,
9
+ `OBJECTIVE TYPE: ${params.objective_type ?? 'not specified'}`,
10
+ `CURRENT CLASSICAL METHOD: ${params.current_classical_method}`,
11
+ `CONSTRAINTS DESCRIPTION: ${params.constraints_description}`,
12
+ `VARIABLE ESTIMATE: ${params.variables_estimate != null ? String(params.variables_estimate) : 'not provided'}`,
13
+ `SUCCESS METRIC: ${params.success_metric ?? 'not provided'}`,
14
+ '',
15
+ 'Return ONLY a JSON object. No markdown. No explanation. Match this structure exactly:',
16
+ '{',
17
+ ' "verdict": "<RECOMMENDED_NOW|BENCHMARK_ONLY|HYBRID_ONLY|SIMULATOR_ONLY|NOT_RECOMMENDED|NOT_QUANTUM_AMENABLE|INSUFFICIENT_INFORMATION>",',
18
+ ' "suitability_score": <float 0.0-1.0>,',
19
+ ' "confidence_score": <float 0.0-1.0>,',
20
+ ' "problem_class": ["<combinatorial_optimisation|portfolio_optimisation|molecular_simulation|ml_kernel|cryptography_pqc|sampling_monte_carlo|other>"],',
21
+ ' "dominant_blockers": ["<string>"],',
22
+ ' "hype_flags": ["<string or empty array>"],',
23
+ ' "baseline_question": "What is your classical baseline today, and what metric must improve for this to matter?",',
24
+ ' "next_best_action": "<specific actionable recommendation>",',
25
+ ' "agent_action": "<ESCALATE_TO_POC|ROUTE_TO_SIMULATOR|DEFINE_BASELINE_FIRST|REJECT|REQUEST_MORE_INFORMATION>",',
26
+ ' "recommended_workflow": "<CLASSICAL_ONLY|HYBRID|SIMULATOR_ONLY|ANNEALING_PATH|GATE_MODEL_VARIATIONAL|INSUFFICIENT_INFORMATION>",',
27
+ ' "formulation_guidance": {',
28
+ ' "candidate_type": "<qubo|ising|gate_model_variational|hybrid|none>",',
29
+ ' "viability": "<high|medium|low|not_viable>",',
30
+ ' "estimated_binary_variables": <integer or null>,',
31
+ ' "constraint_encoding_risk": "<low|medium|high|critical>",',
32
+ ' "objective_preservation": "<high|medium|low>",',
33
+ ' "penalty_dominance_risk": <boolean>,',
34
+ ' "notes": ["<string>"]',
35
+ ' },',
36
+ ' "hardware_recommendations": [',
37
+ ' {',
38
+ ' "hardware_family": "<annealing|gate_model_superconducting|gate_model_trapped_ion|neutral_atom|simulator|none>",',
39
+ ' "fit_score": <float 0.0-1.0>,',
40
+ ' "access_route": "<d_wave_leap|ibm_cloud|ionq_cloud|simulator_only|not_applicable>",',
41
+ ' "risks": ["<string>"]',
42
+ ' }',
43
+ ' ],',
44
+ ' "error_budget_assessment": {',
45
+ ' "viability": "<viable|marginal|not_viable|not_applicable>",',
46
+ ' "dominant_limiters": ["<string>"],',
47
+ ' "mitigation_options": ["<string>"]',
48
+ ' },',
49
+ ' "classical_baseline_assessment": {',
50
+ ' "strength": "<strong|moderate|weak|unknown>",',
51
+ ' "required_baseline_method": "<string>",',
52
+ ' "minimum_benchmark_requirement": "<string>"',
53
+ ' },',
54
+ ' "validation_plan": ["<ordered step string>"],',
55
+ ' "refusal_reason": "<string or null>"',
56
+ '}'
57
+ ].join('\n');
58
+ }
59
+ function clamp(v) {
60
+ if (typeof v !== 'number' || isNaN(v))
61
+ return 0;
62
+ return Math.min(1, Math.max(0, v));
63
+ }
64
+ export async function runReport(params) {
65
+ try {
66
+ const raw = await callClaude(buildReportPrompt(params));
67
+ const parsed = parseClaudeJSON(raw);
68
+ const fg = parsed.formulation_guidance ?? {};
69
+ const output = {
70
+ verdict: parsed.verdict,
71
+ suitability_score: clamp(parsed.suitability_score),
72
+ confidence_score: clamp(parsed.confidence_score),
73
+ problem_class: (parsed.problem_class ?? []),
74
+ dominant_blockers: parsed.dominant_blockers ?? [],
75
+ hype_flags: parsed.hype_flags ?? [],
76
+ baseline_question: parsed.baseline_question ??
77
+ 'What is your classical baseline today, and what metric must improve for this to matter?',
78
+ next_best_action: parsed.next_best_action ?? '',
79
+ agent_action: parsed.agent_action,
80
+ analysis_type: 'AI-assisted quantum triage -- NOT a substitute for experimental physicist review',
81
+ checked_at: nowISO(),
82
+ recommended_workflow: parsed.recommended_workflow,
83
+ formulation_guidance: {
84
+ candidate_type: (fg.candidate_type ?? 'none'),
85
+ viability: (fg.viability ?? 'not_viable'),
86
+ estimated_binary_variables: fg.estimated_binary_variables ?? null,
87
+ constraint_encoding_risk: (fg.constraint_encoding_risk ?? 'critical'),
88
+ objective_preservation: (fg.objective_preservation ?? 'low'),
89
+ penalty_dominance_risk: fg.penalty_dominance_risk ?? false,
90
+ notes: fg.notes ?? []
91
+ },
92
+ hardware_recommendations: (parsed.hardware_recommendations ?? []).map(r => ({
93
+ hardware_family: r.hardware_family,
94
+ fit_score: clamp(r.fit_score),
95
+ access_route: r.access_route,
96
+ risks: r.risks ?? []
97
+ })),
98
+ error_budget_assessment: {
99
+ viability: (parsed.error_budget_assessment?.viability ?? 'not_applicable'),
100
+ dominant_limiters: parsed.error_budget_assessment?.dominant_limiters ?? [],
101
+ mitigation_options: parsed.error_budget_assessment?.mitigation_options ?? []
102
+ },
103
+ classical_baseline_assessment: {
104
+ strength: (parsed.classical_baseline_assessment?.strength ?? 'unknown'),
105
+ required_baseline_method: parsed.classical_baseline_assessment?.required_baseline_method ?? '',
106
+ minimum_benchmark_requirement: parsed.classical_baseline_assessment?.minimum_benchmark_requirement ?? ''
107
+ },
108
+ validation_plan: parsed.validation_plan ?? [],
109
+ refusal_reason: parsed.refusal_reason ?? null,
110
+ _disclaimer: LEGAL_DISCLAIMER
111
+ };
112
+ return { output };
113
+ }
114
+ catch (err) {
115
+ return {
116
+ error: {
117
+ error: 'Report generation failed',
118
+ likely_cause: err instanceof Error ? err.message : 'Unexpected error during AI analysis',
119
+ agent_action: 'Retry once with more specific problem description, classical method, and constraints. ' +
120
+ 'If error persists, contact support at ojas@kordagencies.com.'
121
+ }
122
+ };
123
+ }
124
+ }
125
+ export function formatReportMarkdown(output) {
126
+ const fg = output.formulation_guidance;
127
+ const lines = [
128
+ '## Quantum Readiness Report',
129
+ `**Verdict:** ${output.verdict}`,
130
+ `**Suitability Score:** ${output.suitability_score.toFixed(2)}`,
131
+ `**Confidence Score:** ${output.confidence_score.toFixed(2)}`,
132
+ `**Recommended Workflow:** ${output.recommended_workflow}`,
133
+ `**Agent Action:** ${output.agent_action}`,
134
+ '',
135
+ `**Problem Class:** ${output.problem_class.join(', ')}`,
136
+ '',
137
+ '### Formulation Guidance',
138
+ `- Candidate Type: ${fg.candidate_type}`,
139
+ `- Viability: ${fg.viability}`,
140
+ `- Estimated Binary Variables: ${fg.estimated_binary_variables ?? 'N/A'}`,
141
+ `- Constraint Encoding Risk: ${fg.constraint_encoding_risk}`,
142
+ `- Objective Preservation: ${fg.objective_preservation}`,
143
+ `- Penalty Dominance Risk: ${fg.penalty_dominance_risk}`,
144
+ ...fg.notes.map(n => `- ${n}`),
145
+ '',
146
+ '### Hardware Recommendations',
147
+ ...output.hardware_recommendations.map(r => `- **${r.hardware_family}** (fit: ${r.fit_score.toFixed(2)}, via ${r.access_route}): ${r.risks.join('; ')}`),
148
+ '',
149
+ '### Error Budget',
150
+ `Viability: ${output.error_budget_assessment.viability}`,
151
+ ...output.error_budget_assessment.dominant_limiters.map(l => `- ${l}`),
152
+ '',
153
+ '### Classical Baseline',
154
+ `Strength: ${output.classical_baseline_assessment.strength}`,
155
+ `Required Method: ${output.classical_baseline_assessment.required_baseline_method}`,
156
+ `Minimum Benchmark: ${output.classical_baseline_assessment.minimum_benchmark_requirement}`,
157
+ '',
158
+ '### Validation Plan',
159
+ ...output.validation_plan.map((step, i) => `${i + 1}. ${step}`),
160
+ '',
161
+ '**Dominant Blockers:**',
162
+ ...(output.dominant_blockers.length
163
+ ? output.dominant_blockers.map(b => `- ${b}`)
164
+ : ['- None identified']),
165
+ '',
166
+ `**Next Best Action:** ${output.next_best_action}`,
167
+ '',
168
+ `*${output.analysis_type}*`,
169
+ `*Checked at: ${output.checked_at}*`,
170
+ '',
171
+ `*${output._disclaimer}*`
172
+ ];
173
+ return lines.join('\n');
174
+ }
175
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/tools/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "quantum-suitability-validator-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server that screens quantum computing POC proposals against expert decision rules before budget allocation",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "license": "MIT",
8
+ "homepage": "https://kordagencies.com",
9
+ "mcpName": "io.github.OjasKord/quantum-suitability-validator-mcp-server",
10
+ "keywords": [
11
+ "mcp",
12
+ "agent",
13
+ "quantum-computing",
14
+ "quantum-triage",
15
+ "poc-validation",
16
+ "innovation",
17
+ "r-and-d",
18
+ "qubo",
19
+ "quantum-readiness"
20
+ ],
21
+ "scripts": {
22
+ "start": "node dist/index.js",
23
+ "dev": "tsx watch src/index.ts",
24
+ "build": "tsc",
25
+ "clean": "rm -rf dist"
26
+ },
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "dependencies": {
31
+ "@anthropic-ai/sdk": "^0.40.0",
32
+ "@modelcontextprotocol/sdk": "^1.6.1",
33
+ "axios": "^1.7.9",
34
+ "zod": "^3.23.8",
35
+ "express": "^4.18.2"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^22.10.0",
39
+ "@types/express": "^4.17.21",
40
+ "tsx": "^4.19.2",
41
+ "typescript": "^5.7.2"
42
+ }
43
+ }