@xmemo/client 0.4.146 → 0.4.148
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/package.json +1 -1
- package/src/cli.js +27 -8
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -11,7 +11,7 @@ const PACKAGE_NAME = '@xmemo/client';
|
|
|
11
11
|
const FALLBACK_PACKAGE_NAME = '@yonro/xmemo-client';
|
|
12
12
|
const COMMAND_NAME = 'xmemo';
|
|
13
13
|
const LEGACY_COMMAND_NAME = 'memory-os';
|
|
14
|
-
const CLI_VERSION = '0.4.
|
|
14
|
+
const CLI_VERSION = '0.4.148';
|
|
15
15
|
const DEFAULT_SERVICE_URL = 'https://xmemo.dev';
|
|
16
16
|
const TOKEN_ENV_VAR = 'XMEMO_KEY';
|
|
17
17
|
const LEGACY_TOKEN_ENV_VAR = 'MEMORY_OS_MCP_TOKEN';
|
|
@@ -583,7 +583,7 @@ async function setupCommand(args, io) {
|
|
|
583
583
|
|
|
584
584
|
if (setupAll) {
|
|
585
585
|
setupPlan.detectedClients = [];
|
|
586
|
-
const scanIds = ['codex', 'cursor', 'copilot-cli', 'gemini-cli', 'antigravity', 'antigravity-ide', 'antigravity2', 'antigravity-cli', 'windsurf', 'cline', 'continue', 'claude-desktop'];
|
|
586
|
+
const scanIds = ['codex', 'cursor', 'copilot-cli', 'gemini-cli', 'antigravity', 'antigravity-ide', 'antigravity2', 'antigravity-cli', 'windsurf', 'cline', 'continue', 'claude-desktop', 'qwen'];
|
|
587
587
|
for (const scanId of scanIds) {
|
|
588
588
|
const detection = await detectClient(scanId, io.env);
|
|
589
589
|
if (detection.detected) {
|
|
@@ -684,9 +684,9 @@ async function profileCommand(args, io) {
|
|
|
684
684
|
const subcommand = args[0] ?? 'help';
|
|
685
685
|
if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
|
|
686
686
|
writeLine(io.stdout, 'Profile commands:');
|
|
687
|
-
writeLine(io.stdout, ` ${COMMAND_NAME} profile install <codex|cursor|gemini|antigravity> [--target <path>] [--dry-run|--json]`);
|
|
688
|
-
writeLine(io.stdout, ` ${COMMAND_NAME} profile status <codex|cursor|gemini|antigravity> [--target <path>] [--json]`);
|
|
689
|
-
writeLine(io.stdout, ` ${COMMAND_NAME} profile uninstall <codex|cursor|gemini|antigravity> [--target <path>] [--json]`);
|
|
687
|
+
writeLine(io.stdout, ` ${COMMAND_NAME} profile install <codex|cursor|gemini|antigravity|qwen> [--target <path>] [--dry-run|--json]`);
|
|
688
|
+
writeLine(io.stdout, ` ${COMMAND_NAME} profile status <codex|cursor|gemini|antigravity|qwen> [--target <path>] [--json]`);
|
|
689
|
+
writeLine(io.stdout, ` ${COMMAND_NAME} profile uninstall <codex|cursor|gemini|antigravity|qwen> [--target <path>] [--json]`);
|
|
690
690
|
writeLine(io.stdout, '');
|
|
691
691
|
writeLine(io.stdout, 'Profile installs are marker-scoped and never write token values.');
|
|
692
692
|
return 0;
|
|
@@ -1654,6 +1654,10 @@ function mcpConfigTemplate(clientId, mcpUrl) {
|
|
|
1654
1654
|
return bearerJsonMcpTemplate(clientId, mcpUrl, claudeJsonConfig(mcpUrl));
|
|
1655
1655
|
}
|
|
1656
1656
|
|
|
1657
|
+
if (clientId === 'qwen') {
|
|
1658
|
+
return bearerJsonMcpTemplate(clientId, mcpUrl, qwenJsonConfig(mcpUrl));
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1657
1661
|
return {
|
|
1658
1662
|
client: clientId,
|
|
1659
1663
|
serverName: MCP_SERVER_NAME,
|
|
@@ -2087,13 +2091,28 @@ function profileClientConfig(clientId) {
|
|
|
2087
2091
|
return path.join(userHome(env), '.gemini', 'antigravity', 'MEMORY.md');
|
|
2088
2092
|
},
|
|
2089
2093
|
authInstruction: 'Use the client-managed MCP OAuth credential; do not paste token values into prompts, config files, or logs.'
|
|
2094
|
+
},
|
|
2095
|
+
qwen: {
|
|
2096
|
+
label: 'Qwen',
|
|
2097
|
+
setupAlias: 'qwen',
|
|
2098
|
+
profileVersion: 'qwen-mcp-depth-v1',
|
|
2099
|
+
markerStart: `<!-- ${PROFILE_MARKER_PREFIX}:qwen:start -->`,
|
|
2100
|
+
markerEnd: `<!-- ${PROFILE_MARKER_PREFIX}:qwen:end -->`,
|
|
2101
|
+
defaultTarget: (env) => {
|
|
2102
|
+
const isTest = env.HOME && (env.HOME.includes('memory-os-') || env.HOME.includes('test'));
|
|
2103
|
+
if (!isTest && (existsSync(path.join(process.cwd(), '.git')) || existsSync(path.join(process.cwd(), 'package.json')))) {
|
|
2104
|
+
return path.join(process.cwd(), 'QWEN.md');
|
|
2105
|
+
}
|
|
2106
|
+
return path.join(userHome(env), '.qwen', 'QWEN.md');
|
|
2107
|
+
},
|
|
2108
|
+
authInstruction: `Keep XMemo authentication through the ${TOKEN_ENV_VAR} environment variable; do not paste token values into prompts, config files, or logs.`
|
|
2090
2109
|
}
|
|
2091
2110
|
};
|
|
2092
2111
|
return profileConfigs[clientId] ?? null;
|
|
2093
2112
|
}
|
|
2094
2113
|
|
|
2095
2114
|
function supportedProfileClientIds() {
|
|
2096
|
-
return ['codex', 'cursor', 'gemini', 'antigravity'];
|
|
2115
|
+
return ['codex', 'cursor', 'gemini', 'antigravity', 'qwen'];
|
|
2097
2116
|
}
|
|
2098
2117
|
|
|
2099
2118
|
function defaultProfileTarget(clientId, env) {
|
|
@@ -2902,7 +2921,7 @@ function supportedMcpClientIds() {
|
|
|
2902
2921
|
}
|
|
2903
2922
|
|
|
2904
2923
|
function supportedSetupClientIds() {
|
|
2905
|
-
return ['codex', 'cursor', 'copilot', 'gemini', 'antigravity', 'antigravity-ide', 'antigravity2', 'antigravity-cli', 'windsurf', 'cline', 'continue', 'claude'];
|
|
2924
|
+
return ['codex', 'cursor', 'copilot', 'gemini', 'antigravity', 'antigravity-ide', 'antigravity2', 'antigravity-cli', 'windsurf', 'cline', 'continue', 'claude', 'qwen'];
|
|
2906
2925
|
}
|
|
2907
2926
|
|
|
2908
2927
|
function usesClientOAuth(clientId) {
|
|
@@ -3723,7 +3742,7 @@ function defaultQwenConfigPath(env) {
|
|
|
3723
3742
|
|
|
3724
3743
|
function qwenJsonServerConfig(mcpUrl, identity = envReferenceIdentity('qwen')) {
|
|
3725
3744
|
return {
|
|
3726
|
-
|
|
3745
|
+
httpUrl: mcpUrl,
|
|
3727
3746
|
headers: {
|
|
3728
3747
|
Authorization: `Bearer \${env:${TOKEN_ENV_VAR}}`,
|
|
3729
3748
|
[AGENT_ID_HEADER]: identity.agentId,
|