camstack 1.2.49 → 1.2.51
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.
|
@@ -14522,7 +14522,7 @@ function date4(params) {
|
|
|
14522
14522
|
// ../../node_modules/zod/v4/classic/external.js
|
|
14523
14523
|
config(en_default());
|
|
14524
14524
|
|
|
14525
|
-
// ../types/dist/sleep-
|
|
14525
|
+
// ../types/dist/sleep-Dolp38qx.mjs
|
|
14526
14526
|
var WELL_KNOWN_TABS = [
|
|
14527
14527
|
{
|
|
14528
14528
|
id: "overview",
|
|
@@ -19106,6 +19106,10 @@ var SettingsRecordSchema = external_exports.object({
|
|
|
19106
19106
|
id: external_exports.string(),
|
|
19107
19107
|
data: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
19108
19108
|
});
|
|
19109
|
+
var BulkRecordSchema = external_exports.object({
|
|
19110
|
+
id: external_exports.string().optional(),
|
|
19111
|
+
data: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
19112
|
+
});
|
|
19109
19113
|
var CollectionColumnSchema = external_exports.object({
|
|
19110
19114
|
name: external_exports.string(),
|
|
19111
19115
|
type: external_exports.enum([
|
|
@@ -19180,6 +19184,34 @@ var settingsStoreCapability = {
|
|
|
19180
19184
|
collection: external_exports.string(),
|
|
19181
19185
|
record: SettingsRecordSchema
|
|
19182
19186
|
}), external_exports.void(), { kind: "mutation" }),
|
|
19187
|
+
/**
|
|
19188
|
+
* Insert MANY records in ONE transaction, returning how many landed.
|
|
19189
|
+
*
|
|
19190
|
+
* The write-side twin of {@link deleteWhere}, and it exists for the same
|
|
19191
|
+
* reason: without it, appending a batch is N round trips and N COMMITs on
|
|
19192
|
+
* the single shared connection that also serves every cluster-wide
|
|
19193
|
+
* configuration read. The durable load series writes one process row per
|
|
19194
|
+
* process per sample — 76 rows every 10 s on the live fleet — and the
|
|
19195
|
+
* operator's rule for it is *one transaction per sample, never one per
|
|
19196
|
+
* row*. `insert` cannot express that; nothing else could.
|
|
19197
|
+
*
|
|
19198
|
+
* **All or nothing.** A batch that fails on its fifth row leaves none of
|
|
19199
|
+
* the five behind. A half-written sample is worse than a missing one: the
|
|
19200
|
+
* missing one reads as "nobody reported", which is true, while the half
|
|
19201
|
+
* one reads as "these were the only processes running", which is not.
|
|
19202
|
+
*
|
|
19203
|
+
* `id` is OPTIONAL per record, and that is the difference from
|
|
19204
|
+
* {@link insert}. A collection whose primary key is an `INTEGER` rowid
|
|
19205
|
+
* alias has no id to supply — SQLite assigns it, for free, and inventing a
|
|
19206
|
+
* `randomUUID()` for such a column would write a 36-character string into
|
|
19207
|
+
* an integer key. Omitted on a TEXT key, a uuid is generated exactly as
|
|
19208
|
+
* `insert` does.
|
|
19209
|
+
*/
|
|
19210
|
+
insertMany: method(external_exports.object({
|
|
19211
|
+
namespace: external_exports.string().optional(),
|
|
19212
|
+
collection: external_exports.string(),
|
|
19213
|
+
records: external_exports.array(BulkRecordSchema).readonly()
|
|
19214
|
+
}), external_exports.object({ inserted: external_exports.number().int() }), { kind: "mutation" }),
|
|
19183
19215
|
/** Update an existing record by ID. */
|
|
19184
19216
|
update: method(external_exports.object({
|
|
19185
19217
|
namespace: external_exports.string().optional(),
|
|
@@ -19369,6 +19401,15 @@ var dataStoreProviderCapability = {
|
|
|
19369
19401
|
kind: "mutation",
|
|
19370
19402
|
auth: "admin"
|
|
19371
19403
|
}),
|
|
19404
|
+
/** Insert many records in ONE transaction. All or nothing. */
|
|
19405
|
+
insertMany: method(external_exports.object({
|
|
19406
|
+
namespace: external_exports.string().optional(),
|
|
19407
|
+
collection: external_exports.string(),
|
|
19408
|
+
records: external_exports.array(BulkRecordSchema).readonly()
|
|
19409
|
+
}), external_exports.object({ inserted: external_exports.number().int() }), {
|
|
19410
|
+
kind: "mutation",
|
|
19411
|
+
auth: "admin"
|
|
19412
|
+
}),
|
|
19372
19413
|
/** Update an existing record by ID. */
|
|
19373
19414
|
update: method(external_exports.object({
|
|
19374
19415
|
namespace: external_exports.string().optional(),
|
|
@@ -21642,6 +21683,85 @@ var logDestinationCapability = {
|
|
|
21642
21683
|
/** BIG PLAN 2: declarative mount hint — read by `@camstack/system` `buildCapRouters`. */
|
|
21643
21684
|
mount: { kind: "skip" }
|
|
21644
21685
|
};
|
|
21686
|
+
var LOAD_CONTRIBUTION_ROLES = [
|
|
21687
|
+
"decode",
|
|
21688
|
+
"transcode",
|
|
21689
|
+
"recording",
|
|
21690
|
+
"streaming",
|
|
21691
|
+
"detection"
|
|
21692
|
+
];
|
|
21693
|
+
var LOAD_CONTRIBUTION_ATTRIBUTIONS = [
|
|
21694
|
+
"measured",
|
|
21695
|
+
"accounted",
|
|
21696
|
+
"unattributable"
|
|
21697
|
+
];
|
|
21698
|
+
var LoadContributionSchema = external_exports.object({
|
|
21699
|
+
role: external_exports.enum(LOAD_CONTRIBUTION_ROLES),
|
|
21700
|
+
/**
|
|
21701
|
+
* The NUMERIC device id — the same value every log line carries as
|
|
21702
|
+
* `tags.deviceId`. `null` means this cost genuinely belongs to no single
|
|
21703
|
+
* camera (a shared pool), NOT that the contributor forgot to look it up: a
|
|
21704
|
+
* contributor that cannot name its camera must not emit the entry at all,
|
|
21705
|
+
* because an unnamed per-camera entry is indistinguishable from a shared one
|
|
21706
|
+
* and would quietly turn one camera's cost into everybody's.
|
|
21707
|
+
*/
|
|
21708
|
+
deviceId: external_exports.number().int().positive().nullable(),
|
|
21709
|
+
attribution: external_exports.enum(LOAD_CONTRIBUTION_ATTRIBUTIONS),
|
|
21710
|
+
/**
|
|
21711
|
+
* What ONE entry is, in the contributor's own words — `615/high`,
|
|
21712
|
+
* `617/native`, `cuda:0 shared pool`. Free text because the unit differs per
|
|
21713
|
+
* family and inventing a common one would lose the only information that
|
|
21714
|
+
* makes two entries for the same camera distinguishable.
|
|
21715
|
+
*/
|
|
21716
|
+
unit: external_exports.string(),
|
|
21717
|
+
/**
|
|
21718
|
+
* The OS process this cost lives in, when there is one. Present so a
|
|
21719
|
+
* consumer can (a) tell two generations of the same unit apart across a
|
|
21720
|
+
* restart, and (b) subtract claimed processes from the node's process
|
|
21721
|
+
* snapshot to see what NOBODY claimed. Absent for an entry that owns no
|
|
21722
|
+
* process of its own.
|
|
21723
|
+
*/
|
|
21724
|
+
pid: external_exports.number().int().positive().optional(),
|
|
21725
|
+
/**
|
|
21726
|
+
* When this generation started. The pid's incarnation marker: a consumer
|
|
21727
|
+
* differencing {@link LoadContributionSchema.shape.cpuSeconds} must drop the
|
|
21728
|
+
* window when this changes, because the counter restarted from zero in a new
|
|
21729
|
+
* process.
|
|
21730
|
+
*/
|
|
21731
|
+
startedAtMs: external_exports.number().optional(),
|
|
21732
|
+
/**
|
|
21733
|
+
* CUMULATIVE CPU seconds this unit has consumed since it started — user +
|
|
21734
|
+
* system, read from the child's own `/proc/<pid>/stat` at the moment the
|
|
21735
|
+
* contribution is asked for.
|
|
21736
|
+
*
|
|
21737
|
+
* Cumulative and not a rate on purpose: a rate needs a window, a window
|
|
21738
|
+
* needs a sampler, and a new per-node sampler is the defect half of
|
|
21739
|
+
* `docs/architecture/load-ledger.md` documents. A counter can be differenced
|
|
21740
|
+
* by whoever already keeps a history; a rate cannot be un-averaged.
|
|
21741
|
+
*
|
|
21742
|
+
* Absent — never zero — on a node with no `/proc`, on a read failure, and on
|
|
21743
|
+
* an entry with no process.
|
|
21744
|
+
*/
|
|
21745
|
+
cpuSeconds: external_exports.number().optional(),
|
|
21746
|
+
/** Resident bytes of this unit's process, same source and same rules. */
|
|
21747
|
+
rssBytes: external_exports.number().optional()
|
|
21748
|
+
});
|
|
21749
|
+
var loadContributionCapability = {
|
|
21750
|
+
name: "load-contribution",
|
|
21751
|
+
scope: "system",
|
|
21752
|
+
mode: "collection",
|
|
21753
|
+
internal: true,
|
|
21754
|
+
methods: {
|
|
21755
|
+
/**
|
|
21756
|
+
* This addon's own cost entries, computed live from state it already
|
|
21757
|
+
* holds. Inert: no persistence, no sampling, no timer. It is answered on
|
|
21758
|
+
* whatever beat the caller already has.
|
|
21759
|
+
*/
|
|
21760
|
+
list: method(external_exports.void(), external_exports.array(LoadContributionSchema).readonly())
|
|
21761
|
+
},
|
|
21762
|
+
/** In-process only — enumerated through `addons.listCapabilityProviders`. */
|
|
21763
|
+
mount: { kind: "skip" }
|
|
21764
|
+
};
|
|
21645
21765
|
var LoginStageEnum = external_exports.enum(["primary", "second-factor"]);
|
|
21646
21766
|
var RedirectLoginMethodSchema = external_exports.object({
|
|
21647
21767
|
kind: external_exports.literal("redirect"),
|
|
@@ -21813,8 +21933,7 @@ var NodeProcessSchema = external_exports.object({
|
|
|
21813
21933
|
classification: external_exports.enum([
|
|
21814
21934
|
"root",
|
|
21815
21935
|
"managed",
|
|
21816
|
-
"system"
|
|
21817
|
-
"ghost"
|
|
21936
|
+
"system"
|
|
21818
21937
|
]),
|
|
21819
21938
|
/** `$process` addon binding when `managed`, else null. */
|
|
21820
21939
|
addonId: external_exports.string().nullable(),
|
|
@@ -21822,22 +21941,39 @@ var NodeProcessSchema = external_exports.object({
|
|
|
21822
21941
|
nodeId: external_exports.string().nullable(),
|
|
21823
21942
|
/** Truncated command line. */
|
|
21824
21943
|
command: external_exports.string(),
|
|
21944
|
+
/**
|
|
21945
|
+
* `ps pcpu` — CPU averaged over the process's WHOLE LIFETIME, not a rate.
|
|
21946
|
+
* On a runner up for days it barely moves. Fine as a column, useless as a
|
|
21947
|
+
* series: use `cpuMainPercent + cpuGcPercent` for anything time-varying.
|
|
21948
|
+
*/
|
|
21825
21949
|
cpuPercent: external_exports.number(),
|
|
21826
21950
|
memoryRssBytes: external_exports.number(),
|
|
21951
|
+
/**
|
|
21952
|
+
* Instantaneous CPU% of the process's own threads over the last
|
|
21953
|
+
* process-snapshot window, from a `/proc/<pid>/task/*` tick delta.
|
|
21954
|
+
*
|
|
21955
|
+
* `null` = UNKNOWN, never zero: no previous sample yet (first tick after
|
|
21956
|
+
* boot), the pid was recycled, or this node is not Linux.
|
|
21957
|
+
*/
|
|
21958
|
+
cpuMainPercent: external_exports.number().nullable(),
|
|
21959
|
+
/**
|
|
21960
|
+
* Instantaneous CPU% of V8's `V8Worker` platform pool over the same window.
|
|
21961
|
+
*
|
|
21962
|
+
* This is the number that rewrote the 2026-08-27 diagnosis — hub-main 73%,
|
|
21963
|
+
* `stream-broker` 61% (`docs/architecture/load-ledger.md`). A CPU chart that
|
|
21964
|
+
* does not separate it from `cpuMainPercent` shows "busy" where the truth is
|
|
21965
|
+
* "allocating too much".
|
|
21966
|
+
*
|
|
21967
|
+
* Concurrent GC is the dominant tenant of that pool but not the only one
|
|
21968
|
+
* (background compilation runs there too), so it is reported as
|
|
21969
|
+
* "GC / V8 helpers" rather than as pure collection time. `null` has the same
|
|
21970
|
+
* meaning as on `cpuMainPercent`.
|
|
21971
|
+
*/
|
|
21972
|
+
cpuGcPercent: external_exports.number().nullable(),
|
|
21973
|
+
/** Threads seen in the tick scan. `null` under the same conditions. */
|
|
21974
|
+
threadCount: external_exports.number().nullable(),
|
|
21827
21975
|
/** Wall-clock uptime (seconds). Parsed from `ps etime`. */
|
|
21828
|
-
uptimeSec: external_exports.number()
|
|
21829
|
-
/** True when ancestor walk reaches `ppid=1` (reparented to init/launchd). */
|
|
21830
|
-
orphaned: external_exports.boolean()
|
|
21831
|
-
});
|
|
21832
|
-
var KillProcessInputSchema = external_exports.object({
|
|
21833
|
-
pid: external_exports.number(),
|
|
21834
|
-
/** Force = SIGKILL. Default is SIGTERM. */
|
|
21835
|
-
force: external_exports.boolean().optional()
|
|
21836
|
-
});
|
|
21837
|
-
var KillProcessResultSchema = external_exports.object({
|
|
21838
|
-
success: external_exports.boolean(),
|
|
21839
|
-
reason: external_exports.string().optional(),
|
|
21840
|
-
signal: external_exports.enum(["SIGTERM", "SIGKILL"]).optional()
|
|
21976
|
+
uptimeSec: external_exports.number()
|
|
21841
21977
|
});
|
|
21842
21978
|
var DumpHeapSnapshotInputSchema = external_exports.object({
|
|
21843
21979
|
/** The addon whose runner should dump a heap snapshot. */
|
|
@@ -21851,6 +21987,89 @@ var DumpHeapSnapshotResultSchema = external_exports.object({
|
|
|
21851
21987
|
pid: external_exports.number().optional(),
|
|
21852
21988
|
reason: external_exports.string().optional()
|
|
21853
21989
|
});
|
|
21990
|
+
var LoadPointSchema = external_exports.object({
|
|
21991
|
+
/** Bucket START, or the snapshot's own timestamp when unreduced. */
|
|
21992
|
+
atMs: external_exports.number(),
|
|
21993
|
+
/** Raw snapshots in this bucket. Never 0 — AN EMPTY BUCKET IS ABSENT. */
|
|
21994
|
+
samples: external_exports.number().int(),
|
|
21995
|
+
/**
|
|
21996
|
+
* `null` = UNKNOWN and it PROPAGATES: a bucket is null unless every process
|
|
21997
|
+
* of every snapshot in it reported a thread split. A partial sum is a
|
|
21998
|
+
* smaller number that looks exactly as real as a complete one.
|
|
21999
|
+
*/
|
|
22000
|
+
cpuMainPercent: external_exports.number().nullable(),
|
|
22001
|
+
cpuMainPercentMin: external_exports.number().nullable(),
|
|
22002
|
+
cpuGcPercent: external_exports.number().nullable(),
|
|
22003
|
+
cpuGcPercentMin: external_exports.number().nullable(),
|
|
22004
|
+
/** Lifetime-average CPU%, summed. Always known — and never a rate. */
|
|
22005
|
+
cpuLifetimePercent: external_exports.number(),
|
|
22006
|
+
cpuLifetimePercentMin: external_exports.number(),
|
|
22007
|
+
memoryRssBytes: external_exports.number(),
|
|
22008
|
+
memoryRssBytesMin: external_exports.number(),
|
|
22009
|
+
processCount: external_exports.number().int(),
|
|
22010
|
+
processCountMin: external_exports.number().int()
|
|
22011
|
+
});
|
|
22012
|
+
var LoadFunctionSeriesSchema = external_exports.object({
|
|
22013
|
+
key: external_exports.string(),
|
|
22014
|
+
kind: external_exports.enum([
|
|
22015
|
+
"addon",
|
|
22016
|
+
"root",
|
|
22017
|
+
"unattributed"
|
|
22018
|
+
]),
|
|
22019
|
+
/** Oldest-first. A missing interval is MISSING — never zero-filled. */
|
|
22020
|
+
points: external_exports.array(LoadPointSchema).readonly()
|
|
22021
|
+
});
|
|
22022
|
+
var NodeLoadSeriesSchema = external_exports.object({
|
|
22023
|
+
nodeId: external_exports.string(),
|
|
22024
|
+
/** One entry per function seen in the window, heaviest-first. */
|
|
22025
|
+
series: external_exports.array(LoadFunctionSeriesSchema).readonly(),
|
|
22026
|
+
/**
|
|
22027
|
+
* Width of one returned bucket, in ms. Equals the sampling cadence when no
|
|
22028
|
+
* reduction was needed — so a caller can always say what one point covers
|
|
22029
|
+
* without having to know whether it was reduced.
|
|
22030
|
+
*/
|
|
22031
|
+
bucketMs: external_exports.number(),
|
|
22032
|
+
/** Raw snapshots that went into this answer, across both tiers. */
|
|
22033
|
+
retainedSamples: external_exports.number(),
|
|
22034
|
+
/** Oldest snapshot represented, or `null` when nothing is retained. */
|
|
22035
|
+
oldestAtMs: external_exports.number().nullable(),
|
|
22036
|
+
/** The fixed sampling cadence in force on the cluster, in ms. */
|
|
22037
|
+
cadenceMs: external_exports.number(),
|
|
22038
|
+
/**
|
|
22039
|
+
* Did the DURABLE tier contribute? `false` means the answer is the hot ring
|
|
22040
|
+
* alone — an agent (which holds no table), or a store that refused.
|
|
22041
|
+
* Reported because "the last hour" and "the last six hours" are different
|
|
22042
|
+
* questions and an operator must not have to guess which was answered.
|
|
22043
|
+
*/
|
|
22044
|
+
durable: external_exports.boolean()
|
|
22045
|
+
});
|
|
22046
|
+
var GetLoadSeriesInputSchema = external_exports.object({
|
|
22047
|
+
/**
|
|
22048
|
+
* The node whose series is wanted.
|
|
22049
|
+
*
|
|
22050
|
+
* NOT named `nodeId`: the generated cap router strips a top-level
|
|
22051
|
+
* `nodeId` from every method input and uses it to ROUTE the call to
|
|
22052
|
+
* that node's provider (`generated-cap-routers.ts`). A series target
|
|
22053
|
+
* called `nodeId` would silently become a routing pin and never reach
|
|
22054
|
+
* the provider. The hub holds every node it hears from, so the
|
|
22055
|
+
* ordinary call is unpinned — answered by the hub, for any node.
|
|
22056
|
+
*/
|
|
22057
|
+
forNodeId: external_exports.string(),
|
|
22058
|
+
/**
|
|
22059
|
+
* EXCLUSIVE lower bound. A caller passes the newest `atMs` it already
|
|
22060
|
+
* holds and receives only what it is missing, so seeding a live chart
|
|
22061
|
+
* from this method cannot double a point already drawn.
|
|
22062
|
+
*/
|
|
22063
|
+
sinceMs: external_exports.number().optional(),
|
|
22064
|
+
/**
|
|
22065
|
+
* Most points the caller wants PER FUNCTION. The window is reduced to fit,
|
|
22066
|
+
* preserving min and max per bucket.
|
|
22067
|
+
*
|
|
22068
|
+
* Absent means NO reduction — legitimate for a short window and a trap for a
|
|
22069
|
+
* long one, which is why a chart passes its own pixel width.
|
|
22070
|
+
*/
|
|
22071
|
+
maxPoints: external_exports.number().int().positive().optional()
|
|
22072
|
+
});
|
|
21854
22073
|
var SystemMetricsSchema = external_exports.object({
|
|
21855
22074
|
cpuPercent: external_exports.number(),
|
|
21856
22075
|
memoryPercent: external_exports.number(),
|
|
@@ -21896,28 +22115,44 @@ var metricsProviderCapability = {
|
|
|
21896
22115
|
getAddonStats: method(external_exports.object({ addonId: external_exports.string() }), PidResourceStatsSchema.nullable()),
|
|
21897
22116
|
/**
|
|
21898
22117
|
* Snapshot of every camstack-related process on this node with a
|
|
21899
|
-
*
|
|
21900
|
-
* Processes tab: cross-references `$process.list` against a `ps` scan
|
|
21901
|
-
*
|
|
21902
|
-
*
|
|
22118
|
+
* root/managed/system classification. Powers the Cluster → Agent →
|
|
22119
|
+
* Processes tab: cross-references `$process.list` against a `ps` scan so
|
|
22120
|
+
* per-addon CPU and RSS can be attributed, and so a process the cluster
|
|
22121
|
+
* does not manage is still visible.
|
|
22122
|
+
*
|
|
22123
|
+
* **Read-only, by design.** This cap once carried a `killProcess`
|
|
22124
|
+
* mutation; it was deleted on 2026-08-27. A runner's lifecycle belongs to
|
|
22125
|
+
* `CrashSupervisor` and is driven through `addons.restartAddon` /
|
|
22126
|
+
* `$process.restart` — signalling a raw pid went around the supervisor
|
|
22127
|
+
* (D6), and the one class it was willing to signal turned out to be the
|
|
22128
|
+
* container's own init and the operator's desktop app.
|
|
21903
22129
|
*/
|
|
21904
22130
|
listNodeProcesses: method(external_exports.void(), external_exports.array(NodeProcessSchema).readonly()),
|
|
21905
22131
|
/**
|
|
21906
|
-
*
|
|
21907
|
-
*
|
|
21908
|
-
*
|
|
21909
|
-
*
|
|
22132
|
+
* The retained per-node load series — the ONE reader over BOTH tiers.
|
|
22133
|
+
*
|
|
22134
|
+
* The in-memory ring is the HOT window (the last 180 snapshots, held by
|
|
22135
|
+
* every node's `native-metrics`); the hub's `metrics:node-load-samples`
|
|
22136
|
+
* table is the COLD one (the operator's retention, six hours by default).
|
|
22137
|
+
* This method merges them and DEDUPES on `atMs`, so a snapshot present in
|
|
22138
|
+
* both contributes once and the caller never learns which tier a point
|
|
22139
|
+
* came from. There is deliberately no second read surface: two readers is
|
|
22140
|
+
* how two charts start disagreeing about the same node.
|
|
22141
|
+
*
|
|
22142
|
+
* Reads only; nothing is sampled to answer it. Normally called UNPINNED —
|
|
22143
|
+
* the hub hears every node's snapshot and holds every node's rows — and
|
|
22144
|
+
* answers for any `forNodeId`. Pinned to an agent it answers from that
|
|
22145
|
+
* agent's ring alone (`durable: false`). Empty is a legitimate answer: a
|
|
22146
|
+
* node nobody has heard from has no series, and saying so is the truth.
|
|
21910
22147
|
*/
|
|
21911
|
-
|
|
21912
|
-
kind: "mutation",
|
|
21913
|
-
auth: "admin"
|
|
21914
|
-
}),
|
|
22148
|
+
getLoadSeries: method(GetLoadSeriesInputSchema, NodeLoadSeriesSchema),
|
|
21915
22149
|
/**
|
|
21916
22150
|
* Tell the addon's forked runner to write a V8 heap snapshot to disk (via
|
|
21917
22151
|
* SIGUSR2 — the runner's diagnostic handler). Also logs its
|
|
21918
|
-
* `process.memoryUsage()` + heap-space breakdown.
|
|
21919
|
-
*
|
|
21920
|
-
* attribution; copy the returned path off the
|
|
22152
|
+
* `process.memoryUsage()` + heap-space breakdown. Resolves the pid from
|
|
22153
|
+
* `$process.list`, so it can only reach a runner this node spawned. Use
|
|
22154
|
+
* for deep per-addon memory attribution; copy the returned path off the
|
|
22155
|
+
* node to analyze.
|
|
21921
22156
|
*/
|
|
21922
22157
|
dumpHeapSnapshot: method(DumpHeapSnapshotInputSchema, DumpHeapSnapshotResultSchema, {
|
|
21923
22158
|
kind: "mutation",
|
|
@@ -36938,6 +37173,7 @@ var LoggingSettingsPatchSchema = external_exports.object({
|
|
|
36938
37173
|
*/
|
|
36939
37174
|
channels: external_exports.array(LogChannelWindowPatchSchema).readonly().optional()
|
|
36940
37175
|
});
|
|
37176
|
+
var ReportedLoadContributionSchema = LoadContributionSchema.extend({ addonId: external_exports.string() });
|
|
36941
37177
|
var GetLoggingSettingsInputSchema = external_exports.object({
|
|
36942
37178
|
scopeNodeId: external_exports.string().optional(),
|
|
36943
37179
|
/**
|
|
@@ -37031,6 +37267,22 @@ var systemCapability = {
|
|
|
37031
37267
|
*/
|
|
37032
37268
|
getRequestCensus: method(external_exports.void(), RequestCensusStatusSchema, { auth: "admin" }),
|
|
37033
37269
|
/**
|
|
37270
|
+
* Every `load-contribution` an addon on this cluster reports — each
|
|
37271
|
+
* addon's OWN cost, already attributed by the addon that owns it.
|
|
37272
|
+
*
|
|
37273
|
+
* There is no central list of what costs what: an addon that spawns a
|
|
37274
|
+
* per-camera child declares it, and one that cannot attribute its cost
|
|
37275
|
+
* (the shared inference pool) declares THAT. So a new cost family appears
|
|
37276
|
+
* here the moment its addon is redeployed, with nobody editing anything.
|
|
37277
|
+
*
|
|
37278
|
+
* What this does NOT do is measure the node. `metrics.node-processes-
|
|
37279
|
+
* snapshot` still does that, and the difference between the two is the
|
|
37280
|
+
* finding: a process no contribution claims is either a leak or a family
|
|
37281
|
+
* nobody has taught to report. Both belong in the unattributed bucket, and
|
|
37282
|
+
* neither may be folded into a camera.
|
|
37283
|
+
*/
|
|
37284
|
+
getLoadContributions: method(external_exports.void(), external_exports.array(ReportedLoadContributionSchema).readonly(), { auth: "admin" }),
|
|
37285
|
+
/**
|
|
37034
37286
|
* The logging settings document — levels and armed diagnostics — resolved
|
|
37035
37287
|
* for `nodeId`, or for the cluster when `nodeId` is absent.
|
|
37036
37288
|
*
|
|
@@ -38937,6 +39189,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
38937
39189
|
addonId: null,
|
|
38938
39190
|
access: "create"
|
|
38939
39191
|
},
|
|
39192
|
+
"dataStoreProvider.insertMany": {
|
|
39193
|
+
capName: "data-store-provider",
|
|
39194
|
+
capScope: "system",
|
|
39195
|
+
addonId: null,
|
|
39196
|
+
access: "create"
|
|
39197
|
+
},
|
|
38940
39198
|
"dataStoreProvider.isEmpty": {
|
|
38941
39199
|
capName: "data-store-provider",
|
|
38942
39200
|
capScope: "system",
|
|
@@ -40251,6 +40509,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40251
40509
|
addonId: null,
|
|
40252
40510
|
access: "create"
|
|
40253
40511
|
},
|
|
40512
|
+
"loadContribution.list": {
|
|
40513
|
+
capName: "load-contribution",
|
|
40514
|
+
capScope: "system",
|
|
40515
|
+
addonId: null,
|
|
40516
|
+
access: "view"
|
|
40517
|
+
},
|
|
40254
40518
|
"localNetwork.downloadCa": {
|
|
40255
40519
|
capName: "local-network",
|
|
40256
40520
|
capScope: "system",
|
|
@@ -40551,17 +40815,17 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
40551
40815
|
addonId: null,
|
|
40552
40816
|
access: "view"
|
|
40553
40817
|
},
|
|
40554
|
-
"metricsProvider.
|
|
40818
|
+
"metricsProvider.getLoadSeries": {
|
|
40555
40819
|
capName: "metrics-provider",
|
|
40556
40820
|
capScope: "system",
|
|
40557
40821
|
addonId: null,
|
|
40558
40822
|
access: "view"
|
|
40559
40823
|
},
|
|
40560
|
-
"metricsProvider.
|
|
40824
|
+
"metricsProvider.getProcessStats": {
|
|
40561
40825
|
capName: "metrics-provider",
|
|
40562
40826
|
capScope: "system",
|
|
40563
40827
|
addonId: null,
|
|
40564
|
-
access: "
|
|
40828
|
+
access: "view"
|
|
40565
40829
|
},
|
|
40566
40830
|
"metricsProvider.listAddonInstances": {
|
|
40567
40831
|
capName: "metrics-provider",
|
|
@@ -42573,6 +42837,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
42573
42837
|
addonId: null,
|
|
42574
42838
|
access: "create"
|
|
42575
42839
|
},
|
|
42840
|
+
"settingsStore.insertMany": {
|
|
42841
|
+
capName: "settings-store",
|
|
42842
|
+
capScope: "system",
|
|
42843
|
+
addonId: null,
|
|
42844
|
+
access: "create"
|
|
42845
|
+
},
|
|
42576
42846
|
"settingsStore.isEmpty": {
|
|
42577
42847
|
capName: "settings-store",
|
|
42578
42848
|
capScope: "system",
|
|
@@ -43185,6 +43455,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
43185
43455
|
addonId: null,
|
|
43186
43456
|
access: "create"
|
|
43187
43457
|
},
|
|
43458
|
+
"system.getLoadContributions": {
|
|
43459
|
+
capName: "system",
|
|
43460
|
+
capScope: "system",
|
|
43461
|
+
addonId: null,
|
|
43462
|
+
access: "view"
|
|
43463
|
+
},
|
|
43188
43464
|
"system.getLoggingSettings": {
|
|
43189
43465
|
capName: "system",
|
|
43190
43466
|
capScope: "system",
|
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-HPFKAZ3A.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-EJ6BGNVY.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-EJ6BGNVY.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-OVQWH2QN.js");
|
|
1134
1134
|
if (presetNamespace) {
|
|
1135
1135
|
const spinner4 = clack.spinner();
|
|
1136
1136
|
spinner4.start(`Discovering hub on LAN (namespace "${presetNamespace}")`);
|