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-CdbM8ge4.mjs
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
- * ghost/managed/root classification. Powers the Cluster → Agent →
21900
- * Processes tab: cross-references `$process.list` against a `ps` scan
21901
- * so orphaned trees (PPID=1) or unknown children show up as `ghost`
21902
- * and can be killed from the UI.
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
- * Send SIGTERM (or SIGKILL when `force`) to a pid inside this node's
21907
- * process tree. The provider refuses pids that aren't in the live
21908
- * `listNodeProcesses()` snapshot callers can't use this endpoint
21909
- * to kill arbitrary system processes.
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
- killProcess: method(KillProcessInputSchema, KillProcessResultSchema, {
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. Refuses pids not in the
21919
- * live `listNodeProcesses()` snapshot. Use for deep per-addon memory
21920
- * attribution; copy the returned path off the node to analyze.
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.getProcessStats": {
40818
+ "metricsProvider.getLoadSeries": {
40555
40819
  capName: "metrics-provider",
40556
40820
  capScope: "system",
40557
40821
  addonId: null,
40558
40822
  access: "view"
40559
40823
  },
40560
- "metricsProvider.killProcess": {
40824
+ "metricsProvider.getProcessStats": {
40561
40825
  capName: "metrics-provider",
40562
40826
  capScope: "system",
40563
40827
  addonId: null,
40564
- access: "create"
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-U5U3EPIG.js";
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-Y5UOZ2NP.js");
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-Y5UOZ2NP.js");
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-WF63I2OT.js");
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}")`);
@@ -5,7 +5,7 @@ import {
5
5
  filterHubNodes,
6
6
  resolveHubFromDiscovered,
7
7
  runDiscover
8
- } from "./chunk-U5U3EPIG.js";
8
+ } from "./chunk-HPFKAZ3A.js";
9
9
  import "./chunk-LMMQX4CK.js";
10
10
  export {
11
11
  DEFAULT_HUB_HTTPS_PORT,