vibecodingmachine-core 2026.3.9-907 → 2026.3.10-1547
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/auth/access-denied.html +119 -119
- package/src/auth/shared-auth-storage.js +267 -267
- package/src/autonomous-mode/feature-implementer.cjs +70 -70
- package/src/autonomous-mode/feature-implementer.js +425 -425
- package/src/beta-request.js +160 -160
- package/src/chat-management/chat-manager.cjs +71 -71
- package/src/chat-management/chat-manager.js +342 -342
- package/src/compliance/compliance-prompt.js +183 -183
- package/src/ide-integration/aider-cli-manager.cjs +850 -850
- package/src/ide-integration/applescript-manager.cjs +3215 -3215
- package/src/ide-integration/applescript-utils.js +314 -314
- package/src/ide-integration/cdp-manager.cjs +221 -221
- package/src/ide-integration/claude-code-cli-manager.cjs +456 -456
- package/src/ide-integration/cline-cli-manager.cjs +2252 -2252
- package/src/ide-integration/continue-cli-manager.js +431 -431
- package/src/ide-integration/provider-manager.cjs +595 -595
- package/src/ide-integration/quota-detector.cjs +399 -399
- package/src/ide-integration/windows-automation-manager.js +532 -4
- package/src/ide-integration/windows-ide-manager.js +12 -3
- package/src/index.cjs +142 -142
- package/src/llm/direct-llm-manager.cjs +1299 -1299
- package/src/localization/index.js +147 -147
- package/src/quota-management/index.js +108 -108
- package/src/requirement-numbering.js +164 -164
- package/src/sync/aws-setup.js +445 -445
- package/src/ui/ButtonComponents.js +247 -247
- package/src/ui/ChatInterface.js +499 -499
- package/src/ui/StateManager.js +259 -259
- package/src/utils/audit-logger.cjs +116 -116
- package/src/utils/config-helpers.cjs +94 -94
- package/src/utils/config-helpers.js +94 -94
- package/src/utils/env-helpers.js +54 -54
- package/src/utils/error-reporter.js +117 -117
- package/src/utils/gcloud-auth.cjs +394 -394
- package/src/utils/git-branch-manager.js +278 -278
- package/src/utils/logger.cjs +193 -193
- package/src/utils/logger.js +191 -191
- package/src/utils/repo-helpers.cjs +120 -120
- package/src/utils/repo-helpers.js +120 -120
- package/src/utils/update-checker.js +246 -246
- package/src/utils/version-checker.js +170 -170
|
@@ -1,170 +1,170 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Version Checker - Check for updates and manage version display
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const fetch = require('node-fetch');
|
|
6
|
-
const fs = require('fs');
|
|
7
|
-
const path = require('path');
|
|
8
|
-
const os = require('os');
|
|
9
|
-
|
|
10
|
-
const CACHE_FILE = path.join(os.tmpdir(), 'vibecodingmachine-version-cache.json');
|
|
11
|
-
const CACHE_DURATION = 1000 * 60 * 60; // 1 hour
|
|
12
|
-
const VERSION_URL = 'https://vibecodingmachine-website.s3.amazonaws.com/downloads/version.json';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Format version timestamp to YYYY.MM.DD-HHMM UTC
|
|
16
|
-
*/
|
|
17
|
-
function formatVersionTimestamp(versionString) {
|
|
18
|
-
// Version format: YYYY.MM.DD-HHMM (or old format YYYY.MM.DD.HHMM for backward compat)
|
|
19
|
-
const match = versionString.match(/^(\d{4})\.(\d{2})\.(\d{2})[-.](\d{2})(\d{2})$/);
|
|
20
|
-
if (!match) return versionString;
|
|
21
|
-
|
|
22
|
-
const [, year, month, day, hour, minute] = match;
|
|
23
|
-
// Normalize to new format for display
|
|
24
|
-
return `${year}.${month}.${day}-${hour}${minute} UTC`;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Get formatted local time from UTC timestamp
|
|
29
|
-
*/
|
|
30
|
-
function formatLocalTime(isoTimestamp) {
|
|
31
|
-
try {
|
|
32
|
-
const date = new Date(isoTimestamp);
|
|
33
|
-
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
34
|
-
const timeZoneAbbr = new Intl.DateTimeFormat('en-US', {
|
|
35
|
-
timeZone,
|
|
36
|
-
timeZoneName: 'short'
|
|
37
|
-
}).format(date).split(' ').pop();
|
|
38
|
-
|
|
39
|
-
const formatted = new Intl.DateTimeFormat('en-US', {
|
|
40
|
-
year: 'numeric',
|
|
41
|
-
month: '2-digit',
|
|
42
|
-
day: '2-digit',
|
|
43
|
-
hour: '2-digit',
|
|
44
|
-
minute: '2-digit',
|
|
45
|
-
hour12: false
|
|
46
|
-
}).format(date);
|
|
47
|
-
|
|
48
|
-
// Convert to YYYY.MM.DD-HHMM format
|
|
49
|
-
const parts = formatted.match(/(\d{2})\/(\d{2})\/(\d{4}), (\d{2}):(\d{2})/);
|
|
50
|
-
if (parts) {
|
|
51
|
-
const [, month, day, year, hour, minute] = parts;
|
|
52
|
-
return `${year}.${month}.${day}.${hour}${minute} ${timeZoneAbbr}`;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return formatted + ' ' + timeZoneAbbr;
|
|
56
|
-
} catch (error) {
|
|
57
|
-
return isoTimestamp;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Check for updates with caching
|
|
63
|
-
*/
|
|
64
|
-
async function checkForUpdatesWithCache(packageName, currentVersion) {
|
|
65
|
-
try {
|
|
66
|
-
// Check cache first
|
|
67
|
-
if (fs.existsSync(CACHE_FILE)) {
|
|
68
|
-
const cache = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf8'));
|
|
69
|
-
if (cache.timestamp && Date.now() - cache.timestamp < CACHE_DURATION) {
|
|
70
|
-
return {
|
|
71
|
-
...cache.data,
|
|
72
|
-
fromCache: true
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Fetch latest version info
|
|
78
|
-
const response = await fetch(VERSION_URL);
|
|
79
|
-
if (!response.ok) {
|
|
80
|
-
return { hasUpdate: false, currentVersion };
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const versionInfo = await response.json();
|
|
84
|
-
const latestVersion = versionInfo.version;
|
|
85
|
-
|
|
86
|
-
const result = {
|
|
87
|
-
hasUpdate: latestVersion !== currentVersion,
|
|
88
|
-
currentVersion,
|
|
89
|
-
latestVersion,
|
|
90
|
-
publishedDate: versionInfo.date ? formatLocalTime(versionInfo.date) : 'Unknown',
|
|
91
|
-
commit: versionInfo.commit || 'Unknown',
|
|
92
|
-
downloadUrl: getDownloadUrl()
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
// Cache result
|
|
96
|
-
fs.writeFileSync(CACHE_FILE, JSON.stringify({
|
|
97
|
-
timestamp: Date.now(),
|
|
98
|
-
data: result
|
|
99
|
-
}));
|
|
100
|
-
|
|
101
|
-
return result;
|
|
102
|
-
} catch (error) {
|
|
103
|
-
return {
|
|
104
|
-
hasUpdate: false,
|
|
105
|
-
currentVersion,
|
|
106
|
-
error: error.message
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Get download URL for current platform
|
|
113
|
-
*/
|
|
114
|
-
function getDownloadUrl() {
|
|
115
|
-
const platform = os.platform();
|
|
116
|
-
const baseUrl = 'https://vibecodingmachine-website.s3.amazonaws.com/downloads';
|
|
117
|
-
|
|
118
|
-
if (platform === 'darwin') {
|
|
119
|
-
return `${baseUrl}/VibeCodingMachine.dmg`;
|
|
120
|
-
} else if (platform === 'win32') {
|
|
121
|
-
return `${baseUrl}/VibeCodingMachine-win32-x64.zip`;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return baseUrl;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Get current Electron app version
|
|
129
|
-
*/
|
|
130
|
-
async function getCurrentElectronVersion() {
|
|
131
|
-
try {
|
|
132
|
-
const response = await fetch(VERSION_URL);
|
|
133
|
-
if (!response.ok) {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const versionInfo = await response.json();
|
|
138
|
-
return {
|
|
139
|
-
version: versionInfo.version,
|
|
140
|
-
date: versionInfo.date,
|
|
141
|
-
commit: versionInfo.commit,
|
|
142
|
-
formatted: formatVersionTimestamp(versionInfo.version)
|
|
143
|
-
};
|
|
144
|
-
} catch (error) {
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Clear version cache
|
|
151
|
-
*/
|
|
152
|
-
function clearVersionCache() {
|
|
153
|
-
try {
|
|
154
|
-
if (fs.existsSync(CACHE_FILE)) {
|
|
155
|
-
fs.unlinkSync(CACHE_FILE);
|
|
156
|
-
}
|
|
157
|
-
return true;
|
|
158
|
-
} catch (error) {
|
|
159
|
-
return false;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
module.exports = {
|
|
164
|
-
checkForUpdatesWithCache,
|
|
165
|
-
getCurrentElectronVersion,
|
|
166
|
-
formatVersionTimestamp,
|
|
167
|
-
formatLocalTime,
|
|
168
|
-
getDownloadUrl,
|
|
169
|
-
clearVersionCache
|
|
170
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Version Checker - Check for updates and manage version display
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const fetch = require('node-fetch');
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
const path = require('path');
|
|
8
|
+
const os = require('os');
|
|
9
|
+
|
|
10
|
+
const CACHE_FILE = path.join(os.tmpdir(), 'vibecodingmachine-version-cache.json');
|
|
11
|
+
const CACHE_DURATION = 1000 * 60 * 60; // 1 hour
|
|
12
|
+
const VERSION_URL = 'https://vibecodingmachine-website.s3.amazonaws.com/downloads/version.json';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Format version timestamp to YYYY.MM.DD-HHMM UTC
|
|
16
|
+
*/
|
|
17
|
+
function formatVersionTimestamp(versionString) {
|
|
18
|
+
// Version format: YYYY.MM.DD-HHMM (or old format YYYY.MM.DD.HHMM for backward compat)
|
|
19
|
+
const match = versionString.match(/^(\d{4})\.(\d{2})\.(\d{2})[-.](\d{2})(\d{2})$/);
|
|
20
|
+
if (!match) return versionString;
|
|
21
|
+
|
|
22
|
+
const [, year, month, day, hour, minute] = match;
|
|
23
|
+
// Normalize to new format for display
|
|
24
|
+
return `${year}.${month}.${day}-${hour}${minute} UTC`;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Get formatted local time from UTC timestamp
|
|
29
|
+
*/
|
|
30
|
+
function formatLocalTime(isoTimestamp) {
|
|
31
|
+
try {
|
|
32
|
+
const date = new Date(isoTimestamp);
|
|
33
|
+
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
34
|
+
const timeZoneAbbr = new Intl.DateTimeFormat('en-US', {
|
|
35
|
+
timeZone,
|
|
36
|
+
timeZoneName: 'short'
|
|
37
|
+
}).format(date).split(' ').pop();
|
|
38
|
+
|
|
39
|
+
const formatted = new Intl.DateTimeFormat('en-US', {
|
|
40
|
+
year: 'numeric',
|
|
41
|
+
month: '2-digit',
|
|
42
|
+
day: '2-digit',
|
|
43
|
+
hour: '2-digit',
|
|
44
|
+
minute: '2-digit',
|
|
45
|
+
hour12: false
|
|
46
|
+
}).format(date);
|
|
47
|
+
|
|
48
|
+
// Convert to YYYY.MM.DD-HHMM format
|
|
49
|
+
const parts = formatted.match(/(\d{2})\/(\d{2})\/(\d{4}), (\d{2}):(\d{2})/);
|
|
50
|
+
if (parts) {
|
|
51
|
+
const [, month, day, year, hour, minute] = parts;
|
|
52
|
+
return `${year}.${month}.${day}.${hour}${minute} ${timeZoneAbbr}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return formatted + ' ' + timeZoneAbbr;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
return isoTimestamp;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Check for updates with caching
|
|
63
|
+
*/
|
|
64
|
+
async function checkForUpdatesWithCache(packageName, currentVersion) {
|
|
65
|
+
try {
|
|
66
|
+
// Check cache first
|
|
67
|
+
if (fs.existsSync(CACHE_FILE)) {
|
|
68
|
+
const cache = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf8'));
|
|
69
|
+
if (cache.timestamp && Date.now() - cache.timestamp < CACHE_DURATION) {
|
|
70
|
+
return {
|
|
71
|
+
...cache.data,
|
|
72
|
+
fromCache: true
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Fetch latest version info
|
|
78
|
+
const response = await fetch(VERSION_URL);
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
return { hasUpdate: false, currentVersion };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const versionInfo = await response.json();
|
|
84
|
+
const latestVersion = versionInfo.version;
|
|
85
|
+
|
|
86
|
+
const result = {
|
|
87
|
+
hasUpdate: latestVersion !== currentVersion,
|
|
88
|
+
currentVersion,
|
|
89
|
+
latestVersion,
|
|
90
|
+
publishedDate: versionInfo.date ? formatLocalTime(versionInfo.date) : 'Unknown',
|
|
91
|
+
commit: versionInfo.commit || 'Unknown',
|
|
92
|
+
downloadUrl: getDownloadUrl()
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// Cache result
|
|
96
|
+
fs.writeFileSync(CACHE_FILE, JSON.stringify({
|
|
97
|
+
timestamp: Date.now(),
|
|
98
|
+
data: result
|
|
99
|
+
}));
|
|
100
|
+
|
|
101
|
+
return result;
|
|
102
|
+
} catch (error) {
|
|
103
|
+
return {
|
|
104
|
+
hasUpdate: false,
|
|
105
|
+
currentVersion,
|
|
106
|
+
error: error.message
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Get download URL for current platform
|
|
113
|
+
*/
|
|
114
|
+
function getDownloadUrl() {
|
|
115
|
+
const platform = os.platform();
|
|
116
|
+
const baseUrl = 'https://vibecodingmachine-website.s3.amazonaws.com/downloads';
|
|
117
|
+
|
|
118
|
+
if (platform === 'darwin') {
|
|
119
|
+
return `${baseUrl}/VibeCodingMachine.dmg`;
|
|
120
|
+
} else if (platform === 'win32') {
|
|
121
|
+
return `${baseUrl}/VibeCodingMachine-win32-x64.zip`;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return baseUrl;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Get current Electron app version
|
|
129
|
+
*/
|
|
130
|
+
async function getCurrentElectronVersion() {
|
|
131
|
+
try {
|
|
132
|
+
const response = await fetch(VERSION_URL);
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const versionInfo = await response.json();
|
|
138
|
+
return {
|
|
139
|
+
version: versionInfo.version,
|
|
140
|
+
date: versionInfo.date,
|
|
141
|
+
commit: versionInfo.commit,
|
|
142
|
+
formatted: formatVersionTimestamp(versionInfo.version)
|
|
143
|
+
};
|
|
144
|
+
} catch (error) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Clear version cache
|
|
151
|
+
*/
|
|
152
|
+
function clearVersionCache() {
|
|
153
|
+
try {
|
|
154
|
+
if (fs.existsSync(CACHE_FILE)) {
|
|
155
|
+
fs.unlinkSync(CACHE_FILE);
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
} catch (error) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
module.exports = {
|
|
164
|
+
checkForUpdatesWithCache,
|
|
165
|
+
getCurrentElectronVersion,
|
|
166
|
+
formatVersionTimestamp,
|
|
167
|
+
formatLocalTime,
|
|
168
|
+
getDownloadUrl,
|
|
169
|
+
clearVersionCache
|
|
170
|
+
};
|