@cplace/test-mcp-server 0.1.14 → 1.0.0
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/README.md +275 -75
- package/dist/api.d.ts +4 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/conditional-registration.d.ts.map +1 -1
- package/dist/conditional-registration.js +21 -3
- package/dist/conditional-registration.js.map +1 -1
- package/dist/index.js +82 -99
- package/dist/index.js.map +1 -1
- package/dist/preference-file.d.ts +16 -0
- package/dist/preference-file.d.ts.map +1 -0
- package/dist/preference-file.js +133 -0
- package/dist/preference-file.js.map +1 -0
- package/dist/profiles.d.ts +1 -3
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +60 -107
- package/dist/profiles.js.map +1 -1
- package/dist/searchConversion.d.ts.map +1 -1
- package/dist/searchConversion.js +18 -5
- package/dist/searchConversion.js.map +1 -1
- package/dist/searchSchema.d.ts +25 -25
- package/dist/searchSchema.d.ts.map +1 -1
- package/dist/searchSchema.js +5 -5
- package/dist/searchSchema.js.map +1 -1
- package/dist/token-hashing.d.ts +3 -0
- package/dist/token-hashing.d.ts.map +1 -0
- package/dist/token-hashing.js +18 -0
- package/dist/token-hashing.js.map +1 -0
- package/dist/tool-metadata.d.ts +2 -0
- package/dist/tool-metadata.d.ts.map +1 -0
- package/dist/tool-metadata.js +43 -0
- package/dist/tool-metadata.js.map +1 -0
- package/dist/tools/change-listeners.d.ts +30 -0
- package/dist/tools/change-listeners.d.ts.map +1 -1
- package/dist/tools/change-listeners.js +24 -18
- package/dist/tools/change-listeners.js.map +1 -1
- package/dist/tools/common-schemas.d.ts +2 -0
- package/dist/tools/common-schemas.d.ts.map +1 -1
- package/dist/tools/common-schemas.js +16 -0
- package/dist/tools/common-schemas.js.map +1 -1
- package/dist/tools/csv-export.d.ts +1849 -0
- package/dist/tools/csv-export.d.ts.map +1 -0
- package/dist/tools/csv-export.js +61 -0
- package/dist/tools/csv-export.js.map +1 -0
- package/dist/tools/generic-layouts.d.ts +332 -0
- package/dist/tools/generic-layouts.d.ts.map +1 -0
- package/dist/tools/generic-layouts.js +490 -0
- package/dist/tools/generic-layouts.js.map +1 -0
- package/dist/tools/get-operations.d.ts +16 -0
- package/dist/tools/get-operations.d.ts.map +1 -0
- package/dist/tools/get-operations.js +63 -0
- package/dist/tools/get-operations.js.map +1 -0
- package/dist/tools/pages.d.ts +55 -0
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +217 -209
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/ppt-export-schemas.d.ts +16 -16
- package/dist/tools/ppt-export.d.ts +1493 -0
- package/dist/tools/ppt-export.d.ts.map +1 -1
- package/dist/tools/ppt-export.js +23 -17
- package/dist/tools/ppt-export.js.map +1 -1
- package/dist/tools/profile-management.d.ts +20 -0
- package/dist/tools/profile-management.d.ts.map +1 -0
- package/dist/tools/profile-management.js +250 -0
- package/dist/tools/profile-management.js.map +1 -0
- package/dist/tools/references.d.ts +36 -0
- package/dist/tools/references.d.ts.map +1 -1
- package/dist/tools/references.js +48 -45
- package/dist/tools/references.js.map +1 -1
- package/dist/tools/richstring-widgets.d.ts +51 -0
- package/dist/tools/richstring-widgets.d.ts.map +1 -0
- package/dist/tools/richstring-widgets.js +173 -0
- package/dist/tools/richstring-widgets.js.map +1 -0
- package/dist/tools/schedule.d.ts +14 -0
- package/dist/tools/schedule.d.ts.map +1 -1
- package/dist/tools/schedule.js +7 -3
- package/dist/tools/schedule.js.map +1 -1
- package/dist/tools/script-logs.d.ts +29 -0
- package/dist/tools/script-logs.d.ts.map +1 -0
- package/dist/tools/script-logs.js +144 -0
- package/dist/tools/script-logs.js.map +1 -0
- package/dist/tools/search.d.ts +1870 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +49 -75
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/system.d.ts +2 -1
- package/dist/tools/system.d.ts.map +1 -1
- package/dist/tools/system.js +68 -2
- package/dist/tools/system.js.map +1 -1
- package/dist/tools/type-layouts.d.ts +37 -0
- package/dist/tools/type-layouts.d.ts.map +1 -1
- package/dist/tools/type-layouts.js +57 -11
- package/dist/tools/type-layouts.js.map +1 -1
- package/dist/tools/type-management.d.ts +134 -0
- package/dist/tools/type-management.d.ts.map +1 -0
- package/dist/tools/{workspace.js → type-management.js} +67 -307
- package/dist/tools/type-management.js.map +1 -0
- package/dist/tools/users.d.ts +19 -0
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +14 -28
- package/dist/tools/users.js.map +1 -1
- package/dist/tools/validators.d.ts +28 -0
- package/dist/tools/validators.d.ts.map +1 -1
- package/dist/tools/validators.js +21 -15
- package/dist/tools/validators.js.map +1 -1
- package/dist/tools/version-check.d.ts +4 -0
- package/dist/tools/version-check.d.ts.map +1 -0
- package/dist/tools/version-check.js +107 -0
- package/dist/tools/version-check.js.map +1 -0
- package/dist/tools/version-history.d.ts +48 -0
- package/dist/tools/version-history.d.ts.map +1 -1
- package/dist/tools/version-history.js +39 -29
- package/dist/tools/version-history.js.map +1 -1
- package/dist/tools/widgets.d.ts +182 -0
- package/dist/tools/widgets.d.ts.map +1 -1
- package/dist/tools/widgets.js +213 -590
- package/dist/tools/widgets.js.map +1 -1
- package/dist/tools/workflow-scripts.d.ts +40 -0
- package/dist/tools/workflow-scripts.d.ts.map +1 -0
- package/dist/tools/workflow-scripts.js +186 -0
- package/dist/tools/workflow-scripts.js.map +1 -0
- package/dist/tools/workflow.d.ts +70 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +259 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/tools/workspace-admin.d.ts +40 -0
- package/dist/tools/workspace-admin.d.ts.map +1 -0
- package/dist/tools/workspace-admin.js +125 -0
- package/dist/tools/workspace-admin.js.map +1 -0
- package/dist/tools/workspace-core.d.ts +45 -0
- package/dist/tools/workspace-core.d.ts.map +1 -0
- package/dist/tools/workspace-core.js +153 -0
- package/dist/tools/workspace-core.js.map +1 -0
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/url-parsing.d.ts +6 -0
- package/dist/url-parsing.d.ts.map +1 -0
- package/dist/url-parsing.js +25 -0
- package/dist/url-parsing.js.map +1 -0
- package/dist/utils/dateValidation.d.ts +5 -0
- package/dist/utils/dateValidation.d.ts.map +1 -0
- package/dist/utils/dateValidation.js +57 -0
- package/dist/utils/dateValidation.js.map +1 -0
- package/dist/utils.js +7 -7
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/tools/workspace.d.ts +0 -4
- package/dist/tools/workspace.d.ts.map +0 -1
- package/dist/tools/workspace.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -8,24 +8,59 @@ import cors from "cors";
|
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
import * as dotenv from 'dotenv';
|
|
10
10
|
import { CplaceApiClient } from './api.js';
|
|
11
|
-
import { parseProfiles,
|
|
11
|
+
import { parseProfiles, getRequiredModules } from './profiles.js';
|
|
12
12
|
import { registerActiveTools } from './conditional-registration.js';
|
|
13
13
|
import { registerSystemTools } from './tools/system.js';
|
|
14
|
+
import { registerProfileManagementTools } from './tools/profile-management.js';
|
|
14
15
|
import { debugLogWithTag } from './logger.js';
|
|
16
|
+
import { parseUrlCredentials, hasEmbeddedCredentials } from './url-parsing.js';
|
|
15
17
|
dotenv.config();
|
|
16
|
-
|
|
17
|
-
url
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
18
|
+
function ensureTrailingSlash(url) {
|
|
19
|
+
if (!url)
|
|
20
|
+
return url;
|
|
21
|
+
return url.endsWith('/') ? url : url + '/';
|
|
22
|
+
}
|
|
23
|
+
const config = (() => {
|
|
24
|
+
const rawUrl = process.env.CPLACE_URL || '';
|
|
25
|
+
const explicitToken = process.env.API_TOKEN || '';
|
|
26
|
+
if (explicitToken) {
|
|
27
|
+
return {
|
|
28
|
+
url: ensureTrailingSlash(rawUrl),
|
|
29
|
+
apiToken: explicitToken,
|
|
30
|
+
registerSystemInfoTool: process.env.REGISTER_SYSTEM_INFO_TOOL === 'true' || false,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (hasEmbeddedCredentials(rawUrl)) {
|
|
34
|
+
try {
|
|
35
|
+
const { cleanUrl, token } = parseUrlCredentials(rawUrl);
|
|
36
|
+
return {
|
|
37
|
+
url: ensureTrailingSlash(cleanUrl),
|
|
38
|
+
apiToken: token || '',
|
|
39
|
+
registerSystemInfoTool: process.env.REGISTER_SYSTEM_INFO_TOOL === 'true' || false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return {
|
|
44
|
+
url: ensureTrailingSlash(rawUrl),
|
|
45
|
+
apiToken: '',
|
|
46
|
+
registerSystemInfoTool: process.env.REGISTER_SYSTEM_INFO_TOOL === 'true' || false,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
url: ensureTrailingSlash(rawUrl),
|
|
52
|
+
apiToken: explicitToken,
|
|
53
|
+
registerSystemInfoTool: process.env.REGISTER_SYSTEM_INFO_TOOL === 'true' || false,
|
|
54
|
+
};
|
|
55
|
+
})();
|
|
21
56
|
const client = new CplaceApiClient(config);
|
|
22
|
-
const activeGroups = parseProfiles(process.argv);
|
|
23
|
-
const
|
|
57
|
+
const activeGroups = parseProfiles(process.argv, config.apiToken || undefined, config.url || undefined);
|
|
58
|
+
const requiredModules = getRequiredModules(activeGroups);
|
|
24
59
|
debugLogWithTag('MCP', '====================================');
|
|
25
60
|
debugLogWithTag('MCP', 'cplace MCP Server Profile Configuration');
|
|
26
61
|
debugLogWithTag('MCP', '====================================');
|
|
27
|
-
debugLogWithTag('MCP', `Active
|
|
28
|
-
debugLogWithTag('MCP', `
|
|
62
|
+
debugLogWithTag('MCP', `Active profiles: ${Array.from(activeGroups).join(', ')}`);
|
|
63
|
+
debugLogWithTag('MCP', `Modules to load: ${requiredModules.size} (${Array.from(requiredModules).join(', ')})`);
|
|
29
64
|
debugLogWithTag('MCP', '====================================');
|
|
30
65
|
function createStdioServer() {
|
|
31
66
|
const stdioServer = new McpServer({
|
|
@@ -33,48 +68,8 @@ function createStdioServer() {
|
|
|
33
68
|
version: "1.0.0"
|
|
34
69
|
});
|
|
35
70
|
registerActiveTools(stdioServer, client, activeGroups);
|
|
36
|
-
registerSystemTools(stdioServer, config);
|
|
37
|
-
stdioServer.
|
|
38
|
-
description: "Get information about active MCP profiles and available groups",
|
|
39
|
-
inputSchema: {},
|
|
40
|
-
annotations: { title: "Profile Information" }
|
|
41
|
-
}, async () => {
|
|
42
|
-
const groupDetails = Array.from(activeGroups).map(name => ({
|
|
43
|
-
name,
|
|
44
|
-
description: TOOL_GROUPS[name]?.description || 'Unknown group',
|
|
45
|
-
toolCount: TOOL_GROUPS[name]?.tools.length || 0,
|
|
46
|
-
tools: TOOL_GROUPS[name]?.tools || []
|
|
47
|
-
}));
|
|
48
|
-
const allGroups = Object.entries(TOOL_GROUPS).map(([name, group]) => ({
|
|
49
|
-
name,
|
|
50
|
-
description: group.description,
|
|
51
|
-
toolCount: group.tools.length,
|
|
52
|
-
active: activeGroups.has(name)
|
|
53
|
-
}));
|
|
54
|
-
return {
|
|
55
|
-
content: [{
|
|
56
|
-
type: "text",
|
|
57
|
-
text: JSON.stringify({
|
|
58
|
-
active_groups: Array.from(activeGroups),
|
|
59
|
-
total_active_tools: activeTools.size,
|
|
60
|
-
active_group_details: groupDetails,
|
|
61
|
-
all_available_groups: allGroups,
|
|
62
|
-
mode: "stdio",
|
|
63
|
-
credentials: {
|
|
64
|
-
cplace_url: config.url,
|
|
65
|
-
has_token: !!config.apiToken
|
|
66
|
-
},
|
|
67
|
-
usage_examples: {
|
|
68
|
-
minimal: "No --profiles argument (core only)",
|
|
69
|
-
page_editing: "--profiles=pages_write",
|
|
70
|
-
dashboard_dev: "--profiles=pages_write+layouts",
|
|
71
|
-
type_dev: "--profiles=types_write+low_code",
|
|
72
|
-
full_access: "--profiles=all"
|
|
73
|
-
}
|
|
74
|
-
}, null, 2)
|
|
75
|
-
}]
|
|
76
|
-
};
|
|
77
|
-
});
|
|
71
|
+
registerSystemTools(stdioServer, config, client);
|
|
72
|
+
registerProfileManagementTools(stdioServer, () => ({ apiToken: config.apiToken, cplaceUrl: config.url }));
|
|
78
73
|
return stdioServer;
|
|
79
74
|
}
|
|
80
75
|
const isRemote = process.argv.includes('--remote') || process.env.MCP_TRANSPORT === 'http';
|
|
@@ -95,67 +90,55 @@ async function runServer() {
|
|
|
95
90
|
}
|
|
96
91
|
function validateCredentials(cplaceUrl, apiToken) {
|
|
97
92
|
if (!cplaceUrl || !apiToken) {
|
|
98
|
-
|
|
93
|
+
if (!cplaceUrl && !apiToken) {
|
|
94
|
+
return {
|
|
95
|
+
valid: false,
|
|
96
|
+
error: 'Missing cplace URL and API token. Provide either CPLACE_URL + API_TOKEN or a URL with embedded credentials like https://token@host.com'
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (!cplaceUrl) {
|
|
100
|
+
return { valid: false, error: 'Missing cplace URL. Set CPLACE_URL environment variable.' };
|
|
101
|
+
}
|
|
102
|
+
if (!apiToken) {
|
|
103
|
+
if (hasEmbeddedCredentials(cplaceUrl)) {
|
|
104
|
+
return {
|
|
105
|
+
valid: false,
|
|
106
|
+
error: 'Failed to extract API token from URL. Ensure format is https://token@host.com or set API_TOKEN separately.'
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
valid: false,
|
|
111
|
+
error: 'Missing API token. Set API_TOKEN environment variable or use URL format https://token@host.com'
|
|
112
|
+
};
|
|
113
|
+
}
|
|
99
114
|
}
|
|
100
115
|
try {
|
|
101
|
-
new URL(cplaceUrl);
|
|
116
|
+
const url = new URL(cplaceUrl);
|
|
117
|
+
if (url.username || url.password) {
|
|
118
|
+
return {
|
|
119
|
+
valid: false,
|
|
120
|
+
error: 'URL contains credentials but API token was not properly extracted. Check URL format.'
|
|
121
|
+
};
|
|
122
|
+
}
|
|
102
123
|
}
|
|
103
124
|
catch (e) {
|
|
104
|
-
return { valid: false, error:
|
|
125
|
+
return { valid: false, error: `Invalid cplace URL format: ${e instanceof Error ? e.message : 'Unknown error'}` };
|
|
105
126
|
}
|
|
106
127
|
if (apiToken.length < 10) {
|
|
107
|
-
return { valid: false, error: 'API token appears to be too short' };
|
|
128
|
+
return { valid: false, error: 'API token appears to be too short (minimum 10 characters required)' };
|
|
108
129
|
}
|
|
109
130
|
return { valid: true };
|
|
110
131
|
}
|
|
111
132
|
function createSessionServer(cplaceUrl, apiToken) {
|
|
112
|
-
const sessionClient = new CplaceApiClient({ url: cplaceUrl, apiToken });
|
|
133
|
+
const sessionClient = new CplaceApiClient({ url: ensureTrailingSlash(cplaceUrl), apiToken });
|
|
113
134
|
const sessionServer = new McpServer({
|
|
114
135
|
name: `cplace-mcp-server`,
|
|
115
136
|
version: "1.0.0"
|
|
116
137
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
sessionServer
|
|
120
|
-
|
|
121
|
-
inputSchema: {},
|
|
122
|
-
annotations: { title: "Profile Information" }
|
|
123
|
-
}, async () => {
|
|
124
|
-
const groupDetails = Array.from(activeGroups).map(name => ({
|
|
125
|
-
name,
|
|
126
|
-
description: TOOL_GROUPS[name]?.description || 'Unknown group',
|
|
127
|
-
toolCount: TOOL_GROUPS[name]?.tools.length || 0,
|
|
128
|
-
tools: TOOL_GROUPS[name]?.tools || []
|
|
129
|
-
}));
|
|
130
|
-
const allGroups = Object.entries(TOOL_GROUPS).map(([name, group]) => ({
|
|
131
|
-
name,
|
|
132
|
-
description: group.description,
|
|
133
|
-
toolCount: group.tools.length,
|
|
134
|
-
active: activeGroups.has(name)
|
|
135
|
-
}));
|
|
136
|
-
return {
|
|
137
|
-
content: [{
|
|
138
|
-
type: "text",
|
|
139
|
-
text: JSON.stringify({
|
|
140
|
-
active_groups: Array.from(activeGroups),
|
|
141
|
-
total_active_tools: activeTools.size,
|
|
142
|
-
active_group_details: groupDetails,
|
|
143
|
-
all_available_groups: allGroups,
|
|
144
|
-
session_credentials: {
|
|
145
|
-
cplace_url: cplaceUrl,
|
|
146
|
-
has_token: !!apiToken
|
|
147
|
-
},
|
|
148
|
-
usage_examples: {
|
|
149
|
-
minimal: "No --profiles argument (core only)",
|
|
150
|
-
page_editing: "--profiles=pages_write",
|
|
151
|
-
dashboard_dev: "--profiles=pages_write+layouts",
|
|
152
|
-
type_dev: "--profiles=types_write+low_code",
|
|
153
|
-
full_access: "--profiles=all"
|
|
154
|
-
}
|
|
155
|
-
}, null, 2)
|
|
156
|
-
}]
|
|
157
|
-
};
|
|
158
|
-
});
|
|
138
|
+
const sessionGroups = parseProfiles(process.argv, apiToken, cplaceUrl);
|
|
139
|
+
registerActiveTools(sessionServer, sessionClient, sessionGroups);
|
|
140
|
+
registerSystemTools(sessionServer, { url: ensureTrailingSlash(cplaceUrl), apiToken, registerSystemInfoTool: config.registerSystemInfoTool }, sessionClient);
|
|
141
|
+
registerProfileManagementTools(sessionServer, () => ({ apiToken, cplaceUrl }));
|
|
159
142
|
return { server: sessionServer, client: sessionClient };
|
|
160
143
|
}
|
|
161
144
|
function startHttpServer() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAe,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/E,MAAM,CAAC,MAAM,EAAE,CAAC;AAShB,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AAC7C,CAAC;AAGD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;IACnB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;IAGlD,IAAI,aAAa,EAAE,CAAC;QAElB,OAAO;YACL,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC;YAChC,QAAQ,EAAE,aAAa;YACvB,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,IAAI,KAAK;SAClF,CAAC;IACJ,CAAC;IAGD,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO;gBACL,GAAG,EAAE,mBAAmB,CAAC,QAAQ,CAAC;gBAClC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACrB,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,IAAI,KAAK;aAClF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO;gBACL,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBAChC,QAAQ,EAAE,EAAE;gBACZ,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,IAAI,KAAK;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,OAAO;QACL,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC;QAChC,QAAQ,EAAE,aAAa;QACvB,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,IAAI,KAAK;KAClF,CAAC;AACJ,CAAC,CAAC,EAAE,CAAC;AAGL,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AAI3C,MAAM,YAAY,GAAG,aAAa,CAChC,OAAO,CAAC,IAAI,EACZ,MAAM,CAAC,QAAQ,IAAI,SAAS,EAC5B,MAAM,CAAC,GAAG,IAAI,SAAS,CACxB,CAAC;AACF,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAGzD,eAAe,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;AAC/D,eAAe,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC;AAClE,eAAe,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;AAC/D,eAAe,CAAC,KAAK,EAAE,oBAAoB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClF,eAAe,CAAC,KAAK,EAAE,oBAAoB,eAAe,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/G,eAAe,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;AAG/D,SAAS,iBAAiB;IACxB,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC;QAChC,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAGH,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACvD,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAGjD,8BAA8B,CAC5B,WAAW,EACX,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAC7D,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAGD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC;AAE3F,IAAI,QAAQ,EAAE,CAAC;IAEb,eAAe,EAAE,CAAC;AACpB,CAAC;KAAM,CAAC;IAEN,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,eAAe,CAAC,KAAK,EAAE,+BAA+B,KAAK,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;AACpD,CAAC;AAcD,SAAS,mBAAmB,CAAC,SAAiB,EAAE,QAAgB;IAE9D,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,wIAAwI;aAChJ,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0DAA0D,EAAE,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEd,IAAI,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,4GAA4G;iBACpH,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,gGAAgG;aACxG,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAE/B,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,sFAAsF;aAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;IACnH,CAAC;IAGD,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oEAAoE,EAAE,CAAC;IACvG,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAGD,SAAS,mBAAmB,CAAC,SAAiB,EAAE,QAAgB;IAC9D,MAAM,aAAa,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7F,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC;QAClC,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAGH,MAAM,aAAa,GAAG,aAAa,CACjC,OAAO,CAAC,IAAI,EACZ,QAAQ,EACR,SAAS,CACV,CAAC;IAGF,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACjE,mBAAmB,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,EAAE,EAAE,aAAa,CAAC,CAAC;IAG5J,8BAA8B,CAC5B,aAAa,EACb,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAChC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IAGtC,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAG1D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,CAAC;QACpF,cAAc,EAAE,CAAC,gBAAgB,CAAC;KACnC,CAAC,CAAC,CAAC;IAGJ,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAGxB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACnE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAgC,CAAC,CAAC;QAErC,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;YAC5C,cAAc,EAAE,YAAY;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAGH,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAW,CAAC;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAW,CAAC;QAC3D,IAAI,WAAwB,CAAC;QAE7B,IAAI,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAErC,eAAe,CAAC,KAAK,EAAE,gCAAgC,SAAS,EAAE,CAAC,CAAC;YACpE,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,CAAC,SAAS,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAEvD,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,eAAe,CAAC,KAAK,EAAE,0CAA0C,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,CAAC,KAAK;wBACZ,OAAO,EAAE,gBAAgB,UAAU,CAAC,KAAK,EAAE;qBAC5C;oBACD,EAAE,EAAE,IAAI;iBACT,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,eAAe,CAAC,KAAK,EAAE,mCAAmC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAGzF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAElG,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;gBAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;gBACtC,oBAAoB,EAAE,CAAC,YAAY,EAAE,EAAE;oBACrC,eAAe,CAAC,KAAK,EAAE,0BAA0B,YAAY,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAEpG,QAAQ,CAAC,YAAY,CAAC,GAAG;wBACvB,SAAS;wBACT,MAAM,EAAE,aAAa;wBACrB,MAAM,EAAE,aAAa;wBACrB,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;qBACrC,CAAC;gBACJ,CAAC;gBAED,4BAA4B,EAAE,KAAK;gBACnC,YAAY,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;aACzC,CAAC,CAAC;YAGH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACvB,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oBACxB,eAAe,CAAC,KAAK,EAAE,2BAA2B,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;oBACzE,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC;YAGF,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEvC,WAAW,GAAG;gBACZ,SAAS;gBACT,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,aAAa;gBACrB,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;aACrC,CAAC;QACJ,CAAC;aAAM,CAAC;YAEN,eAAe,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;YAC1E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,KAAK;oBACZ,OAAO,EAAE,2CAA2C;iBACrD;gBACD,EAAE,EAAE,IAAI;aACT,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAGD,MAAM,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAGH,MAAM,oBAAoB,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;QACjF,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QAEtE,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,eAAe,CAAC,KAAK,EAAE,oCAAoC,SAAS,EAAE,CAAC,CAAC;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,CAAC,MAAM,yBAAyB,SAAS,KAAK,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/I,MAAM,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC,CAAC;IAGF,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAGtC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAEzC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,eAAe,CAAC,KAAK,EAAE,oDAAoD,IAAI,EAAE,CAAC,CAAC;QACnF,eAAe,CAAC,KAAK,EAAE,qCAAqC,IAAI,MAAM,CAAC,CAAC;QACxE,eAAe,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface PathBasedPreferences {
|
|
2
|
+
[absolutePath: string]: {
|
|
3
|
+
[userHash: string]: {
|
|
4
|
+
[tenantUrl: string]: string[];
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export declare function readPreferences(): PathBasedPreferences;
|
|
9
|
+
export declare function writePreferences(prefs: PathBasedPreferences): void;
|
|
10
|
+
export declare function getPreference(apiToken: string, tenantUrl: string): string[] | null;
|
|
11
|
+
export declare function setPreference(apiToken: string, tenantUrl: string, profiles: string[]): void;
|
|
12
|
+
export declare function clearPreference(apiToken: string, tenantUrl: string): void;
|
|
13
|
+
export declare function clearAllPreferences(): void;
|
|
14
|
+
export declare function getDefaultPreference(): string[] | null;
|
|
15
|
+
export declare function setDefaultPreference(profiles: string[]): void;
|
|
16
|
+
//# sourceMappingURL=preference-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preference-file.d.ts","sourceRoot":"","sources":["../src/preference-file.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,oBAAoB;IACnC,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;SAC9B,CAAA;KACF,CAAA;CACF;AAOD,wBAAgB,eAAe,IAAI,oBAAoB,CA2BtD;AAwCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAMlE;AAMD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,GAAG,IAAI,CA4BjB;AAOD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAAE,GACjB,IAAI,CAwBN;AAQD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,IAAI,CAsCN;AAQD,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAOD,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,GAAG,IAAI,CAGtD;AAOD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAE7D"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as os from 'os';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { debugLogWithTag } from './logger.js';
|
|
5
|
+
import { hashApiToken } from './token-hashing.js';
|
|
6
|
+
const PREFERENCES_FILE = path.join(os.homedir(), '.cplace-mcp-profiles.json');
|
|
7
|
+
export function readPreferences() {
|
|
8
|
+
const preferenceFile = PREFERENCES_FILE;
|
|
9
|
+
try {
|
|
10
|
+
const content = fs.readFileSync(preferenceFile, 'utf8');
|
|
11
|
+
const prefs = JSON.parse(content);
|
|
12
|
+
debugLogWithTag('PROFILES', `Successfully read profile preferences from ${preferenceFile}`);
|
|
13
|
+
if (typeof prefs !== 'object' || Array.isArray(prefs)) {
|
|
14
|
+
debugLogWithTag('PROFILES', 'Warning: Preference file has invalid structure, treating as empty');
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
return prefs;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error.code === 'ENOENT') {
|
|
21
|
+
debugLogWithTag('PROFILES', `No preferences file found at ${preferenceFile}, using defaults`);
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
console.error(`⚠️ Could not read profile preferences from ${preferenceFile}`);
|
|
25
|
+
console.error(` Reason: ${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
+
console.error(` Using default profiles: ["core"]`);
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function tryWritePreferences(prefs, targetFile) {
|
|
31
|
+
const tempFile = `${targetFile}.tmp`;
|
|
32
|
+
try {
|
|
33
|
+
const content = JSON.stringify(prefs, null, 2);
|
|
34
|
+
fs.writeFileSync(tempFile, content, 'utf8');
|
|
35
|
+
debugLogWithTag('PROFILES', `Wrote to temp file: ${tempFile}`);
|
|
36
|
+
fs.renameSync(tempFile, targetFile);
|
|
37
|
+
debugLogWithTag('PROFILES', `Successfully wrote preferences`);
|
|
38
|
+
return { success: true };
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
try {
|
|
42
|
+
fs.unlinkSync(tempFile);
|
|
43
|
+
}
|
|
44
|
+
catch { }
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
error: error instanceof Error ? error.message : String(error)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export function writePreferences(prefs) {
|
|
52
|
+
const result = tryWritePreferences(prefs, PREFERENCES_FILE);
|
|
53
|
+
if (!result.success) {
|
|
54
|
+
throw new Error(`Failed to write preferences: ${result.error}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export function getPreference(apiToken, tenantUrl) {
|
|
58
|
+
const prefs = readPreferences();
|
|
59
|
+
const cwd = process.cwd();
|
|
60
|
+
const userHash = hashApiToken(apiToken);
|
|
61
|
+
debugLogWithTag('PROFILES', `Looking up preference for path=${cwd}, hash=${userHash.substring(0, 8)}..., tenant=${tenantUrl}`);
|
|
62
|
+
const pathPrefs = prefs[cwd];
|
|
63
|
+
if (!pathPrefs || typeof pathPrefs !== 'object') {
|
|
64
|
+
debugLogWithTag('PROFILES', `No preferences found for path: ${cwd}`);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const userPrefs = pathPrefs[userHash];
|
|
68
|
+
if (!userPrefs || typeof userPrefs !== 'object' || Array.isArray(userPrefs)) {
|
|
69
|
+
debugLogWithTag('PROFILES', `No preferences found for user in path: ${cwd}`);
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const tenantPrefs = userPrefs[tenantUrl];
|
|
73
|
+
if (tenantPrefs && Array.isArray(tenantPrefs)) {
|
|
74
|
+
debugLogWithTag('PROFILES', `Found preference: ${tenantPrefs.join(', ')}`);
|
|
75
|
+
return tenantPrefs;
|
|
76
|
+
}
|
|
77
|
+
debugLogWithTag('PROFILES', `No preferences found for tenant in path: ${cwd}`);
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
export function setPreference(apiToken, tenantUrl, profiles) {
|
|
81
|
+
const prefs = readPreferences();
|
|
82
|
+
const cwd = process.cwd();
|
|
83
|
+
const userHash = hashApiToken(apiToken);
|
|
84
|
+
debugLogWithTag('PROFILES', `Setting preference for path=${cwd}, tenant=${tenantUrl}, profiles=${profiles.join(',')}`);
|
|
85
|
+
if (!prefs[cwd]) {
|
|
86
|
+
prefs[cwd] = {};
|
|
87
|
+
}
|
|
88
|
+
if (!prefs[cwd][userHash]) {
|
|
89
|
+
prefs[cwd][userHash] = {};
|
|
90
|
+
}
|
|
91
|
+
prefs[cwd][userHash][tenantUrl] = profiles;
|
|
92
|
+
writePreferences(prefs);
|
|
93
|
+
debugLogWithTag('PROFILES', `Successfully saved preference for current directory`);
|
|
94
|
+
}
|
|
95
|
+
export function clearPreference(apiToken, tenantUrl) {
|
|
96
|
+
const prefs = readPreferences();
|
|
97
|
+
const cwd = process.cwd();
|
|
98
|
+
const userHash = hashApiToken(apiToken);
|
|
99
|
+
debugLogWithTag('PROFILES', `Clearing preference for path=${cwd}, tenant=${tenantUrl}`);
|
|
100
|
+
const pathPrefs = prefs[cwd];
|
|
101
|
+
if (!pathPrefs) {
|
|
102
|
+
debugLogWithTag('PROFILES', 'No preferences found for current directory, nothing to clear');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const userPrefs = pathPrefs[userHash];
|
|
106
|
+
if (!userPrefs || typeof userPrefs !== 'object') {
|
|
107
|
+
debugLogWithTag('PROFILES', 'No user preferences found, nothing to clear');
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
delete userPrefs[tenantUrl];
|
|
111
|
+
debugLogWithTag('PROFILES', 'Deleted tenant preference');
|
|
112
|
+
if (Object.keys(userPrefs).length === 0) {
|
|
113
|
+
delete pathPrefs[userHash];
|
|
114
|
+
debugLogWithTag('PROFILES', 'Removed empty user entry');
|
|
115
|
+
}
|
|
116
|
+
if (Object.keys(pathPrefs).length === 0) {
|
|
117
|
+
delete prefs[cwd];
|
|
118
|
+
debugLogWithTag('PROFILES', 'Removed empty path entry');
|
|
119
|
+
}
|
|
120
|
+
writePreferences(prefs);
|
|
121
|
+
debugLogWithTag('PROFILES', 'Successfully cleared preference for current directory');
|
|
122
|
+
}
|
|
123
|
+
export function clearAllPreferences() {
|
|
124
|
+
writePreferences({});
|
|
125
|
+
}
|
|
126
|
+
export function getDefaultPreference() {
|
|
127
|
+
debugLogWithTag('PROFILES', 'Warning: getDefaultPreference() is deprecated and will be removed');
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
export function setDefaultPreference(profiles) {
|
|
131
|
+
throw new Error('Global default preferences are no longer supported. Use CLI flags (--profiles=...) or set user+tenant+directory-specific preferences via cplace_manage_profiles.');
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=preference-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preference-file.js","sourceRoot":"","sources":["../src/preference-file.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
export interface ToolGroup {
|
|
2
2
|
description: string;
|
|
3
|
-
tools: string[];
|
|
4
3
|
modules: string[];
|
|
5
4
|
}
|
|
6
5
|
export declare const TOOL_GROUPS: Record<string, ToolGroup>;
|
|
7
|
-
export declare function parseProfiles(argv: string[]): Set<string>;
|
|
8
|
-
export declare function getActiveTools(activeGroups: Set<string>): Set<string>;
|
|
6
|
+
export declare function parseProfiles(argv: string[], apiToken?: string, tenantUrl?: string): Set<string>;
|
|
9
7
|
export declare function getRequiredModules(activeGroups: Set<string>): Set<string>;
|
|
10
8
|
//# sourceMappingURL=profiles.d.ts.map
|
package/dist/profiles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAqCjD,CAAC;AAeF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,CAAC,CA6Db;AAKD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAWzE"}
|