@camstack/types 1.2.443 → 1.2.445
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/CHANGELOG.md +20 -0
- package/dist/addon.d.ts +5 -1
- package/dist/addon.js +21 -5
- package/dist/addon.mjs +17 -6
- package/dist/automation/export-entities.d.ts +98 -0
- package/dist/capabilities/capability-definition.d.ts +1 -1
- package/dist/capabilities/composer.cap.d.ts +34 -0
- package/dist/capabilities/consumables.cap.d.ts +4 -5
- package/dist/capabilities/core-blocks.cap.d.ts +244 -0
- package/dist/capabilities/device-export.cap.d.ts +111 -1
- package/dist/capabilities/index.d.ts +6 -4
- package/dist/capabilities/metrics-provider.cap.d.ts +16 -16
- package/dist/capabilities/nodes.cap.d.ts +2 -2
- package/dist/capabilities/pet-fountain.cap.d.ts +138 -0
- package/dist/capabilities/pipeline-executor.cap.d.ts +6 -22
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-step-input.d.ts +33 -0
- package/dist/capabilities/server-management.cap.d.ts +28 -0
- package/dist/client.js +820 -799
- package/dist/client.mjs +820 -799
- package/dist/composition/composition-items.d.ts +3 -3
- package/dist/composition/composition-report.d.ts +17 -0
- package/dist/composition/composition.d.ts +68 -1
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/presets/pet-fountain.d.ts +36 -0
- package/dist/composition/validate-forward.d.ts +31 -0
- package/dist/{composition-C0dlyG9U.js → composition-CO6Sak-s.js} +49 -5
- package/dist/{composition-bIBW5_13.mjs → composition-kSuOifuG.mjs} +32 -6
- package/dist/device/cap-vocabulary/entries/appliances.d.ts +1 -1
- package/dist/device/device-control-resolution.d.ts +1 -1
- package/dist/device/device-type.d.ts +4 -0
- package/dist/{err-msg-BCdlR2Li.mjs → err-msg-DWXWc0Di.mjs} +4 -0
- package/dist/{err-msg-COHgq7Mb.js → err-msg-EJhsFHqa.js} +4 -0
- package/dist/generated/addon-api.d.ts +148 -32
- package/dist/generated/addon-cap-facts.d.ts +1 -1
- package/dist/generated/cap-status-types.d.ts +3 -1
- package/dist/generated/capability-router-map.d.ts +5 -2
- package/dist/generated/collection-array-methods.d.ts +2 -2
- package/dist/generated/customize-catalog.d.ts +1 -1
- package/dist/generated/device-local-state.d.ts +3 -0
- package/dist/generated/device-proxy.d.ts +3 -0
- package/dist/generated/device-scoped-caps.d.ts +1 -1
- package/dist/generated/history-catalog.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-device-selectors.d.ts +1 -1
- package/dist/generated/runtime-state-durability.d.ts +1 -1
- package/dist/generated/system-proxy.d.ts +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1465 -603
- package/dist/index.mjs +1433 -592
- package/dist/interfaces/agent.d.ts +6 -2
- package/dist/interfaces/event-bus.d.ts +1 -1
- package/dist/node.js +2 -2
- package/dist/node.mjs +2 -2
- package/dist/{sleep-C_u6cEAJ.mjs → sleep-6eG9C8Xl.mjs} +223 -72
- package/dist/{sleep-E7qAQwTE.js → sleep-UXDHn-oJ.js} +246 -71
- package/package.json +1 -1
|
@@ -6055,76 +6055,6 @@ var MODEL_FORMATS = [
|
|
|
6055
6055
|
"pt",
|
|
6056
6056
|
"gguf"
|
|
6057
6057
|
];
|
|
6058
|
-
//#endregion
|
|
6059
|
-
//#region src/cap-call-context.ts
|
|
6060
|
-
/**
|
|
6061
|
-
* Per-call node pinning for `ctx.api` capability calls.
|
|
6062
|
-
*
|
|
6063
|
-
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
6064
|
-
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
6065
|
-
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
6066
|
-
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
6067
|
-
* call to that node.
|
|
6068
|
-
*
|
|
6069
|
-
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
6070
|
-
* method args), so capability method signatures stay `nodeId`-free — node
|
|
6071
|
-
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
6072
|
-
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
6073
|
-
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
6074
|
-
* which classifies a pinned agent node as `agent-child-forward`
|
|
6075
|
-
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
6076
|
-
*
|
|
6077
|
-
* Usage at a call site:
|
|
6078
|
-
*
|
|
6079
|
-
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
6080
|
-
*/
|
|
6081
|
-
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
6082
|
-
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
6083
|
-
/**
|
|
6084
|
-
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
6085
|
-
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
6086
|
-
*
|
|
6087
|
-
* ## The id is normalised here, and it has to be
|
|
6088
|
-
*
|
|
6089
|
-
* A forked addon reads its own node from `ctx.kernel.localNodeId`, and inside a
|
|
6090
|
-
* worker that value is a RUNNER id — `hub/export-hap`, not `hub`. Routing
|
|
6091
|
-
* compares a pin against real node ids, so such a pin matches nothing and the
|
|
6092
|
-
* call fails with `no provider registered for cap "…"`. The local-first
|
|
6093
|
-
* resolver already guarded against this (`localNodeId.split('/')[0]`), which
|
|
6094
|
-
* made the hazard invisible: unpinned calls worked, and only an explicit pin —
|
|
6095
|
-
* the thing you reach for when you specifically need THIS node — silently
|
|
6096
|
-
* addressed a node that does not exist.
|
|
6097
|
-
*
|
|
6098
|
-
* Cost of it being missing: `addon-export-hap` pinned `decoder.getInfo` to its
|
|
6099
|
-
* own node to read the host's hardware-decode backend. It never once answered,
|
|
6100
|
-
* so every HomeKit egress transcode decoded in SOFTWARE — including 4K H.265 —
|
|
6101
|
-
* while D67's whole premise was that the decoder addon is the authority on
|
|
6102
|
-
* hardware. The warn said `decoding in SOFTWARE` and read as "this node has no
|
|
6103
|
-
* hardware", which was false.
|
|
6104
|
-
*
|
|
6105
|
-
* Normalising in the ONE constructor fixes every caller at once, which is why
|
|
6106
|
-
* it is here and not at the call sites.
|
|
6107
|
-
*/
|
|
6108
|
-
function nodePin(nodeId) {
|
|
6109
|
-
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: toNodeId(nodeId) } };
|
|
6110
|
-
}
|
|
6111
|
-
/**
|
|
6112
|
-
* A runner id is `<nodeId>/<addonId>`; a node id has no slash. Taking the head
|
|
6113
|
-
* is idempotent, so passing an already-clean id costs nothing.
|
|
6114
|
-
*/
|
|
6115
|
-
function toNodeId(idOrRunnerId) {
|
|
6116
|
-
const head = idOrRunnerId.split("/")[0];
|
|
6117
|
-
return head === void 0 || head.length === 0 ? idOrRunnerId : head;
|
|
6118
|
-
}
|
|
6119
|
-
/**
|
|
6120
|
-
* Read a per-call node pin out of a tRPC `op.context` (transport side).
|
|
6121
|
-
* Returns the pinned nodeId, or `undefined` when no pin is present.
|
|
6122
|
-
*/
|
|
6123
|
-
function readNodePin(context) {
|
|
6124
|
-
if (context === null || typeof context !== "object") return void 0;
|
|
6125
|
-
const value = Reflect.get(context, CAP_NODE_PIN_CONTEXT_KEY);
|
|
6126
|
-
return typeof value === "string" ? value : void 0;
|
|
6127
|
-
}
|
|
6128
6058
|
zod.z.object({
|
|
6129
6059
|
field: zod.z.string().min(1),
|
|
6130
6060
|
on: zod.z.literal("advance")
|
|
@@ -6146,6 +6076,7 @@ var HISTORY_UNIT_LABELS = {
|
|
|
6146
6076
|
ppm: "ppm",
|
|
6147
6077
|
ppb: "ppb",
|
|
6148
6078
|
"µg/m³": "µg/m³",
|
|
6079
|
+
L: "L",
|
|
6149
6080
|
hPa: "hPa",
|
|
6150
6081
|
count: "count",
|
|
6151
6082
|
ratio: "ratio",
|
|
@@ -6342,6 +6273,141 @@ function isDeviceConfigCap(def) {
|
|
|
6342
6273
|
return def?.deviceConfig !== void 0;
|
|
6343
6274
|
}
|
|
6344
6275
|
//#endregion
|
|
6276
|
+
//#region src/cap-call-context.ts
|
|
6277
|
+
/**
|
|
6278
|
+
* Per-call node pinning for `ctx.api` capability calls.
|
|
6279
|
+
*
|
|
6280
|
+
* A capability call normally resolves to its DEFAULT provider — a `singleton`
|
|
6281
|
+
* cap resolves to the hub, a device-scoped cap to the device's owning node. To
|
|
6282
|
+
* query a SPECIFIC node's provider instead (e.g. a remote agent's own
|
|
6283
|
+
* in-process `platform-probe` hardware, which the hub cannot probe), pin the
|
|
6284
|
+
* call to that node.
|
|
6285
|
+
*
|
|
6286
|
+
* The nodeId rides OUT-OF-BAND in the tRPC call context (NOT in the validated
|
|
6287
|
+
* method args), so capability method signatures stay `nodeId`-free — node
|
|
6288
|
+
* targeting is a property of the CALL, not of the method. The transport lifts
|
|
6289
|
+
* it from `op.context` onto the `CapCallInput.nodeId` field (`ipcParentLink`),
|
|
6290
|
+
* and the hub parent's `onUnownedCall` passes it to the `CapRouteResolver`,
|
|
6291
|
+
* which classifies a pinned agent node as `agent-child-forward`
|
|
6292
|
+
* (`$agent-cap-fwd.forward` → the agent's in-process provider).
|
|
6293
|
+
*
|
|
6294
|
+
* Usage at a call site:
|
|
6295
|
+
*
|
|
6296
|
+
* await api.platformProbe.getCapabilities.query(undefined, nodePin(nodeId))
|
|
6297
|
+
*/
|
|
6298
|
+
/** tRPC `op.context` key carrying a per-call node pin. */
|
|
6299
|
+
var CAP_NODE_PIN_CONTEXT_KEY = "__camstackNodePin";
|
|
6300
|
+
/**
|
|
6301
|
+
* Build the tRPC request options that pin a single capability call to `nodeId`.
|
|
6302
|
+
* Pass as the second argument to `.query(input, …)` / `.mutate(input, …)`.
|
|
6303
|
+
*
|
|
6304
|
+
* ## The id is normalised here, and it has to be
|
|
6305
|
+
*
|
|
6306
|
+
* A forked addon reads its own node from `ctx.kernel.localNodeId`, and inside a
|
|
6307
|
+
* worker that value is a RUNNER id — `hub/export-hap`, not `hub`. Routing
|
|
6308
|
+
* compares a pin against real node ids, so such a pin matches nothing and the
|
|
6309
|
+
* call fails with `no provider registered for cap "…"`. The local-first
|
|
6310
|
+
* resolver already guarded against this (`localNodeId.split('/')[0]`), which
|
|
6311
|
+
* made the hazard invisible: unpinned calls worked, and only an explicit pin —
|
|
6312
|
+
* the thing you reach for when you specifically need THIS node — silently
|
|
6313
|
+
* addressed a node that does not exist.
|
|
6314
|
+
*
|
|
6315
|
+
* Cost of it being missing: `addon-export-hap` pinned `decoder.getInfo` to its
|
|
6316
|
+
* own node to read the host's hardware-decode backend. It never once answered,
|
|
6317
|
+
* so every HomeKit egress transcode decoded in SOFTWARE — including 4K H.265 —
|
|
6318
|
+
* while D67's whole premise was that the decoder addon is the authority on
|
|
6319
|
+
* hardware. The warn said `decoding in SOFTWARE` and read as "this node has no
|
|
6320
|
+
* hardware", which was false.
|
|
6321
|
+
*
|
|
6322
|
+
* Normalising in the ONE constructor fixes every caller at once, which is why
|
|
6323
|
+
* it is here and not at the call sites.
|
|
6324
|
+
*/
|
|
6325
|
+
function nodePin(nodeId) {
|
|
6326
|
+
return { context: { [CAP_NODE_PIN_CONTEXT_KEY]: toNodeId(nodeId) } };
|
|
6327
|
+
}
|
|
6328
|
+
/**
|
|
6329
|
+
* A runner id is `<nodeId>/<addonId>`; a node id has no slash. Taking the head
|
|
6330
|
+
* is idempotent, so passing an already-clean id costs nothing.
|
|
6331
|
+
*/
|
|
6332
|
+
function toNodeId(idOrRunnerId) {
|
|
6333
|
+
const head = idOrRunnerId.split("/")[0];
|
|
6334
|
+
return head === void 0 || head.length === 0 ? idOrRunnerId : head;
|
|
6335
|
+
}
|
|
6336
|
+
/**
|
|
6337
|
+
* Read a per-call node pin out of a tRPC `op.context` (transport side).
|
|
6338
|
+
* Returns the pinned nodeId, or `undefined` when no pin is present.
|
|
6339
|
+
*/
|
|
6340
|
+
function readNodePin(context) {
|
|
6341
|
+
if (context === null || typeof context !== "object") return void 0;
|
|
6342
|
+
const value = Reflect.get(context, CAP_NODE_PIN_CONTEXT_KEY);
|
|
6343
|
+
return typeof value === "string" ? value : void 0;
|
|
6344
|
+
}
|
|
6345
|
+
//#endregion
|
|
6346
|
+
//#region src/capabilities/addon-pages-source.cap.ts
|
|
6347
|
+
/**
|
|
6348
|
+
* `addon-pages-source` — collection cap exposing per-provider raw page
|
|
6349
|
+
* declarations. Every addon that contributes a UI page registers a
|
|
6350
|
+
* provider here. The hub-side singleton aggregator (`addon-pages` cap,
|
|
6351
|
+
* see `addon-pages.cap.ts`) walks this collection, stamps versioned
|
|
6352
|
+
* `bundleUrl` values, and returns the enriched `AddonPageInfo[]` list
|
|
6353
|
+
* that admin-ui consumes.
|
|
6354
|
+
*
|
|
6355
|
+
* The split exists because the public listing has a different output
|
|
6356
|
+
* shape than the per-provider raw declarations, and we want both ends
|
|
6357
|
+
* to flow through codegen instead of relying on a hand-written wrapper.
|
|
6358
|
+
*/
|
|
6359
|
+
var AddonPageDeclarationSchema = zod.z.object({
|
|
6360
|
+
id: zod.z.string(),
|
|
6361
|
+
label: zod.z.string(),
|
|
6362
|
+
icon: zod.z.string(),
|
|
6363
|
+
path: zod.z.string(),
|
|
6364
|
+
/**
|
|
6365
|
+
* Module Federation remote name — must match the `name` field on the
|
|
6366
|
+
* page addon's `federation()` plugin config. Used by admin-ui's
|
|
6367
|
+
* `<AddonPageLoader>` to call `loadRemote('<remoteName>/page')`.
|
|
6368
|
+
* Conventionally `addon_<id>_page` (snake_case; MF names cannot
|
|
6369
|
+
* contain hyphens).
|
|
6370
|
+
*/
|
|
6371
|
+
remoteName: zod.z.string(),
|
|
6372
|
+
/**
|
|
6373
|
+
* Bundle filename inside the addon's `dist/` dir served at
|
|
6374
|
+
* `/api/addon-pages/<addonId>/<bundle>`. With Module Federation this
|
|
6375
|
+
* is always `'remoteEntry.js'`; the value is kept on the metadata so
|
|
6376
|
+
* the static-file route can compute an mtime-based cache-buster URL
|
|
6377
|
+
* without a separate filesystem stat.
|
|
6378
|
+
*/
|
|
6379
|
+
bundle: zod.z.string(),
|
|
6380
|
+
/**
|
|
6381
|
+
* Sidebar section this page docks into. Well-known ids: `'detection'`,
|
|
6382
|
+
* `'cluster'`, `'administration'` — the page renders inside that group.
|
|
6383
|
+
* Any OTHER string creates (or joins) a custom section rendered after
|
|
6384
|
+
* the built-in groups; its label comes from `sectionLabel` (first
|
|
6385
|
+
* declaration wins), falling back to the id. Absent → the legacy
|
|
6386
|
+
* "Addon Pages" group.
|
|
6387
|
+
*/
|
|
6388
|
+
section: zod.z.string().optional(),
|
|
6389
|
+
/** Display label for a CUSTOM `section` id (ignored for well-known ids). */
|
|
6390
|
+
sectionLabel: zod.z.string().optional()
|
|
6391
|
+
});
|
|
6392
|
+
var addonPagesSourceCapability = {
|
|
6393
|
+
name: "addon-pages-source",
|
|
6394
|
+
scope: "system",
|
|
6395
|
+
mode: "collection",
|
|
6396
|
+
internal: true,
|
|
6397
|
+
methods: {
|
|
6398
|
+
/**
|
|
6399
|
+
* `internal: true` did not gate the mount (see the 2026-08-26 note on
|
|
6400
|
+
* `data-store-provider`) — this was reachable on the AppRouter by ANY
|
|
6401
|
+
* authenticated session at the default `auth: 'protected'`. The only
|
|
6402
|
+
* consumer, the `addon-pages-aggregator` builtin, reads it via
|
|
6403
|
+
* `ctx.capabilities.getCollection('addon-pages-source')` — LOCAL-PROCESS
|
|
6404
|
+
* only, never tRPC (per `ctx.capabilities` seeing only the local
|
|
6405
|
+
* process). The public, enriched listing admin-ui actually consumes is
|
|
6406
|
+
* the separate `addon-pages` cap, unaffected by this change.
|
|
6407
|
+
*/
|
|
6408
|
+
listPages: method(zod.z.void(), zod.z.array(AddonPageDeclarationSchema).readonly(), { auth: "admin" }) }
|
|
6409
|
+
};
|
|
6410
|
+
//#endregion
|
|
6345
6411
|
//#region src/capabilities/admin-ui.cap.ts
|
|
6346
6412
|
var StaticDirOutputSchema$1 = zod.z.object({ staticDir: zod.z.string() });
|
|
6347
6413
|
var VersionOutputSchema$1 = zod.z.object({ version: zod.z.string() });
|
|
@@ -6475,6 +6541,29 @@ function withoutCallerStamp(input) {
|
|
|
6475
6541
|
*/
|
|
6476
6542
|
var DEVICE_CHILDREN_BATCH_MAX = 256;
|
|
6477
6543
|
//#endregion
|
|
6544
|
+
//#region src/capabilities/pipeline-step-input.ts
|
|
6545
|
+
/**
|
|
6546
|
+
* The pipeline step-input shape and the run-result bridge, in a module that
|
|
6547
|
+
* imports nothing but zod and types.
|
|
6548
|
+
*
|
|
6549
|
+
* WHY A SEPARATE FILE (addon footprint, D28): both were declared in
|
|
6550
|
+
* `pipeline-executor.cap.ts`, whose import evaluates the whole executor schema
|
|
6551
|
+
* graph. An addon that only needs these two (the benchmark's `runPipelineTest`
|
|
6552
|
+
* action) paid ~130 MB of heap at load. `pipeline-executor.cap.ts` re-exports
|
|
6553
|
+
* them, so every existing import keeps working; addon server code takes them
|
|
6554
|
+
* from `@camstack/types/addon`.
|
|
6555
|
+
*/
|
|
6556
|
+
var PipelineStepInputSchema = zod.z.lazy(() => zod.z.object({
|
|
6557
|
+
addonId: zod.z.string(),
|
|
6558
|
+
modelId: zod.z.string().optional(),
|
|
6559
|
+
enabled: zod.z.boolean().default(true),
|
|
6560
|
+
children: zod.z.array(PipelineStepInputSchema).optional(),
|
|
6561
|
+
settings: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
|
|
6562
|
+
jumpDeviceKey: zod.z.string().optional()
|
|
6563
|
+
}));
|
|
6564
|
+
/** Typed bridge to the recursive `FrameResult` graph; validation is structural. */
|
|
6565
|
+
var PipelineRunResultBridge = zod.z.custom();
|
|
6566
|
+
//#endregion
|
|
6478
6567
|
//#region src/capabilities/viewer-ui.cap.ts
|
|
6479
6568
|
var StaticDirOutputSchema = zod.z.object({ staticDir: zod.z.string() });
|
|
6480
6569
|
var VersionOutputSchema = zod.z.object({ version: zod.z.string() });
|
|
@@ -6766,6 +6855,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
6766
6855
|
"osd",
|
|
6767
6856
|
"osd-manager",
|
|
6768
6857
|
"pet-feeder",
|
|
6858
|
+
"pet-fountain",
|
|
6769
6859
|
"pipeline-analytics",
|
|
6770
6860
|
"pipeline-executor",
|
|
6771
6861
|
"pipeline-orchestrator",
|
|
@@ -8046,6 +8136,56 @@ var CAP_STATE_LEAVES = Object.freeze({
|
|
|
8046
8136
|
"valueType": "number"
|
|
8047
8137
|
}
|
|
8048
8138
|
],
|
|
8139
|
+
"pet-fountain": [
|
|
8140
|
+
{
|
|
8141
|
+
"path": "waterLevel",
|
|
8142
|
+
"valueType": "number"
|
|
8143
|
+
},
|
|
8144
|
+
{
|
|
8145
|
+
"path": "waterVolume",
|
|
8146
|
+
"valueType": "number"
|
|
8147
|
+
},
|
|
8148
|
+
{
|
|
8149
|
+
"path": "empty",
|
|
8150
|
+
"valueType": "boolean"
|
|
8151
|
+
},
|
|
8152
|
+
{
|
|
8153
|
+
"path": "pumpRunning",
|
|
8154
|
+
"valueType": "boolean"
|
|
8155
|
+
},
|
|
8156
|
+
{
|
|
8157
|
+
"path": "pumpIntervalEnabled",
|
|
8158
|
+
"valueType": "boolean"
|
|
8159
|
+
},
|
|
8160
|
+
{
|
|
8161
|
+
"path": "pumpOnTime",
|
|
8162
|
+
"valueType": "number"
|
|
8163
|
+
},
|
|
8164
|
+
{
|
|
8165
|
+
"path": "pumpOffTime",
|
|
8166
|
+
"valueType": "number"
|
|
8167
|
+
},
|
|
8168
|
+
{
|
|
8169
|
+
"path": "lastDrink",
|
|
8170
|
+
"valueType": "number"
|
|
8171
|
+
},
|
|
8172
|
+
{
|
|
8173
|
+
"path": "currentHourDrink",
|
|
8174
|
+
"valueType": "number"
|
|
8175
|
+
},
|
|
8176
|
+
{
|
|
8177
|
+
"path": "last24hDrink",
|
|
8178
|
+
"valueType": "number"
|
|
8179
|
+
},
|
|
8180
|
+
{
|
|
8181
|
+
"path": "todayDrink",
|
|
8182
|
+
"valueType": "number"
|
|
8183
|
+
},
|
|
8184
|
+
{
|
|
8185
|
+
"path": "error",
|
|
8186
|
+
"valueType": "string"
|
|
8187
|
+
}
|
|
8188
|
+
],
|
|
8049
8189
|
"power-meter": [
|
|
8050
8190
|
{
|
|
8051
8191
|
"path": "power",
|
|
@@ -9271,6 +9411,14 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9271
9411
|
setVolume: (input) => dispatch("pet-feeder", "petFeeder", "setVolume", "mutation", input),
|
|
9272
9412
|
getStatus: (input) => dispatch("pet-feeder", "petFeeder", "getStatus", "query", input)
|
|
9273
9413
|
};
|
|
9414
|
+
const petFountainInterface = {
|
|
9415
|
+
setPump: (input) => dispatch("pet-fountain", "petFountain", "setPump", "mutation", input),
|
|
9416
|
+
setPumpInterval: (input) => dispatch("pet-fountain", "petFountain", "setPumpInterval", "mutation", input),
|
|
9417
|
+
setPumpOnMinutes: (input) => dispatch("pet-fountain", "petFountain", "setPumpOnMinutes", "mutation", input),
|
|
9418
|
+
setPumpOffMinutes: (input) => dispatch("pet-fountain", "petFountain", "setPumpOffMinutes", "mutation", input),
|
|
9419
|
+
resetDailyConsumption: (input) => dispatch("pet-fountain", "petFountain", "resetDailyConsumption", "mutation", input),
|
|
9420
|
+
getStatus: (input) => dispatch("pet-fountain", "petFountain", "getStatus", "query", input)
|
|
9421
|
+
};
|
|
9274
9422
|
const pipelineAnalyticsInterface = {
|
|
9275
9423
|
getActiveTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getActiveTracks", "query", input),
|
|
9276
9424
|
getTrack: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrack", "query", input),
|
|
@@ -9739,6 +9887,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9739
9887
|
notifier: createSliceHandle(stateSource, binding.deviceId, "notifier"),
|
|
9740
9888
|
numericSensor: createSliceHandle(stateSource, binding.deviceId, "numeric-sensor"),
|
|
9741
9889
|
petFeeder: createSliceHandle(stateSource, binding.deviceId, "pet-feeder"),
|
|
9890
|
+
petFountain: createSliceHandle(stateSource, binding.deviceId, "pet-fountain"),
|
|
9742
9891
|
powerMeter: createSliceHandle(stateSource, binding.deviceId, "power-meter"),
|
|
9743
9892
|
presence: createSliceHandle(stateSource, binding.deviceId, "presence"),
|
|
9744
9893
|
pressureSensor: createSliceHandle(stateSource, binding.deviceId, "pressure-sensor"),
|
|
@@ -9829,6 +9978,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9829
9978
|
...bound("numeric-sensor") ? { numericSensor: numericSensorInterface } : {},
|
|
9830
9979
|
...bound("osd") ? { osd: osdInterface } : {},
|
|
9831
9980
|
...bound("pet-feeder") ? { petFeeder: petFeederInterface } : {},
|
|
9981
|
+
...bound("pet-fountain") ? { petFountain: petFountainInterface } : {},
|
|
9832
9982
|
...bound("pipeline-analytics") ? { pipelineAnalytics: pipelineAnalyticsInterface } : {},
|
|
9833
9983
|
...bound("power-meter") ? { powerMeter: powerMeterInterface } : {},
|
|
9834
9984
|
...bound("presence") ? { presence: presenceInterface } : {},
|
|
@@ -9892,7 +10042,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9892
10042
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
9893
10043
|
* (~144MB RSS per runner, D28).
|
|
9894
10044
|
*
|
|
9895
|
-
* Coverage:
|
|
10045
|
+
* Coverage: 97 device-scoped capabilities.
|
|
9896
10046
|
*/
|
|
9897
10047
|
var DEVICE_SCOPED_CAPS = new Set([
|
|
9898
10048
|
"accessories",
|
|
@@ -9958,6 +10108,7 @@ var DEVICE_SCOPED_CAPS = new Set([
|
|
|
9958
10108
|
"numeric-sensor",
|
|
9959
10109
|
"osd",
|
|
9960
10110
|
"pet-feeder",
|
|
10111
|
+
"pet-fountain",
|
|
9961
10112
|
"pipeline-analytics",
|
|
9962
10113
|
"power-meter",
|
|
9963
10114
|
"presence",
|
|
@@ -10296,6 +10447,12 @@ Object.defineProperty(exports, "AUDIO_CHUNK_FORMATS", {
|
|
|
10296
10447
|
return AUDIO_CHUNK_FORMATS;
|
|
10297
10448
|
}
|
|
10298
10449
|
});
|
|
10450
|
+
Object.defineProperty(exports, "AddonPageDeclarationSchema", {
|
|
10451
|
+
enumerable: true,
|
|
10452
|
+
get: function() {
|
|
10453
|
+
return AddonPageDeclarationSchema;
|
|
10454
|
+
}
|
|
10455
|
+
});
|
|
10299
10456
|
Object.defineProperty(exports, "AudioChunkFormatSchema", {
|
|
10300
10457
|
enumerable: true,
|
|
10301
10458
|
get: function() {
|
|
@@ -10602,6 +10759,18 @@ Object.defineProperty(exports, "PeerBytesTicketSchema", {
|
|
|
10602
10759
|
return PeerBytesTicketSchema;
|
|
10603
10760
|
}
|
|
10604
10761
|
});
|
|
10762
|
+
Object.defineProperty(exports, "PipelineRunResultBridge", {
|
|
10763
|
+
enumerable: true,
|
|
10764
|
+
get: function() {
|
|
10765
|
+
return PipelineRunResultBridge;
|
|
10766
|
+
}
|
|
10767
|
+
});
|
|
10768
|
+
Object.defineProperty(exports, "PipelineStepInputSchema", {
|
|
10769
|
+
enumerable: true,
|
|
10770
|
+
get: function() {
|
|
10771
|
+
return PipelineStepInputSchema;
|
|
10772
|
+
}
|
|
10773
|
+
});
|
|
10605
10774
|
Object.defineProperty(exports, "PlaintextSecretError", {
|
|
10606
10775
|
enumerable: true,
|
|
10607
10776
|
get: function() {
|
|
@@ -10920,6 +11089,12 @@ Object.defineProperty(exports, "WELL_KNOWN_TAB_MAP", {
|
|
|
10920
11089
|
return WELL_KNOWN_TAB_MAP;
|
|
10921
11090
|
}
|
|
10922
11091
|
});
|
|
11092
|
+
Object.defineProperty(exports, "addonPagesSourceCapability", {
|
|
11093
|
+
enumerable: true,
|
|
11094
|
+
get: function() {
|
|
11095
|
+
return addonPagesSourceCapability;
|
|
11096
|
+
}
|
|
11097
|
+
});
|
|
10923
11098
|
Object.defineProperty(exports, "addonSliceHandleApi", {
|
|
10924
11099
|
enumerable: true,
|
|
10925
11100
|
get: function() {
|