@hienlh/ppm 0.13.65 → 0.13.66
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/CHANGELOG.md +5 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +2 -1
- package/dist/web/assets/architecture-PBZL5I3N-CS5Rvu_a.js +1 -0
- package/dist/web/assets/{audio-preview-Bog1sIoF.js → audio-preview-B8XiU4Bw.js} +1 -1
- package/dist/web/assets/{chat-tab-B-uVAh4d.js → chat-tab-B1m7T_2n.js} +3 -3
- package/dist/web/assets/{code-editor-cDv3opsJ.js → code-editor-CQSDgP7X.js} +2 -2
- package/dist/web/assets/{conflict-editor-D5sEfbcX.js → conflict-editor-BPjmtXlC.js} +1 -1
- package/dist/web/assets/{database-viewer-BGBVsG5J.js → database-viewer-Cl31pR9W.js} +1 -1
- package/dist/web/assets/{diff-viewer-B-O1mvHO.js → diff-viewer-sbO35hMr.js} +1 -1
- package/dist/web/assets/{docx-preview-ByzSlSgn.js → docx-preview-D_P_e_0O.js} +1 -1
- package/dist/web/assets/{extension-webview-0qfU1r7z.js → extension-webview-B2Q7T_NQ.js} +1 -1
- package/dist/web/assets/{git-log-panel-C1T8bav0.js → git-log-panel-CAa4j8NA.js} +1 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-BjUgCE-3.js +1 -0
- package/dist/web/assets/{glide-data-grid-DV8ht1BP.js → glide-data-grid-DbtdLkFk.js} +1 -1
- package/dist/web/assets/{image-preview-Dbo7SAVb.js → image-preview-DjWCljN-.js} +1 -1
- package/dist/web/assets/{index-DU_JZ5MY.js → index-PZd81rhr.js} +4 -4
- package/dist/web/assets/info-3K5VOQVL-Bu3VpM9a.js +1 -0
- package/dist/web/assets/keybindings-store-DZjJtyij.js +1 -0
- package/dist/web/assets/{markdown-renderer-D-QbsfIC.js → markdown-renderer-BojoStRy.js} +3 -3
- package/dist/web/assets/notification-store-CgsqI4c0.js +1 -0
- package/dist/web/assets/packet-RMMSAZCW-C83Lg2yy.js +1 -0
- package/dist/web/assets/{pdf-preview-DV96VPTb.js → pdf-preview-19LY16zS.js} +1 -1
- package/dist/web/assets/pie-UPGHQEXC-DoT-QQxi.js +1 -0
- package/dist/web/assets/{port-forwarding-tab-C4OYC71C.js → port-forwarding-tab-DIqVwGrL.js} +1 -1
- package/dist/web/assets/{postgres-viewer-hb-_twEU.js → postgres-viewer-DOTykgcg.js} +1 -1
- package/dist/web/assets/radar-KQ55EAFF-B6r4mqYF.js +1 -0
- package/dist/web/assets/{settings-store-CSDOihqv.js → settings-store-BFlBSwKg.js} +1 -1
- package/dist/web/assets/{settings-tab-BUCIqVAl.js → settings-tab-C5S_iYSH.js} +1 -1
- package/dist/web/assets/{sql-query-editor-C7YgtDR3.js → sql-query-editor-BsxW0lTw.js} +1 -1
- package/dist/web/assets/{sqlite-viewer-z3pGFSje.js → sqlite-viewer-Fq4NnQg6.js} +1 -1
- package/dist/web/assets/{system-monitor-tab-Bj6pcRmV.js → system-monitor-tab-C51mwQcv.js} +1 -1
- package/dist/web/assets/{terminal-tab-DbxLHofN.js → terminal-tab-Lu2U4vpg.js} +1 -1
- package/dist/web/assets/treemap-KZPCXAKY-3t3gW0fB.js +1 -0
- package/dist/web/assets/{use-monaco-theme-qx6SfVRk.js → use-monaco-theme-6AirEH08.js} +1 -1
- package/dist/web/assets/{vendor-mermaid-DCie7hiR.js → vendor-mermaid-DU911Xa9.js} +2 -2
- package/dist/web/assets/{video-preview-DylSBAzo.js → video-preview-8Vrdwy25.js} +1 -1
- package/dist/web/index.html +3 -3
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/src/server/middleware/auth.ts +1 -1
- package/src/server/routes/fs-browse.ts +18 -4
- package/src/services/download-token.service.ts +1 -2
- package/src/services/resource-monitor-utils.ts +10 -1
- package/src/services/resource-monitor.service.ts +1 -1
- package/src/web/lib/file-download.ts +8 -0
- package/.opencode/.env.example +0 -98
- package/.opencode/skills/ads-management/scripts/.env.example +0 -13
- package/.opencode/skills/ai-multimodal/.env.example +0 -230
- package/.opencode/skills/cip-design/.env.example +0 -6
- package/.opencode/skills/devops/.env.example +0 -76
- package/.opencode/skills/docs-seeker/.env.example +0 -15
- package/.opencode/skills/elevenlabs/.env.example +0 -3
- package/.opencode/skills/marketing-dashboard/.env.example +0 -15
- package/.opencode/skills/marketing-dashboard/app/.env.example +0 -2
- package/.opencode/skills/marketing-dashboard/server/.env.example +0 -2
- package/.opencode/skills/mcp-management/scripts/dist/analyze-tools.js +0 -70
- package/.opencode/skills/mcp-management/scripts/dist/cli.js +0 -160
- package/.opencode/skills/mcp-management/scripts/dist/mcp-client.js +0 -183
- package/.opencode/skills/payment-integration/scripts/.env.example +0 -20
- package/.opencode/skills/sequential-thinking/.env.example +0 -8
- package/dist/web/assets/architecture-PBZL5I3N-DLKD1Xjj.js +0 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-2a0r4GHr.js +0 -1
- package/dist/web/assets/info-3K5VOQVL-CWKw4e0V.js +0 -1
- package/dist/web/assets/keybindings-store-0FUOwc9I.js +0 -1
- package/dist/web/assets/notification-store-bwd1UKbs.js +0 -1
- package/dist/web/assets/packet-RMMSAZCW-Ar00Wbhd.js +0 -1
- package/dist/web/assets/pie-UPGHQEXC-Q4ssDdib.js +0 -1
- package/dist/web/assets/radar-KQ55EAFF-kq5v4OKX.js +0 -1
- package/dist/web/assets/treemap-KZPCXAKY-DChODgHt.js +0 -1
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* MCP Client - Core client for interacting with MCP servers
|
|
4
|
-
*/
|
|
5
|
-
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
6
|
-
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
7
|
-
import { readFile } from 'fs/promises';
|
|
8
|
-
import { resolve } from 'path';
|
|
9
|
-
export class MCPClientManager {
|
|
10
|
-
config = null;
|
|
11
|
-
clients = new Map();
|
|
12
|
-
transports = new Map();
|
|
13
|
-
async loadConfig(configPath = '.claude/.mcp.json') {
|
|
14
|
-
const fullPath = resolve(process.cwd(), configPath);
|
|
15
|
-
const content = await readFile(fullPath, 'utf-8');
|
|
16
|
-
const config = JSON.parse(content);
|
|
17
|
-
this.config = config;
|
|
18
|
-
return config;
|
|
19
|
-
}
|
|
20
|
-
async connectToServer(serverName) {
|
|
21
|
-
if (!this.config?.mcpServers[serverName]) {
|
|
22
|
-
throw new Error(`Server ${serverName} not found in config`);
|
|
23
|
-
}
|
|
24
|
-
const serverConfig = this.config.mcpServers[serverName];
|
|
25
|
-
const transport = new StdioClientTransport({
|
|
26
|
-
command: serverConfig.command,
|
|
27
|
-
args: serverConfig.args,
|
|
28
|
-
env: serverConfig.env
|
|
29
|
-
});
|
|
30
|
-
const client = new Client({
|
|
31
|
-
name: `mcp-manager-${serverName}`,
|
|
32
|
-
version: '1.0.0'
|
|
33
|
-
}, { capabilities: {} });
|
|
34
|
-
await client.connect(transport);
|
|
35
|
-
this.clients.set(serverName, client);
|
|
36
|
-
this.transports.set(serverName, transport); // Track transport!
|
|
37
|
-
return client;
|
|
38
|
-
}
|
|
39
|
-
async connectAll() {
|
|
40
|
-
if (!this.config) {
|
|
41
|
-
throw new Error('Config not loaded. Call loadConfig() first.');
|
|
42
|
-
}
|
|
43
|
-
const serverNames = Object.keys(this.config.mcpServers);
|
|
44
|
-
console.log(`Connecting to ${serverNames.length} servers sequentially...`);
|
|
45
|
-
for (const serverName of serverNames) {
|
|
46
|
-
try {
|
|
47
|
-
await this.connectToServer(serverName);
|
|
48
|
-
console.log(`✓ ${serverName} connected`);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
console.error(`✗ ${serverName} failed:`, error);
|
|
52
|
-
// Continue with other servers
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
async getAllTools() {
|
|
57
|
-
const allTools = [];
|
|
58
|
-
for (const [serverName, client] of this.clients.entries()) {
|
|
59
|
-
try {
|
|
60
|
-
const response = await client.listTools({}, { timeout: 300000 });
|
|
61
|
-
for (const tool of response.tools) {
|
|
62
|
-
allTools.push({
|
|
63
|
-
serverName,
|
|
64
|
-
name: tool.name,
|
|
65
|
-
description: tool.description || '',
|
|
66
|
-
inputSchema: tool.inputSchema,
|
|
67
|
-
outputSchema: tool.outputSchema
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
if (error?.code === -32601) {
|
|
73
|
-
console.warn(`${serverName} does not support listTools`);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
console.error(`Error from ${serverName}:`, error);
|
|
77
|
-
}
|
|
78
|
-
// Continue with other servers!
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return allTools;
|
|
82
|
-
}
|
|
83
|
-
async getAllPrompts() {
|
|
84
|
-
const allPrompts = [];
|
|
85
|
-
for (const [serverName, client] of this.clients.entries()) {
|
|
86
|
-
try {
|
|
87
|
-
const response = await client.listPrompts({}, { timeout: 300000 });
|
|
88
|
-
for (const prompt of response.prompts) {
|
|
89
|
-
allPrompts.push({
|
|
90
|
-
serverName,
|
|
91
|
-
name: prompt.name,
|
|
92
|
-
description: prompt.description || '',
|
|
93
|
-
arguments: prompt.arguments
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
if (error?.code === -32601) {
|
|
99
|
-
console.warn(`${serverName} does not support listPrompts`);
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
console.error(`Error from ${serverName}:`, error);
|
|
103
|
-
}
|
|
104
|
-
// Continue with other servers!
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return allPrompts;
|
|
108
|
-
}
|
|
109
|
-
async getAllResources() {
|
|
110
|
-
const allResources = [];
|
|
111
|
-
for (const [serverName, client] of this.clients.entries()) {
|
|
112
|
-
try {
|
|
113
|
-
const response = await client.listResources({}, { timeout: 300000 });
|
|
114
|
-
for (const resource of response.resources) {
|
|
115
|
-
allResources.push({
|
|
116
|
-
serverName,
|
|
117
|
-
uri: resource.uri,
|
|
118
|
-
name: resource.name,
|
|
119
|
-
description: resource.description,
|
|
120
|
-
mimeType: resource.mimeType
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
if (error?.code === -32601) {
|
|
126
|
-
console.warn(`${serverName} does not support listResources`);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
console.error(`Error from ${serverName}:`, error);
|
|
130
|
-
}
|
|
131
|
-
// Continue with other servers!
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return allResources;
|
|
135
|
-
}
|
|
136
|
-
async callTool(serverName, toolName, args) {
|
|
137
|
-
const client = this.clients.get(serverName);
|
|
138
|
-
if (!client)
|
|
139
|
-
throw new Error(`Not connected to server: ${serverName}`);
|
|
140
|
-
return await client.callTool({ name: toolName, arguments: args }, undefined, { timeout: 300000 });
|
|
141
|
-
}
|
|
142
|
-
async getPrompt(serverName, promptName, args) {
|
|
143
|
-
const client = this.clients.get(serverName);
|
|
144
|
-
if (!client)
|
|
145
|
-
throw new Error(`Not connected to server: ${serverName}`);
|
|
146
|
-
return await client.getPrompt({ name: promptName, arguments: args }, { timeout: 300000 });
|
|
147
|
-
}
|
|
148
|
-
async readResource(serverName, uri) {
|
|
149
|
-
const client = this.clients.get(serverName);
|
|
150
|
-
if (!client)
|
|
151
|
-
throw new Error(`Not connected to server: ${serverName}`);
|
|
152
|
-
return await client.readResource({ uri }, { timeout: 300000 });
|
|
153
|
-
}
|
|
154
|
-
async cleanup() {
|
|
155
|
-
// Close clients with timeout
|
|
156
|
-
const cleanupPromises = [];
|
|
157
|
-
for (const [serverName, client] of this.clients.entries()) {
|
|
158
|
-
cleanupPromises.push((async () => {
|
|
159
|
-
try {
|
|
160
|
-
await client.close();
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
console.warn(`Warning closing ${serverName}:`, error);
|
|
164
|
-
}
|
|
165
|
-
})());
|
|
166
|
-
}
|
|
167
|
-
await Promise.race([
|
|
168
|
-
Promise.all(cleanupPromises),
|
|
169
|
-
new Promise((resolve) => setTimeout(resolve, 5000))
|
|
170
|
-
]);
|
|
171
|
-
// CRITICAL: Close transports to kill subprocesses
|
|
172
|
-
for (const [serverName, transport] of this.transports.entries()) {
|
|
173
|
-
try {
|
|
174
|
-
await transport.close();
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
console.warn(`Warning closing ${serverName} transport:`, error);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
this.clients.clear();
|
|
181
|
-
this.transports.clear();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# SePay Configuration
|
|
2
|
-
SEPAY_MERCHANT_ID=SP-TEST-XXXXXXX
|
|
3
|
-
SEPAY_SECRET_KEY=spsk_test_xxxxxxxxxxxxx
|
|
4
|
-
SEPAY_ENV=sandbox # or 'production'
|
|
5
|
-
|
|
6
|
-
# SePay Webhook Configuration
|
|
7
|
-
SEPAY_WEBHOOK_AUTH_TYPE=api_key # or 'oauth2' or 'none'
|
|
8
|
-
SEPAY_WEBHOOK_API_KEY=your_webhook_api_key
|
|
9
|
-
|
|
10
|
-
# Polar Configuration
|
|
11
|
-
POLAR_ACCESS_TOKEN=polar_xxxxxxxxxxxxxxxx
|
|
12
|
-
POLAR_SERVER=sandbox # or 'production'
|
|
13
|
-
POLAR_ORG_ID=org_xxxxxxxxxxxxx
|
|
14
|
-
|
|
15
|
-
# Polar Webhook Configuration
|
|
16
|
-
POLAR_WEBHOOK_SECRET=base64_encoded_secret
|
|
17
|
-
|
|
18
|
-
# Optional: Database or other configuration
|
|
19
|
-
# DATABASE_URL=postgresql://user:password@localhost:5432/dbname
|
|
20
|
-
# REDIS_URL=redis://localhost:6379
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Sequential Thinking Configuration
|
|
2
|
-
|
|
3
|
-
# Disable thought logging output (useful for automated processing)
|
|
4
|
-
# Set to "true" to disable console logging
|
|
5
|
-
DISABLE_THOUGHT_LOGGING=false
|
|
6
|
-
|
|
7
|
-
# History file location (optional, defaults to scripts/.thought-history.json)
|
|
8
|
-
# THOUGHT_HISTORY_FILE=/path/to/custom/history.json
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{G as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createGitGraphServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{V as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createInfoServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-0Mxgxy0L.js";import"./api-client-DiZgVOok.js";import{D as e}from"./index-DU_JZ5MY.js";export{e as useKeybindingsStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-0Mxgxy0L.js";import"./api-client-DiZgVOok.js";import{P as e}from"./index-DU_JZ5MY.js";export{e as useNotificationStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{z as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createPacketServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{L as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createPieServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createRadarServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e}from"./vendor-mermaid-DCie7hiR.js";export{e as createTreemapServices};
|