hs-code-classifier-mcp 1.0.9 → 1.0.13
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/CHANGELOG.md +69 -44
- package/LICENSE +21 -21
- package/package.json +8 -5
- package/server-card.json +5 -5
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -19
- package/dist/constants.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -563
- package/dist/index.js.map +0 -1
- package/dist/schemas/classify.d.ts.map +0 -1
- package/dist/schemas/classify.js +0 -24
- package/dist/schemas/classify.js.map +0 -1
- package/dist/schemas/validate.d.ts.map +0 -1
- package/dist/schemas/validate.js +0 -26
- package/dist/schemas/validate.js.map +0 -1
- package/dist/services/claude-client.d.ts.map +0 -1
- package/dist/services/claude-client.js +0 -98
- package/dist/services/claude-client.js.map +0 -1
- package/dist/services/hsping-client.d.ts.map +0 -1
- package/dist/services/hsping-client.js +0 -33
- package/dist/services/hsping-client.js.map +0 -1
- package/dist/tools/classify.d.ts.map +0 -1
- package/dist/tools/classify.js +0 -190
- package/dist/tools/classify.js.map +0 -1
- package/dist/tools/validate.d.ts.map +0 -1
- package/dist/tools/validate.js +0 -90
- package/dist/tools/validate.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/schemas/validate.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { ResponseFormat } from './classify.js';
|
|
3
|
-
export { ResponseFormat };
|
|
4
|
-
export const ValidateInputSchema = z.object({
|
|
5
|
-
hs_code: z.string()
|
|
6
|
-
.min(4, 'HS code must be at least 4 digits')
|
|
7
|
-
.max(14, 'HS code must not exceed 14 characters')
|
|
8
|
-
.describe('The HS code to validate as provided by the supplier or external system. ' +
|
|
9
|
-
'Accepts 6, 8, or 10-digit codes with or without dots (e.g. "940360", "9403.60.80", "9403608093"). ' +
|
|
10
|
-
'Dots and spaces are stripped automatically.'),
|
|
11
|
-
product_description: z.string()
|
|
12
|
-
.min(3, 'Product description must be at least 3 characters')
|
|
13
|
-
.max(500, 'Product description must not exceed 500 characters')
|
|
14
|
-
.describe('Description of the product the supplier assigned this HS code to. ' +
|
|
15
|
-
'Used for AI mismatch detection -- include material, function, and use ' +
|
|
16
|
-
'(e.g. "solid oak dining chair", "stainless steel water bottle 500ml").'),
|
|
17
|
-
country: z.string()
|
|
18
|
-
.length(2, 'Must be ISO 3166-1 alpha-2 country code (e.g. US, SG, CA, AU)')
|
|
19
|
-
.default('US')
|
|
20
|
-
.describe('2-letter ISO country code for the destination country tariff schedule. Defaults to US. ' +
|
|
21
|
-
'Use the importing country to validate against the correct tariff version.'),
|
|
22
|
-
response_format: z.nativeEnum(ResponseFormat)
|
|
23
|
-
.default(ResponseFormat.JSON)
|
|
24
|
-
.describe("Output format: 'json' for machine-readable agent use (recommended) or 'markdown' for human-readable display")
|
|
25
|
-
}).strict();
|
|
26
|
-
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/schemas/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;SAC3C,GAAG,CAAC,EAAE,EAAE,uCAAuC,CAAC;SAChD,QAAQ,CACP,0EAA0E;QAC1E,oGAAoG;QACpG,6CAA6C,CAC9C;IACH,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5B,GAAG,CAAC,CAAC,EAAE,mDAAmD,CAAC;SAC3D,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC;SAC9D,QAAQ,CACP,oEAAoE;QACpE,wEAAwE;QACxE,wEAAwE,CACzE;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,MAAM,CAAC,CAAC,EAAE,+DAA+D,CAAC;SAC1E,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,yFAAyF;QACzF,2EAA2E,CAC5E;IACH,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;SAC1C,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;SAC5B,QAAQ,CAAC,6GAA6G,CAAC;CAC3H,CAAC,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-client.d.ts","sourceRoot":"","sources":["../../src/services/claude-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD,wBAAsB,cAAc,CAClC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CvG;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAmED"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
-
function getClient() {
|
|
3
|
-
const key = process.env.ANTHROPIC_API_KEY;
|
|
4
|
-
if (!key)
|
|
5
|
-
throw new Error('ANTHROPIC_API_KEY environment variable not set');
|
|
6
|
-
return new Anthropic({ apiKey: key });
|
|
7
|
-
}
|
|
8
|
-
export async function classifyWithAI(productDescription, results, country) {
|
|
9
|
-
const client = getClient();
|
|
10
|
-
const resultsText = results
|
|
11
|
-
.map((r, i) => `${i + 1}. HS: ${r.hscode} | WCO: ${r.wco ?? 'N/A'} | ${r.description_en} | ${r.source} v${r.version}`)
|
|
12
|
-
.join('\n');
|
|
13
|
-
const message = await client.messages.create({
|
|
14
|
-
model: 'claude-sonnet-4-6',
|
|
15
|
-
max_tokens: 512,
|
|
16
|
-
system: 'You are a customs classification expert. Analyze HS code matches against a product description and select the best match. ' +
|
|
17
|
-
'Respond ONLY with valid JSON -- no markdown, no explanation outside the JSON.',
|
|
18
|
-
messages: [
|
|
19
|
-
{
|
|
20
|
-
role: 'user',
|
|
21
|
-
content: `Product: "${productDescription}"\nCountry: ${country}\n\nOfficial tariff results:\n${resultsText}\n\n` +
|
|
22
|
-
'Select the best match and respond with JSON only:\n' +
|
|
23
|
-
'{"best_match_index":0,"confidence_level":"HIGH|MEDIUM|LOW","reasoning":"One sentence explaining why this is the correct classification and any ambiguity."}'
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
});
|
|
27
|
-
const raw = message.content[0].type === 'text' ? message.content[0].text.trim() : '{}';
|
|
28
|
-
const cleaned = raw.replace(/^```json\s*/i, '').replace(/\s*```$/, '').trim();
|
|
29
|
-
try {
|
|
30
|
-
const parsed = JSON.parse(cleaned);
|
|
31
|
-
const idx = Math.max(0, Math.min(results.length - 1, parsed.best_match_index ?? 0));
|
|
32
|
-
const level = ['HIGH', 'MEDIUM', 'LOW'].includes(parsed.confidence_level)
|
|
33
|
-
? parsed.confidence_level
|
|
34
|
-
: 'MEDIUM';
|
|
35
|
-
return {
|
|
36
|
-
confidence_level: level,
|
|
37
|
-
reasoning: parsed.reasoning ?? 'Classification based on official tariff schedule match.',
|
|
38
|
-
best_match_index: idx
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return { confidence_level: 'MEDIUM', reasoning: 'Classification based on official tariff schedule match.', best_match_index: 0 };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
export async function validateWithAI(hsCode, productDescription, country, results) {
|
|
46
|
-
const client = getClient();
|
|
47
|
-
const resultsText = results.length > 0
|
|
48
|
-
? results
|
|
49
|
-
.slice(0, 10)
|
|
50
|
-
.map((r, i) => `${i + 1}. HS: ${r.hscode} | WCO: ${r.wco ?? 'N/A'} | ${r.description_en} | ${r.source} v${r.version}`)
|
|
51
|
-
.join('\n')
|
|
52
|
-
: 'No matching codes found in the official tariff schedule for this product description.';
|
|
53
|
-
const message = await client.messages.create({
|
|
54
|
-
model: 'claude-sonnet-4-6',
|
|
55
|
-
max_tokens: 640,
|
|
56
|
-
system: 'You are a customs compliance expert. Validate HS codes against product descriptions and official tariff schedules. ' +
|
|
57
|
-
'Be precise about mismatches -- wrong classifications carry legal liability for the importer. ' +
|
|
58
|
-
'Respond ONLY with valid JSON -- no markdown, no explanation outside the JSON.',
|
|
59
|
-
messages: [
|
|
60
|
-
{
|
|
61
|
-
role: 'user',
|
|
62
|
-
content: `HS code to validate: "${hsCode}"\nProduct: "${productDescription}"\nCountry: ${country}\n\n` +
|
|
63
|
-
`Official tariff results for this product:\n${resultsText}\n\n` +
|
|
64
|
-
'Determine if the HS code is correct. Consider: does the code appear in official results? ' +
|
|
65
|
-
'Is the product description consistent with the code tariff description? Could this be a mismatch or outdated code?\n\n' +
|
|
66
|
-
'Respond with JSON only (omit optional fields if not applicable):\n' +
|
|
67
|
-
'{"verdict":"VALID|INVALID|MISMATCH|OUTDATED","product_match_score":0.0,' +
|
|
68
|
-
'"mismatch_reason":"only if MISMATCH or INVALID","correct_code_suggestion":"HS code if better match exists",' +
|
|
69
|
-
'"risk_level":"LOW|MEDIUM|HIGH","agent_action":"one clear instruction for the agent"}'
|
|
70
|
-
}
|
|
71
|
-
]
|
|
72
|
-
});
|
|
73
|
-
const raw = message.content[0].type === 'text' ? message.content[0].text.trim() : '{}';
|
|
74
|
-
const cleaned = raw.replace(/^```json\s*/i, '').replace(/\s*```$/, '').trim();
|
|
75
|
-
try {
|
|
76
|
-
const parsed = JSON.parse(cleaned);
|
|
77
|
-
const verdicts = ['VALID', 'INVALID', 'MISMATCH', 'OUTDATED'];
|
|
78
|
-
const risks = ['LOW', 'MEDIUM', 'HIGH'];
|
|
79
|
-
return {
|
|
80
|
-
verdict: verdicts.includes(parsed.verdict) ? parsed.verdict : 'INVALID',
|
|
81
|
-
product_match_score: Math.min(1.0, Math.max(0.0, parsed.product_match_score ?? 0.0)),
|
|
82
|
-
mismatch_reason: parsed.mismatch_reason,
|
|
83
|
-
correct_code_suggestion: parsed.correct_code_suggestion,
|
|
84
|
-
risk_level: risks.includes(parsed.risk_level) ? parsed.risk_level : 'HIGH',
|
|
85
|
-
agent_action: parsed.agent_action ?? 'Escalate for manual customs review before approving this shipment.'
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
return {
|
|
90
|
-
verdict: 'INVALID',
|
|
91
|
-
product_match_score: 0.0,
|
|
92
|
-
mismatch_reason: 'AI validation failed to parse HS code response',
|
|
93
|
-
risk_level: 'HIGH',
|
|
94
|
-
agent_action: 'Do not approve this shipment. Escalate for manual customs review.'
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=claude-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-client.js","sourceRoot":"","sources":["../../src/services/claude-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC1C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC5E,OAAO,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,kBAA0B,EAC1B,OAAuB,EACvB,OAAe;IAEf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,WAAW,GAAG,OAAO;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACZ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,cAAc,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CACvG;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3C,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,GAAG;QACf,MAAM,EACJ,4HAA4H;YAC5H,+EAA+E;QACjF,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EACL,aAAa,kBAAkB,eAAe,OAAO,iCAAiC,WAAW,MAAM;oBACvG,qDAAqD;oBACrD,6JAA6J;aAChK;SACF;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAIhC,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,KAAK,GAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAA6C,CAAC;YAC/G,CAAC,CAAE,MAAM,CAAC,gBAA8C;YACxD,CAAC,CAAC,QAAQ,CAAC;QACb,OAAO;YACL,gBAAgB,EAAE,KAAK;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,yDAAyD;YACxF,gBAAgB,EAAE,GAAG;SACtB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,yDAAyD,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACnI,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,kBAA0B,EAC1B,OAAe,EACf,OAAuB;IASvB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,OAAO;aACJ,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,cAAc,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACrH,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,uFAAuF,CAAC;IAE9F,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3C,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,GAAG;QACf,MAAM,EACJ,qHAAqH;YACrH,+FAA+F;YAC/F,+EAA+E;QACjF,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EACL,yBAAyB,MAAM,gBAAgB,kBAAkB,eAAe,OAAO,MAAM;oBAC7F,8CAA8C,WAAW,MAAM;oBAC/D,2FAA2F;oBAC3F,wHAAwH;oBACxH,oEAAoE;oBACpE,yEAAyE;oBACzE,6GAA6G;oBAC7G,sFAAsF;aACzF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAOhC,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;QACvE,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAkB,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,OAAyD,CAAC,CAAC,CAAC,SAAS;YACrI,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC;YACpF,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;YACvD,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAmB,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,UAAwC,CAAC,CAAC,CAAC,MAAM;YAClH,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,oEAAoE;SAC1G,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,mBAAmB,EAAE,GAAG;YACxB,eAAe,EAAE,gDAAgD;YACjE,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,mEAAmE;SAClF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hsping-client.d.ts","sourceRoot":"","sources":["../../src/services/hsping-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWzF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAevG;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosError } from 'axios';
|
|
2
|
-
import { HSPING_BASE_URL } from '../constants.js';
|
|
3
|
-
export async function queryHSPing(query, country) {
|
|
4
|
-
const key = process.env.HSPING_API_KEY;
|
|
5
|
-
if (!key)
|
|
6
|
-
throw new Error('HSPING_API_KEY environment variable not set');
|
|
7
|
-
const response = await axios.get(HSPING_BASE_URL, {
|
|
8
|
-
params: { query, country },
|
|
9
|
-
headers: { Authorization: `Bearer ${key}` },
|
|
10
|
-
timeout: 10000
|
|
11
|
-
});
|
|
12
|
-
return response.data;
|
|
13
|
-
}
|
|
14
|
-
export async function checkHSPingHealth() {
|
|
15
|
-
const start = Date.now();
|
|
16
|
-
try {
|
|
17
|
-
const key = process.env.HSPING_API_KEY;
|
|
18
|
-
if (!key)
|
|
19
|
-
return { ok: false, latency_ms: 0, detail: 'HSPING_API_KEY not set' };
|
|
20
|
-
await axios.get(HSPING_BASE_URL, {
|
|
21
|
-
params: { query: 'wooden chair', country: 'US' },
|
|
22
|
-
headers: { Authorization: `Bearer ${key}` },
|
|
23
|
-
timeout: 8000
|
|
24
|
-
});
|
|
25
|
-
return { ok: true, latency_ms: Date.now() - start };
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
const msg = err instanceof AxiosError ? `HTTP ${err.response?.status}` : String(err);
|
|
29
|
-
return { ok: false, latency_ms: Date.now() - start, detail: msg };
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export { AxiosError };
|
|
33
|
-
//# sourceMappingURL=hsping-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hsping-client.js","sourceRoot":"","sources":["../../src/services/hsping-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,OAAe;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAiB,eAAe,EAAE;QAChE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC1B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;QAC3C,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;QAChF,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE;YAC/B,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YAChD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;YAC3C,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACpE,CAAC;AACH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/tools/classify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA0BzD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,KAAK,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAyK7E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAG1F"}
|
package/dist/tools/classify.js
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
import { queryHSPing, AxiosError } from '../services/hsping-client.js';
|
|
2
|
-
import { classifyWithAI } from '../services/claude-client.js';
|
|
3
|
-
import { ResponseFormat } from '../schemas/classify.js';
|
|
4
|
-
import { nowISO, LEGAL_DISCLAIMER, FREE_TIER_MONTHLY_LIMIT, FREE_TIER_WARNING_THRESHOLD, PRO_UPGRADE_URL } from '../constants.js';
|
|
5
|
-
function buildMarkdown(out) {
|
|
6
|
-
const lines = [
|
|
7
|
-
`## HS Code Classification`,
|
|
8
|
-
`**Verdict:** ${out.verdict}`,
|
|
9
|
-
`**HS Code:** ${out.hs_code}`,
|
|
10
|
-
out.wco_6digit ? `**WCO 6-digit:** ${out.wco_6digit}` : '',
|
|
11
|
-
`**Description:** ${out.description}`,
|
|
12
|
-
`**Country:** ${out.country}`,
|
|
13
|
-
`**Source:** ${out.source} (v${out.version}, updated ${out.last_updated})`,
|
|
14
|
-
`**Direction:** ${out.direction}`,
|
|
15
|
-
`**Confidence:** ${out.confidence_level}`,
|
|
16
|
-
`**AI Reasoning:** ${out.classification_reasoning}`,
|
|
17
|
-
`**Total Matches Found:** ${out.total_matches}`,
|
|
18
|
-
`**Agent Action:** ${out.agent_action}`,
|
|
19
|
-
`**Checked At:** ${out.checked_at}`
|
|
20
|
-
].filter(Boolean);
|
|
21
|
-
if (out._upgrade_notice)
|
|
22
|
-
lines.push(`\n> **Upgrade:** ${out._upgrade_notice}`);
|
|
23
|
-
if (out._notice)
|
|
24
|
-
lines.push(`\n> **Notice:** ${out._notice}`);
|
|
25
|
-
lines.push(`\n---\n*${out._disclaimer}*`);
|
|
26
|
-
return lines.join('\n');
|
|
27
|
-
}
|
|
28
|
-
export async function runClassify(params, ip, isPaid, stats) {
|
|
29
|
-
if (!isPaid) {
|
|
30
|
-
const month = new Date().toISOString().slice(0, 7);
|
|
31
|
-
const ipMap = stats.free_tier_calls_by_ip[ip] ?? {};
|
|
32
|
-
const used = ipMap[month] ?? 0;
|
|
33
|
-
if (used >= FREE_TIER_MONTHLY_LIMIT) {
|
|
34
|
-
return {
|
|
35
|
-
output: null,
|
|
36
|
-
error: {
|
|
37
|
-
error: 'Free tier limit reached',
|
|
38
|
-
likely_cause: `This IP has used all ${FREE_TIER_MONTHLY_LIMIT} free classify calls for this month`,
|
|
39
|
-
agent_action: `Free tier limit of ${FREE_TIER_MONTHLY_LIMIT} calls/month reached. ` +
|
|
40
|
-
'Option 1: POST /trial-extension with {"name":"...","email":"...","use_case":"..."} for 10 extra free calls. ' +
|
|
41
|
-
`Option 2: Upgrade to Pro at ${PRO_UPGRADE_URL} (500 calls, never expire).`,
|
|
42
|
-
trial_extension: {
|
|
43
|
-
endpoint: '/trial-extension',
|
|
44
|
-
method: 'POST',
|
|
45
|
-
body: { name: 'string', email: 'string', use_case: 'string' }
|
|
46
|
-
},
|
|
47
|
-
upgrade_url: PRO_UPGRADE_URL,
|
|
48
|
-
category: 'rate_limit',
|
|
49
|
-
retryable: false,
|
|
50
|
-
retry_after_ms: null,
|
|
51
|
-
fallback_tool: null,
|
|
52
|
-
trace_id: Math.random().toString(36).slice(2, 10)
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const wordCount = params.product_description.trim().split(/\s+/).length;
|
|
58
|
-
if (wordCount < 4) {
|
|
59
|
-
return {
|
|
60
|
-
output: null,
|
|
61
|
-
error: {
|
|
62
|
-
error: 'Product description too vague for reliable HS classification',
|
|
63
|
-
likely_cause: `"${params.product_description}" has only ${wordCount} word${wordCount === 1 ? '' : 's'}. Descriptions under 4 words return incorrect or ambiguous HS codes from the tariff database.`,
|
|
64
|
-
agent_action: 'Expand the description to include material + function + intended use. ' +
|
|
65
|
-
'Examples: "solid oak dining chair with upholstered seat" not "chair", ' +
|
|
66
|
-
'"stainless steel 500ml insulated water bottle" not "bottle", ' +
|
|
67
|
-
'"polypropylene injection moulding pellets for automotive parts" not "plastic pellets". ' +
|
|
68
|
-
'Retry with the expanded description.',
|
|
69
|
-
category: 'invalid_input',
|
|
70
|
-
retryable: true,
|
|
71
|
-
retry_after_ms: null,
|
|
72
|
-
fallback_tool: null,
|
|
73
|
-
trace_id: Math.random().toString(36).slice(2, 10)
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
let hspingData;
|
|
78
|
-
try {
|
|
79
|
-
hspingData = await queryHSPing(params.product_description, params.country);
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
if (err instanceof AxiosError) {
|
|
83
|
-
return {
|
|
84
|
-
output: null,
|
|
85
|
-
error: {
|
|
86
|
-
error: `HSPing API error: HTTP ${err.response?.status ?? 'timeout'}`,
|
|
87
|
-
likely_cause: 'HSPing API is temporarily unavailable or HSPING_API_KEY is invalid',
|
|
88
|
-
agent_action: 'Retry once after 30 seconds. If error persists, check service status at kordagencies.com.',
|
|
89
|
-
category: 'upstream_unavailable',
|
|
90
|
-
retryable: true,
|
|
91
|
-
retry_after_ms: 30000,
|
|
92
|
-
fallback_tool: 'hs_classify_product',
|
|
93
|
-
trace_id: Math.random().toString(36).slice(2, 10)
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
return {
|
|
98
|
-
output: null,
|
|
99
|
-
error: {
|
|
100
|
-
error: err instanceof Error ? err.message : String(err),
|
|
101
|
-
likely_cause: 'Unexpected error querying tariff database',
|
|
102
|
-
agent_action: 'Retry once. If error persists, contact support at ojas@kordagencies.com.',
|
|
103
|
-
category: 'upstream_unavailable',
|
|
104
|
-
retryable: true,
|
|
105
|
-
retry_after_ms: 120000,
|
|
106
|
-
fallback_tool: 'hs_classify_product',
|
|
107
|
-
trace_id: Math.random().toString(36).slice(2, 10)
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
if (hspingData.count === 0 || hspingData.results.length === 0) {
|
|
112
|
-
const out = {
|
|
113
|
-
verdict: 'NOT_FOUND',
|
|
114
|
-
agent_action: 'No official tariff code found for this product description in the selected country. ' +
|
|
115
|
-
'Try a more specific description including material and function, or try a different country code.',
|
|
116
|
-
hs_code: '',
|
|
117
|
-
wco_6digit: null,
|
|
118
|
-
description: 'No matching tariff entry found',
|
|
119
|
-
country: params.country,
|
|
120
|
-
source: 'HSPing API (api.hsping.com)',
|
|
121
|
-
source_url: 'https://api.hsping.com',
|
|
122
|
-
version: '',
|
|
123
|
-
last_updated: '',
|
|
124
|
-
direction: '',
|
|
125
|
-
confidence_level: 'LOW',
|
|
126
|
-
classification_reasoning: 'No results returned from the official tariff schedule for this product description. ' +
|
|
127
|
-
'Consider using more specific terminology matching official tariff language.',
|
|
128
|
-
total_matches: 0,
|
|
129
|
-
checked_at: nowISO(),
|
|
130
|
-
analysis_type: 'AI-assisted classification -- NOT a simple database lookup',
|
|
131
|
-
token_count: 0,
|
|
132
|
-
_disclaimer: LEGAL_DISCLAIMER
|
|
133
|
-
};
|
|
134
|
-
out.token_count = Math.ceil(JSON.stringify(out).length / 4);
|
|
135
|
-
return { output: out };
|
|
136
|
-
}
|
|
137
|
-
const allResults = hspingData.results;
|
|
138
|
-
const aiResult = await classifyWithAI(params.product_description, allResults, params.country);
|
|
139
|
-
const bestMatch = allResults[aiResult.best_match_index] ?? allResults[0];
|
|
140
|
-
const month = new Date().toISOString().slice(0, 7);
|
|
141
|
-
const used = ((stats.free_tier_calls_by_ip[ip] ?? {})[month] ?? 0) + 1;
|
|
142
|
-
let upgradeNotice;
|
|
143
|
-
if (!isPaid && allResults.length > 1) {
|
|
144
|
-
upgradeNotice =
|
|
145
|
-
`Pro tier shows ${allResults.length - 1} additional classification match${allResults.length - 1 > 1 ? 'es' : ''} for this product -- ` +
|
|
146
|
-
`important when a product could fall under multiple codes. Get 500 calls for $40 at ${PRO_UPGRADE_URL} -- calls never expire.`;
|
|
147
|
-
}
|
|
148
|
-
let notice;
|
|
149
|
-
if (!isPaid && FREE_TIER_MONTHLY_LIMIT - used <= FREE_TIER_MONTHLY_LIMIT - FREE_TIER_WARNING_THRESHOLD) {
|
|
150
|
-
const remaining = Math.max(0, FREE_TIER_MONTHLY_LIMIT - used);
|
|
151
|
-
if (remaining > 0) {
|
|
152
|
-
notice = `Warning: ${remaining} free classify call${remaining !== 1 ? 's' : ''} remaining this month. Get 500 calls for $40 at ${PRO_UPGRADE_URL} -- calls never expire.`;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const out = {
|
|
156
|
-
verdict: aiResult.confidence_level === 'LOW' ? 'AMBIGUOUS' : 'CLASSIFIED',
|
|
157
|
-
agent_action: aiResult.confidence_level === 'HIGH'
|
|
158
|
-
? `Use HS code ${bestMatch.hscode} for ${params.country} customs documentation. Proceed with declaration.`
|
|
159
|
-
: aiResult.confidence_level === 'MEDIUM'
|
|
160
|
-
? `Use HS code ${bestMatch.hscode} for ${params.country} customs documentation. Review AI reasoning before submitting high-value shipments.`
|
|
161
|
-
: `Classification is ambiguous -- ${allResults.length} possible codes identified. Escalate to a licensed customs broker before submitting declaration.`,
|
|
162
|
-
hs_code: bestMatch.hscode,
|
|
163
|
-
wco_6digit: bestMatch.wco,
|
|
164
|
-
description: bestMatch.description_en,
|
|
165
|
-
country: bestMatch.country,
|
|
166
|
-
source: bestMatch.source,
|
|
167
|
-
source_url: 'https://api.hsping.com',
|
|
168
|
-
version: bestMatch.version,
|
|
169
|
-
last_updated: bestMatch.last_updated,
|
|
170
|
-
direction: bestMatch.direction,
|
|
171
|
-
confidence_level: aiResult.confidence_level,
|
|
172
|
-
classification_reasoning: aiResult.reasoning,
|
|
173
|
-
...(isPaid ? { all_matches: allResults } : {}),
|
|
174
|
-
total_matches: allResults.length,
|
|
175
|
-
checked_at: nowISO(),
|
|
176
|
-
analysis_type: 'AI-assisted classification -- NOT a simple database lookup',
|
|
177
|
-
...(upgradeNotice ? { _upgrade_notice: upgradeNotice } : {}),
|
|
178
|
-
...(notice ? { _notice: notice } : {}),
|
|
179
|
-
token_count: 0,
|
|
180
|
-
_disclaimer: LEGAL_DISCLAIMER
|
|
181
|
-
};
|
|
182
|
-
out.token_count = Math.ceil(JSON.stringify(out).length / 4);
|
|
183
|
-
return { output: out };
|
|
184
|
-
}
|
|
185
|
-
export function formatClassifyResponse(out, format) {
|
|
186
|
-
if (format === ResponseFormat.MARKDOWN)
|
|
187
|
-
return buildMarkdown(out);
|
|
188
|
-
return JSON.stringify(out, null, 2);
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=classify.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/tools/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyBlD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAkE7E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAG1F"}
|
package/dist/tools/validate.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { queryHSPing, AxiosError } from '../services/hsping-client.js';
|
|
2
|
-
import { validateWithAI } from '../services/claude-client.js';
|
|
3
|
-
import { ResponseFormat } from '../schemas/validate.js';
|
|
4
|
-
import { nowISO, LEGAL_DISCLAIMER } from '../constants.js';
|
|
5
|
-
function normalizeHsCode(code) {
|
|
6
|
-
return code.replace(/[\s.]/g, '');
|
|
7
|
-
}
|
|
8
|
-
function buildMarkdown(out) {
|
|
9
|
-
const lines = [
|
|
10
|
-
`## HS Code Validation`,
|
|
11
|
-
`**Verdict:** ${out.verdict}`,
|
|
12
|
-
`**HS Code Checked:** ${out.hs_code_checked}`,
|
|
13
|
-
`**Product Match Score:** ${(out.product_match_score * 100).toFixed(0)}%`,
|
|
14
|
-
`**Risk Level:** ${out.risk_level}`,
|
|
15
|
-
out.mismatch_reason ? `**Mismatch Reason:** ${out.mismatch_reason}` : '',
|
|
16
|
-
out.correct_code_suggestion ? `**Suggested Correct Code:** ${out.correct_code_suggestion}` : '',
|
|
17
|
-
`**Country:** ${out.country}`,
|
|
18
|
-
`**Source:** ${out.source} (v${out.version})`,
|
|
19
|
-
`**Agent Action:** ${out.agent_action}`,
|
|
20
|
-
`**Checked At:** ${out.checked_at}`
|
|
21
|
-
].filter(Boolean);
|
|
22
|
-
lines.push(`\n---\n*${out._disclaimer}*`);
|
|
23
|
-
return lines.join('\n');
|
|
24
|
-
}
|
|
25
|
-
export async function runValidate(params) {
|
|
26
|
-
const normalizedCode = normalizeHsCode(params.hs_code);
|
|
27
|
-
let hspingData;
|
|
28
|
-
try {
|
|
29
|
-
hspingData = await queryHSPing(params.product_description, params.country);
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
if (err instanceof AxiosError) {
|
|
33
|
-
return {
|
|
34
|
-
output: null,
|
|
35
|
-
error: {
|
|
36
|
-
error: `HSPing API error: HTTP ${err.response?.status ?? 'timeout'}`,
|
|
37
|
-
likely_cause: 'HSPing API is temporarily unavailable or HSPING_API_KEY is invalid',
|
|
38
|
-
agent_action: 'Retry validation once after 30 seconds. If error persists, check status at kordagencies.com.',
|
|
39
|
-
category: 'upstream_unavailable',
|
|
40
|
-
retryable: true,
|
|
41
|
-
retry_after_ms: 30000,
|
|
42
|
-
fallback_tool: 'hs_validate_code',
|
|
43
|
-
trace_id: Math.random().toString(36).slice(2, 10)
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
output: null,
|
|
49
|
-
error: {
|
|
50
|
-
error: err instanceof Error ? err.message : String(err),
|
|
51
|
-
likely_cause: 'Unexpected error querying tariff database',
|
|
52
|
-
agent_action: 'Retry once. If error persists, contact support at ojas@kordagencies.com.',
|
|
53
|
-
category: 'upstream_unavailable',
|
|
54
|
-
retryable: true,
|
|
55
|
-
retry_after_ms: 120000,
|
|
56
|
-
fallback_tool: 'hs_validate_code',
|
|
57
|
-
trace_id: Math.random().toString(36).slice(2, 10)
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
const aiResult = await validateWithAI(normalizedCode, params.product_description, params.country, hspingData.results);
|
|
62
|
-
const sourceResult = hspingData.results[0];
|
|
63
|
-
const out = {
|
|
64
|
-
verdict: aiResult.verdict,
|
|
65
|
-
agent_action: aiResult.agent_action,
|
|
66
|
-
hs_code_checked: normalizedCode,
|
|
67
|
-
product_match_score: aiResult.product_match_score,
|
|
68
|
-
...(aiResult.mismatch_reason ? { mismatch_reason: aiResult.mismatch_reason } : {}),
|
|
69
|
-
...(aiResult.correct_code_suggestion ? { correct_code_suggestion: aiResult.correct_code_suggestion } : {}),
|
|
70
|
-
risk_level: aiResult.risk_level,
|
|
71
|
-
source: sourceResult
|
|
72
|
-
? sourceResult.source
|
|
73
|
-
: 'HSPing API (api.hsping.com) -- no direct match found for product',
|
|
74
|
-
source_url: 'https://api.hsping.com',
|
|
75
|
-
version: sourceResult ? sourceResult.version : 'N/A',
|
|
76
|
-
country: params.country,
|
|
77
|
-
checked_at: nowISO(),
|
|
78
|
-
analysis_type: 'AI-powered mismatch detection -- NOT a simple database lookup',
|
|
79
|
-
token_count: 0,
|
|
80
|
-
_disclaimer: LEGAL_DISCLAIMER
|
|
81
|
-
};
|
|
82
|
-
out.token_count = Math.ceil(JSON.stringify(out).length / 4);
|
|
83
|
-
return { output: out };
|
|
84
|
-
}
|
|
85
|
-
export function formatValidateResponse(out, format) {
|
|
86
|
-
if (format === ResponseFormat.MARKDOWN)
|
|
87
|
-
return buildMarkdown(out);
|
|
88
|
-
return JSON.stringify(out, null, 2);
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|