1688-cli 0.1.39 → 0.1.41
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 +142 -0
- package/dist/cli.js +79 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/cart-add.js +15 -11
- package/dist/commands/cart-add.js.map +1 -1
- package/dist/commands/cart-list.js +11 -10
- package/dist/commands/cart-list.js.map +1 -1
- package/dist/commands/debug.js +101 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/doctor.js +90 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/image-search.js +2 -6
- package/dist/commands/image-search.js.map +1 -1
- package/dist/commands/inbox.js +289 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/profile.js +84 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/search.js +98 -93
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/similar.js +2 -6
- package/dist/commands/similar.js.map +1 -1
- package/dist/daemon/client.js +2 -2
- package/dist/daemon/client.js.map +1 -1
- package/dist/io/output.js +31 -2
- package/dist/io/output.js.map +1 -1
- package/dist/session/config.js +82 -0
- package/dist/session/config.js.map +1 -0
- package/dist/session/dispatch.js +25 -3
- package/dist/session/dispatch.js.map +1 -1
- package/dist/session/events.js +151 -0
- package/dist/session/events.js.map +1 -0
- package/dist/session/im-cards.js +183 -0
- package/dist/session/im-cards.js.map +1 -0
- package/dist/session/im-ws.js +97 -0
- package/dist/session/im-ws.js.map +1 -0
- package/dist/session/navigation-guard.js +65 -0
- package/dist/session/navigation-guard.js.map +1 -0
- package/dist/session/paths.js +6 -0
- package/dist/session/paths.js.map +1 -1
- package/dist/session/search-capture.js +56 -6
- package/dist/session/search-capture.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CliError } from '../io/errors.js';
|
|
2
|
+
const ALLOWED_1688_HOST_RE = /(^|\.)1688\.com$/i;
|
|
3
|
+
const ALLOWED_ALI_HOST_RE = /(^|\.)(taobao\.com|tmall\.com|alibaba\.com|alicdn\.com)$/i;
|
|
4
|
+
export function classifyNavigation(url) {
|
|
5
|
+
let parsed;
|
|
6
|
+
try {
|
|
7
|
+
parsed = new URL(url);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return { kind: 'unknown', url, host: null };
|
|
11
|
+
}
|
|
12
|
+
const host = parsed.hostname;
|
|
13
|
+
if (/punish|x5secdata/i.test(url) || /punish/i.test(host)) {
|
|
14
|
+
return { kind: 'risk_control', url, host };
|
|
15
|
+
}
|
|
16
|
+
if (/login\.(1688|taobao)\.com$/i.test(host)) {
|
|
17
|
+
return { kind: 'login', url, host };
|
|
18
|
+
}
|
|
19
|
+
if (/cashier|pay|payment|alipay/i.test(host + parsed.pathname)) {
|
|
20
|
+
return { kind: 'payment', url, host };
|
|
21
|
+
}
|
|
22
|
+
if (ALLOWED_1688_HOST_RE.test(host) || ALLOWED_ALI_HOST_RE.test(host)) {
|
|
23
|
+
return { kind: '1688', url, host };
|
|
24
|
+
}
|
|
25
|
+
return { kind: 'external', url, host };
|
|
26
|
+
}
|
|
27
|
+
export function navigationWarning(url) {
|
|
28
|
+
const details = classifyNavigation(url);
|
|
29
|
+
if (details.kind === '1688')
|
|
30
|
+
return null;
|
|
31
|
+
return {
|
|
32
|
+
code: `NAVIGATION_${details.kind.toUpperCase()}`,
|
|
33
|
+
message: messageForKind(details.kind),
|
|
34
|
+
details,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function assertSafeNavigation(url, opts) {
|
|
38
|
+
const details = classifyNavigation(url);
|
|
39
|
+
if (details.kind === '1688')
|
|
40
|
+
return;
|
|
41
|
+
if (!opts.write && details.kind !== 'payment')
|
|
42
|
+
return;
|
|
43
|
+
throw new CliError(details.kind === 'payment' ? 24 : 23, details.kind === 'payment' ? 'PAYMENT_BLOCKED' : 'UNEXPECTED_NAVIGATION', messageForKind(details.kind), {
|
|
44
|
+
currentUrl: url,
|
|
45
|
+
navigationKind: details.kind,
|
|
46
|
+
recoverHint: 'Run with --headed to inspect the page before continuing.',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function messageForKind(kind) {
|
|
50
|
+
switch (kind) {
|
|
51
|
+
case 'login':
|
|
52
|
+
return 'Navigation reached a login page.';
|
|
53
|
+
case 'risk_control':
|
|
54
|
+
return 'Navigation reached a 1688 risk-control page.';
|
|
55
|
+
case 'payment':
|
|
56
|
+
return 'Navigation reached a payment page and was blocked.';
|
|
57
|
+
case 'external':
|
|
58
|
+
return 'Navigation reached an unexpected external domain.';
|
|
59
|
+
case 'unknown':
|
|
60
|
+
return 'Navigation target could not be parsed.';
|
|
61
|
+
case '1688':
|
|
62
|
+
return 'Navigation is within the allowed 1688 domain set.';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=navigation-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-guard.js","sourceRoot":"","sources":["../../src/session/navigation-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/session/paths.js
CHANGED
|
@@ -33,6 +33,12 @@ export function daemonLogFile() {
|
|
|
33
33
|
export function runsDir() {
|
|
34
34
|
return path.join(root(), 'runs');
|
|
35
35
|
}
|
|
36
|
+
export function eventsFile() {
|
|
37
|
+
return path.join(root(), 'events.jsonl');
|
|
38
|
+
}
|
|
39
|
+
export function configFile() {
|
|
40
|
+
return path.join(root(), 'config.json');
|
|
41
|
+
}
|
|
36
42
|
export function loginQrFile() {
|
|
37
43
|
return path.join(root(), 'login-qr.png');
|
|
38
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/session/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,MAAM,UAAU,IAAI;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,0EAA0E;IAC1E,+DAA+D;IAC/D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,SAAS;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/session/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,MAAM,UAAU,IAAI;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,0EAA0E;IAC1E,+DAA+D;IAC/D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,8BAA8B,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,SAAS;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1,33 +1,72 @@
|
|
|
1
1
|
import { waitWithDeadline } from './wait.js';
|
|
2
2
|
import { SEARCH_APP_ID, parseOfferItemsFromMtopText, readSearchMtopRequestMeta, } from './search-mtop.js';
|
|
3
|
+
export async function captureSearchOffersForAction(opts, action, waitOptions) {
|
|
4
|
+
const capture = startSearchOfferCapture(opts);
|
|
5
|
+
return capture.waitForAction(action, waitOptions);
|
|
6
|
+
}
|
|
3
7
|
export function startSearchOfferCapture(opts) {
|
|
8
|
+
const maxDiagnosticsEntries = 5;
|
|
9
|
+
const startedAt = new Date().toISOString();
|
|
10
|
+
let endedAt;
|
|
4
11
|
let disposed = false;
|
|
12
|
+
let pageClosed = false;
|
|
13
|
+
let finalStatus;
|
|
14
|
+
let timedOut = false;
|
|
5
15
|
let offers = [];
|
|
6
16
|
let seenCount = 0;
|
|
7
17
|
let matchedCount = 0;
|
|
8
18
|
let parsedCount = 0;
|
|
9
|
-
let failureCount = 0;
|
|
10
19
|
let lastSeenUrl;
|
|
11
20
|
let lastMatchedUrl;
|
|
12
21
|
let lastParsedUrl;
|
|
22
|
+
let lastError;
|
|
23
|
+
const failures = [];
|
|
24
|
+
const errorInfo = (error) => {
|
|
25
|
+
if (error instanceof Error) {
|
|
26
|
+
return { name: error.name, message: error.message };
|
|
27
|
+
}
|
|
28
|
+
return { message: String(error) };
|
|
29
|
+
};
|
|
30
|
+
const recordFailure = (url, error) => {
|
|
31
|
+
const info = errorInfo(error);
|
|
32
|
+
lastError = info;
|
|
33
|
+
failures.push({
|
|
34
|
+
at: new Date().toISOString(),
|
|
35
|
+
url,
|
|
36
|
+
...info,
|
|
37
|
+
});
|
|
38
|
+
if (failures.length > maxDiagnosticsEntries)
|
|
39
|
+
failures.shift();
|
|
40
|
+
};
|
|
13
41
|
const diagnostics = () => ({
|
|
42
|
+
startedAt,
|
|
43
|
+
endedAt,
|
|
44
|
+
disposed,
|
|
45
|
+
finalStatus,
|
|
46
|
+
timedOut,
|
|
14
47
|
seenCount,
|
|
15
48
|
matchedCount,
|
|
16
49
|
parsedCount,
|
|
17
|
-
failureCount,
|
|
50
|
+
failureCount: failures.length,
|
|
18
51
|
lastSeenUrl,
|
|
19
52
|
lastMatchedUrl,
|
|
20
53
|
lastParsedUrl,
|
|
54
|
+
lastError,
|
|
55
|
+
failures: [...failures],
|
|
21
56
|
});
|
|
22
57
|
const reset = () => {
|
|
58
|
+
endedAt = undefined;
|
|
59
|
+
finalStatus = undefined;
|
|
60
|
+
timedOut = false;
|
|
23
61
|
offers = [];
|
|
24
62
|
seenCount = 0;
|
|
25
63
|
matchedCount = 0;
|
|
26
64
|
parsedCount = 0;
|
|
27
|
-
failureCount = 0;
|
|
28
65
|
lastSeenUrl = undefined;
|
|
29
66
|
lastMatchedUrl = undefined;
|
|
30
67
|
lastParsedUrl = undefined;
|
|
68
|
+
lastError = undefined;
|
|
69
|
+
failures.length = 0;
|
|
31
70
|
};
|
|
32
71
|
const onResponse = async (resp) => {
|
|
33
72
|
if (disposed)
|
|
@@ -59,19 +98,26 @@ export function startSearchOfferCapture(opts) {
|
|
|
59
98
|
parsedCount++;
|
|
60
99
|
lastParsedUrl = url;
|
|
61
100
|
}
|
|
62
|
-
catch {
|
|
63
|
-
|
|
101
|
+
catch (error) {
|
|
102
|
+
recordFailure(url, error);
|
|
64
103
|
}
|
|
65
104
|
};
|
|
105
|
+
const onClose = () => {
|
|
106
|
+
pageClosed = true;
|
|
107
|
+
finalStatus ??= 'browser_closed';
|
|
108
|
+
endedAt ??= new Date().toISOString();
|
|
109
|
+
};
|
|
66
110
|
const dispose = () => {
|
|
67
111
|
if (disposed)
|
|
68
112
|
return;
|
|
69
113
|
disposed = true;
|
|
114
|
+
endedAt ??= new Date().toISOString();
|
|
70
115
|
opts.page.off('response', onResponse);
|
|
116
|
+
opts.page.off('close', onClose);
|
|
71
117
|
};
|
|
72
118
|
const wait = async (optsWait) => {
|
|
73
119
|
const result = await waitWithDeadline(async () => {
|
|
74
|
-
if (optsWait.isClosed?.())
|
|
120
|
+
if (pageClosed || optsWait.isClosed?.())
|
|
75
121
|
return 'browser_closed';
|
|
76
122
|
if (offers.length > 0)
|
|
77
123
|
return 'captured';
|
|
@@ -85,6 +131,9 @@ export function startSearchOfferCapture(opts) {
|
|
|
85
131
|
intervalMs: optsWait.intervalMs ?? 300,
|
|
86
132
|
onTimeout: () => (offers.length > 0 ? 'captured' : 'timeout'),
|
|
87
133
|
});
|
|
134
|
+
finalStatus = result;
|
|
135
|
+
timedOut = result === 'timeout';
|
|
136
|
+
endedAt ??= new Date().toISOString();
|
|
88
137
|
return { status: result, offers, diagnostics: diagnostics() };
|
|
89
138
|
};
|
|
90
139
|
const waitForAction = async (action, optsWait) => {
|
|
@@ -103,6 +152,7 @@ export function startSearchOfferCapture(opts) {
|
|
|
103
152
|
}
|
|
104
153
|
};
|
|
105
154
|
opts.page.on('response', onResponse);
|
|
155
|
+
opts.page.on('close', onClose);
|
|
106
156
|
return {
|
|
107
157
|
reset,
|
|
108
158
|
wait,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-capture.js","sourceRoot":"","sources":["../../src/session/search-capture.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,yBAAyB,GAE1B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-capture.js","sourceRoot":"","sources":["../../src/session/search-capture.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "1688-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "1688.com CLI for humans, Codex, and Claude Code. Sourcing (search / image-search / offer / inquire) and orders (list / detail / logistics / seller chat).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "nobodyjack",
|