@camstack/addon-pipeline 1.2.12 → 1.2.14
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 +2 -2
- package/dist/detection-pipeline/index.mjs +2 -2
- package/dist/{dist-B89zyHyl.js → dist-DDTAur0R.js} +109 -30
- package/dist/{dist-DMiEnBkk.mjs → dist-OjOsoSZG.mjs} +110 -31
- package/dist/{fmp4-keyframes-BzTPoPVn.js → fmp4-keyframes-5s8T9Mng.js} +42 -7
- package/dist/{fmp4-keyframes-qOgJBjMO.mjs → fmp4-keyframes-CV0X1mGy.mjs} +37 -12
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +2 -2
- package/dist/pipeline-runner/index.mjs +2 -2
- package/dist/recorder/index.js +36 -8
- package/dist/recorder/index.mjs +36 -8
- package/dist/{step-definitions-NeFJ6mFi.mjs → step-definitions-B9vyUNYR.mjs} +1 -1
- package/dist/{step-definitions-DLgHGq8f.js → step-definitions-DGCuoeCj.js} +1 -1
- package/dist/stream-broker/_stub.js +2 -2
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CAvWbzaf.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-S2nRs43G.mjs} +2 -2
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DbC3MMjB.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BDeEvhV5.mjs} +1 -1
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js--zEZtV2N.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BGtpZkgz.mjs} +1 -1
- package/dist/stream-broker/{hostInit-Do62nL9c.mjs → hostInit-p_rpDGqr.mjs} +2 -2
- package/dist/stream-broker/index.js +1186 -337
- package/dist/stream-broker/index.mjs +1187 -338
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-CNyCTsIC.js → MaskShapeCanvas-DI4BY7W2-CaRFwVIZ.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-DOdX9Yp1.js → MotionZonesSettings-NcxxQN8r-o7HcwAxC.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-9huXsgpT.js → PrivacyMaskSettings-APgPLF7p-B2TnFjvh.js} +1 -1
- package/embed-dist/assets/index-D4RNu5XI.js +116 -0
- package/embed-dist/index.html +1 -1
- package/package.json +1 -1
- package/embed-dist/assets/index-BxOCtm8E.js +0 -116
|
@@ -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-DDTAur0R.js");
|
|
7
7
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
8
8
|
const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as downloadFile, l as __require } from "../model-download-service-Cp9f4dk6-WO-foD7W.mjs";
|
|
2
|
-
import { D as mapAudioLabelToMacro,
|
|
2
|
+
import { B as errMsg, D as mapAudioLabelToMacro, K as hydrateSchema, V as BaseAddon, _ as audioAnalysisCapability, d as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, v as audioAnalyzerCapability } from "../dist-OjOsoSZG.mjs";
|
|
3
3
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
@@ -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_step_definitions = require("../step-definitions-
|
|
6
|
+
const require_dist = require("../dist-DDTAur0R.js");
|
|
7
|
+
const require_step_definitions = require("../step-definitions-DGCuoeCj.js");
|
|
8
8
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
9
9
|
const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
|
|
10
10
|
let node_child_process = require("node:child_process");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as ensureModel, l as __require, o as isModelDownloaded, r as deleteModelFromDisk } from "../model-download-service-Cp9f4dk6-WO-foD7W.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { a as getStepDefinition, i as getStep, n as ALL_STEPS, o as resolveModelForFormat, r as getDefaultModelForFormat, t as ALL_PIPELINE_STEPS } from "../step-definitions-
|
|
2
|
+
import { B as errMsg, C as detectionPipelineCapability, F as runtimeDevices$1, G as createEvent, K as hydrateSchema, R as supportedRuntimes$1, T as evaluateZoneRules, V as BaseAddon, X as nodePin, Z as parseJsonUnknown, ct as object, dt as union, et as sleep, ft as EventCategory, h as YAMNET_TO_MACRO, j as pipelineExecutorCapability, nt as array, s as DEVICE_BACKEND_TO_FORMAT, t as APPLE_SA_TO_MACRO, ut as string, w as enumerateInferenceDevices, x as defaultDeviceFor$1 } from "../dist-OjOsoSZG.mjs";
|
|
3
|
+
import { a as getStepDefinition, i as getStep, n as ALL_STEPS, o as resolveModelForFormat, r as getDefaultModelForFormat, t as ALL_PIPELINE_STEPS } from "../step-definitions-B9vyUNYR.mjs";
|
|
4
4
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
5
5
|
import { spawn } from "node:child_process";
|
|
6
6
|
import sharp from "sharp";
|
|
@@ -6531,6 +6531,36 @@ var ProfileRtspEntrySchema = object({
|
|
|
6531
6531
|
resolution: CamStreamResolutionSchema.optional()
|
|
6532
6532
|
});
|
|
6533
6533
|
/**
|
|
6534
|
+
* Per-call node pinning for `ctx.api` capability calls.
|
|
6535
|
+
*
|
|
6536
|
+
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
6537
|
+
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
6538
|
+
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
6539
|
+
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
6540
|
+
* call to that node.
|
|
6541
|
+
*
|
|
6542
|
+
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
6543
|
+
* method args), so capability method signatures stay `nodeId`-free — node
|
|
6544
|
+
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
6545
|
+
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
6546
|
+
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
6547
|
+
* which classifies a pinned agent node as `agent-child-forward`
|
|
6548
|
+
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
6549
|
+
*
|
|
6550
|
+
* Usage at a call site:
|
|
6551
|
+
*
|
|
6552
|
+
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
6553
|
+
*/
|
|
6554
|
+
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
6555
|
+
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
6556
|
+
/**
|
|
6557
|
+
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
6558
|
+
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
6559
|
+
*/
|
|
6560
|
+
function nodePin(nodeId) {
|
|
6561
|
+
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: nodeId } };
|
|
6562
|
+
}
|
|
6563
|
+
/**
|
|
6534
6564
|
* Type-safe JSON parsing helpers.
|
|
6535
6565
|
*
|
|
6536
6566
|
* `JSON.parse` is typed as `any` in lib.es5.d.ts, which triggers
|
|
@@ -7847,36 +7877,6 @@ var EncodeProfileSchema = object({
|
|
|
7847
7877
|
outputArgs: array(string()).optional()
|
|
7848
7878
|
});
|
|
7849
7879
|
var HF_BASE_URL = `https://huggingface.co/camstack/camstack-models/resolve/main`;
|
|
7850
|
-
/**
|
|
7851
|
-
* Per-call node pinning for `ctx.api` capability calls.
|
|
7852
|
-
*
|
|
7853
|
-
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
7854
|
-
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
7855
|
-
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
7856
|
-
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
7857
|
-
* call to that node.
|
|
7858
|
-
*
|
|
7859
|
-
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
7860
|
-
* method args), so capability method signatures stay `nodeId`-free — node
|
|
7861
|
-
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
7862
|
-
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
7863
|
-
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
7864
|
-
* which classifies a pinned agent node as `agent-child-forward`
|
|
7865
|
-
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
7866
|
-
*
|
|
7867
|
-
* Usage at a call site:
|
|
7868
|
-
*
|
|
7869
|
-
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
7870
|
-
*/
|
|
7871
|
-
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
7872
|
-
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
7873
|
-
/**
|
|
7874
|
-
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
7875
|
-
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
7876
|
-
*/
|
|
7877
|
-
function nodePin(nodeId) {
|
|
7878
|
-
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: nodeId } };
|
|
7879
|
-
}
|
|
7880
7880
|
function hfModelUrl(repo, path) {
|
|
7881
7881
|
return `https://huggingface.co/${repo}/resolve/main/${path}`;
|
|
7882
7882
|
}
|
|
@@ -15542,6 +15542,55 @@ method(object({
|
|
|
15542
15542
|
password: string()
|
|
15543
15543
|
}), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
|
|
15544
15544
|
/**
|
|
15545
|
+
* A live terminal session hosted by the provider addon. Output and input do
|
|
15546
|
+
* NOT flow through the capability — they use the addon data plane
|
|
15547
|
+
* (`GET /addon/terminal/<id>/out` SSE, `POST /addon/terminal/<id>/in`) because
|
|
15548
|
+
* terminal output must be ordered and lossless. The event bus is telemetry and
|
|
15549
|
+
* may drop chunks ([D8]), and a dropped chunk desynchronises the vt parser
|
|
15550
|
+
* permanently until a full repaint. The capability owns only lifecycle.
|
|
15551
|
+
*/
|
|
15552
|
+
var TerminalSessionInfoSchema = object({
|
|
15553
|
+
/** Opaque session id minted by the provider on `openSession`. */
|
|
15554
|
+
sessionId: string(),
|
|
15555
|
+
/** The pre-declared profile this session runs (never a free-form command). */
|
|
15556
|
+
profileId: string(),
|
|
15557
|
+
/** Human-readable profile label for the UI session list. */
|
|
15558
|
+
label: string(),
|
|
15559
|
+
cols: number().int().positive(),
|
|
15560
|
+
rows: number().int().positive(),
|
|
15561
|
+
/** ms-epoch the session's pty was spawned. */
|
|
15562
|
+
startedAt: number()
|
|
15563
|
+
});
|
|
15564
|
+
/**
|
|
15565
|
+
* A profile the operator may open — a pre-declared, allowlisted program
|
|
15566
|
+
* (`monitor` → `btm`). The capability accepts only these ids; a free-form
|
|
15567
|
+
* command string would be remote code execution as the server's user, so it is
|
|
15568
|
+
* deliberately not part of the contract.
|
|
15569
|
+
*/
|
|
15570
|
+
var TerminalProfileInfoSchema = object({
|
|
15571
|
+
profileId: string(),
|
|
15572
|
+
label: string(),
|
|
15573
|
+
description: string().optional()
|
|
15574
|
+
});
|
|
15575
|
+
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
15576
|
+
profileId: string(),
|
|
15577
|
+
cols: number().int().positive(),
|
|
15578
|
+
rows: number().int().positive()
|
|
15579
|
+
}), TerminalSessionInfoSchema, {
|
|
15580
|
+
kind: "mutation",
|
|
15581
|
+
auth: "admin"
|
|
15582
|
+
}), method(object({
|
|
15583
|
+
sessionId: string(),
|
|
15584
|
+
cols: number().int().positive(),
|
|
15585
|
+
rows: number().int().positive()
|
|
15586
|
+
}), _void(), {
|
|
15587
|
+
kind: "mutation",
|
|
15588
|
+
auth: "admin"
|
|
15589
|
+
}), method(object({ sessionId: string() }), _void(), {
|
|
15590
|
+
kind: "mutation",
|
|
15591
|
+
auth: "admin"
|
|
15592
|
+
});
|
|
15593
|
+
/**
|
|
15545
15594
|
* Orchestrator-side destination metadata. The orchestrator computes
|
|
15546
15595
|
* `id = <addonId>:<subId>` from its provider lookup so consumers
|
|
15547
15596
|
* (admin UI, restore flow) see one canonical key.
|
|
@@ -26916,6 +26965,36 @@ Object.freeze({
|
|
|
26916
26965
|
addonId: null,
|
|
26917
26966
|
access: "create"
|
|
26918
26967
|
},
|
|
26968
|
+
"terminalSession.close": {
|
|
26969
|
+
capName: "terminal-session",
|
|
26970
|
+
capScope: "system",
|
|
26971
|
+
addonId: null,
|
|
26972
|
+
access: "create"
|
|
26973
|
+
},
|
|
26974
|
+
"terminalSession.listProfiles": {
|
|
26975
|
+
capName: "terminal-session",
|
|
26976
|
+
capScope: "system",
|
|
26977
|
+
addonId: null,
|
|
26978
|
+
access: "view"
|
|
26979
|
+
},
|
|
26980
|
+
"terminalSession.listSessions": {
|
|
26981
|
+
capName: "terminal-session",
|
|
26982
|
+
capScope: "system",
|
|
26983
|
+
addonId: null,
|
|
26984
|
+
access: "view"
|
|
26985
|
+
},
|
|
26986
|
+
"terminalSession.openSession": {
|
|
26987
|
+
capName: "terminal-session",
|
|
26988
|
+
capScope: "system",
|
|
26989
|
+
addonId: null,
|
|
26990
|
+
access: "create"
|
|
26991
|
+
},
|
|
26992
|
+
"terminalSession.resize": {
|
|
26993
|
+
capName: "terminal-session",
|
|
26994
|
+
capScope: "system",
|
|
26995
|
+
addonId: null,
|
|
26996
|
+
access: "create"
|
|
26997
|
+
},
|
|
26919
26998
|
"toast.onToast": {
|
|
26920
26999
|
capName: "toast",
|
|
26921
27000
|
capScope: "system",
|
|
@@ -6531,6 +6531,36 @@ var ProfileRtspEntrySchema = object({
|
|
|
6531
6531
|
resolution: CamStreamResolutionSchema.optional()
|
|
6532
6532
|
});
|
|
6533
6533
|
/**
|
|
6534
|
+
* Per-call node pinning for `ctx.api` capability calls.
|
|
6535
|
+
*
|
|
6536
|
+
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
6537
|
+
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
6538
|
+
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
6539
|
+
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
6540
|
+
* call to that node.
|
|
6541
|
+
*
|
|
6542
|
+
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
6543
|
+
* method args), so capability method signatures stay `nodeId`-free — node
|
|
6544
|
+
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
6545
|
+
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
6546
|
+
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
6547
|
+
* which classifies a pinned agent node as `agent-child-forward`
|
|
6548
|
+
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
6549
|
+
*
|
|
6550
|
+
* Usage at a call site:
|
|
6551
|
+
*
|
|
6552
|
+
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
6553
|
+
*/
|
|
6554
|
+
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
6555
|
+
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
6556
|
+
/**
|
|
6557
|
+
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
6558
|
+
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
6559
|
+
*/
|
|
6560
|
+
function nodePin(nodeId) {
|
|
6561
|
+
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: nodeId } };
|
|
6562
|
+
}
|
|
6563
|
+
/**
|
|
6534
6564
|
* Type-safe JSON parsing helpers.
|
|
6535
6565
|
*
|
|
6536
6566
|
* `JSON.parse` is typed as `any` in lib.es5.d.ts, which triggers
|
|
@@ -7847,36 +7877,6 @@ var EncodeProfileSchema = object({
|
|
|
7847
7877
|
outputArgs: array(string()).optional()
|
|
7848
7878
|
});
|
|
7849
7879
|
var HF_BASE_URL = `https://huggingface.co/camstack/camstack-models/resolve/main`;
|
|
7850
|
-
/**
|
|
7851
|
-
* Per-call node pinning for `ctx.api` capability calls.
|
|
7852
|
-
*
|
|
7853
|
-
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
7854
|
-
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
7855
|
-
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
7856
|
-
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
7857
|
-
* call to that node.
|
|
7858
|
-
*
|
|
7859
|
-
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
7860
|
-
* method args), so capability method signatures stay `nodeId`-free — node
|
|
7861
|
-
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
7862
|
-
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
7863
|
-
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
7864
|
-
* which classifies a pinned agent node as `agent-child-forward`
|
|
7865
|
-
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
7866
|
-
*
|
|
7867
|
-
* Usage at a call site:
|
|
7868
|
-
*
|
|
7869
|
-
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
7870
|
-
*/
|
|
7871
|
-
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
7872
|
-
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
7873
|
-
/**
|
|
7874
|
-
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
7875
|
-
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
7876
|
-
*/
|
|
7877
|
-
function nodePin(nodeId) {
|
|
7878
|
-
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: nodeId } };
|
|
7879
|
-
}
|
|
7880
7880
|
function hfModelUrl(repo, path) {
|
|
7881
7881
|
return `https://huggingface.co/${repo}/resolve/main/${path}`;
|
|
7882
7882
|
}
|
|
@@ -15542,6 +15542,55 @@ method(object({
|
|
|
15542
15542
|
password: string()
|
|
15543
15543
|
}), AuthResultSchema.nullable(), { kind: "mutation" }), method(object({ state: string() }), string()), method(record(string(), string()), AuthResultSchema, { kind: "mutation" }), method(object({ token: string() }), AuthResultSchema.nullable());
|
|
15544
15544
|
/**
|
|
15545
|
+
* A live terminal session hosted by the provider addon. Output and input do
|
|
15546
|
+
* NOT flow through the capability — they use the addon data plane
|
|
15547
|
+
* (`GET /addon/terminal/<id>/out` SSE, `POST /addon/terminal/<id>/in`) because
|
|
15548
|
+
* terminal output must be ordered and lossless. The event bus is telemetry and
|
|
15549
|
+
* may drop chunks ([D8]), and a dropped chunk desynchronises the vt parser
|
|
15550
|
+
* permanently until a full repaint. The capability owns only lifecycle.
|
|
15551
|
+
*/
|
|
15552
|
+
var TerminalSessionInfoSchema = object({
|
|
15553
|
+
/** Opaque session id minted by the provider on `openSession`. */
|
|
15554
|
+
sessionId: string(),
|
|
15555
|
+
/** The pre-declared profile this session runs (never a free-form command). */
|
|
15556
|
+
profileId: string(),
|
|
15557
|
+
/** Human-readable profile label for the UI session list. */
|
|
15558
|
+
label: string(),
|
|
15559
|
+
cols: number().int().positive(),
|
|
15560
|
+
rows: number().int().positive(),
|
|
15561
|
+
/** ms-epoch the session's pty was spawned. */
|
|
15562
|
+
startedAt: number()
|
|
15563
|
+
});
|
|
15564
|
+
/**
|
|
15565
|
+
* A profile the operator may open — a pre-declared, allowlisted program
|
|
15566
|
+
* (`monitor` → `btm`). The capability accepts only these ids; a free-form
|
|
15567
|
+
* command string would be remote code execution as the server's user, so it is
|
|
15568
|
+
* deliberately not part of the contract.
|
|
15569
|
+
*/
|
|
15570
|
+
var TerminalProfileInfoSchema = object({
|
|
15571
|
+
profileId: string(),
|
|
15572
|
+
label: string(),
|
|
15573
|
+
description: string().optional()
|
|
15574
|
+
});
|
|
15575
|
+
method(_void(), array(TerminalProfileInfoSchema).readonly(), { auth: "admin" }), method(_void(), array(TerminalSessionInfoSchema).readonly(), { auth: "admin" }), method(object({
|
|
15576
|
+
profileId: string(),
|
|
15577
|
+
cols: number().int().positive(),
|
|
15578
|
+
rows: number().int().positive()
|
|
15579
|
+
}), TerminalSessionInfoSchema, {
|
|
15580
|
+
kind: "mutation",
|
|
15581
|
+
auth: "admin"
|
|
15582
|
+
}), method(object({
|
|
15583
|
+
sessionId: string(),
|
|
15584
|
+
cols: number().int().positive(),
|
|
15585
|
+
rows: number().int().positive()
|
|
15586
|
+
}), _void(), {
|
|
15587
|
+
kind: "mutation",
|
|
15588
|
+
auth: "admin"
|
|
15589
|
+
}), method(object({ sessionId: string() }), _void(), {
|
|
15590
|
+
kind: "mutation",
|
|
15591
|
+
auth: "admin"
|
|
15592
|
+
});
|
|
15593
|
+
/**
|
|
15545
15594
|
* Orchestrator-side destination metadata. The orchestrator computes
|
|
15546
15595
|
* `id = <addonId>:<subId>` from its provider lookup so consumers
|
|
15547
15596
|
* (admin UI, restore flow) see one canonical key.
|
|
@@ -26916,6 +26965,36 @@ Object.freeze({
|
|
|
26916
26965
|
addonId: null,
|
|
26917
26966
|
access: "create"
|
|
26918
26967
|
},
|
|
26968
|
+
"terminalSession.close": {
|
|
26969
|
+
capName: "terminal-session",
|
|
26970
|
+
capScope: "system",
|
|
26971
|
+
addonId: null,
|
|
26972
|
+
access: "create"
|
|
26973
|
+
},
|
|
26974
|
+
"terminalSession.listProfiles": {
|
|
26975
|
+
capName: "terminal-session",
|
|
26976
|
+
capScope: "system",
|
|
26977
|
+
addonId: null,
|
|
26978
|
+
access: "view"
|
|
26979
|
+
},
|
|
26980
|
+
"terminalSession.listSessions": {
|
|
26981
|
+
capName: "terminal-session",
|
|
26982
|
+
capScope: "system",
|
|
26983
|
+
addonId: null,
|
|
26984
|
+
access: "view"
|
|
26985
|
+
},
|
|
26986
|
+
"terminalSession.openSession": {
|
|
26987
|
+
capName: "terminal-session",
|
|
26988
|
+
capScope: "system",
|
|
26989
|
+
addonId: null,
|
|
26990
|
+
access: "create"
|
|
26991
|
+
},
|
|
26992
|
+
"terminalSession.resize": {
|
|
26993
|
+
capName: "terminal-session",
|
|
26994
|
+
capScope: "system",
|
|
26995
|
+
addonId: null,
|
|
26996
|
+
access: "create"
|
|
26997
|
+
},
|
|
26919
26998
|
"toast.onToast": {
|
|
26920
26999
|
capName: "toast",
|
|
26921
27000
|
capScope: "system",
|
|
@@ -27692,4 +27771,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
27692
27771
|
return out;
|
|
27693
27772
|
}
|
|
27694
27773
|
//#endregion
|
|
27695
|
-
export { selectAssignedProfileSlots as $, motionDetectionCapability as A,
|
|
27774
|
+
export { selectAssignedProfileSlots as $, motionDetectionCapability as A, errMsg as B, detectionPipelineCapability as C, mapAudioLabelToMacro as D, hfModelUrl as E, runtimeDevices as F, createEvent as G, CAM_PROFILE_ORDER as H, storageEvictableCapability as I, makeProfileBrokerId as J, hydrateSchema as K, streamBrokerCapability as L, pipelineRunnerCapability as M, recordingCapability as N, maskUrlCredentials as O, recordingExportCapability as P, parseProfileBrokerId as Q, supportedRuntimes as R, defineCustomActions as S, evaluateZoneRules as T, DeviceFeature as U, BaseAddon as V, DeviceType as W, nodePin as X, makeSourceBrokerId as Y, parseJsonUnknown as Z, audioAnalysisCapability as _, COCO_TO_MACRO as a, lazy as at, customAction as b, EVENT_PAD_MS as c, object as ct, HF_BASE_URL as d, union as dt, sleep as et, OpsLogEntrySchema as f, EventCategory as ft, addonWidgetsSourceCapability as g, YAMNET_TO_MACRO as h, COCO_80_LABELS as i, discriminatedUnion as it, pipelineExecutorCapability as j, migrateConfigToBands as k, EncodeProfileSchema as l, record as lt, RingBuffer as m, AUDIO_BACKEND_CHOICES as n, array as nt, DEFAULT_AUDIO_ANALYZER_CONFIG as o, literal as ot, RecordingConfigSchema as p, isEvent as q, AUDIO_MACRO_LABELS as r, boolean as rt, DEVICE_BACKEND_TO_FORMAT as s, number as st, APPLE_SA_TO_MACRO as t, _enum as tt, ExportRecordSchema as u, string as ut, audioAnalyzerCapability as v, enumerateInferenceDevices as w, defaultDeviceFor as x, cameraStreamsCapability as y, webrtcSessionCapability as z };
|
|
@@ -6631,12 +6631,16 @@ function readTrack(file, segment) {
|
|
|
6631
6631
|
});
|
|
6632
6632
|
}
|
|
6633
6633
|
/**
|
|
6634
|
-
* Demux a recorded
|
|
6635
|
-
* WebCodecs decoder config, or null if the segment
|
|
6636
|
-
* decodable
|
|
6637
|
-
* epoch ms; the first sample's cts is the zero reference.
|
|
6634
|
+
* Demux a recorded `.m4s` fragment and return ALL its samples (sync + delta) in
|
|
6635
|
+
* decode order plus the WebCodecs decoder config, or null if the segment
|
|
6636
|
+
* carries no video / no decodable sample. `segmentStartMs` anchors each sample's
|
|
6637
|
+
* `ts` to absolute epoch ms; the first sample's cts is the zero reference.
|
|
6638
|
+
*
|
|
6639
|
+
* No decode, no ffmpeg — byte copies only. This is the general form used by the
|
|
6640
|
+
* recorded-playback demux; {@link extractKeyframes} filters its output to sync
|
|
6641
|
+
* samples for the scrub-pack service.
|
|
6638
6642
|
*/
|
|
6639
|
-
async function
|
|
6643
|
+
async function extractSamples(segment, segmentStartMs) {
|
|
6640
6644
|
const file = import_mp4box_all.createFile();
|
|
6641
6645
|
const ready = await readTrack(file, segment);
|
|
6642
6646
|
if (!ready) return null;
|
|
@@ -6647,10 +6651,10 @@ async function extractKeyframes(segment, segmentStartMs) {
|
|
|
6647
6651
|
file.onSamples = (_id, _user, samples) => {
|
|
6648
6652
|
for (const s of samples) {
|
|
6649
6653
|
if (firstCts === null) firstCts = s.cts;
|
|
6650
|
-
if (!s.is_sync) continue;
|
|
6651
6654
|
const ts = segmentStartMs + Math.round((s.cts - firstCts) / s.timescale * 1e3);
|
|
6652
6655
|
collected.push({
|
|
6653
6656
|
ts,
|
|
6657
|
+
isSync: s.is_sync,
|
|
6654
6658
|
data: new Uint8Array(s.data)
|
|
6655
6659
|
});
|
|
6656
6660
|
}
|
|
@@ -6664,7 +6668,26 @@ async function extractKeyframes(segment, segmentStartMs) {
|
|
|
6664
6668
|
return collected.length > 0 ? {
|
|
6665
6669
|
codec,
|
|
6666
6670
|
description,
|
|
6667
|
-
|
|
6671
|
+
samples: collected
|
|
6672
|
+
} : null;
|
|
6673
|
+
}
|
|
6674
|
+
/**
|
|
6675
|
+
* Demux a recorded LOW `.m4s` segment and return its sync samples plus the
|
|
6676
|
+
* WebCodecs decoder config, or null if the segment carries no video / no
|
|
6677
|
+
* decodable keyframe. `segmentStartMs` anchors keyframe timestamps to absolute
|
|
6678
|
+
* epoch ms; the first sample's cts is the zero reference.
|
|
6679
|
+
*/
|
|
6680
|
+
async function extractKeyframes(segment, segmentStartMs) {
|
|
6681
|
+
const extracted = await extractSamples(segment, segmentStartMs);
|
|
6682
|
+
if (!extracted) return null;
|
|
6683
|
+
const keyframes = extracted.samples.filter((s) => s.isSync).map((s) => ({
|
|
6684
|
+
ts: s.ts,
|
|
6685
|
+
data: s.data
|
|
6686
|
+
}));
|
|
6687
|
+
return keyframes.length > 0 ? {
|
|
6688
|
+
codec: extracted.codec,
|
|
6689
|
+
description: extracted.description,
|
|
6690
|
+
keyframes
|
|
6668
6691
|
} : null;
|
|
6669
6692
|
}
|
|
6670
6693
|
//#endregion
|
|
@@ -6674,3 +6697,15 @@ Object.defineProperty(exports, "extractKeyframes", {
|
|
|
6674
6697
|
return extractKeyframes;
|
|
6675
6698
|
}
|
|
6676
6699
|
});
|
|
6700
|
+
Object.defineProperty(exports, "extractSamples", {
|
|
6701
|
+
enumerable: true,
|
|
6702
|
+
get: function() {
|
|
6703
|
+
return extractSamples;
|
|
6704
|
+
}
|
|
6705
|
+
});
|
|
6706
|
+
Object.defineProperty(exports, "require_mp4box_all", {
|
|
6707
|
+
enumerable: true,
|
|
6708
|
+
get: function() {
|
|
6709
|
+
return require_mp4box_all;
|
|
6710
|
+
}
|
|
6711
|
+
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { c as __commonJSMin, u as __toESM } from "./model-download-service-Cp9f4dk6-WO-foD7W.mjs";
|
|
2
|
-
//#
|
|
3
|
-
|
|
4
|
-
var import_mp4box_all = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports) => {
|
|
2
|
+
//#region ../../node_modules/mp4box/dist/mp4box.all.js
|
|
3
|
+
var require_mp4box_all = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
5
4
|
var Log = (function() {
|
|
6
5
|
var start = /* @__PURE__ */ new Date();
|
|
7
6
|
var LOG_LEVEL_ERROR = 4;
|
|
@@ -6566,7 +6565,10 @@ var import_mp4box_all = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin((
|
|
|
6566
6565
|
return file;
|
|
6567
6566
|
};
|
|
6568
6567
|
if (typeof exports !== "undefined") exports.createFile = MP4Box.createFile;
|
|
6569
|
-
}))
|
|
6568
|
+
}));
|
|
6569
|
+
//#endregion
|
|
6570
|
+
//#region src/recorder/scrub/fmp4-keyframes.ts
|
|
6571
|
+
var import_mp4box_all = /* @__PURE__ */ __toESM(require_mp4box_all());
|
|
6570
6572
|
/**
|
|
6571
6573
|
* Normalize an RFC 6381 codec string for WebCodecs HEVC. Apple/WebKit
|
|
6572
6574
|
* WebCodecs only accepts the `hvc1.*` fourcc — a `hev1.*` string (what mp4box
|
|
@@ -6629,12 +6631,16 @@ function readTrack(file, segment) {
|
|
|
6629
6631
|
});
|
|
6630
6632
|
}
|
|
6631
6633
|
/**
|
|
6632
|
-
* Demux a recorded
|
|
6633
|
-
* WebCodecs decoder config, or null if the segment
|
|
6634
|
-
* decodable
|
|
6635
|
-
* epoch ms; the first sample's cts is the zero reference.
|
|
6634
|
+
* Demux a recorded `.m4s` fragment and return ALL its samples (sync + delta) in
|
|
6635
|
+
* decode order plus the WebCodecs decoder config, or null if the segment
|
|
6636
|
+
* carries no video / no decodable sample. `segmentStartMs` anchors each sample's
|
|
6637
|
+
* `ts` to absolute epoch ms; the first sample's cts is the zero reference.
|
|
6638
|
+
*
|
|
6639
|
+
* No decode, no ffmpeg — byte copies only. This is the general form used by the
|
|
6640
|
+
* recorded-playback demux; {@link extractKeyframes} filters its output to sync
|
|
6641
|
+
* samples for the scrub-pack service.
|
|
6636
6642
|
*/
|
|
6637
|
-
async function
|
|
6643
|
+
async function extractSamples(segment, segmentStartMs) {
|
|
6638
6644
|
const file = import_mp4box_all.createFile();
|
|
6639
6645
|
const ready = await readTrack(file, segment);
|
|
6640
6646
|
if (!ready) return null;
|
|
@@ -6645,10 +6651,10 @@ async function extractKeyframes(segment, segmentStartMs) {
|
|
|
6645
6651
|
file.onSamples = (_id, _user, samples) => {
|
|
6646
6652
|
for (const s of samples) {
|
|
6647
6653
|
if (firstCts === null) firstCts = s.cts;
|
|
6648
|
-
if (!s.is_sync) continue;
|
|
6649
6654
|
const ts = segmentStartMs + Math.round((s.cts - firstCts) / s.timescale * 1e3);
|
|
6650
6655
|
collected.push({
|
|
6651
6656
|
ts,
|
|
6657
|
+
isSync: s.is_sync,
|
|
6652
6658
|
data: new Uint8Array(s.data)
|
|
6653
6659
|
});
|
|
6654
6660
|
}
|
|
@@ -6662,8 +6668,27 @@ async function extractKeyframes(segment, segmentStartMs) {
|
|
|
6662
6668
|
return collected.length > 0 ? {
|
|
6663
6669
|
codec,
|
|
6664
6670
|
description,
|
|
6665
|
-
|
|
6671
|
+
samples: collected
|
|
6672
|
+
} : null;
|
|
6673
|
+
}
|
|
6674
|
+
/**
|
|
6675
|
+
* Demux a recorded LOW `.m4s` segment and return its sync samples plus the
|
|
6676
|
+
* WebCodecs decoder config, or null if the segment carries no video / no
|
|
6677
|
+
* decodable keyframe. `segmentStartMs` anchors keyframe timestamps to absolute
|
|
6678
|
+
* epoch ms; the first sample's cts is the zero reference.
|
|
6679
|
+
*/
|
|
6680
|
+
async function extractKeyframes(segment, segmentStartMs) {
|
|
6681
|
+
const extracted = await extractSamples(segment, segmentStartMs);
|
|
6682
|
+
if (!extracted) return null;
|
|
6683
|
+
const keyframes = extracted.samples.filter((s) => s.isSync).map((s) => ({
|
|
6684
|
+
ts: s.ts,
|
|
6685
|
+
data: s.data
|
|
6686
|
+
}));
|
|
6687
|
+
return keyframes.length > 0 ? {
|
|
6688
|
+
codec: extracted.codec,
|
|
6689
|
+
description: extracted.description,
|
|
6690
|
+
keyframes
|
|
6666
6691
|
} : null;
|
|
6667
6692
|
}
|
|
6668
6693
|
//#endregion
|
|
6669
|
-
export { extractKeyframes as t };
|
|
6694
|
+
export { extractSamples as n, require_mp4box_all as r, extractKeyframes as t };
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-DDTAur0R.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as motionDetectionCapability,
|
|
1
|
+
import { A as motionDetectionCapability, K as hydrateSchema, T as evaluateZoneRules, V as BaseAddon, W as DeviceType } from "../dist-OjOsoSZG.mjs";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
//#region src/motion-wasm/wasm-motion-detector.ts
|
|
@@ -3,11 +3,11 @@ 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-DDTAur0R.js");
|
|
7
7
|
const require_remote_restream = require("../remote-restream-CO36Sr30.js");
|
|
8
8
|
const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
|
|
9
9
|
const require_worker_protocol = require("../worker-protocol-DextwlTX.js");
|
|
10
|
-
const require_step_definitions = require("../step-definitions-
|
|
10
|
+
const require_step_definitions = require("../step-definitions-DGCuoeCj.js");
|
|
11
11
|
let node_child_process = require("node:child_process");
|
|
12
12
|
let node_url = require("node:url");
|
|
13
13
|
let sharp = require("sharp");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as errMsg, G as createEvent, M as pipelineRunnerCapability, S as defineCustomActions, V as BaseAddon, X as nodePin, at as lazy, b as customAction, ct as object, ft as EventCategory, nt as array, rt as boolean, s as DEVICE_BACKEND_TO_FORMAT, st as number, tt as _enum, ut as string } from "../dist-OjOsoSZG.mjs";
|
|
2
2
|
import { n as profileForStreamId, t as isRemoteRestream } from "../remote-restream-BeHi78PZ.mjs";
|
|
3
3
|
import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
|
|
4
4
|
import { t as isWorkerReply } from "../worker-protocol-D7RzZIla.mjs";
|
|
5
|
-
import { a as getStepDefinition } from "../step-definitions-
|
|
5
|
+
import { a as getStepDefinition } from "../step-definitions-B9vyUNYR.mjs";
|
|
6
6
|
import { fork } from "node:child_process";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import sharp from "sharp";
|