1688-cli 0.1.31 → 0.1.34
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/AGENTS.md +1 -1
- package/CHANGELOG.md +42 -0
- package/dist/cli.js +32 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/cart-add.js +8 -4
- package/dist/commands/cart-add.js.map +1 -1
- package/dist/commands/cart-list.js +6 -2
- package/dist/commands/cart-list.js.map +1 -1
- package/dist/commands/cart-remove.js +8 -4
- package/dist/commands/cart-remove.js.map +1 -1
- package/dist/commands/checkout-confirm.js +28 -17
- package/dist/commands/checkout-confirm.js.map +1 -1
- package/dist/commands/checkout-prepare.js +8 -4
- package/dist/commands/checkout-prepare.js.map +1 -1
- package/dist/commands/doctor.js +80 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/image-search.js +5 -3
- package/dist/commands/image-search.js.map +1 -1
- package/dist/commands/offer.js +5 -1
- package/dist/commands/offer.js.map +1 -1
- package/dist/commands/order-get.js +6 -2
- package/dist/commands/order-get.js.map +1 -1
- package/dist/commands/order-list.js +4 -0
- package/dist/commands/order-list.js.map +1 -1
- package/dist/commands/order-logistics.js +5 -1
- package/dist/commands/order-logistics.js.map +1 -1
- package/dist/commands/search.js +20 -4
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/seller-chat.js +7 -3
- package/dist/commands/seller-chat.js.map +1 -1
- package/dist/commands/seller-inquire.js +1 -1
- package/dist/commands/seller-inquire.js.map +1 -1
- package/dist/commands/seller-messages.js +8 -1
- package/dist/commands/seller-messages.js.map +1 -1
- package/dist/commands/similar.js +4 -0
- package/dist/commands/similar.js.map +1 -1
- package/dist/commands/skill.js +297 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/daemon/client.js +22 -11
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.js +64 -8
- package/dist/daemon/manager.js.map +1 -1
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/server.js +96 -3
- package/dist/daemon/server.js.map +1 -1
- package/dist/io/errors.js +7 -1
- package/dist/io/errors.js.map +1 -1
- package/dist/session/artifacts.js +152 -0
- package/dist/session/artifacts.js.map +1 -0
- package/dist/session/context.js +8 -1
- package/dist/session/context.js.map +1 -1
- package/dist/session/dispatch.js +15 -4
- package/dist/session/dispatch.js.map +1 -1
- package/dist/session/page-state.js +78 -0
- package/dist/session/page-state.js.map +1 -0
- package/dist/session/paths.js +6 -0
- package/dist/session/paths.js.map +1 -1
- package/dist/session/recovery.js +422 -0
- package/dist/session/recovery.js.map +1 -0
- package/dist/session/shared.js +37 -2
- package/dist/session/shared.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// Skill manifest installer for AI agents.
|
|
2
|
+
//
|
|
3
|
+
// 1688-cli ships a single SKILL.md (at the npm package root) that all three
|
|
4
|
+
// supported agents — Claude Code, Codex, Hermes — happen to recognize at:
|
|
5
|
+
//
|
|
6
|
+
// Claude Code: ~/.claude/skills/1688/SKILL.md
|
|
7
|
+
// Codex: ~/.agents/skills/1688/SKILL.md
|
|
8
|
+
// Hermes: ~/.hermes/skills/1688/SKILL.md
|
|
9
|
+
//
|
|
10
|
+
// One file, three target dirs. The install is **agent-detected**: we only
|
|
11
|
+
// write to an agent's dir if that agent's home (~/.claude / ~/.agents /
|
|
12
|
+
// ~/.hermes) already exists OR a strong env/binary signal indicates the
|
|
13
|
+
// agent is in use. Cursor (MCP-only) and clawhub (per-project, separate
|
|
14
|
+
// ecosystem) are intentionally NOT auto-installed; users can do those
|
|
15
|
+
// manually if they want.
|
|
16
|
+
import os from 'node:os';
|
|
17
|
+
import path from 'node:path';
|
|
18
|
+
import fs from 'node:fs';
|
|
19
|
+
import { fileURLToPath } from 'node:url';
|
|
20
|
+
import { emit } from '../io/output.js';
|
|
21
|
+
import { CliError } from '../io/errors.js';
|
|
22
|
+
import pkg from '../../package.json' with { type: 'json' };
|
|
23
|
+
function mkTarget(name, display, homeDir) {
|
|
24
|
+
const skillDir = path.join(homeDir, 'skills', '1688');
|
|
25
|
+
return {
|
|
26
|
+
name,
|
|
27
|
+
display,
|
|
28
|
+
homeDir,
|
|
29
|
+
skillDir,
|
|
30
|
+
skillFile: path.join(skillDir, 'SKILL.md'),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function targetDefs() {
|
|
34
|
+
const home = os.homedir();
|
|
35
|
+
return [
|
|
36
|
+
mkTarget('claude-code', 'Claude Code', path.join(home, '.claude')),
|
|
37
|
+
mkTarget('codex', 'Codex', path.join(home, '.agents')),
|
|
38
|
+
mkTarget('hermes', 'Hermes', path.join(home, '.hermes')),
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
function hasInPath(bin) {
|
|
42
|
+
const pathDirs = (process.env.PATH ?? '').split(path.delimiter);
|
|
43
|
+
const exts = process.platform === 'win32' ? ['.exe', '.cmd', '.bat', ''] : [''];
|
|
44
|
+
for (const dir of pathDirs) {
|
|
45
|
+
for (const ext of exts) {
|
|
46
|
+
try {
|
|
47
|
+
if (fs.existsSync(path.join(dir, bin + ext)))
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
/* ignore */
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
function isAgentDetected(t) {
|
|
58
|
+
switch (t.name) {
|
|
59
|
+
case 'claude-code':
|
|
60
|
+
// ~/.claude/ is Claude Code's home; existence is a strong signal.
|
|
61
|
+
return fs.existsSync(t.homeDir);
|
|
62
|
+
case 'codex':
|
|
63
|
+
// CODEX_SESSION_ID is set when invoked inside Codex. ~/.agents/ is
|
|
64
|
+
// Codex's official skills root; `codex` binary in PATH means the
|
|
65
|
+
// user has it installed even if no session yet.
|
|
66
|
+
if (process.env.CODEX_SESSION_ID)
|
|
67
|
+
return true;
|
|
68
|
+
if (fs.existsSync(t.homeDir))
|
|
69
|
+
return true;
|
|
70
|
+
return hasInPath('codex');
|
|
71
|
+
case 'hermes':
|
|
72
|
+
// ~/.hermes/ is Hermes-specific; binary in PATH is also strong.
|
|
73
|
+
if (fs.existsSync(t.homeDir))
|
|
74
|
+
return true;
|
|
75
|
+
return hasInPath('hermes');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function bundledSkillPath() {
|
|
79
|
+
// dist/commands/skill.js → ../../SKILL.md (works both in dev and after
|
|
80
|
+
// `npm i -g` since SKILL.md is in package.json `files`).
|
|
81
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
82
|
+
return path.join(here, '..', '..', 'SKILL.md');
|
|
83
|
+
}
|
|
84
|
+
function installOne(t, force) {
|
|
85
|
+
const src = bundledSkillPath();
|
|
86
|
+
if (!fs.existsSync(src)) {
|
|
87
|
+
return {
|
|
88
|
+
target: t.name,
|
|
89
|
+
display: t.display,
|
|
90
|
+
path: t.skillFile,
|
|
91
|
+
written: false,
|
|
92
|
+
reason: 'bundled SKILL.md not found',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const desired = fs.readFileSync(src, 'utf8');
|
|
96
|
+
if (fs.existsSync(t.skillFile) && !force) {
|
|
97
|
+
const existing = fs.readFileSync(t.skillFile, 'utf8');
|
|
98
|
+
if (existing === desired) {
|
|
99
|
+
return {
|
|
100
|
+
target: t.name,
|
|
101
|
+
display: t.display,
|
|
102
|
+
path: t.skillFile,
|
|
103
|
+
written: false,
|
|
104
|
+
reason: 'already up to date',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
fs.mkdirSync(t.skillDir, { recursive: true });
|
|
109
|
+
fs.writeFileSync(t.skillFile, desired, 'utf8');
|
|
110
|
+
return {
|
|
111
|
+
target: t.name,
|
|
112
|
+
display: t.display,
|
|
113
|
+
path: t.skillFile,
|
|
114
|
+
written: true,
|
|
115
|
+
reason: fs.existsSync(t.skillFile) ? 'installed' : 'installed',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function uninstallOne(t) {
|
|
119
|
+
if (!fs.existsSync(t.skillFile)) {
|
|
120
|
+
return {
|
|
121
|
+
target: t.name,
|
|
122
|
+
display: t.display,
|
|
123
|
+
path: t.skillFile,
|
|
124
|
+
removed: false,
|
|
125
|
+
reason: 'not installed',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
fs.unlinkSync(t.skillFile);
|
|
130
|
+
try {
|
|
131
|
+
// Best-effort remove of the now-empty parent dir.
|
|
132
|
+
fs.rmdirSync(t.skillDir);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
/* not empty / already gone — ignore */
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
target: t.name,
|
|
139
|
+
display: t.display,
|
|
140
|
+
path: t.skillFile,
|
|
141
|
+
removed: true,
|
|
142
|
+
reason: 'removed',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
return {
|
|
147
|
+
target: t.name,
|
|
148
|
+
display: t.display,
|
|
149
|
+
path: t.skillFile,
|
|
150
|
+
removed: false,
|
|
151
|
+
reason: e.message,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function statusItems() {
|
|
156
|
+
const src = bundledSkillPath();
|
|
157
|
+
const bundled = fs.existsSync(src) ? fs.readFileSync(src, 'utf8') : null;
|
|
158
|
+
return targetDefs().map((t) => {
|
|
159
|
+
const installed = fs.existsSync(t.skillFile);
|
|
160
|
+
let upToDate = null;
|
|
161
|
+
if (installed && bundled) {
|
|
162
|
+
try {
|
|
163
|
+
upToDate = fs.readFileSync(t.skillFile, 'utf8') === bundled;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
upToDate = null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
target: t.name,
|
|
171
|
+
display: t.display,
|
|
172
|
+
path: t.skillFile,
|
|
173
|
+
agentDetected: isAgentDetected(t),
|
|
174
|
+
installed,
|
|
175
|
+
upToDate,
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Best-effort auto-install. Called from cli.ts preAction hook on every
|
|
181
|
+
* non-`skill` command invocation. Writes only to agents that are detected
|
|
182
|
+
* AND not already up to date. Silently no-ops on errors so a bad
|
|
183
|
+
* `~/.claude/` permissions situation can't break unrelated commands.
|
|
184
|
+
*
|
|
185
|
+
* Honors `BB1688_NO_AUTO_SKILL=1` to fully disable.
|
|
186
|
+
*/
|
|
187
|
+
export function maybeAutoInstall() {
|
|
188
|
+
if (process.env.BB1688_NO_AUTO_SKILL === '1')
|
|
189
|
+
return;
|
|
190
|
+
let newlyInstalled = [];
|
|
191
|
+
try {
|
|
192
|
+
const targets = targetDefs().filter((t) => isAgentDetected(t));
|
|
193
|
+
newlyInstalled = targets
|
|
194
|
+
.map((t) => {
|
|
195
|
+
try {
|
|
196
|
+
return installOne(t, false);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
})
|
|
202
|
+
.filter((r) => r !== null && r.written);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (newlyInstalled.length === 0)
|
|
208
|
+
return;
|
|
209
|
+
const labels = newlyInstalled.map((r) => r.display).join(', ');
|
|
210
|
+
process.stderr.write(`✓ 1688 skill registered for: ${labels}\n` +
|
|
211
|
+
newlyInstalled.map((r) => ` ${r.path}\n`).join('') +
|
|
212
|
+
` (undo: 1688 skill uninstall — or set BB1688_NO_AUTO_SKILL=1)\n`);
|
|
213
|
+
}
|
|
214
|
+
function pickTargets(targetName) {
|
|
215
|
+
const all = targetDefs();
|
|
216
|
+
if (!targetName)
|
|
217
|
+
return all;
|
|
218
|
+
const match = all.filter((t) => t.name === targetName);
|
|
219
|
+
if (match.length === 0) {
|
|
220
|
+
throw new CliError(2, 'BAD_TARGET', `Unknown target: ${targetName}. Use one of: ${all.map((t) => t.name).join(', ')}`);
|
|
221
|
+
}
|
|
222
|
+
return match;
|
|
223
|
+
}
|
|
224
|
+
export async function runInstall(opts) {
|
|
225
|
+
const candidates = pickTargets(opts.target);
|
|
226
|
+
// Without --target: install only to detected agents.
|
|
227
|
+
// With --target: force install to that one specifically (skip detection).
|
|
228
|
+
const targets = opts.target
|
|
229
|
+
? candidates
|
|
230
|
+
: candidates.filter((t) => isAgentDetected(t));
|
|
231
|
+
if (targets.length === 0) {
|
|
232
|
+
throw new CliError(6, 'NO_AGENT_DETECTED', 'No supported agent detected (~/.claude, ~/.agents, or ~/.hermes not found).\n' +
|
|
233
|
+
'Force install with: 1688 skill install --target <claude-code|codex|hermes>');
|
|
234
|
+
}
|
|
235
|
+
const results = targets.map((t) => installOne(t, !!opts.force));
|
|
236
|
+
emit({
|
|
237
|
+
human: () => {
|
|
238
|
+
for (const r of results) {
|
|
239
|
+
const sign = r.written ? '✓' : '–';
|
|
240
|
+
process.stdout.write(`${sign} ${r.display.padEnd(15)} ${r.reason}\n`);
|
|
241
|
+
process.stdout.write(` ${r.path}\n`);
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
data: { version: pkg.version, results },
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
export async function runUninstall(opts) {
|
|
248
|
+
const targets = pickTargets(opts.target);
|
|
249
|
+
const results = targets.map((t) => uninstallOne(t));
|
|
250
|
+
emit({
|
|
251
|
+
human: () => {
|
|
252
|
+
for (const r of results) {
|
|
253
|
+
const sign = r.removed ? '✓' : '–';
|
|
254
|
+
process.stdout.write(`${sign} ${r.display.padEnd(15)} ${r.reason}\n`);
|
|
255
|
+
if (r.removed)
|
|
256
|
+
process.stdout.write(` was: ${r.path}\n`);
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
data: { results },
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
export async function runStatus() {
|
|
263
|
+
const items = statusItems();
|
|
264
|
+
emit({
|
|
265
|
+
human: () => {
|
|
266
|
+
process.stdout.write(`1688-cli ${pkg.version} skill status:\n`);
|
|
267
|
+
for (const i of items) {
|
|
268
|
+
let sign;
|
|
269
|
+
let note;
|
|
270
|
+
if (i.installed && i.upToDate) {
|
|
271
|
+
sign = '✓';
|
|
272
|
+
note = 'installed & up-to-date';
|
|
273
|
+
}
|
|
274
|
+
else if (i.installed && i.upToDate === false) {
|
|
275
|
+
sign = '!';
|
|
276
|
+
note = 'installed but outdated (run: 1688 skill install --force)';
|
|
277
|
+
}
|
|
278
|
+
else if (i.installed) {
|
|
279
|
+
sign = '?';
|
|
280
|
+
note = 'installed (version check failed)';
|
|
281
|
+
}
|
|
282
|
+
else if (i.agentDetected) {
|
|
283
|
+
sign = '○';
|
|
284
|
+
note = 'agent detected — not registered yet';
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
sign = '·';
|
|
288
|
+
note = 'agent not detected';
|
|
289
|
+
}
|
|
290
|
+
process.stdout.write(` ${sign} ${i.display.padEnd(15)} ${note}\n`);
|
|
291
|
+
process.stdout.write(` ${i.path}\n`);
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
data: { version: pkg.version, items },
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/client.js
CHANGED
|
@@ -38,10 +38,26 @@ export async function daemonCall(cmd, args) {
|
|
|
38
38
|
return new Promise((resolve, reject) => {
|
|
39
39
|
const sock = net.createConnection(socketPath());
|
|
40
40
|
let buf = '';
|
|
41
|
+
let settled = false;
|
|
41
42
|
const timer = setTimeout(() => {
|
|
42
|
-
|
|
43
|
-
reject(new Error('daemon call timed out'));
|
|
43
|
+
fail(new Error('daemon call timed out'));
|
|
44
44
|
}, CALL_TIMEOUT_MS);
|
|
45
|
+
function succeed(data) {
|
|
46
|
+
if (settled)
|
|
47
|
+
return;
|
|
48
|
+
settled = true;
|
|
49
|
+
clearTimeout(timer);
|
|
50
|
+
sock.end();
|
|
51
|
+
resolve(data);
|
|
52
|
+
}
|
|
53
|
+
function fail(e) {
|
|
54
|
+
if (settled)
|
|
55
|
+
return;
|
|
56
|
+
settled = true;
|
|
57
|
+
clearTimeout(timer);
|
|
58
|
+
sock.destroy();
|
|
59
|
+
reject(e);
|
|
60
|
+
}
|
|
45
61
|
sock.on('connect', () => {
|
|
46
62
|
const req = { id: makeRequestId(), cmd, args };
|
|
47
63
|
sock.write(JSON.stringify(req) + '\n');
|
|
@@ -57,23 +73,18 @@ export async function daemonCall(cmd, args) {
|
|
|
57
73
|
resp = JSON.parse(line);
|
|
58
74
|
}
|
|
59
75
|
catch (e) {
|
|
60
|
-
|
|
61
|
-
sock.destroy();
|
|
62
|
-
reject(new Error('daemon: malformed response'));
|
|
76
|
+
fail(new Error('daemon: malformed response'));
|
|
63
77
|
return;
|
|
64
78
|
}
|
|
65
|
-
clearTimeout(timer);
|
|
66
|
-
sock.end();
|
|
67
79
|
if (resp.ok) {
|
|
68
|
-
|
|
80
|
+
succeed(resp.data);
|
|
69
81
|
}
|
|
70
82
|
else {
|
|
71
|
-
|
|
83
|
+
fail(new CliError(resp.exitCode, resp.code, resp.message, resp.details));
|
|
72
84
|
}
|
|
73
85
|
});
|
|
74
86
|
sock.on('error', (e) => {
|
|
75
|
-
|
|
76
|
-
reject(e);
|
|
87
|
+
fail(e);
|
|
77
88
|
});
|
|
78
89
|
});
|
|
79
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAC;AAE7D,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,sEAAsE;IACtE,wEAAwE;IACxE,2BAA2B;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EAAE,eAAe,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAI,GAAW,EAAE,IAAa;IAC5D,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/manager.js
CHANGED
|
@@ -2,16 +2,31 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { pidFile, socketPath, daemonLogFile, ensureRoot, } from '../session/paths.js';
|
|
5
|
+
import { pidFile, socketPath, daemonLogFile, daemonVersionFile, ensureRoot, } from '../session/paths.js';
|
|
6
6
|
import { daemonCall, isDaemonReachable } from './client.js';
|
|
7
7
|
import { CliError } from '../io/errors.js';
|
|
8
|
+
import pkg from '../../package.json' with { type: 'json' };
|
|
8
9
|
export async function status() {
|
|
9
10
|
const pid = await readPid();
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
const version = await readDaemonVersion();
|
|
12
|
+
const expectedVersion = pkg.version;
|
|
13
|
+
if (pid === null) {
|
|
14
|
+
return {
|
|
15
|
+
running: false,
|
|
16
|
+
version,
|
|
17
|
+
expectedVersion,
|
|
18
|
+
versionMatches: version === expectedVersion,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
12
21
|
const alive = isProcessAlive(pid);
|
|
13
|
-
if (!alive)
|
|
14
|
-
return {
|
|
22
|
+
if (!alive) {
|
|
23
|
+
return {
|
|
24
|
+
running: false,
|
|
25
|
+
version,
|
|
26
|
+
expectedVersion,
|
|
27
|
+
versionMatches: version === expectedVersion,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
15
30
|
const reachable = await isDaemonReachable();
|
|
16
31
|
let stats = undefined;
|
|
17
32
|
if (reachable) {
|
|
@@ -22,13 +37,30 @@ export async function status() {
|
|
|
22
37
|
/* ignore */
|
|
23
38
|
}
|
|
24
39
|
}
|
|
25
|
-
|
|
40
|
+
const statsVersion = stats && typeof stats === 'object'
|
|
41
|
+
? stats.version
|
|
42
|
+
: undefined;
|
|
43
|
+
const resolvedVersion = typeof statsVersion === 'string' ? statsVersion : version;
|
|
44
|
+
return {
|
|
45
|
+
running: true,
|
|
46
|
+
pid,
|
|
47
|
+
reachable,
|
|
48
|
+
version: resolvedVersion,
|
|
49
|
+
expectedVersion,
|
|
50
|
+
versionMatches: resolvedVersion === expectedVersion,
|
|
51
|
+
stats,
|
|
52
|
+
};
|
|
26
53
|
}
|
|
27
54
|
export async function start() {
|
|
28
55
|
await ensureRoot();
|
|
29
56
|
const existing = await status();
|
|
30
57
|
if (existing.running) {
|
|
31
|
-
|
|
58
|
+
if (existing.versionMatches === false) {
|
|
59
|
+
await stop();
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw new CliError(5, 'DAEMON_RUNNING', `Daemon already running (pid ${existing.pid}).`);
|
|
63
|
+
}
|
|
32
64
|
}
|
|
33
65
|
// Locate the CLI entrypoint to re-exec as "1688 serve".
|
|
34
66
|
// When installed via npm link, this module sits at dist/daemon/manager.js,
|
|
@@ -55,6 +87,19 @@ export async function start() {
|
|
|
55
87
|
}
|
|
56
88
|
throw new CliError(9, 'DAEMON_START_TIMEOUT', 'Daemon did not start within 15s. Check ~/.1688/daemon.log.');
|
|
57
89
|
}
|
|
90
|
+
export async function ensureFreshDaemon() {
|
|
91
|
+
const existing = await status();
|
|
92
|
+
if (!existing.running) {
|
|
93
|
+
const started = await start();
|
|
94
|
+
return { ...started, restarted: false };
|
|
95
|
+
}
|
|
96
|
+
if (existing.versionMatches === false) {
|
|
97
|
+
await stop();
|
|
98
|
+
const started = await start();
|
|
99
|
+
return { ...started, restarted: true };
|
|
100
|
+
}
|
|
101
|
+
return { pid: existing.pid ?? -1, restarted: false };
|
|
102
|
+
}
|
|
58
103
|
export async function stop() {
|
|
59
104
|
const pid = await readPid();
|
|
60
105
|
if (pid === null || !isProcessAlive(pid)) {
|
|
@@ -98,7 +143,9 @@ export async function stop() {
|
|
|
98
143
|
}
|
|
99
144
|
async function cleanupArtifacts() {
|
|
100
145
|
// Windows named pipes have no filesystem entry — skip the socket path.
|
|
101
|
-
const targets = process.platform === 'win32'
|
|
146
|
+
const targets = process.platform === 'win32'
|
|
147
|
+
? [pidFile(), daemonVersionFile()]
|
|
148
|
+
: [socketPath(), pidFile(), daemonVersionFile()];
|
|
102
149
|
for (const p of targets) {
|
|
103
150
|
try {
|
|
104
151
|
await fs.unlink(p);
|
|
@@ -118,6 +165,15 @@ async function readPid() {
|
|
|
118
165
|
return null;
|
|
119
166
|
}
|
|
120
167
|
}
|
|
168
|
+
async function readDaemonVersion() {
|
|
169
|
+
try {
|
|
170
|
+
const s = await fs.readFile(daemonVersionFile(), 'utf8');
|
|
171
|
+
return s.trim() || null;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
121
177
|
function isProcessAlive(pid) {
|
|
122
178
|
try {
|
|
123
179
|
process.kill(pid, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/daemon/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,OAAO,EACP,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/daemon/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAyBhF,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC"}
|