@camstack/addon-pipeline 1.2.45 → 1.2.46
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/dist/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +43 -13
- package/dist/detection-pipeline/index.mjs +43 -13
- package/dist/{dist-QyZ7QSRP.js → dist-CPfFUIl9.js} +379 -3
- package/dist/{dist-BDkEhx4Z.mjs → dist-CUj9mdhh.mjs} +379 -3
- package/dist/{event-loop-stall-monitor-COEKVBQK.js → event-loop-stall-monitor-BGbgcrEN.js} +7 -1
- package/dist/{event-loop-stall-monitor-IAuNEdmG.mjs → event-loop-stall-monitor-md__iwWh.mjs} +7 -1
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +15 -6
- package/dist/pipeline-runner/index.mjs +15 -6
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.mjs +1 -1
- package/dist/session-decode/decode-worker-child.js +1 -1
- package/dist/session-decode/decode-worker-child.mjs +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-C68YfSUH.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-aUWVCncO.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DN2e2GJL.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B3GxBnXM.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-2D_L2y3g.mjs} +1 -1
- package/dist/stream-broker/{hostInit-BMCrULpc.mjs → hostInit-CRwWRwJH.mjs} +2 -2
- package/dist/stream-broker/index.js +262 -8
- package/dist/stream-broker/index.mjs +262 -8
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/dist/{worker-protocol-DFH_z2-q.mjs → worker-protocol-CD0M9YD7.mjs} +1 -1
- package/dist/{worker-protocol-le27Mw_8.js → worker-protocol-hdTR-F5q.js} +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-C7bsz4cP.js → MaskShapeCanvas-DI4BY7W2-C8eGXtf-.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-BmhLinUd.js → MotionZonesSettings-NcxxQN8r-vvEcAgxS.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-BJjyGWFy.js → PrivacyMaskSettings-APgPLF7p-BLhx7VI-.js} +1 -1
- package/embed-dist/assets/{index-a4CMt-Uc.js → index-DvOgpqcE.js} +12 -12
- package/embed-dist/assets/index-ICnBEqOy.css +2 -0
- package/embed-dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CT2bGWqM.mjs +0 -26
- package/embed-dist/assets/index-DC63og2c.css +0 -2
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-CPfFUIl9.js");
|
|
7
7
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
8
8
|
const require_model_download_service_D8B_4ktF = require("../model-download-service-D8B-4ktF-7-YxE9Wx.js");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { $ as errMsg, C as audioAnalysisCapability, R as mapAudioLabelToMacro, at as BaseAddon, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, p as HF_BASE_URL, ut as hydrateSchema, w as audioAnalyzerCapability } from "../dist-
|
|
2
|
+
import { $ as errMsg, C as audioAnalysisCapability, R as mapAudioLabelToMacro, at as BaseAddon, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, p as HF_BASE_URL, ut as hydrateSchema, w as audioAnalyzerCapability } from "../dist-CUj9mdhh.mjs";
|
|
3
3
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
4
4
|
import { i as downloadFile } from "../model-download-service-D8B-4ktF-BB7oZL3y.mjs";
|
|
5
5
|
import * as fs from "node:fs";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-emK7D4bc.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-
|
|
6
|
+
const require_dist = require("../dist-CPfFUIl9.js");
|
|
7
|
+
const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-BGbgcrEN.js");
|
|
8
8
|
const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
|
|
9
9
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
10
10
|
const require_model_download_service_D8B_4ktF = require("../model-download-service-D8B-4ktF-7-YxE9Wx.js");
|
|
@@ -3258,7 +3258,10 @@ function applyChildOutput(parent, childStep, output, stepLatencyMs, ctx) {
|
|
|
3258
3258
|
const winner = output.classifications[0];
|
|
3259
3259
|
if (winner && passesClass(winner) && winner.score >= minConfidence) parent.ownLabels.push({
|
|
3260
3260
|
label: winner.class,
|
|
3261
|
-
score: winner.score
|
|
3261
|
+
score: winner.score,
|
|
3262
|
+
...childStep.definition.labelTier !== void 0 ? { tier: childStep.definition.labelTier } : {},
|
|
3263
|
+
stepId: childStep.stepId,
|
|
3264
|
+
modelId: childStep.modelId
|
|
3262
3265
|
});
|
|
3263
3266
|
const allAlternates = (output.alternates && output.alternates.length > 0 ? output.alternates : output.classifications).filter(passesClass).map((cls) => ({
|
|
3264
3267
|
label: cls.class,
|
|
@@ -3278,7 +3281,10 @@ function applyChildOutput(parent, childStep, output, stepLatencyMs, ctx) {
|
|
|
3278
3281
|
case "text":
|
|
3279
3282
|
if (output.text.trim().length > 0) parent.ownLabels.push({
|
|
3280
3283
|
label: output.text,
|
|
3281
|
-
score: output.confidence
|
|
3284
|
+
score: output.confidence,
|
|
3285
|
+
...childStep.definition.labelTier !== void 0 ? { tier: childStep.definition.labelTier } : {},
|
|
3286
|
+
stepId: childStep.stepId,
|
|
3287
|
+
modelId: childStep.modelId
|
|
3282
3288
|
});
|
|
3283
3289
|
break;
|
|
3284
3290
|
case "mask":
|
|
@@ -3325,7 +3331,10 @@ function buildFrameResult(input) {
|
|
|
3325
3331
|
for (const child of children) for (const childLabel of child.ownLabels) labels.push({
|
|
3326
3332
|
label: childLabel.label,
|
|
3327
3333
|
score: childLabel.score,
|
|
3328
|
-
detectionId: child.id
|
|
3334
|
+
detectionId: child.id,
|
|
3335
|
+
...childLabel.tier !== void 0 ? { tier: childLabel.tier } : {},
|
|
3336
|
+
...childLabel.stepId !== void 0 ? { stepId: childLabel.stepId } : {},
|
|
3337
|
+
...childLabel.modelId !== void 0 ? { modelId: childLabel.modelId } : {}
|
|
3329
3338
|
});
|
|
3330
3339
|
let embedding = m.embedding;
|
|
3331
3340
|
let embeddingModelId = m.embeddingModelId;
|
|
@@ -3368,6 +3377,7 @@ function buildFrameResult(input) {
|
|
|
3368
3377
|
modelIds: Object.keys(m.modelIds).length > 0 ? { ...m.modelIds } : void 0,
|
|
3369
3378
|
extractMode: m.extractMode,
|
|
3370
3379
|
originalClass: m.originalClass,
|
|
3380
|
+
originalClassTier: m.originalClassTier,
|
|
3371
3381
|
alternateLabels: Object.keys(m.alternateLabels).length > 0 ? { ...m.alternateLabels } : void 0,
|
|
3372
3382
|
mask: m.mask,
|
|
3373
3383
|
maskWidth: m.maskWidth,
|
|
@@ -3435,6 +3445,7 @@ function toMutableRootDetection(det, rootStep, idGen, rootStepLatencyMs) {
|
|
|
3435
3445
|
kind: "first-level",
|
|
3436
3446
|
macroClass: det.class,
|
|
3437
3447
|
originalClass: det.class,
|
|
3448
|
+
...rootStep.definition.labelTier !== void 0 ? { originalClassTier: rootStep.definition.labelTier } : {},
|
|
3438
3449
|
score: det.score,
|
|
3439
3450
|
bbox: [...det.bbox],
|
|
3440
3451
|
ownLabels: [],
|
|
@@ -4903,14 +4914,33 @@ var DetectionPipelineProvider = class DetectionPipelineProvider {
|
|
|
4903
4914
|
});
|
|
4904
4915
|
}
|
|
4905
4916
|
/**
|
|
4906
|
-
* Authoritative platform-probe reconcile: query
|
|
4907
|
-
* DIRECTLY over the cap plane. The RPC resolves only once the async
|
|
4908
|
-
*
|
|
4909
|
-
*
|
|
4910
|
-
* `system.ready-state` event stream.
|
|
4911
|
-
* `resolveProbeHardware` — an unpinned `getCapabilities` routes to this
|
|
4912
|
-
* node's own in-process provider (agent parent / hub). Bounded by
|
|
4917
|
+
* Authoritative platform-probe reconcile: query THIS NODE's probe provider
|
|
4918
|
+
* DIRECTLY over the cap plane. The RPC resolves only once the async probe
|
|
4919
|
+
* has completed (`getCapabilities` awaits the probe promise), so a
|
|
4920
|
+
* successful answer proves readiness independent of the (lossy)
|
|
4921
|
+
* `system.ready-state` event stream. Bounded by
|
|
4913
4922
|
* {@link PROBE_DIRECT_RPC_TIMEOUT_MS}; `false` on any failure.
|
|
4923
|
+
*
|
|
4924
|
+
* PINNED, always. The previous version issued an UNPINNED `getCapabilities`
|
|
4925
|
+
* and its docblock claimed that "routes to this node's own in-process
|
|
4926
|
+
* provider (agent parent / hub)". On an agent that is false and always has
|
|
4927
|
+
* been: a forked child's unowned cap call reaches the agent's
|
|
4928
|
+
* `onUnownedCall`, which has no `CapRouteResolver` and no outbound
|
|
4929
|
+
* in-process lookup, so it goes straight to `forwardToHub` → the HUB's
|
|
4930
|
+
* platform-probe singleton. Every "readiness reconciled via direct probe
|
|
4931
|
+
* RPC (ready event lost)" line ever logged on an agent therefore proved the
|
|
4932
|
+
* HUB's probe had finished — not the local node's.
|
|
4933
|
+
*
|
|
4934
|
+
* That false positive is not cosmetic. It is a readiness gate answering yes
|
|
4935
|
+
* on another machine's evidence, and it is exactly the log line that made a
|
|
4936
|
+
* node with NO platform-probe addon at all (little-unraid, 2026-08-07: its
|
|
4937
|
+
* `@camstack/system` package had been renamed out of `/data/addons`) look
|
|
4938
|
+
* like a node with a lossy event path. The pin makes the answer local: an
|
|
4939
|
+
* inline `nodeId` is the routing pin that survives the forked-addon → parent
|
|
4940
|
+
* UDS hop (`parent-unowned-call.ts`), the same mechanism the orchestrator's
|
|
4941
|
+
* `probeNodeInferenceDevices` already uses. A node whose own probe cannot be
|
|
4942
|
+
* reached now reports NOT ready — which is the truth, and which routes to
|
|
4943
|
+
* the conservative-floor WARN that says so.
|
|
4914
4944
|
*/
|
|
4915
4945
|
async probePlatformReadinessDirect() {
|
|
4916
4946
|
const api = this.addonCtx?.api;
|
|
@@ -4920,7 +4950,7 @@ var DetectionPipelineProvider = class DetectionPipelineProvider {
|
|
|
4920
4950
|
const bound = new Promise((resolve) => {
|
|
4921
4951
|
timer = setTimeout(() => resolve(null), PROBE_DIRECT_RPC_TIMEOUT_MS);
|
|
4922
4952
|
});
|
|
4923
|
-
return await Promise.race([api.platformProbe.getCapabilities.query(), bound]) !== null;
|
|
4953
|
+
return await Promise.race([api.platformProbe.getCapabilities.query({ nodeId: this.localProbeNodeId() }), bound]) !== null;
|
|
4924
4954
|
} catch {
|
|
4925
4955
|
return false;
|
|
4926
4956
|
} finally {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __require } from "../chunk-DnnnRqeS.mjs";
|
|
2
|
-
import { $ as errMsg, At as EventCategory, Et as object, F as enumerateInferenceDevices, I as evaluateZoneRules, J as runtimeDevices$1, M as detectionPipelineCapability, O as defaultDeviceFor$1, Ot as string, U as pipelineExecutorCapability, Z as supportedRuntimes$1, at as BaseAddon, bt as array, ht as parseJsonUnknown, kt as union, l as DEVICE_BACKEND_TO_FORMAT, lt as createEvent, mt as nodePin, t as APPLE_SA_TO_MACRO, ut as hydrateSchema, vt as sleep, x as YAMNET_TO_MACRO } from "../dist-
|
|
3
|
-
import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-
|
|
2
|
+
import { $ as errMsg, At as EventCategory, Et as object, F as enumerateInferenceDevices, I as evaluateZoneRules, J as runtimeDevices$1, M as detectionPipelineCapability, O as defaultDeviceFor$1, Ot as string, U as pipelineExecutorCapability, Z as supportedRuntimes$1, at as BaseAddon, bt as array, ht as parseJsonUnknown, kt as union, l as DEVICE_BACKEND_TO_FORMAT, lt as createEvent, mt as nodePin, t as APPLE_SA_TO_MACRO, ut as hydrateSchema, vt as sleep, x as YAMNET_TO_MACRO } from "../dist-CUj9mdhh.mjs";
|
|
3
|
+
import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-md__iwWh.mjs";
|
|
4
4
|
import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
|
|
5
5
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
6
6
|
import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../model-download-service-D8B-4ktF-BB7oZL3y.mjs";
|
|
@@ -3250,7 +3250,10 @@ function applyChildOutput(parent, childStep, output, stepLatencyMs, ctx) {
|
|
|
3250
3250
|
const winner = output.classifications[0];
|
|
3251
3251
|
if (winner && passesClass(winner) && winner.score >= minConfidence) parent.ownLabels.push({
|
|
3252
3252
|
label: winner.class,
|
|
3253
|
-
score: winner.score
|
|
3253
|
+
score: winner.score,
|
|
3254
|
+
...childStep.definition.labelTier !== void 0 ? { tier: childStep.definition.labelTier } : {},
|
|
3255
|
+
stepId: childStep.stepId,
|
|
3256
|
+
modelId: childStep.modelId
|
|
3254
3257
|
});
|
|
3255
3258
|
const allAlternates = (output.alternates && output.alternates.length > 0 ? output.alternates : output.classifications).filter(passesClass).map((cls) => ({
|
|
3256
3259
|
label: cls.class,
|
|
@@ -3270,7 +3273,10 @@ function applyChildOutput(parent, childStep, output, stepLatencyMs, ctx) {
|
|
|
3270
3273
|
case "text":
|
|
3271
3274
|
if (output.text.trim().length > 0) parent.ownLabels.push({
|
|
3272
3275
|
label: output.text,
|
|
3273
|
-
score: output.confidence
|
|
3276
|
+
score: output.confidence,
|
|
3277
|
+
...childStep.definition.labelTier !== void 0 ? { tier: childStep.definition.labelTier } : {},
|
|
3278
|
+
stepId: childStep.stepId,
|
|
3279
|
+
modelId: childStep.modelId
|
|
3274
3280
|
});
|
|
3275
3281
|
break;
|
|
3276
3282
|
case "mask":
|
|
@@ -3317,7 +3323,10 @@ function buildFrameResult(input) {
|
|
|
3317
3323
|
for (const child of children) for (const childLabel of child.ownLabels) labels.push({
|
|
3318
3324
|
label: childLabel.label,
|
|
3319
3325
|
score: childLabel.score,
|
|
3320
|
-
detectionId: child.id
|
|
3326
|
+
detectionId: child.id,
|
|
3327
|
+
...childLabel.tier !== void 0 ? { tier: childLabel.tier } : {},
|
|
3328
|
+
...childLabel.stepId !== void 0 ? { stepId: childLabel.stepId } : {},
|
|
3329
|
+
...childLabel.modelId !== void 0 ? { modelId: childLabel.modelId } : {}
|
|
3321
3330
|
});
|
|
3322
3331
|
let embedding = m.embedding;
|
|
3323
3332
|
let embeddingModelId = m.embeddingModelId;
|
|
@@ -3360,6 +3369,7 @@ function buildFrameResult(input) {
|
|
|
3360
3369
|
modelIds: Object.keys(m.modelIds).length > 0 ? { ...m.modelIds } : void 0,
|
|
3361
3370
|
extractMode: m.extractMode,
|
|
3362
3371
|
originalClass: m.originalClass,
|
|
3372
|
+
originalClassTier: m.originalClassTier,
|
|
3363
3373
|
alternateLabels: Object.keys(m.alternateLabels).length > 0 ? { ...m.alternateLabels } : void 0,
|
|
3364
3374
|
mask: m.mask,
|
|
3365
3375
|
maskWidth: m.maskWidth,
|
|
@@ -3427,6 +3437,7 @@ function toMutableRootDetection(det, rootStep, idGen, rootStepLatencyMs) {
|
|
|
3427
3437
|
kind: "first-level",
|
|
3428
3438
|
macroClass: det.class,
|
|
3429
3439
|
originalClass: det.class,
|
|
3440
|
+
...rootStep.definition.labelTier !== void 0 ? { originalClassTier: rootStep.definition.labelTier } : {},
|
|
3430
3441
|
score: det.score,
|
|
3431
3442
|
bbox: [...det.bbox],
|
|
3432
3443
|
ownLabels: [],
|
|
@@ -4895,14 +4906,33 @@ var DetectionPipelineProvider = class DetectionPipelineProvider {
|
|
|
4895
4906
|
});
|
|
4896
4907
|
}
|
|
4897
4908
|
/**
|
|
4898
|
-
* Authoritative platform-probe reconcile: query
|
|
4899
|
-
* DIRECTLY over the cap plane. The RPC resolves only once the async
|
|
4900
|
-
*
|
|
4901
|
-
*
|
|
4902
|
-
* `system.ready-state` event stream.
|
|
4903
|
-
* `resolveProbeHardware` — an unpinned `getCapabilities` routes to this
|
|
4904
|
-
* node's own in-process provider (agent parent / hub). Bounded by
|
|
4909
|
+
* Authoritative platform-probe reconcile: query THIS NODE's probe provider
|
|
4910
|
+
* DIRECTLY over the cap plane. The RPC resolves only once the async probe
|
|
4911
|
+
* has completed (`getCapabilities` awaits the probe promise), so a
|
|
4912
|
+
* successful answer proves readiness independent of the (lossy)
|
|
4913
|
+
* `system.ready-state` event stream. Bounded by
|
|
4905
4914
|
* {@link PROBE_DIRECT_RPC_TIMEOUT_MS}; `false` on any failure.
|
|
4915
|
+
*
|
|
4916
|
+
* PINNED, always. The previous version issued an UNPINNED `getCapabilities`
|
|
4917
|
+
* and its docblock claimed that "routes to this node's own in-process
|
|
4918
|
+
* provider (agent parent / hub)". On an agent that is false and always has
|
|
4919
|
+
* been: a forked child's unowned cap call reaches the agent's
|
|
4920
|
+
* `onUnownedCall`, which has no `CapRouteResolver` and no outbound
|
|
4921
|
+
* in-process lookup, so it goes straight to `forwardToHub` → the HUB's
|
|
4922
|
+
* platform-probe singleton. Every "readiness reconciled via direct probe
|
|
4923
|
+
* RPC (ready event lost)" line ever logged on an agent therefore proved the
|
|
4924
|
+
* HUB's probe had finished — not the local node's.
|
|
4925
|
+
*
|
|
4926
|
+
* That false positive is not cosmetic. It is a readiness gate answering yes
|
|
4927
|
+
* on another machine's evidence, and it is exactly the log line that made a
|
|
4928
|
+
* node with NO platform-probe addon at all (little-unraid, 2026-08-07: its
|
|
4929
|
+
* `@camstack/system` package had been renamed out of `/data/addons`) look
|
|
4930
|
+
* like a node with a lossy event path. The pin makes the answer local: an
|
|
4931
|
+
* inline `nodeId` is the routing pin that survives the forked-addon → parent
|
|
4932
|
+
* UDS hop (`parent-unowned-call.ts`), the same mechanism the orchestrator's
|
|
4933
|
+
* `probeNodeInferenceDevices` already uses. A node whose own probe cannot be
|
|
4934
|
+
* reached now reports NOT ready — which is the truth, and which routes to
|
|
4935
|
+
* the conservative-floor WARN that says so.
|
|
4906
4936
|
*/
|
|
4907
4937
|
async probePlatformReadinessDirect() {
|
|
4908
4938
|
const api = this.addonCtx?.api;
|
|
@@ -4912,7 +4942,7 @@ var DetectionPipelineProvider = class DetectionPipelineProvider {
|
|
|
4912
4942
|
const bound = new Promise((resolve) => {
|
|
4913
4943
|
timer = setTimeout(() => resolve(null), PROBE_DIRECT_RPC_TIMEOUT_MS);
|
|
4914
4944
|
});
|
|
4915
|
-
return await Promise.race([api.platformProbe.getCapabilities.query(), bound]) !== null;
|
|
4945
|
+
return await Promise.race([api.platformProbe.getCapabilities.query({ nodeId: this.localProbeNodeId() }), bound]) !== null;
|
|
4916
4946
|
} catch {
|
|
4917
4947
|
return false;
|
|
4918
4948
|
} finally {
|