neoagent 2.3.1-beta.69 → 2.3.1-beta.70
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
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
5938e78ce8065f2bdbeea2a8ccd118fb
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"42d3d75a56efe1a2e9902f52dc8006099c45d9
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "2845487408" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|
|
@@ -127230,7 +127230,7 @@ r===$&&A.b()
|
|
|
127230
127230
|
o.push(A.id(p,A.iS(!1,new A.a3(B.tE,A.dZ(new A.cU(B.h8,new A.a5p(r,p),p),p,p),p),!1,B.I,!0),p,p,0,0,0,p))}r=!1
|
|
127231
127231
|
if(!s.ay)if(!s.ch){r=s.e
|
|
127232
127232
|
r===$&&A.b()
|
|
127233
|
-
r=B.b.A("
|
|
127233
|
+
r=B.b.A("mp10yphj-a1afcb2").length!==0&&r.b}if(r){r=s.d
|
|
127234
127234
|
r===$&&A.b()
|
|
127235
127235
|
r=r.V&&!r.a0?84:0
|
|
127236
127236
|
q=s.e
|
|
@@ -131894,7 +131894,7 @@ $S:324}
|
|
|
131894
131894
|
A.Y0.prototype={}
|
|
131895
131895
|
A.R0.prototype={
|
|
131896
131896
|
mJ(a){var s=this
|
|
131897
|
-
if(B.b.A("
|
|
131897
|
+
if(B.b.A("mp10yphj-a1afcb2").length===0||s.a!=null)return
|
|
131898
131898
|
s.zY()
|
|
131899
131899
|
s.a=A.pN(B.Pr,new A.b3g(s))},
|
|
131900
131900
|
zY(){var s=0,r=A.l(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f
|
|
@@ -131912,7 +131912,7 @@ if(!t.f.b(k)){s=1
|
|
|
131912
131912
|
break}i=J.Z(k,"buildId")
|
|
131913
131913
|
h=i==null?null:B.b.A(J.r(i))
|
|
131914
131914
|
j=h==null?"":h
|
|
131915
|
-
if(J.bi(j)===0||J.c(j,"
|
|
131915
|
+
if(J.bi(j)===0||J.c(j,"mp10yphj-a1afcb2")){s=1
|
|
131916
131916
|
break}n.b=!0
|
|
131917
131917
|
n.J()
|
|
131918
131918
|
p=2
|
|
@@ -131929,7 +131929,7 @@ case 2:return A.i(o.at(-1),r)}})
|
|
|
131929
131929
|
return A.k($async$zY,r)},
|
|
131930
131930
|
v_(){var s=0,r=A.l(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1
|
|
131931
131931
|
var $async$v_=A.h(function(a2,a3){if(a2===1){o.push(a3)
|
|
131932
|
-
s=p}for(;;)switch(s){case 0:if(B.b.A("
|
|
131932
|
+
s=p}for(;;)switch(s){case 0:if(B.b.A("mp10yphj-a1afcb2").length===0||n.c){s=1
|
|
131933
131933
|
break}n.c=!0
|
|
131934
131934
|
n.J()
|
|
131935
131935
|
p=4
|
|
@@ -208,9 +208,30 @@ function ensureUserVmDisk(userRoot, baseImagePath) {
|
|
|
208
208
|
return diskPath;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
211
|
+
const detail = String(
|
|
212
|
+
result.stderr
|
|
213
|
+
|| result.stdout
|
|
214
|
+
|| result.error?.message
|
|
215
|
+
|| `exit status ${result.status ?? 'unknown'}`
|
|
216
|
+
).trim();
|
|
217
|
+
throw new Error(`Failed to create VM overlay with qemu-img: ${detail}`);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function formatReadinessIssues(readiness) {
|
|
221
|
+
if (!readiness) {
|
|
222
|
+
return ['VM runtime is unavailable on this host.'];
|
|
223
|
+
}
|
|
224
|
+
const issues = [];
|
|
225
|
+
if (!readiness.qemuAvailable) {
|
|
226
|
+
issues.push(`Missing QEMU binary (${readiness.qemuBinary}).`);
|
|
227
|
+
}
|
|
228
|
+
if (!readiness.qemuImgAvailable) {
|
|
229
|
+
issues.push(`Missing qemu-img binary (${readiness.qemuImgBinary}).`);
|
|
230
|
+
}
|
|
231
|
+
if (!readiness.baseImageExists && !readiness.downloadConfigured) {
|
|
232
|
+
issues.push('No VM base image is available for download or local reuse.');
|
|
233
|
+
}
|
|
234
|
+
return issues.length > 0 ? issues : ['VM runtime is unavailable on this host.'];
|
|
214
235
|
}
|
|
215
236
|
|
|
216
237
|
class QemuVmManager {
|
|
@@ -253,7 +274,7 @@ class QemuVmManager {
|
|
|
253
274
|
}
|
|
254
275
|
|
|
255
276
|
if (!isHttpUrl(this.baseImageUrl)) {
|
|
256
|
-
throw new Error('VM base image is not configured
|
|
277
|
+
throw new Error('VM base image is not configured and no downloadable base image URL is available.');
|
|
257
278
|
}
|
|
258
279
|
|
|
259
280
|
const cachePath = this.getBaseImageCachePath();
|
|
@@ -310,7 +331,7 @@ class QemuVmManager {
|
|
|
310
331
|
}
|
|
311
332
|
const readiness = this.getReadiness();
|
|
312
333
|
if (!readiness.ready) {
|
|
313
|
-
throw new Error('
|
|
334
|
+
throw new Error(formatReadinessIssues(readiness).join(' '));
|
|
314
335
|
}
|
|
315
336
|
|
|
316
337
|
const userRoot = path.join(this.rootDir, key);
|
|
@@ -32,7 +32,19 @@ function getRuntimeValidation(runtimeManager) {
|
|
|
32
32
|
|
|
33
33
|
if (policy.profile === 'prod' || nodeEnvIsProd) {
|
|
34
34
|
if (!vmReadiness?.ready) {
|
|
35
|
-
|
|
35
|
+
if (!vmReadiness) {
|
|
36
|
+
issues.push('prod profile requires a working local VM runtime.');
|
|
37
|
+
} else {
|
|
38
|
+
if (!vmReadiness.qemuAvailable) {
|
|
39
|
+
issues.push(`prod profile requires QEMU (${vmReadiness.qemuBinary}) to be installed.`);
|
|
40
|
+
}
|
|
41
|
+
if (!vmReadiness.qemuImgAvailable) {
|
|
42
|
+
issues.push(`prod profile requires qemu-img (${vmReadiness.qemuImgBinary}) to be installed.`);
|
|
43
|
+
}
|
|
44
|
+
if (!vmReadiness.baseImageExists && !vmReadiness.downloadConfigured) {
|
|
45
|
+
issues.push('prod profile requires a VM base image or a downloadable base image URL.');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
36
48
|
}
|
|
37
49
|
if (!guestTokenValidation.valid) {
|
|
38
50
|
issues.push(`prod profile requires a secure NEOAGENT_VM_GUEST_TOKEN. ${guestTokenValidation.reason}`);
|