camstack 1.2.58 → 1.2.60
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.
|
@@ -22053,6 +22053,38 @@ var NodeProcessSchema = external_exports.object({
|
|
|
22053
22053
|
/** Wall-clock uptime (seconds). Parsed from `ps etime`. */
|
|
22054
22054
|
uptimeSec: external_exports.number()
|
|
22055
22055
|
});
|
|
22056
|
+
var ContainerMemoryPointSchema = external_exports.object({
|
|
22057
|
+
/** Which hierarchy answered, so a reading is never ambiguous. */
|
|
22058
|
+
source: external_exports.enum(["cgroup-v2", "cgroup-v1"]),
|
|
22059
|
+
/** `memory.current` (v2) / `memory.usage_in_bytes` (v1). Always known. */
|
|
22060
|
+
currentBytes: external_exports.number(),
|
|
22061
|
+
/** The cgroup's ceiling. `null` = NO LIMIT — never a sentinel, never zero. */
|
|
22062
|
+
limitBytes: external_exports.number().nullable(),
|
|
22063
|
+
/** Anonymous pages: the closest thing to "what the processes allocated". */
|
|
22064
|
+
anonBytes: external_exports.number().nullable(),
|
|
22065
|
+
/** Page cache. Charged to the cgroup, owned by no process. */
|
|
22066
|
+
fileBytes: external_exports.number().nullable(),
|
|
22067
|
+
/**
|
|
22068
|
+
* Shared memory — and the field that explained the largest single surprise.
|
|
22069
|
+
* The i915 driver backs GPU buffers with shmem, so an inference pool or a
|
|
22070
|
+
* hardware-decode session holding DRM objects is charged HERE and appears
|
|
22071
|
+
* nowhere in a `ps` scan.
|
|
22072
|
+
*/
|
|
22073
|
+
shmemBytes: external_exports.number().nullable(),
|
|
22074
|
+
/** Kernel slab charged to this cgroup. `null` on v1, which never publishes it. */
|
|
22075
|
+
slabBytes: external_exports.number().nullable(),
|
|
22076
|
+
/**
|
|
22077
|
+
* Shrinkable i915 GEM object bytes, from debugfs.
|
|
22078
|
+
*
|
|
22079
|
+
* **Host-wide across every DRM client, NOT cgroup-scoped.** It is not a
|
|
22080
|
+
* component of `currentBytes` and must not be subtracted from it; it says
|
|
22081
|
+
* what put the shmem there, where `shmemBytes` only says how much.
|
|
22082
|
+
*
|
|
22083
|
+
* `null` wherever debugfs is not mounted — which is inside every camstack
|
|
22084
|
+
* container today — and on any node with no Intel GPU.
|
|
22085
|
+
*/
|
|
22086
|
+
gpuShmemBytes: external_exports.number().nullable()
|
|
22087
|
+
}).extend({ atMs: external_exports.number() });
|
|
22056
22088
|
var DumpHeapSnapshotInputSchema = external_exports.object({
|
|
22057
22089
|
/** The addon whose runner should dump a heap snapshot. */
|
|
22058
22090
|
addonId: external_exports.string()
|
|
@@ -22102,6 +22134,21 @@ var NodeLoadSeriesSchema = external_exports.object({
|
|
|
22102
22134
|
/** One entry per function seen in the window, heaviest-first. */
|
|
22103
22135
|
series: external_exports.array(LoadFunctionSeriesSchema).readonly(),
|
|
22104
22136
|
/**
|
|
22137
|
+
* The CONTAINER's memory over the same window, oldest-first.
|
|
22138
|
+
*
|
|
22139
|
+
* Sits next to `series` rather than in a method of its own because the whole
|
|
22140
|
+
* question is a subtraction: the per-process rows in `series` sum to one
|
|
22141
|
+
* number and this one is another, and an operator who has to issue two calls
|
|
22142
|
+
* to compare them will compare two different instants. Same reader, same
|
|
22143
|
+
* `sinceMs`, same `bucketMs`, same timestamps.
|
|
22144
|
+
*
|
|
22145
|
+
* **EMPTY means ABSENT, never zero.** A node with no cgroup — a developer
|
|
22146
|
+
* Mac, a bare-metal host, a container with the hierarchy hidden — reports no
|
|
22147
|
+
* points at all. A zero here would be indistinguishable from a healthy
|
|
22148
|
+
* container and is precisely the lie this field exists to avoid.
|
|
22149
|
+
*/
|
|
22150
|
+
containerMemory: external_exports.array(ContainerMemoryPointSchema).readonly(),
|
|
22151
|
+
/**
|
|
22105
22152
|
* Width of one returned bucket, in ms. Equals the sampling cadence when no
|
|
22106
22153
|
* reduction was needed — so a caller can always say what one point covers
|
|
22107
22154
|
* without having to know whether it was reduced.
|
|
@@ -33082,6 +33129,33 @@ var intercomCapability = {
|
|
|
33082
33129
|
deviceNative: true,
|
|
33083
33130
|
mode: "singleton",
|
|
33084
33131
|
deviceTypes: [DeviceType.Camera],
|
|
33132
|
+
/**
|
|
33133
|
+
* **Auth tier: `protected` on every method — deliberate, and load-bearing.**
|
|
33134
|
+
*
|
|
33135
|
+
* Talking through a camera is an OPERATE action, not a CONFIGURE one. This
|
|
33136
|
+
* cap has no configuration surface at all: all six methods open, feed and
|
|
33137
|
+
* close one live audio session against one `deviceId`. That is the same
|
|
33138
|
+
* authority as `ptz.move` or `snapshot.getSnapshot`, both `protected` — and
|
|
33139
|
+
* the opposite of `ptz.savePreset` / `snapshot.invalidateCache`, which are
|
|
33140
|
+
* `admin` because they change what the device IS.
|
|
33141
|
+
*
|
|
33142
|
+
* `protected` does not mean ungated: `protectedProcedure` runs the
|
|
33143
|
+
* `METHOD_ACCESS_MAP` scope check, and every method here is `scope: 'device'`
|
|
33144
|
+
* with `access: 'create'` and a `deviceId` in its input. So a caller needs a
|
|
33145
|
+
* grant that covers THAT camera at `create` — a `camera-viewer` (`view`
|
|
33146
|
+
* only) still cannot talk, and a grant on camera 5 cannot talk through
|
|
33147
|
+
* camera 7.
|
|
33148
|
+
*
|
|
33149
|
+
* Every method was `auth: 'admin'` from the initial commit, which made the
|
|
33150
|
+
* cap unreachable by every non-admin principal — `adminProcedure` throws
|
|
33151
|
+
* `FORBIDDEN: Admin required` BEFORE the scope check runs, so the scope
|
|
33152
|
+
* machinery generated for this cap (`METHOD_ACCESS_MAP`,
|
|
33153
|
+
* `DEVICE_SCOPED_CAPS`, `METHOD_DEVICE_SELECTORS`) was complete and dead. The
|
|
33154
|
+
* `camera-operator` scope preset has promised "PTZ control, intercom,
|
|
33155
|
+
* snapshots" since that same commit; the promise could not be kept. Recorded
|
|
33156
|
+
* as D289; `scripts/check-scope-preset-promises.ts` now fails the build if a
|
|
33157
|
+
* preset promises a cap no row of that preset can reach.
|
|
33158
|
+
*/
|
|
33085
33159
|
methods: {
|
|
33086
33160
|
/**
|
|
33087
33161
|
* Open a server-side WebRTC audio-only session. Returns an SDP
|
|
@@ -33094,7 +33168,7 @@ var intercomCapability = {
|
|
|
33094
33168
|
sdpOffer: external_exports.string()
|
|
33095
33169
|
}), {
|
|
33096
33170
|
kind: "mutation",
|
|
33097
|
-
auth: "
|
|
33171
|
+
auth: "protected"
|
|
33098
33172
|
}),
|
|
33099
33173
|
handleAnswer: method(external_exports.object({
|
|
33100
33174
|
deviceId: external_exports.number(),
|
|
@@ -33102,7 +33176,7 @@ var intercomCapability = {
|
|
|
33102
33176
|
sdpAnswer: external_exports.string()
|
|
33103
33177
|
}), external_exports.void(), {
|
|
33104
33178
|
kind: "mutation",
|
|
33105
|
-
auth: "
|
|
33179
|
+
auth: "protected"
|
|
33106
33180
|
}),
|
|
33107
33181
|
/** Close explicitly. Server also auto-closes on 30s idle. */
|
|
33108
33182
|
stopSession: method(external_exports.object({
|
|
@@ -33110,7 +33184,7 @@ var intercomCapability = {
|
|
|
33110
33184
|
sessionId: external_exports.string()
|
|
33111
33185
|
}), external_exports.void(), {
|
|
33112
33186
|
kind: "mutation",
|
|
33113
|
-
auth: "
|
|
33187
|
+
auth: "protected"
|
|
33114
33188
|
}),
|
|
33115
33189
|
/**
|
|
33116
33190
|
* Open a raw-PCM talk session (no WebRTC SDP plumbing). Used by
|
|
@@ -33123,7 +33197,7 @@ var intercomCapability = {
|
|
|
33123
33197
|
*/
|
|
33124
33198
|
startTalkSession: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.object({ sessionId: external_exports.string() }), {
|
|
33125
33199
|
kind: "mutation",
|
|
33126
|
-
auth: "
|
|
33200
|
+
auth: "protected"
|
|
33127
33201
|
}),
|
|
33128
33202
|
/**
|
|
33129
33203
|
* Push one chunk of talk-back audio onto the active talk session.
|
|
@@ -33158,12 +33232,12 @@ var intercomCapability = {
|
|
|
33158
33232
|
sequenceNumber: external_exports.number().int()
|
|
33159
33233
|
}), external_exports.object({ accepted: external_exports.boolean() }), {
|
|
33160
33234
|
kind: "mutation",
|
|
33161
|
-
auth: "
|
|
33235
|
+
auth: "protected"
|
|
33162
33236
|
}),
|
|
33163
33237
|
/** Close the raw-PCM talk session. Idempotent. */
|
|
33164
33238
|
endTalkSession: method(external_exports.object({ deviceId: external_exports.number() }), external_exports.void(), {
|
|
33165
33239
|
kind: "mutation",
|
|
33166
|
-
auth: "
|
|
33240
|
+
auth: "protected"
|
|
33167
33241
|
})
|
|
33168
33242
|
},
|
|
33169
33243
|
events: { onStatusChanged: { data: external_exports.object({
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runDiscover
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ARTM5NDU.js";
|
|
5
5
|
import "./chunk-LMMQX4CK.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
@@ -38,7 +38,7 @@ async function runServe(args) {
|
|
|
38
38
|
...typeof values.data === "string" ? { data: values.data } : {}
|
|
39
39
|
};
|
|
40
40
|
Object.assign(process.env, buildServeEnv(opts));
|
|
41
|
-
await import("./launcher-
|
|
41
|
+
await import("./launcher-CL4LHR6D.js");
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/commands/agent.ts
|
|
@@ -83,7 +83,7 @@ async function runAgent(args) {
|
|
|
83
83
|
...typeof values.port === "string" ? { port: values.port } : {}
|
|
84
84
|
};
|
|
85
85
|
Object.assign(process.env, buildAgentEnv(opts));
|
|
86
|
-
await import("./launcher-
|
|
86
|
+
await import("./launcher-CL4LHR6D.js");
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/commands/setup.ts
|
|
@@ -1130,7 +1130,7 @@ function isUnknown(_value) {
|
|
|
1130
1130
|
return true;
|
|
1131
1131
|
}
|
|
1132
1132
|
async function resolveServerInteractive(presetNamespace) {
|
|
1133
|
-
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-
|
|
1133
|
+
const { discoverNodes, resolveHubFromDiscovered, filterHubNodes, DEFAULT_HUB_HTTPS_PORT } = await import("./discover-UFN2BYNO.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|