@pyxmate/memory 1.1.0 → 1.1.2
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/dist/cli/pyx-mem.mjs
CHANGED
|
@@ -611,7 +611,7 @@ function createProxyServer(client, version) {
|
|
|
611
611
|
return server;
|
|
612
612
|
}
|
|
613
613
|
async function runMcpProxyServer(opts) {
|
|
614
|
-
const version = opts.version ?? (true ? "1.1.
|
|
614
|
+
const version = opts.version ?? (true ? "1.1.2" : "0.0.0-dev");
|
|
615
615
|
const read = await opts.readCredentials();
|
|
616
616
|
if (!read.ok) {
|
|
617
617
|
const text = read.result.content.map((c) => c.type === "text" ? c.text : "").join(" ").trim();
|
|
@@ -1459,7 +1459,7 @@ var ALL_TOOL_NAMES = ALL_TOOLS.map((t) => t.name);
|
|
|
1459
1459
|
// src/mcp/server.ts
|
|
1460
1460
|
async function runMcpServer(opts) {
|
|
1461
1461
|
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
1462
|
-
const version = opts.version ?? (true ? "1.1.
|
|
1462
|
+
const version = opts.version ?? (true ? "1.1.2" : "0.0.0-dev");
|
|
1463
1463
|
const server = new McpServer(
|
|
1464
1464
|
{ name: "pyx-memory", version },
|
|
1465
1465
|
{ instructions: PYX_MEMORY_INSTRUCTIONS, capabilities: { tools: {}, prompts: {} } }
|
|
@@ -1627,22 +1627,28 @@ function indent(text) {
|
|
|
1627
1627
|
// src/cli/commands/mcp-install.ts
|
|
1628
1628
|
var VALID_SCOPES = /* @__PURE__ */ new Set(["local", "user", "project"]);
|
|
1629
1629
|
var SERVER_NAME = "pyx-memory";
|
|
1630
|
-
|
|
1630
|
+
function pyxMemArgs(remote) {
|
|
1631
|
+
return remote ? ["mcp", "--remote"] : ["mcp"];
|
|
1632
|
+
}
|
|
1633
|
+
function mcpEntry(remote) {
|
|
1634
|
+
return { command: "pyx-mem", args: pyxMemArgs(remote) };
|
|
1635
|
+
}
|
|
1631
1636
|
function mcpInstallClaudeCodeCommand(opts = {}) {
|
|
1632
1637
|
const scope = opts.scope ?? "local";
|
|
1633
1638
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1639
|
+
const remote = opts.remote ?? false;
|
|
1634
1640
|
const spawnSync = opts._spawnSync ?? nodeSpawnSync;
|
|
1635
1641
|
const probe = spawnSync("claude", ["--version"], { stdio: "pipe" });
|
|
1636
1642
|
if (probe.error || probe.status !== 0) {
|
|
1637
|
-
printClaudeCodeManualInstructions(scope);
|
|
1643
|
+
printClaudeCodeManualInstructions(scope, remote);
|
|
1638
1644
|
return EXIT.OK;
|
|
1639
1645
|
}
|
|
1640
|
-
const cmd = ["mcp", "add", SERVER_NAME, "-s", scope, "--", "pyx-mem",
|
|
1646
|
+
const cmd = ["mcp", "add", SERVER_NAME, "-s", scope, "--", "pyx-mem", ...pyxMemArgs(remote)];
|
|
1641
1647
|
const res = spawnSync("claude", cmd, { stdio: "inherit" });
|
|
1642
1648
|
if (res.status !== 0) {
|
|
1643
1649
|
process.stderr.write(`\`claude ${cmd.join(" ")}\` exited with code ${res.status ?? "null"}.
|
|
1644
1650
|
`);
|
|
1645
|
-
printClaudeCodeManualInstructions(scope);
|
|
1651
|
+
printClaudeCodeManualInstructions(scope, remote);
|
|
1646
1652
|
return EXIT.USAGE;
|
|
1647
1653
|
}
|
|
1648
1654
|
process.stdout.write(
|
|
@@ -1653,20 +1659,16 @@ To populate the knowledge graph, YOU pass entities and relationships (or triples
|
|
|
1653
1659
|
);
|
|
1654
1660
|
return EXIT.OK;
|
|
1655
1661
|
}
|
|
1656
|
-
function printClaudeCodeManualInstructions(scope) {
|
|
1662
|
+
function printClaudeCodeManualInstructions(scope, remote) {
|
|
1657
1663
|
process.stdout.write(
|
|
1658
1664
|
[
|
|
1659
1665
|
"The `claude` CLI is not on PATH, or the install command failed.",
|
|
1660
1666
|
"",
|
|
1661
1667
|
"Run this once Claude Code is installed:",
|
|
1662
|
-
` claude mcp add ${SERVER_NAME} -s ${scope} -- pyx-mem
|
|
1668
|
+
` claude mcp add ${SERVER_NAME} -s ${scope} -- pyx-mem ${pyxMemArgs(remote).join(" ")}`,
|
|
1663
1669
|
"",
|
|
1664
1670
|
"Or add this entry manually to your Claude Code MCP config (.mcp.json):",
|
|
1665
|
-
JSON.stringify(
|
|
1666
|
-
{ mcpServers: { [SERVER_NAME]: { command: "pyx-mem", args: ["mcp"] } } },
|
|
1667
|
-
null,
|
|
1668
|
-
2
|
|
1669
|
-
),
|
|
1671
|
+
JSON.stringify({ mcpServers: { [SERVER_NAME]: mcpEntry(remote) } }, null, 2),
|
|
1670
1672
|
"",
|
|
1671
1673
|
"Do NOT add your pyx-memory API key here. Run `pyx-mem login` to store it in the OS credential store.",
|
|
1672
1674
|
""
|
|
@@ -1676,19 +1678,20 @@ function printClaudeCodeManualInstructions(scope) {
|
|
|
1676
1678
|
function mcpInstallCodexCommand(opts = {}) {
|
|
1677
1679
|
const scope = opts.scope ?? "user";
|
|
1678
1680
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1681
|
+
const remote = opts.remote ?? false;
|
|
1679
1682
|
const spawnSync = opts._spawnSync ?? nodeSpawnSync;
|
|
1680
1683
|
const home = opts._homeDir ?? homedir();
|
|
1681
1684
|
const probe = spawnSync("codex", ["--version"], { stdio: "pipe" });
|
|
1682
1685
|
if (probe.error || probe.status !== 0) {
|
|
1683
|
-
printCodexManualInstructions(home);
|
|
1686
|
+
printCodexManualInstructions(home, remote);
|
|
1684
1687
|
return EXIT.OK;
|
|
1685
1688
|
}
|
|
1686
|
-
const cmd = ["mcp", "add", SERVER_NAME, "--", "pyx-mem",
|
|
1689
|
+
const cmd = ["mcp", "add", SERVER_NAME, "--", "pyx-mem", ...pyxMemArgs(remote)];
|
|
1687
1690
|
const res = spawnSync("codex", cmd, { stdio: "inherit" });
|
|
1688
1691
|
if (res.status !== 0) {
|
|
1689
1692
|
process.stderr.write(`\`codex ${cmd.join(" ")}\` exited with code ${res.status ?? "null"}.
|
|
1690
1693
|
`);
|
|
1691
|
-
printCodexManualInstructions(home);
|
|
1694
|
+
printCodexManualInstructions(home, remote);
|
|
1692
1695
|
return EXIT.USAGE;
|
|
1693
1696
|
}
|
|
1694
1697
|
process.stdout.write(
|
|
@@ -1698,20 +1701,20 @@ Restart Codex CLI to make the tools available. No API key was written to config.
|
|
|
1698
1701
|
);
|
|
1699
1702
|
return EXIT.OK;
|
|
1700
1703
|
}
|
|
1701
|
-
function printCodexManualInstructions(home) {
|
|
1704
|
+
function printCodexManualInstructions(home, remote) {
|
|
1702
1705
|
const configPath = join(home, ".codex", "config.toml");
|
|
1703
1706
|
process.stdout.write(
|
|
1704
1707
|
[
|
|
1705
1708
|
"The `codex` CLI is not on PATH, or the install command failed.",
|
|
1706
1709
|
"",
|
|
1707
1710
|
"Run this once Codex CLI is installed:",
|
|
1708
|
-
` codex mcp add ${SERVER_NAME} -- pyx-mem
|
|
1711
|
+
` codex mcp add ${SERVER_NAME} -- pyx-mem ${pyxMemArgs(remote).join(" ")}`,
|
|
1709
1712
|
"",
|
|
1710
1713
|
`Or add this section manually to ${configPath}:`,
|
|
1711
1714
|
"",
|
|
1712
1715
|
`[mcp_servers.${SERVER_NAME}]`,
|
|
1713
1716
|
`command = "pyx-mem"`,
|
|
1714
|
-
`args =
|
|
1717
|
+
`args = ${JSON.stringify(pyxMemArgs(remote))}`,
|
|
1715
1718
|
"",
|
|
1716
1719
|
"Do NOT add your pyx-memory API key here. Run `pyx-mem login` to store it in the OS credential store.",
|
|
1717
1720
|
""
|
|
@@ -1723,11 +1726,12 @@ function mcpInstallCursorCommand(opts = {}) {
|
|
|
1723
1726
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1724
1727
|
const home = opts._homeDir ?? homedir();
|
|
1725
1728
|
const filePath = scope === "project" ? join(process.cwd(), ".cursor", "mcp.json") : join(home, ".cursor", "mcp.json");
|
|
1726
|
-
return writeJsonAndReport(filePath, "Cursor");
|
|
1729
|
+
return writeJsonAndReport(filePath, "Cursor", mcpEntry(opts.remote ?? false));
|
|
1727
1730
|
}
|
|
1728
1731
|
function mcpInstallClineCommand(opts = {}) {
|
|
1729
1732
|
const scope = opts.scope ?? "user";
|
|
1730
1733
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1734
|
+
const remote = opts.remote ?? false;
|
|
1731
1735
|
process.stdout.write(
|
|
1732
1736
|
[
|
|
1733
1737
|
"Cline MCP config is managed through the Cline UI in VS Code (the file",
|
|
@@ -1738,11 +1742,7 @@ function mcpInstallClineCommand(opts = {}) {
|
|
|
1738
1742
|
'3. Click "MCP Servers" \u2192 "Configure MCP Servers".',
|
|
1739
1743
|
`4. Add this entry under "mcpServers":`,
|
|
1740
1744
|
"",
|
|
1741
|
-
JSON.stringify(
|
|
1742
|
-
{ mcpServers: { [SERVER_NAME]: { command: "pyx-mem", args: ["mcp"] } } },
|
|
1743
|
-
null,
|
|
1744
|
-
2
|
|
1745
|
-
),
|
|
1745
|
+
JSON.stringify({ mcpServers: { [SERVER_NAME]: mcpEntry(remote) } }, null, 2),
|
|
1746
1746
|
"",
|
|
1747
1747
|
"5. Save the file. Cline will reload the MCP servers automatically.",
|
|
1748
1748
|
"",
|
|
@@ -1755,6 +1755,7 @@ function mcpInstallClineCommand(opts = {}) {
|
|
|
1755
1755
|
function mcpInstallContinueCommand(opts = {}) {
|
|
1756
1756
|
const scope = opts.scope ?? "user";
|
|
1757
1757
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1758
|
+
const remote = opts.remote ?? false;
|
|
1758
1759
|
const home = opts._homeDir ?? homedir();
|
|
1759
1760
|
const yamlPath = join(home, ".continue", "mcpServers", `${SERVER_NAME}.yaml`);
|
|
1760
1761
|
process.stdout.write(
|
|
@@ -1773,7 +1774,7 @@ function mcpInstallContinueCommand(opts = {}) {
|
|
|
1773
1774
|
` - name: ${SERVER_NAME}`,
|
|
1774
1775
|
` command: pyx-mem`,
|
|
1775
1776
|
` args:`,
|
|
1776
|
-
` -
|
|
1777
|
+
...pyxMemArgs(remote).map((arg) => ` - ${arg}`),
|
|
1777
1778
|
"",
|
|
1778
1779
|
"Continue auto-loads new YAML blocks on next chat session \u2014 no restart",
|
|
1779
1780
|
"needed in most setups.",
|
|
@@ -1789,24 +1790,25 @@ function mcpInstallWindsurfCommand(opts = {}) {
|
|
|
1789
1790
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1790
1791
|
const home = opts._homeDir ?? homedir();
|
|
1791
1792
|
const filePath = join(home, ".codeium", "windsurf", "mcp_config.json");
|
|
1792
|
-
return writeJsonAndReport(filePath, "Windsurf");
|
|
1793
|
+
return writeJsonAndReport(filePath, "Windsurf", mcpEntry(opts.remote ?? false));
|
|
1793
1794
|
}
|
|
1794
1795
|
function mcpInstallGeminiCliCommand(opts = {}) {
|
|
1795
1796
|
const scope = opts.scope ?? "user";
|
|
1796
1797
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1798
|
+
const remote = opts.remote ?? false;
|
|
1797
1799
|
const spawnSync = opts._spawnSync ?? nodeSpawnSync;
|
|
1798
1800
|
const home = opts._homeDir ?? homedir();
|
|
1799
1801
|
const probe = spawnSync("gemini", ["--version"], { stdio: "pipe" });
|
|
1800
1802
|
if (probe.error || probe.status !== 0) {
|
|
1801
|
-
return writeJsonAndReport(geminiConfigPath(home, scope), "Gemini CLI");
|
|
1803
|
+
return writeJsonAndReport(geminiConfigPath(home, scope), "Gemini CLI", mcpEntry(remote));
|
|
1802
1804
|
}
|
|
1803
1805
|
const geminiScope = scope === "local" ? "project" : scope;
|
|
1804
|
-
const cmd = ["mcp", "add", "-s", geminiScope, SERVER_NAME, "pyx-mem",
|
|
1806
|
+
const cmd = ["mcp", "add", "-s", geminiScope, SERVER_NAME, "pyx-mem", ...pyxMemArgs(remote)];
|
|
1805
1807
|
const res = spawnSync("gemini", cmd, { stdio: "inherit" });
|
|
1806
1808
|
if (res.status !== 0) {
|
|
1807
1809
|
process.stderr.write(`\`gemini ${cmd.join(" ")}\` exited with code ${res.status ?? "null"}.
|
|
1808
1810
|
`);
|
|
1809
|
-
return writeJsonAndReport(geminiConfigPath(home, scope), "Gemini CLI");
|
|
1811
|
+
return writeJsonAndReport(geminiConfigPath(home, scope), "Gemini CLI", mcpEntry(remote));
|
|
1810
1812
|
}
|
|
1811
1813
|
process.stdout.write(
|
|
1812
1814
|
`Installed pyx-memory MCP server in Gemini CLI (scope: ${geminiScope}).
|
|
@@ -1823,7 +1825,7 @@ function mcpInstallPiCommand(opts = {}) {
|
|
|
1823
1825
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1824
1826
|
const home = opts._homeDir ?? homedir();
|
|
1825
1827
|
const filePath = scope === "user" ? join(home, ".pi", "agent", "mcp.json") : join(process.cwd(), ".pi", "mcp.json");
|
|
1826
|
-
return writeJsonAndReport(filePath, "Pi", {
|
|
1828
|
+
return writeJsonAndReport(filePath, "Pi", mcpEntry(opts.remote ?? false), {
|
|
1827
1829
|
prereq: "pi has no native MCP support \u2014 install the third-party adapter once:\n pi install npm:pi-mcp-adapter"
|
|
1828
1830
|
});
|
|
1829
1831
|
}
|
|
@@ -1832,18 +1834,19 @@ function mcpInstallOhMyPiCommand(opts = {}) {
|
|
|
1832
1834
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1833
1835
|
const home = opts._homeDir ?? homedir();
|
|
1834
1836
|
const filePath = scope === "user" ? join(home, ".omp", "agent", "mcp.json") : join(process.cwd(), ".omp", "mcp.json");
|
|
1835
|
-
return writeJsonAndReport(filePath, "oh-my-pi");
|
|
1837
|
+
return writeJsonAndReport(filePath, "oh-my-pi", mcpEntry(opts.remote ?? false));
|
|
1836
1838
|
}
|
|
1837
1839
|
function mcpInstallOpenClawCommand(opts = {}) {
|
|
1838
1840
|
const scope = opts.scope ?? "user";
|
|
1839
1841
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1842
|
+
const remote = opts.remote ?? false;
|
|
1840
1843
|
const spawnSync = opts._spawnSync ?? nodeSpawnSync;
|
|
1841
1844
|
const probe = spawnSync("openclaw", ["--version"], { stdio: "pipe" });
|
|
1842
1845
|
if (probe.error || probe.status !== 0) {
|
|
1843
|
-
printOpenClawManualInstructions();
|
|
1846
|
+
printOpenClawManualInstructions(remote);
|
|
1844
1847
|
return EXIT.OK;
|
|
1845
1848
|
}
|
|
1846
|
-
const entryJson = JSON.stringify(
|
|
1849
|
+
const entryJson = JSON.stringify(mcpEntry(remote));
|
|
1847
1850
|
const cmd = ["mcp", "set", SERVER_NAME, entryJson];
|
|
1848
1851
|
const res = spawnSync("openclaw", cmd, { stdio: "inherit" });
|
|
1849
1852
|
if (res.status !== 0) {
|
|
@@ -1851,7 +1854,7 @@ function mcpInstallOpenClawCommand(opts = {}) {
|
|
|
1851
1854
|
`\`openclaw ${cmd.join(" ")}\` exited with code ${res.status ?? "null"}.
|
|
1852
1855
|
`
|
|
1853
1856
|
);
|
|
1854
|
-
printOpenClawManualInstructions();
|
|
1857
|
+
printOpenClawManualInstructions(remote);
|
|
1855
1858
|
return EXIT.USAGE;
|
|
1856
1859
|
}
|
|
1857
1860
|
process.stdout.write(
|
|
@@ -1861,8 +1864,9 @@ Restart OpenClaw to make the tools available. No API key was written to openclaw
|
|
|
1861
1864
|
);
|
|
1862
1865
|
return EXIT.OK;
|
|
1863
1866
|
}
|
|
1864
|
-
function printOpenClawManualInstructions() {
|
|
1865
|
-
const
|
|
1867
|
+
function printOpenClawManualInstructions(remote) {
|
|
1868
|
+
const entry = mcpEntry(remote);
|
|
1869
|
+
const entryJson = JSON.stringify(entry);
|
|
1866
1870
|
process.stdout.write(
|
|
1867
1871
|
[
|
|
1868
1872
|
"The `openclaw` CLI is not on PATH, or the install command failed.",
|
|
@@ -1873,7 +1877,7 @@ function printOpenClawManualInstructions() {
|
|
|
1873
1877
|
"Or add this entry manually under `mcp.servers` in your OpenClaw config",
|
|
1874
1878
|
"(run `openclaw config file` to print the active config path):",
|
|
1875
1879
|
"",
|
|
1876
|
-
JSON.stringify({ mcp: { servers: { [SERVER_NAME]:
|
|
1880
|
+
JSON.stringify({ mcp: { servers: { [SERVER_NAME]: entry } } }, null, 2),
|
|
1877
1881
|
"",
|
|
1878
1882
|
"Do NOT add your pyx-memory API key here. Run `pyx-mem login` to store it in the OS credential store.",
|
|
1879
1883
|
""
|
|
@@ -1883,18 +1887,19 @@ function printOpenClawManualInstructions() {
|
|
|
1883
1887
|
function mcpInstallHermesCommand(opts = {}) {
|
|
1884
1888
|
const scope = opts.scope ?? "user";
|
|
1885
1889
|
if (!validateScope(scope)) return EXIT.USAGE;
|
|
1890
|
+
const remote = opts.remote ?? false;
|
|
1886
1891
|
const spawnSync = opts._spawnSync ?? nodeSpawnSync;
|
|
1887
1892
|
const probe = spawnSync("hermes", ["--version"], { stdio: "pipe" });
|
|
1888
1893
|
if (probe.error || probe.status !== 0) {
|
|
1889
|
-
printHermesManualInstructions();
|
|
1894
|
+
printHermesManualInstructions(remote);
|
|
1890
1895
|
return EXIT.OK;
|
|
1891
1896
|
}
|
|
1892
|
-
const cmd = ["mcp", "add", SERVER_NAME, "--command", "pyx-mem", "--args",
|
|
1897
|
+
const cmd = ["mcp", "add", SERVER_NAME, "--command", "pyx-mem", "--args", ...pyxMemArgs(remote)];
|
|
1893
1898
|
const res = spawnSync("hermes", cmd, { stdio: "inherit" });
|
|
1894
1899
|
if (res.status !== 0) {
|
|
1895
1900
|
process.stderr.write(`\`hermes ${cmd.join(" ")}\` exited with code ${res.status ?? "null"}.
|
|
1896
1901
|
`);
|
|
1897
|
-
printHermesManualInstructions();
|
|
1902
|
+
printHermesManualInstructions(remote);
|
|
1898
1903
|
return EXIT.USAGE;
|
|
1899
1904
|
}
|
|
1900
1905
|
process.stdout.write(
|
|
@@ -1904,13 +1909,13 @@ Restart Hermes to make the tools available. No API key was written to config.yam
|
|
|
1904
1909
|
);
|
|
1905
1910
|
return EXIT.OK;
|
|
1906
1911
|
}
|
|
1907
|
-
function printHermesManualInstructions() {
|
|
1912
|
+
function printHermesManualInstructions(remote) {
|
|
1908
1913
|
process.stdout.write(
|
|
1909
1914
|
[
|
|
1910
1915
|
"The `hermes` CLI is not on PATH, or the install command failed.",
|
|
1911
1916
|
"",
|
|
1912
1917
|
"Run this once Hermes is installed:",
|
|
1913
|
-
` hermes mcp add ${SERVER_NAME} --command pyx-mem --args
|
|
1918
|
+
` hermes mcp add ${SERVER_NAME} --command pyx-mem --args ${pyxMemArgs(remote).join(" ")}`,
|
|
1914
1919
|
"",
|
|
1915
1920
|
"Or add this block under `mcp_servers:` in your Hermes config",
|
|
1916
1921
|
"(typically ~/.hermes/config.yaml):",
|
|
@@ -1918,7 +1923,7 @@ function printHermesManualInstructions() {
|
|
|
1918
1923
|
`${SERVER_NAME}:`,
|
|
1919
1924
|
" command: pyx-mem",
|
|
1920
1925
|
" args:",
|
|
1921
|
-
|
|
1926
|
+
...pyxMemArgs(remote).map((arg) => ` - ${arg}`),
|
|
1922
1927
|
"",
|
|
1923
1928
|
"Do NOT add your pyx-memory API key here. Run `pyx-mem login` to store it in the OS credential store.",
|
|
1924
1929
|
""
|
|
@@ -1931,11 +1936,11 @@ function validateScope(scope) {
|
|
|
1931
1936
|
`);
|
|
1932
1937
|
return false;
|
|
1933
1938
|
}
|
|
1934
|
-
function writeJsonAndReport(filePath, agentLabel, opts = {}) {
|
|
1939
|
+
function writeJsonAndReport(filePath, agentLabel, entry, opts = {}) {
|
|
1935
1940
|
const result = mergeWriteJsonMcpEntry({
|
|
1936
1941
|
filePath,
|
|
1937
1942
|
serverName: SERVER_NAME,
|
|
1938
|
-
entry
|
|
1943
|
+
entry
|
|
1939
1944
|
});
|
|
1940
1945
|
const stream = result.exitCode === EXIT.OK ? process.stdout : process.stderr;
|
|
1941
1946
|
stream.write(result.message);
|
|
@@ -2187,8 +2192,11 @@ Commands:
|
|
|
2187
2192
|
mcp [--remote] Start stdio MCP server. --remote proxies to the hosted
|
|
2188
2193
|
server so tools + instructions stay server-owned
|
|
2189
2194
|
(zero-touch updates; key stays in the keychain).
|
|
2190
|
-
mcp install <target> [--scope user|local|project]
|
|
2195
|
+
mcp install <target> [--scope user|local|project] [--remote]
|
|
2191
2196
|
Install pyx-memory MCP config for your AI agent.
|
|
2197
|
+
--remote installs the hosted thin-proxy (zero-touch
|
|
2198
|
+
updates; key stays in the keychain) instead of the
|
|
2199
|
+
bundled stdio server.
|
|
2192
2200
|
Targets: claude-code, codex, cursor, cline, continue, windsurf, gemini-cli, pi, oh-my-pi, openclaw, hermes.
|
|
2193
2201
|
|
|
2194
2202
|
Notes:
|
|
@@ -2256,7 +2264,7 @@ var INSTALL_TARGETS = {
|
|
|
2256
2264
|
hermes: mcpInstallHermesCommand
|
|
2257
2265
|
};
|
|
2258
2266
|
var VALID_TARGETS = Object.keys(INSTALL_TARGETS);
|
|
2259
|
-
function runMcpInstall(target, scope) {
|
|
2267
|
+
function runMcpInstall(target, scope, remote) {
|
|
2260
2268
|
if (target === void 0 || !Object.hasOwn(INSTALL_TARGETS, target)) {
|
|
2261
2269
|
process.stderr.write(
|
|
2262
2270
|
`Error: unknown install target \`${target ?? ""}\`. Expected: ${VALID_TARGETS.join(", ")}.
|
|
@@ -2265,14 +2273,14 @@ function runMcpInstall(target, scope) {
|
|
|
2265
2273
|
return EXIT.USAGE;
|
|
2266
2274
|
}
|
|
2267
2275
|
const handler = INSTALL_TARGETS[target];
|
|
2268
|
-
return handler({ scope });
|
|
2276
|
+
return handler({ scope, remote });
|
|
2269
2277
|
}
|
|
2270
2278
|
function runMcpCommand(parsed) {
|
|
2271
2279
|
if (parsed.subcommand === void 0) return mcpCommand({ remote: parsed.flags.remote === true });
|
|
2272
2280
|
if (parsed.subcommand === "install") {
|
|
2273
2281
|
const target = parsed.positional[0];
|
|
2274
2282
|
const scope = typeof parsed.flags.scope === "string" ? parsed.flags.scope : void 0;
|
|
2275
|
-
return runMcpInstall(target, scope);
|
|
2283
|
+
return runMcpInstall(target, scope, parsed.flags.remote === true);
|
|
2276
2284
|
}
|
|
2277
2285
|
process.stderr.write(
|
|
2278
2286
|
`Error: unknown subcommand \`mcp ${parsed.subcommand}\`. Run \`pyx-mem --help\`.
|
package/dist/dashboard.mjs
CHANGED
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
toGraphologyFormat,
|
|
12
12
|
transformGraphData,
|
|
13
13
|
unreachableHealth
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-3PBLTOBR.mjs";
|
|
15
|
+
import "./chunk-3SDKJ5TB.mjs";
|
|
16
16
|
import "./chunk-X6AYWXW7.mjs";
|
|
17
17
|
export {
|
|
18
18
|
DashboardClient,
|
package/dist/index.mjs
CHANGED
package/dist/react.mjs
CHANGED
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
toGraphologyFormat,
|
|
12
12
|
transformGraphData,
|
|
13
13
|
unreachableHealth
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-3PBLTOBR.mjs";
|
|
15
|
+
import "./chunk-3SDKJ5TB.mjs";
|
|
16
16
|
import "./chunk-X6AYWXW7.mjs";
|
|
17
17
|
|
|
18
18
|
// ../dashboard/src/hooks/use-consolidation-log.ts
|