@ngocsangairvds/vsaf 3.2.1 → 3.2.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.
Files changed (2) hide show
  1. package/package.json +2 -2
  2. package/src/global.js +25 -59
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ngocsangairvds/vsaf",
3
- "version": "3.2.1",
4
- "description": "add vds script",
3
+ "version": "3.2.2",
4
+ "description": "add vds script env",
5
5
  "keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "gitnexus", "superpowers"],
6
6
  "bin": {
7
7
  "vsaf": "./bin/vsaf.js"
package/src/global.js CHANGED
@@ -17,7 +17,6 @@ async function installGlobal() {
17
17
  installSkills();
18
18
  installBinary('gitnexus', () => exec('npm install -g gitnexus@1.6.4-rc.79'));
19
19
  setupGitnexusMcp();
20
- await setupConfluenceMcp();
21
20
  await setupVdsScriptsMcp();
22
21
 
23
22
  console.log('\n\x1b[32m\x1b[1m✓ Global infra ready.\x1b[0m\n');
@@ -72,50 +71,7 @@ function setupGitnexusMcp() {
72
71
  : warn('MCP setup failed — run manually: claude mcp add gitnexus -- npx -y gitnexus@1.6.4-rc.79 mcp');
73
72
  }
74
73
 
75
- async function setupConfluenceMcp() {
76
- step('Confluence MCP');
77
74
 
78
- if (!hasCommand('claude')) {
79
- info('Claude Code CLI not found — skip Confluence MCP setup');
80
- return;
81
- }
82
-
83
- const url = await promptInput(
84
- ' Confluence URL (blank to skip, e.g. http://confluence.company.com): '
85
- );
86
-
87
- if (!url) {
88
- warn('Confluence MCP skipped — run manually later:\n' +
89
- ' claude mcp add confluence -e CONF_MODE=server \\\n' +
90
- ' -e CONF_BASE_URL=<your-url> \\\n' +
91
- ' -e CONF_AUTH_MODE=bearer \\\n' +
92
- ' -e CONF_TOKEN=<your-token> \\\n' +
93
- ' -- npx -y confluence-mcp-server');
94
- return;
95
- }
96
-
97
- const token = await promptSecret(
98
- ' Confluence Personal Access Token: '
99
- );
100
-
101
- if (!token) {
102
- warn('Confluence MCP skipped — token is required');
103
- return;
104
- }
105
-
106
- const cmd = [
107
- 'claude mcp add confluence',
108
- '-e CONF_MODE=server',
109
- `-e CONF_BASE_URL=${url}`,
110
- '-e CONF_AUTH_MODE=bearer',
111
- `-e CONF_TOKEN=${token}`,
112
- '-- npx -y confluence-mcp-server',
113
- ].join(' ');
114
-
115
- exec(cmd)
116
- ? ok('Confluence MCP configured')
117
- : warn('Confluence MCP setup failed — run manually (see above)');
118
- }
119
75
 
120
76
  async function setupVdsScriptsMcp() {
121
77
  step('VDS Scripts MCP');
@@ -126,38 +82,49 @@ async function setupVdsScriptsMcp() {
126
82
  }
127
83
 
128
84
  const srcDir = path.join(PKG_ROOT, 'tools', 'vds-scripts');
85
+ const destDir = path.join(CLAUDE_HOME, 'vds-scripts');
86
+ const mcpDir = path.join(destDir, 'mcp_server');
87
+
88
+ info(`Source: ${srcDir}`);
129
89
  if (!fs.existsSync(srcDir)) {
130
90
  warn('Không tìm thấy source vds-scripts trong package — bỏ qua cài đặt.');
131
91
  return;
132
92
  }
133
93
 
134
- const destDir = path.join(CLAUDE_HOME, 'vds-scripts');
135
- const mcpDir = path.join(destDir, 'mcp_server');
136
-
137
- info(`Đang copy mã nguồn vds-scripts vào ${destDir}...`);
138
94
  fs.mkdirSync(path.dirname(destDir), { recursive: true });
139
95
  copyDir(srcDir, destDir);
140
- ok('Copy nguồn thành công.');
96
+ ok('Cài đặt thành công.');
141
97
 
142
98
  step('Cấu hình VDS CLI và Credentials');
143
99
  const envDir = path.join(require('os').homedir(), '.vds');
144
100
  const envFile = path.join(envDir, '.env');
145
101
  if (!fs.existsSync(envFile)) {
146
- info('Đang khởi tạo file cấu hình ~/.vds/.env...');
147
102
  fs.mkdirSync(envDir, { recursive: true });
148
103
 
149
- info('Vui lòng cung cấp các thông tin xác thực sau (để trống nếu muốn nhập sau):');
150
- const vdsUsername = await promptInput(' Nhập VDS_USERNAME: ');
151
- const vdsPassword = await promptSecret(' Nhập VDS_PASSWORD: ');
152
- const bitbucketToken = await promptSecret(' Nhập BITBUCKET_ACCESS_TOKEN: ');
104
+ info('Vui lòng cung cấp các thông tin xác thực sau (Bắt buộc):');
105
+ let vdsUsername = ''; while (!vdsUsername) vdsUsername = await promptInput(' Nhập VDS_USERNAME: ');
106
+ let vdsPassword = ''; while (!vdsPassword) vdsPassword = await promptSecret(' Nhập VDS_PASSWORD: ');
107
+ let bitbucketToken = ''; while (!bitbucketToken) bitbucketToken = await promptSecret(' Nhập BITBUCKET_TOKEN: ');
108
+ let jiraToken = ''; while (!jiraToken) jiraToken = await promptSecret(' Nhập JIRA_TOKEN: ');
109
+ let confluenceToken = ''; while (!confluenceToken) confluenceToken = await promptSecret(' Nhập INTERNAL_CONFLUENCE_TOKEN: ');
110
+ let extConfluenceToken = ''; while (!extConfluenceToken) extConfluenceToken = await promptSecret(' Nhập EXTERNAL_CONFLUENCE_TOKEN: ');
111
+
112
+ let jiraBaseUrl = ''; while (!jiraBaseUrl) jiraBaseUrl = await promptInput(' Nhập JIRA_BASE_URL (e.g. https://jira.viettelmoney.vn/): ');
113
+ let bitbucketBaseUrl = ''; while (!bitbucketBaseUrl) bitbucketBaseUrl = await promptInput(' Nhập BITBUCKET_BASE_URL (e.g. http://bitbucket.digital.vn): ');
114
+ let confluenceInternalUrl = ''; while (!confluenceInternalUrl) confluenceInternalUrl = await promptInput(' Nhập CONFLUENCE_INTERNAL_URL (e.g. http://10.254.136.35:8090): ');
115
+ let confluenceExternalUrl = ''; while (!confluenceExternalUrl) confluenceExternalUrl = await promptInput(' Nhập CONFLUENCE_EXTERNAL_URL (e.g. http://10.254.136.35:8090): ');
153
116
 
154
117
  const envContent = [
155
118
  `VDS_USERNAME=${vdsUsername}`,
156
119
  `VDS_PASSWORD=${vdsPassword}`,
157
- `BITBUCKET_ACCESS_TOKEN=${bitbucketToken}`,
158
- 'JIRA_BASE_URL=https://jira.digital.vn',
159
- 'CONFLUENCE_BASE_URL=https://confluence.digital.vn',
160
- 'BITBUCKET_BASE_URL=http://bitbucket.digital.vn'
120
+ `BITBUCKET_TOKEN=${bitbucketToken}`,
121
+ `JIRA_TOKEN=${jiraToken}`,
122
+ `INTERNAL_CONFLUENCE_TOKEN=${confluenceToken}`,
123
+ `EXTERNAL_CONFLUENCE_TOKEN=${extConfluenceToken}`,
124
+ `JIRA_BASE_URL=${jiraBaseUrl}`,
125
+ `CONFLUENCE_INTERNAL_URL=${confluenceInternalUrl}`,
126
+ `CONFLUENCE_EXTERNAL_URL=${confluenceExternalUrl}`,
127
+ `BITBUCKET_BASE_URL=${bitbucketBaseUrl}`
161
128
  ].join('\n') + '\n';
162
129
 
163
130
  fs.writeFileSync(envFile, envContent);
@@ -166,7 +133,6 @@ async function setupVdsScriptsMcp() {
166
133
  ok('Đã tìm thấy file cấu hình ~/.vds/.env');
167
134
  }
168
135
 
169
- info('Đang cấu hình VDS Scripts MCP vào Claude...');
170
136
  const cmd = `claude mcp add vds-orchestrator -- uv run --project "${mcpDir}" vds-mcp-server`;
171
137
 
172
138
  if (exec(cmd)) {