@lofder/dsers-mcp-product 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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/dist/dsers/account.d.ts +17 -0
  4. package/dist/dsers/account.d.ts.map +1 -0
  5. package/dist/dsers/account.js +37 -0
  6. package/dist/dsers/account.js.map +1 -0
  7. package/dist/dsers/auth.d.ts +14 -0
  8. package/dist/dsers/auth.d.ts.map +1 -0
  9. package/dist/dsers/auth.js +87 -0
  10. package/dist/dsers/auth.js.map +1 -0
  11. package/dist/dsers/client.d.ts +21 -0
  12. package/dist/dsers/client.d.ts.map +1 -0
  13. package/dist/dsers/client.js +78 -0
  14. package/dist/dsers/client.js.map +1 -0
  15. package/dist/dsers/config.d.ts +9 -0
  16. package/dist/dsers/config.d.ts.map +1 -0
  17. package/dist/dsers/config.js +28 -0
  18. package/dist/dsers/config.js.map +1 -0
  19. package/dist/dsers/product.d.ts +42 -0
  20. package/dist/dsers/product.d.ts.map +1 -0
  21. package/dist/dsers/product.js +289 -0
  22. package/dist/dsers/product.js.map +1 -0
  23. package/dist/dsers/settings.d.ts +30 -0
  24. package/dist/dsers/settings.d.ts.map +1 -0
  25. package/dist/dsers/settings.js +63 -0
  26. package/dist/dsers/settings.js.map +1 -0
  27. package/dist/error-map.d.ts +7 -0
  28. package/dist/error-map.d.ts.map +1 -0
  29. package/dist/error-map.js +231 -0
  30. package/dist/error-map.js.map +1 -0
  31. package/dist/index.d.ts +17 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +43 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/job-store-memory.d.ts +8 -0
  36. package/dist/job-store-memory.d.ts.map +1 -0
  37. package/dist/job-store-memory.js +60 -0
  38. package/dist/job-store-memory.js.map +1 -0
  39. package/dist/job-store.d.ts +14 -0
  40. package/dist/job-store.d.ts.map +1 -0
  41. package/dist/job-store.js +31 -0
  42. package/dist/job-store.js.map +1 -0
  43. package/dist/provider.d.ts +53 -0
  44. package/dist/provider.d.ts.map +1 -0
  45. package/dist/provider.js +1298 -0
  46. package/dist/provider.js.map +1 -0
  47. package/dist/push-options.d.ts +7 -0
  48. package/dist/push-options.d.ts.map +1 -0
  49. package/dist/push-options.js +158 -0
  50. package/dist/push-options.js.map +1 -0
  51. package/dist/resolver.d.ts +8 -0
  52. package/dist/resolver.d.ts.map +1 -0
  53. package/dist/resolver.js +81 -0
  54. package/dist/resolver.js.map +1 -0
  55. package/dist/rules.d.ts +14 -0
  56. package/dist/rules.d.ts.map +1 -0
  57. package/dist/rules.js +332 -0
  58. package/dist/rules.js.map +1 -0
  59. package/dist/service.d.ts +22 -0
  60. package/dist/service.d.ts.map +1 -0
  61. package/dist/service.js +461 -0
  62. package/dist/service.js.map +1 -0
  63. package/dist/tools.d.ts +4 -0
  64. package/dist/tools.d.ts.map +1 -0
  65. package/dist/tools.js +402 -0
  66. package/dist/tools.js.map +1 -0
  67. package/package.json +54 -0
@@ -0,0 +1,461 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { normalizePushOptions } from "./push-options.js";
3
+ import { resolveSourceUrl } from "./resolver.js";
4
+ import { applyRules, normalizeRules } from "./rules.js";
5
+ function utcNow() {
6
+ return new Date().toISOString();
7
+ }
8
+ function priceRange(draft) {
9
+ const prices = [];
10
+ for (const variant of draft.variants ?? []) {
11
+ for (const key of ["offer_price", "supplier_price"]) {
12
+ const value = variant[key];
13
+ if (value == null)
14
+ continue;
15
+ const n = Number(value);
16
+ if (!isNaN(n)) {
17
+ prices.push(n);
18
+ break;
19
+ }
20
+ }
21
+ }
22
+ if (!prices.length)
23
+ return { min: null, max: null };
24
+ return { min: Math.min(...prices), max: Math.max(...prices) };
25
+ }
26
+ function parseBatchItem(item, shared, sharedRules) {
27
+ if (typeof item === "string") {
28
+ const url = item.trim();
29
+ if (!url)
30
+ return ["", {}];
31
+ const merged = { ...shared, source_url: url };
32
+ if (sharedRules && !merged.rules)
33
+ merged.rules = sharedRules;
34
+ return [url, merged];
35
+ }
36
+ if (item && typeof item === "object") {
37
+ const url = String(item.url ?? item.source_url ?? "").trim();
38
+ if (!url)
39
+ return ["", {}];
40
+ const merged = { ...shared, source_url: url };
41
+ for (const key of [
42
+ "source_hint",
43
+ "country",
44
+ "target_store",
45
+ "visibility_mode",
46
+ ]) {
47
+ if (item[key] != null)
48
+ merged[key] = item[key];
49
+ }
50
+ merged.rules = item.rules ?? sharedRules ?? {};
51
+ return [url, merged];
52
+ }
53
+ return ["", {}];
54
+ }
55
+ function parsePushItem(item, batchTargetStores, batchTargetStore, batchVisibility, batchPushOptions) {
56
+ if (typeof item === "string") {
57
+ const jobId = item.trim();
58
+ const stores = Array.isArray(batchTargetStores)
59
+ ? [...batchTargetStores]
60
+ : batchTargetStore
61
+ ? [batchTargetStore]
62
+ : [];
63
+ return [jobId, stores, batchPushOptions, batchVisibility];
64
+ }
65
+ if (item && typeof item === "object") {
66
+ const jobId = String(item.job_id ?? "").trim();
67
+ let stores;
68
+ if (Array.isArray(item.target_stores) && item.target_stores.length) {
69
+ stores = item.target_stores;
70
+ }
71
+ else if (item.target_store) {
72
+ stores = [item.target_store];
73
+ }
74
+ else if (Array.isArray(batchTargetStores) && batchTargetStores.length) {
75
+ stores = [...batchTargetStores];
76
+ }
77
+ else if (batchTargetStore) {
78
+ stores = [batchTargetStore];
79
+ }
80
+ else {
81
+ stores = [];
82
+ }
83
+ const pushOptions = item.push_options != null ? item.push_options : batchPushOptions;
84
+ const visibility = item.visibility_mode ?? batchVisibility;
85
+ return [jobId, stores, pushOptions, visibility];
86
+ }
87
+ return ["", [], batchPushOptions, batchVisibility];
88
+ }
89
+ function expandPushTasks(jobIds, batchTargetStores, batchTargetStore, batchVisibility, batchPushOptions) {
90
+ const tasks = [];
91
+ for (const item of jobIds) {
92
+ const [jobId, itemStores, itemPushOptions, itemVisibility] = parsePushItem(item, batchTargetStores, batchTargetStore, batchVisibility, batchPushOptions);
93
+ if (!jobId) {
94
+ tasks.push({ job_id: "", target_store: "", error: "Empty or invalid job_id entry" });
95
+ continue;
96
+ }
97
+ if (!itemStores.length) {
98
+ const payload = { job_id: jobId };
99
+ if (itemPushOptions != null)
100
+ payload.push_options = itemPushOptions;
101
+ if (itemVisibility)
102
+ payload.visibility_mode = itemVisibility;
103
+ tasks.push({ payload, job_id: jobId, target_store: "" });
104
+ continue;
105
+ }
106
+ for (const store of itemStores) {
107
+ const storeName = String(store).trim();
108
+ if (!storeName) {
109
+ tasks.push({ job_id: jobId, target_store: "", error: "Empty store name" });
110
+ continue;
111
+ }
112
+ const payload = { job_id: jobId, target_store: storeName };
113
+ if (itemPushOptions != null)
114
+ payload.push_options = itemPushOptions;
115
+ if (itemVisibility)
116
+ payload.visibility_mode = itemVisibility;
117
+ tasks.push({ payload, job_id: jobId, target_store: storeName });
118
+ }
119
+ }
120
+ return tasks;
121
+ }
122
+ export class ImportFlowService {
123
+ provider;
124
+ store;
125
+ constructor(provider, store) {
126
+ this.provider = provider;
127
+ this.store = store;
128
+ }
129
+ async getRuleCapabilities(payload) {
130
+ const targetStore = payload.target_store;
131
+ const caps = await this.provider.getRuleCapabilities(targetStore);
132
+ return {
133
+ provider_label: caps.provider_label ?? this.provider.name,
134
+ source_support: caps.source_support ?? [],
135
+ stores: caps.stores ?? [],
136
+ rule_families: caps.rule_families ?? {},
137
+ push_options: caps.push_options ?? {},
138
+ notes: caps.notes ?? [],
139
+ };
140
+ }
141
+ async validateRules(payload) {
142
+ const targetStore = payload.target_store;
143
+ const rules = payload.rules ?? {};
144
+ const caps = await this.provider.getRuleCapabilities(targetStore);
145
+ const validation = normalizeRules(rules, caps.rule_families);
146
+ return {
147
+ provider_label: caps.provider_label ?? this.provider.name,
148
+ target_store: targetStore,
149
+ requested_rules: validation.requested_rules ?? {},
150
+ effective_rules_snapshot: validation.effective_rules ?? {},
151
+ warnings: validation.warnings ?? [],
152
+ errors: validation.errors ?? [],
153
+ };
154
+ }
155
+ async prepareImportCandidate(payload) {
156
+ const sourceUrls = payload.source_urls;
157
+ if (Array.isArray(sourceUrls)) {
158
+ return this.batchPrepare(payload, sourceUrls);
159
+ }
160
+ return this.prepareSingle(payload);
161
+ }
162
+ async prepareSingle(payload) {
163
+ const sourceUrl = String(payload.source_url ?? "").trim();
164
+ if (!sourceUrl)
165
+ throw new Error("source_url is required. Provide a supplier product URL (AliExpress, Alibaba, or 1688).");
166
+ const sourceHint = String(payload.source_hint ?? "auto").trim() || "auto";
167
+ const country = String(payload.country ?? "US").trim() || "US";
168
+ const visibilityMode = String(payload.visibility_mode ?? "backend_only").trim() || "backend_only";
169
+ const targetStore = payload.target_store ?? null;
170
+ const rules = payload.rules ?? {};
171
+ const providerCaps = await this.provider.getRuleCapabilities(targetStore);
172
+ const validatedRules = normalizeRules(rules, providerCaps.rule_families);
173
+ if (validatedRules.errors?.length) {
174
+ throw new Error(validatedRules.errors.join("; "));
175
+ }
176
+ const resolved = await resolveSourceUrl(sourceUrl, sourceHint);
177
+ const prepared = await this.provider.prepareCandidate(resolved.resolved_url, resolved.source_hint, country);
178
+ const originalDraft = structuredClone(prepared.draft);
179
+ const effectiveRules = validatedRules.effective_rules ?? {};
180
+ const ruled = applyRules(prepared.draft, effectiveRules);
181
+ const finalDraft = ruled.draft;
182
+ const job = {
183
+ status: "preview_ready",
184
+ created_at: utcNow(),
185
+ provider_label: prepared.provider_label ?? this.provider.name,
186
+ source_url: sourceUrl,
187
+ resolved_source_url: resolved.resolved_url,
188
+ source_hint: resolved.source_hint,
189
+ resolver_mode: resolved.resolver_mode,
190
+ country,
191
+ target_store: targetStore,
192
+ visibility_mode: visibilityMode,
193
+ requested_rules: validatedRules.requested_rules ?? {},
194
+ effective_rules_snapshot: effectiveRules,
195
+ rules: effectiveRules,
196
+ provider_state: prepared.provider_state,
197
+ original_draft: originalDraft,
198
+ draft: finalDraft,
199
+ warnings: [
200
+ ...(resolved.warnings ?? []),
201
+ ...(prepared.warnings ?? []),
202
+ ...(validatedRules.warnings ?? []),
203
+ ...(ruled.summary?.warnings ?? []),
204
+ ],
205
+ rule_summary: ruled.summary ?? {},
206
+ };
207
+ const jobId = this.store.create(job);
208
+ job.job_id = jobId;
209
+ this.store.save(jobId, job);
210
+ return this.preview(job);
211
+ }
212
+ async batchPrepare(payload, sourceUrls) {
213
+ if (!sourceUrls.length) {
214
+ return { error: "source_urls must be a non-empty list" };
215
+ }
216
+ const batchId = `batch-${randomUUID().slice(0, 12)}`;
217
+ const sharedKeys = [
218
+ "country",
219
+ "target_store",
220
+ "visibility_mode",
221
+ "source_hint",
222
+ ];
223
+ const shared = {};
224
+ for (const k of sharedKeys) {
225
+ if (payload[k] != null)
226
+ shared[k] = payload[k];
227
+ }
228
+ const sharedRules = payload.rules;
229
+ const results = [];
230
+ let succeeded = 0;
231
+ let failed = 0;
232
+ for (let idx = 0; idx < sourceUrls.length; idx++) {
233
+ const [url, itemPayload] = parseBatchItem(sourceUrls[idx], shared, sharedRules);
234
+ if (!url) {
235
+ results.push({ index: idx, source_url: "", error: "Empty or invalid URL entry" });
236
+ failed++;
237
+ continue;
238
+ }
239
+ try {
240
+ const preview = await this.prepareSingle(itemPayload);
241
+ results.push({ ...preview, index: idx });
242
+ succeeded++;
243
+ }
244
+ catch (err) {
245
+ results.push({ index: idx, source_url: url, error: String(err.message ?? err) });
246
+ failed++;
247
+ }
248
+ }
249
+ return { batch_id: batchId, total: sourceUrls.length, succeeded, failed, results };
250
+ }
251
+ async getImportPreview(payload) {
252
+ const jobId = String(payload.job_id ?? "").trim();
253
+ if (!jobId)
254
+ throw new Error("job_id is required. It is returned by dsers.product.import in the response.");
255
+ const job = this.store.load(jobId);
256
+ return this.preview(job);
257
+ }
258
+ async setProductVisibility(payload) {
259
+ const jobId = String(payload.job_id ?? "").trim();
260
+ const visibilityMode = String(payload.visibility_mode ?? "").trim();
261
+ if (!jobId || !visibilityMode) {
262
+ throw new Error("job_id and visibility_mode are both required. " +
263
+ "Valid visibility_mode values: backend_only, sell_immediately.");
264
+ }
265
+ const job = this.store.load(jobId);
266
+ job.visibility_mode = visibilityMode;
267
+ job.updated_at = utcNow();
268
+ this.store.save(jobId, job);
269
+ return { job_id: jobId, status: job.status, visibility_mode: visibilityMode };
270
+ }
271
+ async confirmPushToStore(payload) {
272
+ const jobIds = payload.job_ids;
273
+ const targetStores = payload.target_stores;
274
+ if (Array.isArray(jobIds)) {
275
+ return this.batchPush(payload, jobIds);
276
+ }
277
+ if (Array.isArray(targetStores) && targetStores.length) {
278
+ return this.multiStorePushSingleJob(payload, targetStores);
279
+ }
280
+ return this.pushSingle(payload);
281
+ }
282
+ async pushSingle(payload) {
283
+ const jobId = String(payload.job_id ?? "").trim();
284
+ if (!jobId)
285
+ throw new Error("job_id is required. It is returned by dsers.product.import in the response.");
286
+ const job = this.store.load(jobId);
287
+ if (job._recovered && !job.draft) {
288
+ await this.recoverDraft(job);
289
+ }
290
+ const targetStore = payload.target_store ?? job.target_store ?? null;
291
+ const visibilityMode = payload.visibility_mode ?? job.visibility_mode ?? "backend_only";
292
+ const providerCaps = await this.provider.getRuleCapabilities(targetStore);
293
+ const pushOptionCheck = normalizePushOptions(payload.push_options, visibilityMode, providerCaps.push_options);
294
+ if (pushOptionCheck.errors?.length) {
295
+ throw new Error(pushOptionCheck.errors.join("; "));
296
+ }
297
+ const effectivePushOptions = pushOptionCheck.effective_push_options ?? {};
298
+ const result = await this.provider.commitCandidate(job.provider_state, job.draft, targetStore, visibilityMode, effectivePushOptions);
299
+ job.status = result.job_status ?? "push_requested";
300
+ job.updated_at = utcNow();
301
+ job.target_store = targetStore;
302
+ job.visibility_mode = visibilityMode;
303
+ job.requested_push_options = pushOptionCheck.requested_push_options ?? {};
304
+ job.effective_push_options = effectivePushOptions;
305
+ job.push_option_warnings = pushOptionCheck.warnings ?? [];
306
+ job.push_result = result;
307
+ this.store.save(jobId, job);
308
+ return {
309
+ job_id: jobId,
310
+ status: job.status,
311
+ target_store: targetStore,
312
+ visibility_requested: visibilityMode,
313
+ visibility_applied: result.visibility_applied ?? visibilityMode,
314
+ push_options_applied: result.push_options_applied ?? effectivePushOptions,
315
+ job_summary: result.summary ?? {},
316
+ warnings: [
317
+ ...(pushOptionCheck.warnings ?? []),
318
+ ...(result.warnings ?? []),
319
+ ],
320
+ };
321
+ }
322
+ async multiStorePushSingleJob(payload, targetStores) {
323
+ const batchId = `batch-${randomUUID().slice(0, 12)}`;
324
+ const jobId = String(payload.job_id ?? "").trim();
325
+ if (!jobId) {
326
+ return {
327
+ error: "job_id is required when using target_stores. It is returned by dsers.product.import.",
328
+ };
329
+ }
330
+ const results = [];
331
+ let succeeded = 0;
332
+ let failed = 0;
333
+ for (const store of targetStores) {
334
+ const storeName = String(store).trim();
335
+ if (!storeName) {
336
+ results.push({ job_id: jobId, target_store: "", error: "Empty store name" });
337
+ failed++;
338
+ continue;
339
+ }
340
+ const singlePayload = { ...payload, job_id: jobId, target_store: storeName };
341
+ delete singlePayload.target_stores;
342
+ try {
343
+ const result = await this.pushSingle(singlePayload);
344
+ results.push({ ...result, target_store: storeName });
345
+ succeeded++;
346
+ }
347
+ catch (err) {
348
+ results.push({ job_id: jobId, target_store: storeName, error: String(err.message ?? err) });
349
+ failed++;
350
+ }
351
+ }
352
+ return { batch_id: batchId, total: targetStores.length, succeeded, failed, results };
353
+ }
354
+ async batchPush(payload, jobIds) {
355
+ if (!jobIds.length) {
356
+ return { error: "job_ids must be a non-empty list" };
357
+ }
358
+ const batchId = `batch-${randomUUID().slice(0, 12)}`;
359
+ const tasks = expandPushTasks(jobIds, payload.target_stores, payload.target_store, payload.visibility_mode, payload.push_options);
360
+ const results = [];
361
+ let succeeded = 0;
362
+ let failed = 0;
363
+ for (const task of tasks) {
364
+ if (task.error) {
365
+ results.push(task);
366
+ failed++;
367
+ continue;
368
+ }
369
+ try {
370
+ const result = await this.pushSingle(task.payload);
371
+ results.push({ ...result, target_store: task.target_store });
372
+ succeeded++;
373
+ }
374
+ catch (err) {
375
+ results.push({
376
+ job_id: task.job_id ?? "",
377
+ target_store: task.target_store ?? "",
378
+ error: String(err.message ?? err),
379
+ });
380
+ failed++;
381
+ }
382
+ }
383
+ return { batch_id: batchId, total: tasks.length, succeeded, failed, results };
384
+ }
385
+ async recoverDraft(job) {
386
+ const importItemId = job.provider_state?.import_item_id;
387
+ if (!importItemId)
388
+ throw new Error("Cannot recover job: missing import_item_id in state.");
389
+ const itemPayload = await this.provider.fetchImportItem(importItemId);
390
+ const [draft, fieldMap] = this.provider.normalizeForRecovery(itemPayload);
391
+ const rules = job.effective_rules_snapshot ?? job.rules ?? {};
392
+ const ruled = applyRules(draft, rules);
393
+ job.draft = ruled.draft;
394
+ job.original_draft = draft;
395
+ if (fieldMap && job.provider_state) {
396
+ job.provider_state.field_map = fieldMap;
397
+ }
398
+ job.status = "preview_ready";
399
+ this.store.save(job.job_id, job);
400
+ }
401
+ async getJobStatus(payload) {
402
+ const jobId = String(payload.job_id ?? "").trim();
403
+ if (!jobId)
404
+ throw new Error("job_id is required. It is returned by dsers.product.import or dsers.store.push.");
405
+ const job = this.store.load(jobId);
406
+ return {
407
+ job_id: jobId,
408
+ status: job.status,
409
+ created_at: job.created_at,
410
+ updated_at: job.updated_at,
411
+ target_store: job.target_store,
412
+ visibility_mode: job.visibility_mode,
413
+ warnings: [
414
+ ...(job.warnings ?? []),
415
+ ...(job.push_option_warnings ?? []),
416
+ ],
417
+ has_push_result: Boolean(job.push_result),
418
+ };
419
+ }
420
+ preview(job) {
421
+ const original = job.original_draft;
422
+ const final = job.draft;
423
+ const preview = {
424
+ job_id: job.job_id,
425
+ status: job.status,
426
+ source_url: job.source_url,
427
+ resolved_source_url: job.resolved_source_url,
428
+ resolver_mode: job.resolver_mode,
429
+ target_store: job.target_store,
430
+ visibility_mode: job.visibility_mode,
431
+ title_before: original?.title,
432
+ title_after: final?.title,
433
+ description_changed: (original?.description_html ?? "") !== (final?.description_html ?? ""),
434
+ images_before: (original?.images ?? []).length,
435
+ images_after: (final?.images ?? []).length,
436
+ variant_count: (final?.variants ?? []).length,
437
+ price_range_before: priceRange(original ?? {}),
438
+ price_range_after: priceRange(final ?? {}),
439
+ tags_before: original?.tags ?? [],
440
+ tags_after: final?.tags ?? [],
441
+ requested_rules: job.requested_rules ?? {},
442
+ effective_rules_snapshot: job.effective_rules_snapshot ?? {},
443
+ rule_summary: job.rule_summary ?? {},
444
+ warnings: job.warnings ?? [],
445
+ };
446
+ if (final?.variants?.length) {
447
+ const totalVariants = final.variants.length;
448
+ preview.variant_preview = final.variants.slice(0, 5).map((v) => ({
449
+ title: v.title,
450
+ supplier_price: v.supplier_price,
451
+ offer_price: v.offer_price,
452
+ sku: v.sku,
453
+ }));
454
+ if (totalVariants > 5) {
455
+ preview.total_variants = totalVariants;
456
+ }
457
+ }
458
+ return preview;
459
+ }
460
+ }
461
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ImportFlowService } from "./service.js";
3
+ export declare function registerTools(server: McpServer, getService: (() => ImportFlowService) | ImportFlowService): void;
4
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA8BtD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,CAAC,MAAM,iBAAiB,CAAC,GAAG,iBAAiB,GACxD,IAAI,CAudN"}