@camstack/addon-agent-ui 1.2.335 → 1.2.337

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/addon.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- //#region ../types/dist/event-category-BmPm98n0.mjs
3
+ //#region ../types/dist/event-category-78tcBemo.mjs
4
4
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
5
5
  EventCategory["SystemBoot"] = "system.boot";
6
6
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -121,6 +121,23 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
121
121
  */
122
122
  EventCategory["AddonLoadRecovered"] = "addon.load-recovered";
123
123
  /**
124
+ * An addon is RUNNING although its installed package is below what the
125
+ * running server requires (`camstack.requires.addons` of the server, or the
126
+ * addon's own `requires.server`). Raised once per streak by the unsupported-
127
+ * addon tracker, on the hub and on agents; AlertCenter turns it into one
128
+ * operator alert per node and package. The addon is never held back for it.
129
+ *
130
+ * Payload: `{ packageName, addonId, nodeId, installedVersion, requiredMinimum, serverVersion, unmet }`.
131
+ */
132
+ EventCategory["AddonUnsupportedVersion"] = "addon.unsupported-version";
133
+ /**
134
+ * The package of an {@link AddonUnsupportedVersion} alert reached a supported
135
+ * version, or is no longer installed on the node. AlertCenter dismisses the matching alert.
136
+ *
137
+ * Payload: `{ packageName, addonId, nodeId }`.
138
+ */
139
+ EventCategory["AddonUnsupportedResolved"] = "addon.unsupported-resolved";
140
+ /**
124
141
  * Monitor scheduled the next retry for a failed addon. Transient —
125
142
  * surfaced to the UI for live-updating the "next retry in Ns"
126
143
  * countdown on the Addons page row, NOT persisted as an alert.
@@ -231,7 +248,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
231
248
  EventCategory["ProcessRestarted"] = "process.restarted";
232
249
  /**
233
250
  * The SET of storage locations changed — one was created, edited, enabled,
234
- * disabled or deleted through `storage.upsertLocation` / `deleteLocation`.
251
+ * disabled or deleted through the location instances or the forced-delete action.
235
252
  *
236
253
  * Telemetry, not a transaction (D8/D11): every consumer that re-resolves on
237
254
  * it must also converge on its own periodic path, because a dropped event
@@ -5849,7 +5866,7 @@ var ZodIssueCode = {
5849
5866
  var ZodFirstPartyTypeKind;
5850
5867
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5851
5868
  //#endregion
5852
- //#region ../types/dist/sleep-CdKka2ri.mjs
5869
+ //#region ../types/dist/sleep-AEnTN3b4.mjs
5853
5870
  /**
5854
5871
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5855
5872
  * window to float samples (D455).
@@ -9760,7 +9777,6 @@ var CAP_NAMES = Object.freeze([
9760
9777
  "notifier",
9761
9778
  "numeric-sensor",
9762
9779
  "oauth-integration",
9763
- "oidc-connections",
9764
9780
  "osd",
9765
9781
  "osd-manager",
9766
9782
  "pet-feeder",
@@ -11652,8 +11668,7 @@ Object.freeze({
11652
11668
  "device-provider": { "reloadDevice": 18e4 },
11653
11669
  "llm": {
11654
11670
  "generate": 6e5,
11655
- "generateVision": 6e5,
11656
- "testProfile": 6e5
11671
+ "generateVision": 6e5
11657
11672
  },
11658
11673
  "llm-runtime": {
11659
11674
  "complete": 6e5,
@@ -13056,17 +13071,18 @@ var IntegrationInstanceRefSchema = object({
13056
13071
  * message to what the kind supports — callers never special-case a service.
13057
13072
  *
13058
13073
  * DESIGN DECISIONS (locked):
13059
- * - Target CRUD lives on THIS cap (`upsertTarget` / `deleteTarget` /
13060
- * `setTargetEnabled`), each provider persisting via the `settings-store`
13061
- * cap. Rationale: the admin UI needs one uniform surface across the
13062
- * notifiers addon AND the HA addon; the addon-`globalSettingsSchema`-array
13063
- * alternative would fork the UI per addon and cannot host the
13064
- * discovery→adopt flow.
13065
- * - `listTargetKinds` / `listTargets` / `discoverTargets` return arrays →
13066
- * the generated cap-mount auto-`concatCollection`-fans them across every
13067
- * registered provider (notifiers addon + HA addon) so one catalog is
13068
- * routable. `send` / `testTarget` / CRUD route to ONE provider by the
13069
- * `addonId` the generated collection router extracts from the call input.
13074
+ * - A target is an INSTANCE of this function cap (epic #440, step 6): the
13075
+ * providers serve their targets as `integration-instances` records, one
13076
+ * record kind per target kind, and the admin lists, adds, edits, switches
13077
+ * and deletes them through that cap. This cap keeps what an instance cannot
13078
+ * say: the kind catalogue (`listTargetKinds`: capabilities, delivery
13079
+ * parameters, brand icon), dispatch (`send`, `testTarget`) and the form
13080
+ * helpers (`discoverTargets`, `probeTargetConfig`).
13081
+ * - `listTargetKinds` / `discoverTargets` return arrays → the generated
13082
+ * cap-mount auto-`concatCollection`-fans them across every registered
13083
+ * provider so one catalog is routable. `send` / `testTarget` /
13084
+ * `probeTargetConfig` route to ONE provider by the `addonId` the generated
13085
+ * collection router extracts from the call input.
13070
13086
  * - `Attachment.bytes` is `Uint8Array`. Transport-safe: superjson (the tRPC
13071
13087
  * transformer) + UDS MsgPack both round-trip typed arrays — already used by
13072
13088
  * `storage` / `storage-provider` / `recording` caps over the same path. No
@@ -13311,7 +13327,7 @@ var TargetKindCapsSchema = object({
13311
13327
  * the union is large and not meant for runtime validation here; the exported
13312
13328
  * `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
13313
13329
  */
13314
- var ConfigSchemaPassthrough$4 = unknown();
13330
+ var ConfigSchemaPassthrough$3 = unknown();
13315
13331
  var TargetKindSchema = object({
13316
13332
  kind: string(),
13317
13333
  label: string(),
@@ -13348,7 +13364,7 @@ var TargetKindSchema = object({
13348
13364
  * its raster path, which is the safe default for an unknown image.
13349
13365
  */
13350
13366
  iconMediaType: string().optional(),
13351
- configSchema: ConfigSchemaPassthrough$4,
13367
+ configSchema: ConfigSchemaPassthrough$3,
13352
13368
  /**
13353
13369
  * The config keys that decide WHERE this kind's secrets are sent (server,
13354
13370
  * base URL, instance, chat, recipient). A save that changes any of them
@@ -13370,9 +13386,11 @@ var TargetKindSchema = object({
13370
13386
  caps: TargetKindCapsSchema
13371
13387
  });
13372
13388
  /**
13373
- * A persisted target. `config` holds secrets; providers REDACT secret fields
13374
- * (return a presence marker only) when serving `listTargets` — never
13375
- * round-trip a stored secret to the UI.
13389
+ * A target as a provider's own code sees it (the notification-center bridge, the
13390
+ * send path): the flat record body split into the name, the switch and the
13391
+ * kind's fields. `config` holds secrets; a reader that serves it to a client
13392
+ * REDACTS secret fields (a presence marker only) — never round-trip a stored
13393
+ * secret to the UI.
13376
13394
  */
13377
13395
  var TargetSchema = object({
13378
13396
  id: string(),
@@ -13415,13 +13433,13 @@ var ProbeTargetConfigResultSchema = object({
13415
13433
  stateInstance: string().optional(),
13416
13434
  error: string().optional()
13417
13435
  });
13418
- method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema), { auth: "admin" }), method(object({ targetId: string() }), TargetSchema, { auth: "admin" }), method(object({
13436
+ method(object({}), array(TargetKindSchema)), method(object({
13419
13437
  kind: string(),
13420
13438
  config: record(string(), unknown()).optional(),
13421
13439
  /**
13422
13440
  * When editing / duplicating, the blank password field never round-trips
13423
13441
  * the stored token. Pass the source target id so the provider can restore
13424
- * secrets server-side before dialling (same merge as upsert).
13442
+ * secrets server-side before dialling.
13425
13443
  */
13426
13444
  targetId: string().optional()
13427
13445
  }), array(DiscoveredTargetSchema), { auth: "admin" }), method(object({
@@ -13444,27 +13462,6 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
13444
13462
  }), TestResultSchema, {
13445
13463
  kind: "mutation",
13446
13464
  auth: "admin"
13447
- }), method(object({
13448
- target: TargetSchema,
13449
- /**
13450
- * Duplicate flow: create a NEW target id while copying secrets from an
13451
- * existing row. The UI never holds the stored token; blank / redacted
13452
- * password fields are restored from this source (D634 still applies if
13453
- * destinations diverge without a re-typed secret).
13454
- */
13455
- cloneSecretsFrom: string().optional()
13456
- }), TargetSchema, {
13457
- kind: "mutation",
13458
- auth: "admin"
13459
- }), method(object({ targetId: string() }), _void(), {
13460
- kind: "mutation",
13461
- auth: "admin"
13462
- }), method(object({
13463
- targetId: string(),
13464
- enabled: boolean()
13465
- }), _void(), {
13466
- kind: "mutation",
13467
- auth: "admin"
13468
13465
  });
13469
13466
  looseObject({
13470
13467
  name: string().min(1),
@@ -21722,7 +21719,6 @@ var SYSTEM_CAP_VOCABULARY = {
21722
21719
  "notification-output": system("notification delivery — reached through notifier devices and rules"),
21723
21720
  "notification-rules": system("notification rules — authored on their own page"),
21724
21721
  "oauth-integration": system(IDENTITY),
21725
- "oidc-connections": system(IDENTITY),
21726
21722
  "osd-manager": system(PIPELINE),
21727
21723
  "pipeline-executor": system(PIPELINE),
21728
21724
  "pipeline-orchestrator": system(PIPELINE),
@@ -53400,7 +53396,7 @@ method(_void(), array(IntegrationWithStateSchema)), method(object({ id: string()
53400
53396
  * or the redaction token KEEPS the stored secret; `{ $secretClear: true }`
53401
53397
  * clears it.
53402
53398
  */
53403
- var ConfigSchemaPassthrough$3 = custom();
53399
+ var ConfigSchemaPassthrough$2 = custom();
53404
53400
  var IntegrationInstanceIdSchema = string().min(1);
53405
53401
  var IntegrationInstanceModeSchema = _enum(["single", "multiple"]);
53406
53402
  /**
@@ -53446,7 +53442,16 @@ var IntegrationInstanceKindSchema = object({
53446
53442
  /** Relative hub path to start an interactive account link of an instance of this kind. */
53447
53443
  connectPath: string().min(1).optional(),
53448
53444
  /** Relative hub path to disconnect that account. */
53449
- disconnectPath: string().min(1).optional()
53445
+ disconnectPath: string().min(1).optional(),
53446
+ /**
53447
+ * Parts of the edit dialog the flat form cannot draw (a node picker, a model source), named by a
53448
+ * GENERIC widget id the client maps to a component; a client that knows none of them shows none.
53449
+ * `connection` widgets write connection values, `model` widgets own the model choice.
53450
+ */
53451
+ widgets: array(object({
53452
+ id: string().min(1),
53453
+ placement: _enum(["connection", "model"])
53454
+ })).optional()
53450
53455
  });
53451
53456
  /**
53452
53457
  * How devices of an instance are found. `none`: the operator adds them by hand; `lan`: the addon
@@ -53544,7 +53549,7 @@ method(_void(), IntegrationInstanceDescriptionSchema, { auth: "admin" }), method
53544
53549
  id: IntegrationInstanceIdSchema.nullable(),
53545
53550
  /** The kind of the create form (`id: null`) of a provider with several. */
53546
53551
  kind: string().min(1).optional()
53547
- }), ConfigSchemaPassthrough$3, { auth: "admin" }), method(_void(), array(IntegrationInstanceSchema).readonly(), { auth: "admin" }), method(object({ id: IntegrationInstanceIdSchema }), IntegrationInstanceSchema.nullable(), { auth: "admin" }), method(object({
53552
+ }), ConfigSchemaPassthrough$2, { auth: "admin" }), method(_void(), array(IntegrationInstanceSchema).readonly(), { auth: "admin" }), method(object({ id: IntegrationInstanceIdSchema }), IntegrationInstanceSchema.nullable(), { auth: "admin" }), method(object({
53548
53553
  id: IntegrationInstanceIdSchema.optional(),
53549
53554
  name: string().min(1),
53550
53555
  kind: string().min(1).optional(),
@@ -54476,12 +54481,12 @@ var LlmModelInfoSchema = object({
54476
54481
  });
54477
54482
  /**
54478
54483
  * The provider-specific part of a profile, validated by the provider that owns
54479
- * the kind (`upsertProfile` refuses what it does not accept). A field its
54484
+ * the kind (saving an instance refuses what it does not accept). A field its
54480
54485
  * `connectionSchema` declares `type: 'password'` is a secret: it is held in the
54481
54486
  * keychain, never in the row, and reads back as the redaction marker.
54482
54487
  */
54483
54488
  var LlmProviderConfigSchema = record(string(), unknown());
54484
- var LlmProfileSchema = object({
54489
+ object({
54485
54490
  id: string(),
54486
54491
  name: string(),
54487
54492
  /** The provider-declared kind (`LlmProfileKindDescriptor.kind`). */
@@ -54575,8 +54580,8 @@ var LlmProviderWidgetSchema = object({
54575
54580
  /** ConfigUISchema tree passed through untyped on the wire (the
54576
54581
  * notification-output `ConfigSchemaPassthrough` precedent at
54577
54582
  * notification-output.cap.ts:151); the exported TS type re-tightens it. */
54578
- var ConfigSchemaPassthrough$2 = unknown();
54579
- var LlmProfileKindDescriptorSchema = object({
54583
+ var ConfigSchemaPassthrough$1 = unknown();
54584
+ object({
54580
54585
  kind: LlmProfileKindSchema,
54581
54586
  label: string(),
54582
54587
  /** A generic icon name (`cloud`, `plug`, `cpu`) — never a glyph or a logo. */
@@ -54584,9 +54589,9 @@ var LlmProfileKindDescriptorSchema = object({
54584
54589
  /** Stamped by each provider so the concat-fanned catalog stays routable. */
54585
54590
  addonId: string(),
54586
54591
  /** The provider's own fields (`providerConfig`); `password` fields are keychain-held. */
54587
- connectionSchema: ConfigSchemaPassthrough$2,
54592
+ connectionSchema: ConfigSchemaPassthrough$1,
54588
54593
  /** Provider fields that belong under "Advanced" (extra headers, runtime tuning). */
54589
- advancedSchema: ConfigSchemaPassthrough$2.optional(),
54594
+ advancedSchema: ConfigSchemaPassthrough$1.optional(),
54590
54595
  /** The kind's defaults; a model from `listModels` may override any of them. */
54591
54596
  features: LlmModelFeaturesSchema,
54592
54597
  /** `false` = the provider stamps `supportsVision` itself (from what a node reports). */
@@ -54715,20 +54720,7 @@ method(LlmGenerateBaseInputSchema, LlmGenerateResultSchema, {
54715
54720
  }), method(object({
54716
54721
  addonId: string().optional(),
54717
54722
  requestId: string()
54718
- }), _void(), { kind: "mutation" }), method(object({}), array(LlmProfileKindDescriptorSchema)), method(object({}), array(LlmProfileSchema)), method(object({ profile: LlmProfileSchema }), LlmProfileSchema, {
54719
- kind: "mutation",
54720
- auth: "admin"
54721
- }), method(RawSecretMigrationInputSchema, RawSecretMigrationReportSchema, {
54722
- kind: "mutation",
54723
- auth: "admin"
54724
- }), method(ProfileRefInputSchema, _void(), {
54725
- kind: "mutation",
54726
- auth: "admin"
54727
- }), method(ProfileRefInputSchema, LlmGenerateResultSchema, {
54728
- kind: "mutation",
54729
- auth: "admin",
54730
- timeoutMs: AI_CAP_TRANSPORT_TIMEOUT_MS
54731
- }), method(LlmListModelsInputSchema, LlmListModelsResultSchema, {
54723
+ }), _void(), { kind: "mutation" }), method(LlmListModelsInputSchema, LlmListModelsResultSchema, {
54732
54724
  kind: "mutation",
54733
54725
  auth: "admin"
54734
54726
  }), method(object({}), array(LlmDefaultSchema)), method(object({
@@ -55723,20 +55715,7 @@ method(_void(), MeshStatusSchema), method(object({
55723
55715
  /** Optional hostname override the host should advertise once joined. */
55724
55716
  hostname: string().optional() }), object({
55725
55717
  /** Authentication URL the operator should open in a browser. */
55726
- loginUrl: string() }), { kind: "mutation" }), method(_void(), object({ left: literal(true) }), { kind: "mutation" }), method(_void(), object({ loggedOut: literal(true) }), { kind: "mutation" }), method(_void(), object({ peers: array(MeshPeerSchema).readonly() })), method(object({
55727
- /** Optional auth key — when provided, probes the key validity
55728
- * against the provider's API. Omit when already joined to
55729
- * just ping the daemon. */
55730
- authKey: string().optional() }), object({
55731
- ok: boolean(),
55732
- /** Provider-side identifier resolved by the probe (tailnet
55733
- * name for Tailscale, network id for ZeroTier, etc.). */
55734
- tenant: string().optional(),
55735
- /** Daemon binary version, when reachable. */
55736
- daemonVersion: string().optional(),
55737
- /** Human-readable error when `ok: false`. */
55738
- error: string().optional()
55739
- }), { kind: "mutation" });
55718
+ loginUrl: string() }), { kind: "mutation" }), method(_void(), object({ left: literal(true) }), { kind: "mutation" }), method(_void(), object({ loggedOut: literal(true) }), { kind: "mutation" }), method(_void(), object({ peers: array(MeshPeerSchema).readonly() }));
55740
55719
  object({
55741
55720
  value: number().nullable().meta(readingMeta("device", { label: "Total" })),
55742
55721
  lastFetchedAt: number()
@@ -65394,61 +65373,6 @@ var OauthIntegrationDescriptorSchema = object({
65394
65373
  });
65395
65374
  method(_void(), OauthIntegrationDescriptorSchema, { auth: "admin" });
65396
65375
  /**
65397
- * `oidc-connections` — CRUD for IdP rows under `auth-oidc` (D828 sibling).
65398
- *
65399
- * One hub-only singleton (`auth-oidc`). The Settings UI is a DataTable +
65400
- * ItemFormDialog; there is no `editable-array` in `globalSettingsSchema`.
65401
- * Operator-chosen `id` is the URL slug (`/addon/auth-oidc/<id>/…`) and is
65402
- * immutable after create.
65403
- */
65404
- var ConfigSchemaPassthrough$1 = unknown();
65405
- var OidcConnectionSchema = object({
65406
- id: string().min(1),
65407
- displayName: string(),
65408
- icon: string(),
65409
- issuerUrl: string(),
65410
- clientId: string(),
65411
- /** Client id + secret present — never the secret value. */
65412
- configured: boolean(),
65413
- /**
65414
- * Values for the connection form schema. `clientSecret` is a keychain
65415
- * {@link SecretFieldView} or `null` / `''`, never plaintext (D789).
65416
- */
65417
- formValues: record(string(), unknown()).optional()
65418
- });
65419
- /**
65420
- * Patch one connection. Omitted or empty `clientSecret` keeps the stored
65421
- * secret (D787). `{ $secretClear: true }` clears it. `id` is never renamed.
65422
- */
65423
- var OidcConnectionUpdateInputSchema = object({
65424
- id: string().min(1),
65425
- displayName: string().min(1),
65426
- icon: string().optional(),
65427
- issuerUrl: string().optional(),
65428
- clientId: string().optional(),
65429
- clientSecret: union([string(), object({ $secretClear: literal(true) })]).optional(),
65430
- redirectUri: string().optional(),
65431
- scopes: string().optional(),
65432
- usernameClaim: _enum([
65433
- "preferred_username",
65434
- "email",
65435
- "sub"
65436
- ]).optional()
65437
- });
65438
- method(object({}), ConfigSchemaPassthrough$1, { auth: "admin" }), method(object({}), array(OidcConnectionSchema).readonly(), { auth: "admin" }), method(object({
65439
- id: string().min(1).regex(/^[a-z0-9][a-z0-9-]{0,63}$/, "id must be a lowercase slug"),
65440
- displayName: string().min(1)
65441
- }), object({ id: string() }), {
65442
- kind: "mutation",
65443
- auth: "admin"
65444
- }), method(OidcConnectionUpdateInputSchema, object({ ok: literal(true) }), {
65445
- kind: "mutation",
65446
- auth: "admin"
65447
- }), method(object({ id: string().min(1) }), object({ ok: literal(true) }), {
65448
- kind: "mutation",
65449
- auth: "admin"
65450
- });
65451
- /**
65452
65376
  * Generic on-screen-display (video overlay) cap. Each camera exposes
65453
65377
  * a firmware-defined list of overlays (channel name, timestamp,
65454
65378
  * watermark, logo, …); the cap models them as a homogeneous array of
@@ -71621,21 +71545,6 @@ method(object({
71621
71545
  */
71622
71546
  ttlSec: union([number().int().positive(), literal("never")]).optional()
71623
71547
  }), object({ token: string() }), { auth: "admin" }), method(object({ token: string() }), SsoBridgeClaimsSchema.nullable(), { auth: "admin" });
71624
- var ProviderListEntrySchema = discriminatedUnion("shouldSaveDiskSpace", [object({
71625
- providerId: string().min(1),
71626
- displayName: string().min(1),
71627
- configSchema: unknown(),
71628
- nodeLocal: boolean(),
71629
- shouldSaveDiskSpace: literal(true),
71630
- minFreePercent: number().min(0).max(100)
71631
- }), object({
71632
- providerId: string().min(1),
71633
- displayName: string().min(1),
71634
- configSchema: unknown(),
71635
- nodeLocal: boolean(),
71636
- shouldSaveDiskSpace: literal(false),
71637
- minFreePercent: literal(null)
71638
- })]);
71639
71548
  method(object({
71640
71549
  location: StorageLocationRefSchema,
71641
71550
  relativePath: string()
@@ -71697,42 +71606,7 @@ method(object({
71697
71606
  }), _instanceof(Uint8Array), { auth: "admin" }), method(object({ downloadId: string() }), _void(), {
71698
71607
  kind: "mutation",
71699
71608
  auth: "admin"
71700
- }), method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()), method(_void(), array(StorageLocationDeclarationSchema).readonly()), method(StorageLocationSchema.omit({
71701
- createdAt: true,
71702
- updatedAt: true
71703
- }), StorageLocationSchema, {
71704
- kind: "mutation",
71705
- auth: "admin"
71706
- }), method(object({
71707
- id: string(),
71708
- force: boolean().optional()
71709
- }), _void(), {
71710
- kind: "mutation",
71711
- auth: "admin"
71712
- }), method(_void(), array(StorageDrainProgressSchema).readonly()), method(object({ id: string() }), object({
71713
- ok: boolean(),
71714
- error: string().optional()
71715
- }), { auth: "admin" }), method(_void(), array(ProviderListEntrySchema).readonly()), method(object({
71716
- providerId: string(),
71717
- /**
71718
- * The location this config is an UNSAVED edit of, when there is one.
71719
- *
71720
- * `listLocations` replaces every declared secret with the redaction
71721
- * sentinel, so the edit modal's form state holds the sentinel for any
71722
- * credential the operator did not retype — and posting that here
71723
- * without a way to resolve it makes the provider try to authenticate
71724
- * as `__camstack_redacted__` and report the operator's own working
71725
- * password as wrong. Given this id, the orchestrator restores each
71726
- * sentinel from the stored config (same rule as `upsertLocation`)
71727
- * before dispatching. Omitted by the "Add location" wizard, where
71728
- * every value was typed just now and nothing is stored yet.
71729
- */
71730
- locationId: string().optional(),
71731
- config: record(string(), unknown())
71732
- }), object({
71733
- ok: boolean(),
71734
- error: string().optional()
71735
- }), { auth: "admin" });
71609
+ }), method(object({ type: StorageLocationTypeSchema.optional() }), array(StorageLocationSchema).readonly()), method(_void(), array(StorageLocationDeclarationSchema).readonly()), method(_void(), array(StorageDrainProgressSchema).readonly());
71736
71610
  /** One table of the settings database. */
71737
71611
  var StorageTableSchema = object({
71738
71612
  /** The table's full name, e.g. `recorder:addon-settings` or `addon-device-settings`. */
@@ -79325,13 +79199,6 @@ Object.freeze({
79325
79199
  access: "delete",
79326
79200
  role: "admin"
79327
79201
  },
79328
- "llm.deleteProfile": {
79329
- capName: "llm",
79330
- capScope: "system",
79331
- addonId: null,
79332
- access: "delete",
79333
- role: "admin"
79334
- },
79335
79202
  "llm.generate": {
79336
79203
  capName: "llm",
79337
79204
  capScope: "system",
@@ -79395,20 +79262,6 @@ Object.freeze({
79395
79262
  access: "view",
79396
79263
  role: "admin"
79397
79264
  },
79398
- "llm.listProfileKinds": {
79399
- capName: "llm",
79400
- capScope: "system",
79401
- addonId: null,
79402
- access: "view",
79403
- role: "admin"
79404
- },
79405
- "llm.listProfiles": {
79406
- capName: "llm",
79407
- capScope: "system",
79408
- addonId: null,
79409
- access: "view",
79410
- role: "admin"
79411
- },
79412
79265
  "llm.listRuntimeNodes": {
79413
79266
  capName: "llm",
79414
79267
  capScope: "system",
@@ -79416,13 +79269,6 @@ Object.freeze({
79416
79269
  access: "view",
79417
79270
  role: "admin"
79418
79271
  },
79419
- "llm.migrateRawSecrets": {
79420
- capName: "llm",
79421
- capScope: "system",
79422
- addonId: null,
79423
- access: "create",
79424
- role: "admin"
79425
- },
79426
79272
  "llm.resolveModelRef": {
79427
79273
  capName: "llm",
79428
79274
  capScope: "system",
@@ -79451,20 +79297,6 @@ Object.freeze({
79451
79297
  access: "create",
79452
79298
  role: "admin"
79453
79299
  },
79454
- "llm.testProfile": {
79455
- capName: "llm",
79456
- capScope: "system",
79457
- addonId: null,
79458
- access: "create",
79459
- role: "admin"
79460
- },
79461
- "llm.upsertProfile": {
79462
- capName: "llm",
79463
- capScope: "system",
79464
- addonId: null,
79465
- access: "create",
79466
- role: "admin"
79467
- },
79468
79300
  "llmRuntime.appleAvailability": {
79469
79301
  capName: "llm-runtime",
79470
79302
  capScope: "system",
@@ -79969,13 +79801,6 @@ Object.freeze({
79969
79801
  access: "create",
79970
79802
  role: "admin"
79971
79803
  },
79972
- "meshNetwork.testConnection": {
79973
- capName: "mesh-network",
79974
- capScope: "system",
79975
- addonId: null,
79976
- access: "create",
79977
- role: "admin"
79978
- },
79979
79804
  "meter.getStatus": {
79980
79805
  capName: "meter",
79981
79806
  capScope: "device",
@@ -80634,13 +80459,6 @@ Object.freeze({
80634
80459
  access: "create",
80635
80460
  role: "admin"
80636
80461
  },
80637
- "notificationOutput.deleteTarget": {
80638
- capName: "notification-output",
80639
- capScope: "system",
80640
- addonId: null,
80641
- access: "delete",
80642
- role: "admin"
80643
- },
80644
80462
  "notificationOutput.discoverTargets": {
80645
80463
  capName: "notification-output",
80646
80464
  capScope: "system",
@@ -80648,13 +80466,6 @@ Object.freeze({
80648
80466
  access: "view",
80649
80467
  role: "admin"
80650
80468
  },
80651
- "notificationOutput.getTarget": {
80652
- capName: "notification-output",
80653
- capScope: "system",
80654
- addonId: null,
80655
- access: "view",
80656
- role: "admin"
80657
- },
80658
80469
  "notificationOutput.listTargetKinds": {
80659
80470
  capName: "notification-output",
80660
80471
  capScope: "system",
@@ -80662,13 +80473,6 @@ Object.freeze({
80662
80473
  access: "view",
80663
80474
  role: "admin"
80664
80475
  },
80665
- "notificationOutput.listTargets": {
80666
- capName: "notification-output",
80667
- capScope: "system",
80668
- addonId: null,
80669
- access: "view",
80670
- role: "admin"
80671
- },
80672
80476
  "notificationOutput.probeTargetConfig": {
80673
80477
  capName: "notification-output",
80674
80478
  capScope: "system",
@@ -80683,13 +80487,6 @@ Object.freeze({
80683
80487
  access: "create",
80684
80488
  role: "admin"
80685
80489
  },
80686
- "notificationOutput.setTargetEnabled": {
80687
- capName: "notification-output",
80688
- capScope: "system",
80689
- addonId: null,
80690
- access: "create",
80691
- role: "admin"
80692
- },
80693
80490
  "notificationOutput.testTarget": {
80694
80491
  capName: "notification-output",
80695
80492
  capScope: "system",
@@ -80697,13 +80494,6 @@ Object.freeze({
80697
80494
  access: "create",
80698
80495
  role: "admin"
80699
80496
  },
80700
- "notificationOutput.upsertTarget": {
80701
- capName: "notification-output",
80702
- capScope: "system",
80703
- addonId: null,
80704
- access: "create",
80705
- role: "admin"
80706
- },
80707
80497
  "notificationRules.activateAlarmProfile": {
80708
80498
  capName: "notification-rules",
80709
80499
  capScope: "system",
@@ -80963,41 +80753,6 @@ Object.freeze({
80963
80753
  access: "view",
80964
80754
  role: "admin"
80965
80755
  },
80966
- "oidcConnections.connectionFormSchema": {
80967
- capName: "oidc-connections",
80968
- capScope: "system",
80969
- addonId: null,
80970
- access: "view",
80971
- role: "admin"
80972
- },
80973
- "oidcConnections.createConnection": {
80974
- capName: "oidc-connections",
80975
- capScope: "system",
80976
- addonId: null,
80977
- access: "create",
80978
- role: "admin"
80979
- },
80980
- "oidcConnections.deleteConnection": {
80981
- capName: "oidc-connections",
80982
- capScope: "system",
80983
- addonId: null,
80984
- access: "delete",
80985
- role: "admin"
80986
- },
80987
- "oidcConnections.listConnections": {
80988
- capName: "oidc-connections",
80989
- capScope: "system",
80990
- addonId: null,
80991
- access: "view",
80992
- role: "admin"
80993
- },
80994
- "oidcConnections.updateConnection": {
80995
- capName: "oidc-connections",
80996
- capScope: "system",
80997
- addonId: null,
80998
- access: "create",
80999
- role: "admin"
81000
- },
81001
80756
  "osd.getStatus": {
81002
80757
  capName: "osd",
81003
80758
  capScope: "device",
@@ -84029,13 +83784,6 @@ Object.freeze({
84029
83784
  access: "delete",
84030
83785
  role: "admin"
84031
83786
  },
84032
- "storage.deleteLocation": {
84033
- capName: "storage",
84034
- capScope: "system",
84035
- addonId: null,
84036
- access: "delete",
84037
- role: "admin"
84038
- },
84039
83787
  "storage.endDownload": {
84040
83788
  capName: "storage",
84041
83789
  capScope: "system",
@@ -84092,13 +83840,6 @@ Object.freeze({
84092
83840
  access: "view",
84093
83841
  role: "admin"
84094
83842
  },
84095
- "storage.listProviders": {
84096
- capName: "storage",
84097
- capScope: "system",
84098
- addonId: null,
84099
- access: "view",
84100
- role: "admin"
84101
- },
84102
83843
  "storage.read": {
84103
83844
  capName: "storage",
84104
83845
  capScope: "system",
@@ -84120,27 +83861,6 @@ Object.freeze({
84120
83861
  access: "view",
84121
83862
  role: "admin"
84122
83863
  },
84123
- "storage.testConfig": {
84124
- capName: "storage",
84125
- capScope: "system",
84126
- addonId: null,
84127
- access: "view",
84128
- role: "admin"
84129
- },
84130
- "storage.testLocation": {
84131
- capName: "storage",
84132
- capScope: "system",
84133
- addonId: null,
84134
- access: "view",
84135
- role: "admin"
84136
- },
84137
- "storage.upsertLocation": {
84138
- capName: "storage",
84139
- capScope: "system",
84140
- addonId: null,
84141
- access: "create",
84142
- role: "admin"
84143
- },
84144
83864
  "storage.write": {
84145
83865
  capName: "storage",
84146
83866
  capScope: "system",
@@ -90312,7 +90032,7 @@ var AgentUIAddon = class extends BaseAddon {
90312
90032
  capability: adminUiCapability,
90313
90033
  provider: {
90314
90034
  getStaticDir: async () => ({ staticDir: path.resolve(__dirname) }),
90315
- getVersion: async () => ({ version: "1.2.335" })
90035
+ getVersion: async () => ({ version: "1.2.337" })
90316
90036
  }
90317
90037
  }];
90318
90038
  }