item-wms-public-api-tool 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/AI_INTEGRATION_GUIDE.md +492 -0
  2. package/HELP.md +297 -0
  3. package/README.md +259 -0
  4. package/api/README.md +9 -0
  5. package/api/openapi.apifox.yaml +20771 -0
  6. package/dist/cli.d.ts +10 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +326 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/client.d.ts +8 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +76 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/config.d.ts +32 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +109 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +31 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/openapi-tools.d.ts +25 -0
  23. package/dist/openapi-tools.d.ts.map +1 -0
  24. package/dist/openapi-tools.js +287 -0
  25. package/dist/openapi-tools.js.map +1 -0
  26. package/dist/server.d.ts +5 -0
  27. package/dist/server.d.ts.map +1 -0
  28. package/dist/server.js +442 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/tools/batchImportItemMaster.d.ts +59 -0
  31. package/dist/tools/batchImportItemMaster.d.ts.map +1 -0
  32. package/dist/tools/batchImportItemMaster.js +27 -0
  33. package/dist/tools/batchImportItemMaster.js.map +1 -0
  34. package/dist/tools/batchUploadOrderFiles.d.ts +29 -0
  35. package/dist/tools/batchUploadOrderFiles.d.ts.map +1 -0
  36. package/dist/tools/batchUploadOrderFiles.js +96 -0
  37. package/dist/tools/batchUploadOrderFiles.js.map +1 -0
  38. package/dist/tools/importInbound.d.ts +62 -0
  39. package/dist/tools/importInbound.d.ts.map +1 -0
  40. package/dist/tools/importInbound.js +22 -0
  41. package/dist/tools/importInbound.js.map +1 -0
  42. package/dist/tools/importOutbound.d.ts +76 -0
  43. package/dist/tools/importOutbound.d.ts.map +1 -0
  44. package/dist/tools/importOutbound.js +25 -0
  45. package/dist/tools/importOutbound.js.map +1 -0
  46. package/dist/tools/itemGet.d.ts +15 -0
  47. package/dist/tools/itemGet.d.ts.map +1 -0
  48. package/dist/tools/itemGet.js +12 -0
  49. package/dist/tools/itemGet.js.map +1 -0
  50. package/dist/tools/itemSearch.d.ts +8 -0
  51. package/dist/tools/itemSearch.d.ts.map +1 -0
  52. package/dist/tools/itemSearch.js +17 -0
  53. package/dist/tools/itemSearch.js.map +1 -0
  54. package/dist/tools/login.d.ts +26 -0
  55. package/dist/tools/login.d.ts.map +1 -0
  56. package/dist/tools/login.js +15 -0
  57. package/dist/tools/login.js.map +1 -0
  58. package/dist/tools/queryItemMaster.d.ts +63 -0
  59. package/dist/tools/queryItemMaster.d.ts.map +1 -0
  60. package/dist/tools/queryItemMaster.js +9 -0
  61. package/dist/tools/queryItemMaster.js.map +1 -0
  62. package/dist/tools/queryOrder.d.ts +74 -0
  63. package/dist/tools/queryOrder.d.ts.map +1 -0
  64. package/dist/tools/queryOrder.js +19 -0
  65. package/dist/tools/queryOrder.js.map +1 -0
  66. package/dist/tools/queryOrderDC.d.ts +25 -0
  67. package/dist/tools/queryOrderDC.d.ts.map +1 -0
  68. package/dist/tools/queryOrderDC.js +19 -0
  69. package/dist/tools/queryOrderDC.js.map +1 -0
  70. package/dist/tools/queryOrderDetail.d.ts +70 -0
  71. package/dist/tools/queryOrderDetail.d.ts.map +1 -0
  72. package/dist/tools/queryOrderDetail.js +19 -0
  73. package/dist/tools/queryOrderDetail.js.map +1 -0
  74. package/dist/tools/queryReceipt.d.ts +70 -0
  75. package/dist/tools/queryReceipt.d.ts.map +1 -0
  76. package/dist/tools/queryReceipt.js +19 -0
  77. package/dist/tools/queryReceipt.js.map +1 -0
  78. package/dist/tools/queryReceiptDetail.d.ts +70 -0
  79. package/dist/tools/queryReceiptDetail.d.ts.map +1 -0
  80. package/dist/tools/queryReceiptDetail.js +19 -0
  81. package/dist/tools/queryReceiptDetail.js.map +1 -0
  82. package/dist/tools/queryReceiptRC.d.ts +25 -0
  83. package/dist/tools/queryReceiptRC.d.ts.map +1 -0
  84. package/dist/tools/queryReceiptRC.js +19 -0
  85. package/dist/tools/queryReceiptRC.js.map +1 -0
  86. package/dist/tools/uploadOrderFile.d.ts +25 -0
  87. package/dist/tools/uploadOrderFile.d.ts.map +1 -0
  88. package/dist/tools/uploadOrderFile.js +94 -0
  89. package/dist/tools/uploadOrderFile.js.map +1 -0
  90. package/dist/tools/validateInbound.d.ts +13 -0
  91. package/dist/tools/validateInbound.d.ts.map +1 -0
  92. package/dist/tools/validateInbound.js +18 -0
  93. package/dist/tools/validateInbound.js.map +1 -0
  94. package/llms.txt +23 -0
  95. package/mcp.json +6562 -0
  96. package/mcp.schema.json +100 -0
  97. package/openapi.yaml +20685 -0
  98. package/package.json +34 -0
  99. package/scripts/sync-openapi.js +289 -0
  100. package/src/cli.ts +353 -0
  101. package/src/client.ts +90 -0
  102. package/src/config.ts +126 -0
  103. package/src/index.ts +31 -0
  104. package/src/openapi-tools.ts +346 -0
  105. package/src/server.ts +472 -0
  106. package/test-ai-integration.js +128 -0
  107. package/test-fix.js +68 -0
  108. package/test-mcp.js +92 -0
  109. package/test-order.json +25 -0
  110. package/tsconfig.json +18 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * 创建并配置CLI命令
4
+ */
5
+ export declare function createCli(): Command;
6
+ /**
7
+ * 解析CLI命令并执行
8
+ */
9
+ export declare function parseAndExecuteCli(): Promise<void>;
10
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6MpC;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAuInC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD"}
package/dist/cli.js ADDED
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createCli = createCli;
37
+ exports.parseAndExecuteCli = parseAndExecuteCli;
38
+ // src/cli.ts
39
+ const commander_1 = require("commander");
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const config_1 = require("./config");
43
+ const openapi_tools_1 = require("./openapi-tools");
44
+ const RESERVED_COMMANDS = new Set(["list", "describe", "call", "help"]);
45
+ function parseJsonString(value, label) {
46
+ try {
47
+ return JSON.parse(value);
48
+ }
49
+ catch (error) {
50
+ throw new Error(`${label} must be valid JSON: ${error.message}`);
51
+ }
52
+ }
53
+ function readJsonFile(filePath, label) {
54
+ if (!fs.existsSync(filePath)) {
55
+ throw new Error(`File not found: ${filePath}`);
56
+ }
57
+ const fileContent = fs.readFileSync(filePath, 'utf8');
58
+ return parseJsonString(fileContent, label);
59
+ }
60
+ function resolveJsonInput(value, filePath, label) {
61
+ if (value && filePath) {
62
+ throw new Error(`Provide either ${label} or ${label}File, not both`);
63
+ }
64
+ if (value) {
65
+ return parseJsonString(value, label);
66
+ }
67
+ if (filePath) {
68
+ return readJsonFile(filePath, `${label}File`);
69
+ }
70
+ return undefined;
71
+ }
72
+ function parseValue(raw) {
73
+ const trimmed = raw.trim();
74
+ if (!trimmed) {
75
+ return '';
76
+ }
77
+ const jsonNumber = /^-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?$/;
78
+ const shouldParse = trimmed.startsWith('{') ||
79
+ trimmed.startsWith('[') ||
80
+ trimmed === 'true' ||
81
+ trimmed === 'false' ||
82
+ trimmed === 'null' ||
83
+ jsonNumber.test(trimmed) ||
84
+ (trimmed.startsWith('"') && trimmed.endsWith('"'));
85
+ if (shouldParse) {
86
+ try {
87
+ return JSON.parse(trimmed);
88
+ }
89
+ catch (error) {
90
+ return raw;
91
+ }
92
+ }
93
+ return raw;
94
+ }
95
+ function parseParamPair(pair) {
96
+ const index = pair.indexOf('=');
97
+ if (index <= 0) {
98
+ throw new Error(`Invalid param format: ${pair}. Use key=value`);
99
+ }
100
+ const key = pair.slice(0, index).trim();
101
+ if (!key) {
102
+ throw new Error(`Invalid param format: ${pair}. Key is required`);
103
+ }
104
+ const rawValue = pair.slice(index + 1);
105
+ return { key, value: parseValue(rawValue) };
106
+ }
107
+ function collectParams(value, previous) {
108
+ return previous.concat(value);
109
+ }
110
+ function resolveOpenApiPath() {
111
+ const candidates = [
112
+ process.env.WMS_OPENAPI_PATH,
113
+ process.env.OPENAPI_PATH,
114
+ path.resolve(__dirname, '..', 'openapi.yaml'),
115
+ path.resolve(process.cwd(), 'openapi.yaml')
116
+ ];
117
+ for (const candidate of candidates) {
118
+ if (candidate && fs.existsSync(candidate)) {
119
+ return candidate;
120
+ }
121
+ }
122
+ return null;
123
+ }
124
+ function readPackageVersion() {
125
+ const candidates = [
126
+ path.resolve(__dirname, '..', 'package.json'),
127
+ path.resolve(process.cwd(), 'package.json')
128
+ ];
129
+ for (const candidate of candidates) {
130
+ if (!fs.existsSync(candidate)) {
131
+ continue;
132
+ }
133
+ try {
134
+ const raw = fs.readFileSync(candidate, 'utf8');
135
+ const data = JSON.parse(raw);
136
+ if (data.version) {
137
+ return data.version;
138
+ }
139
+ }
140
+ catch (error) {
141
+ continue;
142
+ }
143
+ }
144
+ return undefined;
145
+ }
146
+ function loadOpenApiIndex() {
147
+ const openApiPath = resolveOpenApiPath();
148
+ if (!openApiPath) {
149
+ throw new Error('OpenAPI spec not found. Run sync:api or set WMS_OPENAPI_PATH.');
150
+ }
151
+ const spec = (0, openapi_tools_1.loadOpenApiSpec)(openApiPath);
152
+ const hasPrefixEnv = Object.prototype.hasOwnProperty.call(process.env, 'APIFOX_PATH_PREFIX');
153
+ const pathPrefix = hasPrefixEnv ? process.env.APIFOX_PATH_PREFIX : '/v1/public/';
154
+ const normalizedPrefix = pathPrefix && pathPrefix.length > 0 ? pathPrefix : undefined;
155
+ return (0, openapi_tools_1.buildOpenApiIndex)(spec, { pathPrefix: normalizedPrefix });
156
+ }
157
+ function buildPayload(options) {
158
+ const base = resolveJsonInput(options.json, options.file, 'json');
159
+ let payload = {};
160
+ if (base !== undefined) {
161
+ if (base && typeof base === 'object' && !Array.isArray(base)) {
162
+ payload = { ...base };
163
+ }
164
+ else {
165
+ payload = { body: base };
166
+ }
167
+ }
168
+ const params = options.param || [];
169
+ for (const entry of params) {
170
+ const { key, value } = parseParamPair(entry);
171
+ payload[key] = value;
172
+ }
173
+ return payload;
174
+ }
175
+ function listOperations(index) {
176
+ return Object.values(index.operations)
177
+ .map((operation) => ({
178
+ name: operation.name,
179
+ method: operation.method.toUpperCase(),
180
+ path: operation.path,
181
+ description: operation.description
182
+ }))
183
+ .sort((a, b) => a.name.localeCompare(b.name));
184
+ }
185
+ function formatOperationLine(operation) {
186
+ const detail = operation.description ? ` - ${operation.description}` : '';
187
+ return `${operation.name}\t${operation.method} ${operation.path}${detail}`;
188
+ }
189
+ function getToolByName(index, name) {
190
+ return index.tools.find((tool) => tool.name === name);
191
+ }
192
+ function createCallAction(operation, program) {
193
+ return async (options) => {
194
+ const payload = buildPayload(options);
195
+ const global = program.opts();
196
+ const result = await (0, openapi_tools_1.callOpenApiOperation)(operation, payload, {
197
+ baseUrl: global.baseUrl,
198
+ token: global.token
199
+ });
200
+ console.log(JSON.stringify(result, null, 2));
201
+ };
202
+ }
203
+ /**
204
+ * 创建并配置CLI命令
205
+ */
206
+ function createCli() {
207
+ const program = new commander_1.Command();
208
+ program
209
+ .name("item-wms-public-api-tool")
210
+ .option("--baseUrl <url>", "API base url", process.env.WMS_BASE_URL || config_1.DEFAULT_BASE_URL)
211
+ .option("--token <token>", "Auth token", process.env.WMS_TOKEN)
212
+ .option("--companyId <id>", "Default CompanyID for requests", process.env.WMS_COMPANY_ID || config_1.DEFAULT_COMPANY_ID)
213
+ .option("--facilityId <id>", "Default FacilityID for requests", process.env.WMS_FACILITY_ID || config_1.DEFAULT_FACILITY_ID)
214
+ .option("--customerId <id>", "Default CustomerID for requests", process.env.WMS_CUSTOMER_ID || config_1.DEFAULT_CUSTOMER_ID);
215
+ const version = readPackageVersion();
216
+ if (version) {
217
+ program.version(version);
218
+ }
219
+ let openApiIndex = null;
220
+ let openApiError = null;
221
+ try {
222
+ openApiIndex = loadOpenApiIndex();
223
+ }
224
+ catch (error) {
225
+ openApiError = error;
226
+ }
227
+ const requireIndex = () => {
228
+ if (openApiIndex) {
229
+ return openApiIndex;
230
+ }
231
+ throw openApiError || new Error('OpenAPI spec not loaded.');
232
+ };
233
+ program
234
+ .command('list')
235
+ .description('List available OpenAPI operations')
236
+ .option('--json', 'Output JSON')
237
+ .action((options) => {
238
+ const index = requireIndex();
239
+ const operations = listOperations(index);
240
+ if (options.json) {
241
+ console.log(JSON.stringify(operations, null, 2));
242
+ return;
243
+ }
244
+ operations.forEach((operation) => {
245
+ console.log(formatOperationLine(operation));
246
+ });
247
+ });
248
+ program
249
+ .command('describe')
250
+ .description('Show OpenAPI details for an operation')
251
+ .argument('<name>', 'Operation/tool name')
252
+ .option('--json', 'Output JSON')
253
+ .action((name, options) => {
254
+ const index = requireIndex();
255
+ const operation = index.operations[name];
256
+ if (!operation) {
257
+ throw new Error(`Unknown operation: ${name}`);
258
+ }
259
+ const tool = getToolByName(index, name);
260
+ if (options.json) {
261
+ console.log(JSON.stringify({
262
+ name,
263
+ method: operation.method.toUpperCase(),
264
+ path: operation.path,
265
+ description: operation.description,
266
+ inputSchema: tool?.inputSchema
267
+ }, null, 2));
268
+ return;
269
+ }
270
+ console.log(`${operation.method.toUpperCase()} ${operation.path}`);
271
+ if (operation.description) {
272
+ console.log(operation.description);
273
+ }
274
+ if (tool?.inputSchema) {
275
+ console.log('Input schema:');
276
+ console.log(JSON.stringify(tool.inputSchema, null, 2));
277
+ }
278
+ });
279
+ program
280
+ .command('call')
281
+ .description('Call an OpenAPI operation by name')
282
+ .argument('<name>', 'Operation/tool name')
283
+ .option('--json <json>', 'JSON payload for all params/body')
284
+ .option('--file <file>', 'Path to JSON payload file')
285
+ .option('-p, --param <key=value>', 'Set a param (repeatable)', collectParams, [])
286
+ .action(async (name, options) => {
287
+ const index = requireIndex();
288
+ const operation = index.operations[name];
289
+ if (!operation) {
290
+ throw new Error(`Unknown operation: ${name}`);
291
+ }
292
+ const payload = buildPayload(options);
293
+ const global = program.opts();
294
+ const result = await (0, openapi_tools_1.callOpenApiOperation)(operation, payload, {
295
+ baseUrl: global.baseUrl,
296
+ token: global.token
297
+ });
298
+ console.log(JSON.stringify(result, null, 2));
299
+ });
300
+ if (openApiIndex) {
301
+ const operations = Object.values(openApiIndex.operations)
302
+ .filter((operation) => !RESERVED_COMMANDS.has(operation.name))
303
+ .sort((a, b) => a.name.localeCompare(b.name));
304
+ operations.forEach((operation) => {
305
+ const summary = operation.description
306
+ ? `${operation.method.toUpperCase()} ${operation.path} - ${operation.description}`
307
+ : `${operation.method.toUpperCase()} ${operation.path}`;
308
+ program
309
+ .command(operation.name)
310
+ .description(summary)
311
+ .option('--json <json>', 'JSON payload for all params/body')
312
+ .option('--file <file>', 'Path to JSON payload file')
313
+ .option('-p, --param <key=value>', 'Set a param (repeatable)', collectParams, [])
314
+ .action(createCallAction(operation, program));
315
+ });
316
+ }
317
+ return program;
318
+ }
319
+ /**
320
+ * 解析CLI命令并执行
321
+ */
322
+ async function parseAndExecuteCli() {
323
+ const program = createCli();
324
+ await program.parseAsync();
325
+ }
326
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type ClientOptions = {
2
+ baseUrl?: string;
3
+ token?: string;
4
+ };
5
+ export declare function request<T>(method: string, path: string, opts: ClientOptions, body?: any, extraHeaders?: Record<string, string>, query?: Record<string, any>): Promise<T>;
6
+ export declare function get<T>(path: string, opts: ClientOptions): Promise<T>;
7
+ export declare function post<T>(path: string, body: any, opts: ClientOptions): Promise<T>;
8
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA2CF,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE,GAAG,EACV,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAE1E;AAED,wBAAsB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAEtF"}
package/dist/client.js ADDED
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.request = request;
4
+ exports.get = get;
5
+ exports.post = post;
6
+ // src/client.ts
7
+ const config_1 = require("./config");
8
+ function resolveAuthHeader(token) {
9
+ if (!token) {
10
+ return undefined;
11
+ }
12
+ const trimmed = token.trim();
13
+ if (!trimmed) {
14
+ return undefined;
15
+ }
16
+ if (/^bearer\s+/i.test(trimmed)) {
17
+ return trimmed;
18
+ }
19
+ return `Bearer ${trimmed}`;
20
+ }
21
+ function resolveBaseUrl(opts) {
22
+ const baseUrl = opts.baseUrl || process.env.WMS_BASE_URL || config_1.DEFAULT_BASE_URL;
23
+ return baseUrl.replace(/\/$/, '');
24
+ }
25
+ function buildUrl(baseUrl, path, query) {
26
+ const normalizedPath = path.startsWith('/') ? path : `/${path}`;
27
+ const url = new URL(`${baseUrl}${normalizedPath}`);
28
+ if (query) {
29
+ for (const [key, value] of Object.entries(query)) {
30
+ if (value === undefined || value === null) {
31
+ continue;
32
+ }
33
+ if (Array.isArray(value)) {
34
+ value.forEach((item) => {
35
+ if (item !== undefined && item !== null) {
36
+ url.searchParams.append(key, String(item));
37
+ }
38
+ });
39
+ }
40
+ else {
41
+ url.searchParams.append(key, String(value));
42
+ }
43
+ }
44
+ }
45
+ return url.toString();
46
+ }
47
+ async function request(method, path, opts, body, extraHeaders, query) {
48
+ const baseUrl = resolveBaseUrl(opts);
49
+ const url = buildUrl(baseUrl, path, query);
50
+ const authHeader = resolveAuthHeader(opts.token);
51
+ const headers = {
52
+ ...(authHeader ? { Authorization: authHeader } : {}),
53
+ ...(extraHeaders || {})
54
+ };
55
+ const methodUpper = method.toUpperCase();
56
+ const canSendBody = methodUpper !== 'GET' && methodUpper !== 'DELETE' && methodUpper !== 'HEAD';
57
+ if (canSendBody) {
58
+ headers['content-type'] = 'application/json';
59
+ }
60
+ const resp = await fetch(url, {
61
+ method: methodUpper,
62
+ headers,
63
+ body: canSendBody && body !== undefined ? JSON.stringify(body) : undefined
64
+ });
65
+ if (!resp.ok) {
66
+ throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);
67
+ }
68
+ return resp.json();
69
+ }
70
+ async function get(path, opts) {
71
+ return request('GET', path, opts);
72
+ }
73
+ async function post(path, body, opts) {
74
+ return request('POST', path, opts, body);
75
+ }
76
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * CLI配置选项接口
3
+ */
4
+ export interface CliConfig {
5
+ baseUrl?: string;
6
+ token?: string;
7
+ companyId?: string;
8
+ facilityId?: string;
9
+ customerId?: string;
10
+ }
11
+ export declare const DEFAULT_BASE_URL = "https://wms-staging.item.com/api/public";
12
+ export declare const DEFAULT_COMPANY_ID = "LT";
13
+ export declare const DEFAULT_FACILITY_ID = "889";
14
+ export declare const DEFAULT_CUSTOMER_ID = "FLAANT0001";
15
+ export type DefaultParams = {
16
+ CompanyID?: string;
17
+ FacilityID?: string;
18
+ CustomerID?: string;
19
+ };
20
+ export declare function resolveDefaultParams(): DefaultParams;
21
+ /**
22
+ * 解析命令行参数
23
+ * @param argv 命令行参数数组
24
+ * @returns CLI配置对象
25
+ */
26
+ export declare function parseArgs(argv: string[]): CliConfig;
27
+ /**
28
+ * 应用CLI配置
29
+ * @param config CLI配置对象
30
+ */
31
+ export declare function applyCliConfig(config: CliConfig): void;
32
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,4CAA4C,CAAC;AAC1E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAUF,wBAAgB,oBAAoB,IAAI,aAAa,CAUpD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CA+CnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuBtD"}
package/dist/config.js ADDED
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ // src/config.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DEFAULT_CUSTOMER_ID = exports.DEFAULT_FACILITY_ID = exports.DEFAULT_COMPANY_ID = exports.DEFAULT_BASE_URL = void 0;
5
+ exports.resolveDefaultParams = resolveDefaultParams;
6
+ exports.parseArgs = parseArgs;
7
+ exports.applyCliConfig = applyCliConfig;
8
+ exports.DEFAULT_BASE_URL = "https://wms-staging.item.com/api/public";
9
+ exports.DEFAULT_COMPANY_ID = "LT";
10
+ exports.DEFAULT_FACILITY_ID = "889";
11
+ exports.DEFAULT_CUSTOMER_ID = "FLAANT0001";
12
+ function normalizeConfigValue(value) {
13
+ if (!value) {
14
+ return undefined;
15
+ }
16
+ const trimmed = value.trim();
17
+ return trimmed.length > 0 ? trimmed : undefined;
18
+ }
19
+ function resolveDefaultParams() {
20
+ const companyId = normalizeConfigValue(process.env.WMS_COMPANY_ID) ?? exports.DEFAULT_COMPANY_ID;
21
+ const facilityId = normalizeConfigValue(process.env.WMS_FACILITY_ID) ?? exports.DEFAULT_FACILITY_ID;
22
+ const customerId = normalizeConfigValue(process.env.WMS_CUSTOMER_ID) ?? exports.DEFAULT_CUSTOMER_ID;
23
+ return {
24
+ CompanyID: companyId,
25
+ FacilityID: facilityId,
26
+ CustomerID: customerId
27
+ };
28
+ }
29
+ /**
30
+ * 解析命令行参数
31
+ * @param argv 命令行参数数组
32
+ * @returns CLI配置对象
33
+ */
34
+ function parseArgs(argv) {
35
+ const config = {};
36
+ // 简单的命令行参数解析
37
+ for (let i = 0; i < argv.length; i++) {
38
+ const arg = argv[i];
39
+ const eqIndex = arg.indexOf('=');
40
+ if (arg.startsWith('--') && eqIndex > 2) {
41
+ const flag = arg.slice(0, eqIndex);
42
+ const value = arg.slice(eqIndex + 1);
43
+ if (flag === '--baseUrl') {
44
+ config.baseUrl = value;
45
+ continue;
46
+ }
47
+ if (flag === '--token') {
48
+ config.token = value;
49
+ continue;
50
+ }
51
+ if (flag === '--companyId') {
52
+ config.companyId = value;
53
+ continue;
54
+ }
55
+ if (flag === '--facilityId') {
56
+ config.facilityId = value;
57
+ continue;
58
+ }
59
+ if (flag === '--customerId') {
60
+ config.customerId = value;
61
+ continue;
62
+ }
63
+ }
64
+ if (arg === '--baseUrl' && i + 1 < argv.length) {
65
+ config.baseUrl = argv[++i];
66
+ }
67
+ else if (arg === '--token' && i + 1 < argv.length) {
68
+ config.token = argv[++i];
69
+ }
70
+ else if (arg === '--companyId' && i + 1 < argv.length) {
71
+ config.companyId = argv[++i];
72
+ }
73
+ else if (arg === '--facilityId' && i + 1 < argv.length) {
74
+ config.facilityId = argv[++i];
75
+ }
76
+ else if (arg === '--customerId' && i + 1 < argv.length) {
77
+ config.customerId = argv[++i];
78
+ }
79
+ }
80
+ return config;
81
+ }
82
+ /**
83
+ * 应用CLI配置
84
+ * @param config CLI配置对象
85
+ */
86
+ function applyCliConfig(config) {
87
+ // 将CLI配置应用到环境变量
88
+ const baseUrl = normalizeConfigValue(config.baseUrl);
89
+ const token = normalizeConfigValue(config.token);
90
+ const companyId = normalizeConfigValue(config.companyId);
91
+ const facilityId = normalizeConfigValue(config.facilityId);
92
+ const customerId = normalizeConfigValue(config.customerId);
93
+ if (baseUrl) {
94
+ process.env.WMS_BASE_URL = baseUrl;
95
+ }
96
+ if (token) {
97
+ process.env.WMS_TOKEN = token;
98
+ }
99
+ if (companyId) {
100
+ process.env.WMS_COMPANY_ID = companyId;
101
+ }
102
+ if (facilityId) {
103
+ process.env.WMS_FACILITY_ID = facilityId;
104
+ }
105
+ if (customerId) {
106
+ process.env.WMS_CUSTOMER_ID = customerId;
107
+ }
108
+ }
109
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ // src/index.ts
5
+ const config_1 = require("./config");
6
+ const server_1 = require("./server");
7
+ const cli_1 = require("./cli");
8
+ /**
9
+ * 主入口函数
10
+ */
11
+ async function main() {
12
+ // 解析命令行参数
13
+ const cliConfig = (0, config_1.parseArgs)(process.argv.slice(2));
14
+ // 应用CLI配置到环境变量
15
+ (0, config_1.applyCliConfig)(cliConfig);
16
+ // 支持两种模式:CLI模式和stdio模式
17
+ if (process.stdin.isTTY) {
18
+ // CLI模式:直接执行CLI命令
19
+ await (0, cli_1.parseAndExecuteCli)();
20
+ }
21
+ else {
22
+ // stdio模式:启动MCP服务器
23
+ await (0, server_1.startServer)();
24
+ }
25
+ }
26
+ // 执行主函数
27
+ main().catch((error) => {
28
+ console.error("Unexpected error:", error);
29
+ process.exit(1);
30
+ });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,eAAe;AACf,qCAAqD;AACrD,qCAAuC;AACvC,+BAA2C;AAE3C;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,UAAU;IACV,MAAM,SAAS,GAAG,IAAA,kBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,eAAe;IACf,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;IAE1B,uBAAuB;IACvB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,kBAAkB;QAClB,MAAM,IAAA,wBAAkB,GAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,MAAM,IAAA,oBAAW,GAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,QAAQ;AACR,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}