@farazirfan/costar-server-executor 1.7.0 → 1.7.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.
|
@@ -27,6 +27,11 @@ export type UpdateCheckResult = {
|
|
|
27
27
|
export declare function compareSemverStrings(a: string | null, b: string | null): number | null;
|
|
28
28
|
/**
|
|
29
29
|
* Get current version from package.json
|
|
30
|
+
*
|
|
31
|
+
* Resolution order:
|
|
32
|
+
* 1. package.json relative to this module (works for global npm installs)
|
|
33
|
+
* 2. package.json in process.cwd() (works for local dev / npm start)
|
|
34
|
+
* 3. Falls back to "0.0.0"
|
|
30
35
|
*/
|
|
31
36
|
export declare function getCurrentVersion(): Promise<string>;
|
|
32
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/updates/checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,aAAa,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/updates/checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,aAAa,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAqIF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAWtF;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBzD;AAiCD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAqDpC;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACxD,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI,CA8B5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
package/dist/updates/checker.js
CHANGED
|
@@ -7,7 +7,7 @@ import path from "node:path";
|
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
// Check for updates every 24 hours (OpenClaw pattern)
|
|
9
9
|
const UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
10
|
-
const NPM_PACKAGE_NAME = "costar-server-executor";
|
|
10
|
+
const NPM_PACKAGE_NAME = "@farazirfan/costar-server-executor";
|
|
11
11
|
/**
|
|
12
12
|
* Get state directory
|
|
13
13
|
*/
|
|
@@ -55,8 +55,16 @@ async function fetchNpmVersion(params) {
|
|
|
55
55
|
const ctrl = new AbortController();
|
|
56
56
|
const timeout = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
57
57
|
try {
|
|
58
|
-
|
|
59
|
-
const
|
|
58
|
+
// Scoped package — encode the package name for the registry URL
|
|
59
|
+
const encodedPkg = NPM_PACKAGE_NAME.replace("/", "%2f");
|
|
60
|
+
const url = `https://registry.npmjs.org/${encodedPkg}/${encodeURIComponent(npmTag)}`;
|
|
61
|
+
// Private package — include auth token if available
|
|
62
|
+
const headers = {};
|
|
63
|
+
const npmToken = process.env.NPM_TOKEN;
|
|
64
|
+
if (npmToken) {
|
|
65
|
+
headers["Authorization"] = `Bearer ${npmToken}`;
|
|
66
|
+
}
|
|
67
|
+
const res = await fetch(url, { signal: ctrl.signal, headers });
|
|
60
68
|
if (!res.ok) {
|
|
61
69
|
return { version: null, error: `HTTP ${res.status}` };
|
|
62
70
|
}
|
|
@@ -126,18 +134,32 @@ export function compareSemverStrings(a, b) {
|
|
|
126
134
|
}
|
|
127
135
|
/**
|
|
128
136
|
* Get current version from package.json
|
|
137
|
+
*
|
|
138
|
+
* Resolution order:
|
|
139
|
+
* 1. package.json relative to this module (works for global npm installs)
|
|
140
|
+
* 2. package.json in process.cwd() (works for local dev / npm start)
|
|
141
|
+
* 3. Falls back to "0.0.0"
|
|
129
142
|
*/
|
|
130
143
|
export async function getCurrentVersion() {
|
|
144
|
+
// 1. Try relative to this module's location (global npm install)
|
|
145
|
+
try {
|
|
146
|
+
const moduleDir = new URL("../../package.json", import.meta.url);
|
|
147
|
+
const raw = await fs.readFile(moduleDir, "utf-8");
|
|
148
|
+
const pkg = JSON.parse(raw);
|
|
149
|
+
if (pkg.version && pkg.version !== "0.0.0")
|
|
150
|
+
return pkg.version;
|
|
151
|
+
}
|
|
152
|
+
catch { /* continue */ }
|
|
153
|
+
// 2. Try process.cwd() (local dev)
|
|
131
154
|
try {
|
|
132
|
-
// Try to read from package.json in the module root
|
|
133
155
|
const packageJsonPath = path.join(process.cwd(), "package.json");
|
|
134
156
|
const raw = await fs.readFile(packageJsonPath, "utf-8");
|
|
135
157
|
const pkg = JSON.parse(raw);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
catch {
|
|
139
|
-
return "0.0.0";
|
|
158
|
+
if (pkg.version)
|
|
159
|
+
return pkg.version;
|
|
140
160
|
}
|
|
161
|
+
catch { /* continue */ }
|
|
162
|
+
return "0.0.0";
|
|
141
163
|
}
|
|
142
164
|
/**
|
|
143
165
|
* Check if update check should run
|
|
@@ -248,6 +270,6 @@ export function scheduleUpdateCheck(params) {
|
|
|
248
270
|
* Get update command for user
|
|
249
271
|
*/
|
|
250
272
|
export function getUpdateCommand() {
|
|
251
|
-
return
|
|
273
|
+
return `npm install -g ${NPM_PACKAGE_NAME}@latest`;
|
|
252
274
|
}
|
|
253
275
|
//# sourceMappingURL=checker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/updates/checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBzB,sDAAsD;AACtD,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrD,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/updates/checker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -93,6 +93,51 @@
|
|
|
93
93
|
margin-top: 2px;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
.sidebar-logo .version span {
|
|
97
|
+
color: var(--accent);
|
|
98
|
+
font-family: var(--mono);
|
|
99
|
+
font-size: 10px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.update-banner {
|
|
103
|
+
display: flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
justify-content: space-between;
|
|
106
|
+
background: var(--accent-dim);
|
|
107
|
+
border: 1px solid rgba(99,102,241,.3);
|
|
108
|
+
border-radius: var(--radius);
|
|
109
|
+
padding: 10px 14px;
|
|
110
|
+
margin-bottom: 16px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.update-banner .update-info {
|
|
114
|
+
font-size: 13px;
|
|
115
|
+
color: var(--text-primary);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.update-banner .update-info small {
|
|
119
|
+
display: block;
|
|
120
|
+
color: var(--text-secondary);
|
|
121
|
+
font-size: 11px;
|
|
122
|
+
margin-top: 2px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.update-btn {
|
|
126
|
+
background: var(--accent);
|
|
127
|
+
color: white;
|
|
128
|
+
border: none;
|
|
129
|
+
padding: 6px 14px;
|
|
130
|
+
border-radius: var(--radius);
|
|
131
|
+
font-size: 12px;
|
|
132
|
+
font-weight: 600;
|
|
133
|
+
cursor: pointer;
|
|
134
|
+
white-space: nowrap;
|
|
135
|
+
transition: background .15s;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.update-btn:hover { background: var(--accent-hover); }
|
|
139
|
+
.update-btn:disabled { opacity: .5; cursor: not-allowed; }
|
|
140
|
+
|
|
96
141
|
.sidebar-nav {
|
|
97
142
|
flex: 1;
|
|
98
143
|
padding: 12px 10px;
|
|
@@ -751,7 +796,7 @@
|
|
|
751
796
|
<div class="logo-icon">C</div>
|
|
752
797
|
<div>
|
|
753
798
|
<h1>CoStar</h1>
|
|
754
|
-
<div class="version">Server Executor
|
|
799
|
+
<div class="version">Server Executor <span id="sidebar-version"></span></div>
|
|
755
800
|
</div>
|
|
756
801
|
</div>
|
|
757
802
|
|
|
@@ -816,6 +861,7 @@
|
|
|
816
861
|
|
|
817
862
|
<!-- ═══ Dashboard Page ═══ -->
|
|
818
863
|
<div class="page active" id="page-dashboard">
|
|
864
|
+
<div id="update-banner-container"></div>
|
|
819
865
|
<div class="stat-grid" id="stats-grid">
|
|
820
866
|
<div class="stat-card">
|
|
821
867
|
<div class="stat-label">Uptime</div>
|
|
@@ -1090,9 +1136,20 @@
|
|
|
1090
1136
|
// ─── Dashboard ───────────────────────────────────
|
|
1091
1137
|
async function loadDashboard() {
|
|
1092
1138
|
try {
|
|
1093
|
-
const status = await
|
|
1139
|
+
const [status, versionInfo] = await Promise.all([
|
|
1140
|
+
api('/api/status'),
|
|
1141
|
+
api('/api/version').catch(() => null),
|
|
1142
|
+
]);
|
|
1094
1143
|
const a = status.agent;
|
|
1095
1144
|
|
|
1145
|
+
// Show version in sidebar
|
|
1146
|
+
if (versionInfo?.version) {
|
|
1147
|
+
document.getElementById('sidebar-version').textContent = `v${versionInfo.version}`;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
// Update banner — check for newer version on npm
|
|
1151
|
+
renderUpdateBanner(versionInfo);
|
|
1152
|
+
|
|
1096
1153
|
// Stats
|
|
1097
1154
|
const uptime = formatUptime(a.uptime);
|
|
1098
1155
|
document.getElementById('stat-uptime').textContent = uptime;
|
|
@@ -1113,6 +1170,8 @@
|
|
|
1113
1170
|
// System info
|
|
1114
1171
|
const info = document.getElementById('system-info');
|
|
1115
1172
|
info.innerHTML = [
|
|
1173
|
+
row('Version', versionInfo?.version ? `v${versionInfo.version}` : '--'),
|
|
1174
|
+
row('Auto-Update', versionInfo?.autoUpdateEnabled ? 'Enabled' : 'Disabled'),
|
|
1116
1175
|
row('User ID', a.userId),
|
|
1117
1176
|
row('Workspace', a.workspaceDir),
|
|
1118
1177
|
row('Node', a.nodeVersion),
|
|
@@ -1126,6 +1185,61 @@
|
|
|
1126
1185
|
}
|
|
1127
1186
|
}
|
|
1128
1187
|
|
|
1188
|
+
// ─── Update Banner ────────────────────────────────
|
|
1189
|
+
async function renderUpdateBanner(versionInfo) {
|
|
1190
|
+
const container = document.getElementById('update-banner-container');
|
|
1191
|
+
if (!container) return;
|
|
1192
|
+
|
|
1193
|
+
// Always show version + manual update button
|
|
1194
|
+
if (!versionInfo) {
|
|
1195
|
+
container.innerHTML = '';
|
|
1196
|
+
return;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
const v = esc(versionInfo.version || 'unknown');
|
|
1200
|
+
const autoUpdate = versionInfo.autoUpdateEnabled;
|
|
1201
|
+
const updating = versionInfo.updateInProgress;
|
|
1202
|
+
|
|
1203
|
+
container.innerHTML = `
|
|
1204
|
+
<div class="update-banner">
|
|
1205
|
+
<div class="update-info">
|
|
1206
|
+
Running <strong>v${v}</strong>
|
|
1207
|
+
<small>${autoUpdate ? 'Auto-update enabled — checks every 24h' : 'Auto-update disabled'}</small>
|
|
1208
|
+
</div>
|
|
1209
|
+
<button class="update-btn" id="manual-update-btn" onclick="triggerManualUpdate()" ${updating ? 'disabled' : ''}>
|
|
1210
|
+
${updating ? 'Updating...' : 'Update Now'}
|
|
1211
|
+
</button>
|
|
1212
|
+
</div>
|
|
1213
|
+
`;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
async function triggerManualUpdate() {
|
|
1217
|
+
const btn = document.getElementById('manual-update-btn');
|
|
1218
|
+
if (!btn) return;
|
|
1219
|
+
|
|
1220
|
+
btn.disabled = true;
|
|
1221
|
+
btn.textContent = 'Updating...';
|
|
1222
|
+
|
|
1223
|
+
try {
|
|
1224
|
+
const result = await api('/api/update', {
|
|
1225
|
+
method: 'POST',
|
|
1226
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1227
|
+
body: JSON.stringify({ version: 'latest' }),
|
|
1228
|
+
});
|
|
1229
|
+
btn.textContent = 'Restarting...';
|
|
1230
|
+
// The server will restart, so the page will lose connection
|
|
1231
|
+
setTimeout(() => {
|
|
1232
|
+
btn.textContent = 'Reconnecting...';
|
|
1233
|
+
// Try to reload after a delay to reconnect to the new version
|
|
1234
|
+
setTimeout(() => location.reload(), 8000);
|
|
1235
|
+
}, 5000);
|
|
1236
|
+
} catch (err) {
|
|
1237
|
+
btn.disabled = false;
|
|
1238
|
+
btn.textContent = 'Update Failed — Retry';
|
|
1239
|
+
console.error('Update failed:', err);
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1129
1243
|
function row(key, value) {
|
|
1130
1244
|
return `<div class="config-row"><span class="config-key">${esc(key)}</span><span class="config-value">${esc(String(value || '--'))}</span></div>`;
|
|
1131
1245
|
}
|