@remnic/cli 9.69.83 → 9.69.84
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/bin/engram.cjs +62 -45
- package/bin/remnic.cjs +59 -31
- package/package.json +32 -32
package/bin/engram.cjs
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Legacy compatibility wrapper for the canonical remnic CLI.
|
|
6
6
|
*/
|
|
7
|
-
const { resolve } = require("node:path");
|
|
8
|
-
const { existsSync } = require("node:fs");
|
|
7
|
+
const { dirname, resolve } = require("node:path");
|
|
8
|
+
const { existsSync, readFileSync } = require("node:fs");
|
|
9
9
|
const { execFileSync } = require("node:child_process");
|
|
10
10
|
const { constants: osConstants } = require("node:os");
|
|
11
11
|
|
|
@@ -18,57 +18,74 @@ function exitCodeForSignal(signal) {
|
|
|
18
18
|
return typeof signalNumber === "number" ? 128 + signalNumber : 1;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
resolve(
|
|
24
|
-
resolve(
|
|
21
|
+
function tsxPackageJsonCandidates(binDir = cwd) {
|
|
22
|
+
return [
|
|
23
|
+
resolve(binDir, "../node_modules/tsx/package.json"),
|
|
24
|
+
resolve(binDir, "../../../node_modules/tsx/package.json"),
|
|
25
25
|
];
|
|
26
|
-
return tsxCandidates.find((c) => existsSync(c));
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
function resolveLocalTsx(
|
|
29
|
+
binDir = cwd,
|
|
30
|
+
exists = existsSync,
|
|
31
|
+
readFile = readFileSync,
|
|
32
|
+
) {
|
|
33
|
+
for (const pkgPath of tsxPackageJsonCandidates(binDir)) {
|
|
34
|
+
if (!exists(pkgPath)) continue;
|
|
35
|
+
let bin;
|
|
36
|
+
try {
|
|
37
|
+
const pkg = JSON.parse(readFile(pkgPath, "utf8"));
|
|
38
|
+
bin = typeof pkg.bin === "string" ? pkg.bin : pkg.bin && pkg.bin.tsx;
|
|
39
|
+
} catch {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (typeof bin !== "string" || bin.length === 0) continue;
|
|
43
|
+
const cli = resolve(dirname(pkgPath), bin);
|
|
44
|
+
if (exists(cli)) return cli;
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function runCli() {
|
|
30
50
|
if (existsSync(distEntry)) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
process.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// Development: run TypeScript source via tsx
|
|
42
|
-
const hasSrcEntry = existsSync(srcEntry);
|
|
43
|
-
const tsxCmd = hasSrcEntry ? resolveLocalTsx() : undefined;
|
|
44
|
-
if (!tsxCmd) {
|
|
45
|
-
if (hasSrcEntry) {
|
|
46
|
-
throw new Error(
|
|
47
|
-
`tsx runtime is missing for source CLI entrypoint: ${srcEntry}. Install dependencies or rebuild @remnic/cli.`,
|
|
48
|
-
);
|
|
49
|
-
}
|
|
51
|
+
execFileSync(process.execPath, [distEntry, ...process.argv.slice(2)], {
|
|
52
|
+
stdio: "inherit",
|
|
53
|
+
env: { ...process.env, REMNIC_CLI_BIN: "1", ENGRAM_CLI_BIN: "1" },
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const hasSrcEntry = existsSync(srcEntry);
|
|
58
|
+
const tsxCli = hasSrcEntry ? resolveLocalTsx() : undefined;
|
|
59
|
+
if (!tsxCli) {
|
|
60
|
+
if (hasSrcEntry) {
|
|
50
61
|
throw new Error(
|
|
51
|
-
`
|
|
62
|
+
`tsx runtime is missing for source CLI entrypoint: ${srcEntry}. Install dependencies or rebuild @remnic/cli.`,
|
|
52
63
|
);
|
|
53
64
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
[srcEntry, ...process.argv.slice(2)],
|
|
57
|
-
{
|
|
58
|
-
stdio: "inherit",
|
|
59
|
-
env: { ...process.env, REMNIC_CLI_BIN: "1", ENGRAM_CLI_BIN: "1" },
|
|
60
|
-
},
|
|
65
|
+
throw new Error(
|
|
66
|
+
`built CLI entrypoint is missing: ${distEntry}. Rebuild or reinstall @remnic/cli.`,
|
|
61
67
|
);
|
|
62
68
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
execFileSync(process.execPath, [tsxCli, srcEntry, ...process.argv.slice(2)], {
|
|
70
|
+
stdio: "inherit",
|
|
71
|
+
env: { ...process.env, REMNIC_CLI_BIN: "1", ENGRAM_CLI_BIN: "1" },
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (require.main === module) {
|
|
76
|
+
try {
|
|
77
|
+
runCli();
|
|
78
|
+
} catch (err) {
|
|
79
|
+
if (err.status != null) {
|
|
80
|
+
process.exitCode = err.status;
|
|
81
|
+
} else if (err.signal) {
|
|
82
|
+
process.exitCode = exitCodeForSignal(err.signal);
|
|
83
|
+
process.kill(process.pid, err.signal);
|
|
84
|
+
} else {
|
|
85
|
+
process.stderr.write(`Fatal: ${err.message}\n`);
|
|
86
|
+
process.exitCode = 1;
|
|
87
|
+
}
|
|
73
88
|
}
|
|
74
89
|
}
|
|
90
|
+
|
|
91
|
+
module.exports = { tsxPackageJsonCandidates, resolveLocalTsx };
|
package/bin/remnic.cjs
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Canonical wrapper for the built ESM CLI entry point.
|
|
6
6
|
*/
|
|
7
|
-
const { resolve } = require("node:path");
|
|
8
|
-
const { existsSync } = require("node:fs");
|
|
7
|
+
const { dirname, resolve } = require("node:path");
|
|
8
|
+
const { existsSync, readFileSync } = require("node:fs");
|
|
9
9
|
const { execFileSync } = require("node:child_process");
|
|
10
10
|
const { constants: osConstants } = require("node:os");
|
|
11
11
|
|
|
@@ -18,46 +18,74 @@ function exitCodeForSignal(signal) {
|
|
|
18
18
|
return typeof signalNumber === "number" ? 128 + signalNumber : 1;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
resolve(
|
|
24
|
-
resolve(
|
|
21
|
+
function tsxPackageJsonCandidates(binDir = cwd) {
|
|
22
|
+
return [
|
|
23
|
+
resolve(binDir, "../node_modules/tsx/package.json"),
|
|
24
|
+
resolve(binDir, "../../../node_modules/tsx/package.json"),
|
|
25
25
|
];
|
|
26
|
-
return tsxCandidates.find((c) => existsSync(c));
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
function resolveLocalTsx(
|
|
29
|
+
binDir = cwd,
|
|
30
|
+
exists = existsSync,
|
|
31
|
+
readFile = readFileSync,
|
|
32
|
+
) {
|
|
33
|
+
for (const pkgPath of tsxPackageJsonCandidates(binDir)) {
|
|
34
|
+
if (!exists(pkgPath)) continue;
|
|
35
|
+
let bin;
|
|
36
|
+
try {
|
|
37
|
+
const pkg = JSON.parse(readFile(pkgPath, "utf8"));
|
|
38
|
+
bin = typeof pkg.bin === "string" ? pkg.bin : pkg.bin && pkg.bin.tsx;
|
|
39
|
+
} catch {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (typeof bin !== "string" || bin.length === 0) continue;
|
|
43
|
+
const cli = resolve(dirname(pkgPath), bin);
|
|
44
|
+
if (exists(cli)) return cli;
|
|
45
|
+
}
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function runCli() {
|
|
30
50
|
if (existsSync(distEntry)) {
|
|
31
51
|
execFileSync(process.execPath, [distEntry, ...process.argv.slice(2)], {
|
|
32
52
|
stdio: "inherit",
|
|
33
53
|
env: { ...process.env, REMNIC_CLI_BIN: "1" },
|
|
34
54
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
`tsx runtime is missing for source CLI entrypoint: ${srcEntry}. Install dependencies or rebuild @remnic/cli.`,
|
|
42
|
-
);
|
|
43
|
-
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const hasSrcEntry = existsSync(srcEntry);
|
|
58
|
+
const tsxCli = hasSrcEntry ? resolveLocalTsx() : undefined;
|
|
59
|
+
if (!tsxCli) {
|
|
60
|
+
if (hasSrcEntry) {
|
|
44
61
|
throw new Error(
|
|
45
|
-
`
|
|
62
|
+
`tsx runtime is missing for source CLI entrypoint: ${srcEntry}. Install dependencies or rebuild @remnic/cli.`,
|
|
46
63
|
);
|
|
47
64
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
});
|
|
65
|
+
throw new Error(
|
|
66
|
+
`built CLI entrypoint is missing: ${distEntry}. Rebuild or reinstall @remnic/cli.`,
|
|
67
|
+
);
|
|
52
68
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
process.
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
69
|
+
execFileSync(process.execPath, [tsxCli, srcEntry, ...process.argv.slice(2)], {
|
|
70
|
+
stdio: "inherit",
|
|
71
|
+
env: { ...process.env, REMNIC_CLI_BIN: "1" },
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (require.main === module) {
|
|
76
|
+
try {
|
|
77
|
+
runCli();
|
|
78
|
+
} catch (err) {
|
|
79
|
+
if (err.status != null) {
|
|
80
|
+
process.exitCode = err.status;
|
|
81
|
+
} else if (err.signal) {
|
|
82
|
+
process.exitCode = exitCodeForSignal(err.signal);
|
|
83
|
+
process.kill(process.pid, err.signal);
|
|
84
|
+
} else {
|
|
85
|
+
process.stderr.write(`Fatal: ${err.message}\n`);
|
|
86
|
+
process.exitCode = 1;
|
|
87
|
+
}
|
|
62
88
|
}
|
|
63
89
|
}
|
|
90
|
+
|
|
91
|
+
module.exports = { tsxPackageJsonCandidates, resolveLocalTsx };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/cli",
|
|
3
|
-
"version": "9.69.
|
|
3
|
+
"version": "9.69.84",
|
|
4
4
|
"description": "CLI for Remnic memory — init, query, doctor, daemon management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,26 +26,26 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"yaml": "^2.4.2",
|
|
29
|
-
"@remnic/
|
|
30
|
-
"@remnic/
|
|
31
|
-
"@remnic/core": "^9.69.
|
|
29
|
+
"@remnic/plugin-pi": "^9.69.84",
|
|
30
|
+
"@remnic/server": "^9.69.84",
|
|
31
|
+
"@remnic/core": "^9.69.84"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@remnic/bench": "^9.69.
|
|
35
|
-
"@remnic/plugin-openclaw": "^9.69.
|
|
36
|
-
"@remnic/export-weclone": "^9.69.
|
|
37
|
-
"@remnic/import-weclone": "^9.69.
|
|
38
|
-
"@remnic/import-chatgpt": "^9.69.
|
|
39
|
-
"@remnic/import-claude": "^9.69.
|
|
40
|
-
"@remnic/import-gemini": "^9.69.
|
|
41
|
-
"@remnic/import-lossless-claw": "^9.69.
|
|
42
|
-
"@remnic/import-mem0": "^9.69.
|
|
43
|
-
"@remnic/import-supermemory": "^9.69.
|
|
44
|
-
"@remnic/import-okf": "^9.69.
|
|
45
|
-
"@remnic/connector-limitless": "^9.69.
|
|
46
|
-
"@remnic/connector-bee": "^9.69.
|
|
47
|
-
"@remnic/connector-omi": "^9.69.
|
|
48
|
-
"@remnic/capture-audio": "^9.69.
|
|
34
|
+
"@remnic/bench": "^9.69.84",
|
|
35
|
+
"@remnic/plugin-openclaw": "^9.69.84",
|
|
36
|
+
"@remnic/export-weclone": "^9.69.84",
|
|
37
|
+
"@remnic/import-weclone": "^9.69.84",
|
|
38
|
+
"@remnic/import-chatgpt": "^9.69.84",
|
|
39
|
+
"@remnic/import-claude": "^9.69.84",
|
|
40
|
+
"@remnic/import-gemini": "^9.69.84",
|
|
41
|
+
"@remnic/import-lossless-claw": "^9.69.84",
|
|
42
|
+
"@remnic/import-mem0": "^9.69.84",
|
|
43
|
+
"@remnic/import-supermemory": "^9.69.84",
|
|
44
|
+
"@remnic/import-okf": "^9.69.84",
|
|
45
|
+
"@remnic/connector-limitless": "^9.69.84",
|
|
46
|
+
"@remnic/connector-bee": "^9.69.84",
|
|
47
|
+
"@remnic/connector-omi": "^9.69.84",
|
|
48
|
+
"@remnic/capture-audio": "^9.69.84"
|
|
49
49
|
},
|
|
50
50
|
"peerDependenciesMeta": {
|
|
51
51
|
"@remnic/bench": {
|
|
@@ -97,19 +97,19 @@
|
|
|
97
97
|
"devDependencies": {
|
|
98
98
|
"tsup": "^8.5.1",
|
|
99
99
|
"typescript": "^5.9.3",
|
|
100
|
-
"@remnic/
|
|
101
|
-
"@remnic/
|
|
102
|
-
"@remnic/
|
|
103
|
-
"@remnic/import-
|
|
104
|
-
"@remnic/import-
|
|
105
|
-
"@remnic/import-
|
|
106
|
-
"@remnic/import-lossless-claw": "9.69.
|
|
107
|
-
"@remnic/
|
|
108
|
-
"@remnic/
|
|
109
|
-
"@remnic/import-mem0": "9.69.
|
|
110
|
-
"@remnic/connector-
|
|
111
|
-
"@remnic/connector-
|
|
112
|
-
"@remnic/
|
|
100
|
+
"@remnic/bench": "9.69.84",
|
|
101
|
+
"@remnic/plugin-openclaw": "9.69.84",
|
|
102
|
+
"@remnic/export-weclone": "9.69.84",
|
|
103
|
+
"@remnic/import-weclone": "9.69.84",
|
|
104
|
+
"@remnic/import-chatgpt": "9.69.84",
|
|
105
|
+
"@remnic/import-gemini": "9.69.84",
|
|
106
|
+
"@remnic/import-lossless-claw": "9.69.84",
|
|
107
|
+
"@remnic/import-claude": "9.69.84",
|
|
108
|
+
"@remnic/import-supermemory": "9.69.84",
|
|
109
|
+
"@remnic/import-mem0": "9.69.84",
|
|
110
|
+
"@remnic/connector-limitless": "9.69.84",
|
|
111
|
+
"@remnic/connector-omi": "9.69.84",
|
|
112
|
+
"@remnic/connector-bee": "9.69.84"
|
|
113
113
|
},
|
|
114
114
|
"license": "MIT",
|
|
115
115
|
"repository": {
|