@camstack/types 1.2.442 → 1.2.444
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 +25 -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 +8 -3
- package/dist/capabilities/metrics-provider.cap.d.ts +16 -16
- package/dist/capabilities/node-removal-hook.cap.d.ts +67 -0
- 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 +3 -4
- package/dist/capabilities/pipeline-runner.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-step-input.d.ts +33 -0
- package/dist/client.js +817 -798
- package/dist/client.mjs +817 -798
- 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 +149 -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 +10 -4
- 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 +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1616 -607
- package/dist/index.mjs +1581 -596
- 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-DJws6ho7.mjs → sleep-6eG9C8Xl.mjs} +224 -72
- package/dist/{sleep-BpwNJ1Su.js → sleep-UXDHn-oJ.js} +247 -71
- package/dist/types/agent-pipeline-settings.d.ts +2 -2
- package/dist/utils/oauth-landing.d.ts +1 -1
- package/dist/vendor-login-proxy/flow-trace.d.ts +29 -0
- 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() });
|
|
@@ -6755,6 +6844,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
6755
6844
|
"network-link",
|
|
6756
6845
|
"network-quality",
|
|
6757
6846
|
"node-certificates",
|
|
6847
|
+
"node-removal-hook",
|
|
6758
6848
|
"nodes",
|
|
6759
6849
|
"notification-output",
|
|
6760
6850
|
"notification-rules",
|
|
@@ -6765,6 +6855,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
6765
6855
|
"osd",
|
|
6766
6856
|
"osd-manager",
|
|
6767
6857
|
"pet-feeder",
|
|
6858
|
+
"pet-fountain",
|
|
6768
6859
|
"pipeline-analytics",
|
|
6769
6860
|
"pipeline-executor",
|
|
6770
6861
|
"pipeline-orchestrator",
|
|
@@ -8045,6 +8136,56 @@ var CAP_STATE_LEAVES = Object.freeze({
|
|
|
8045
8136
|
"valueType": "number"
|
|
8046
8137
|
}
|
|
8047
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
|
+
],
|
|
8048
8189
|
"power-meter": [
|
|
8049
8190
|
{
|
|
8050
8191
|
"path": "power",
|
|
@@ -9270,6 +9411,14 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9270
9411
|
setVolume: (input) => dispatch("pet-feeder", "petFeeder", "setVolume", "mutation", input),
|
|
9271
9412
|
getStatus: (input) => dispatch("pet-feeder", "petFeeder", "getStatus", "query", input)
|
|
9272
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
|
+
};
|
|
9273
9422
|
const pipelineAnalyticsInterface = {
|
|
9274
9423
|
getActiveTracks: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getActiveTracks", "query", input),
|
|
9275
9424
|
getTrack: (input) => dispatch("pipeline-analytics", "pipelineAnalytics", "getTrack", "query", input),
|
|
@@ -9738,6 +9887,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9738
9887
|
notifier: createSliceHandle(stateSource, binding.deviceId, "notifier"),
|
|
9739
9888
|
numericSensor: createSliceHandle(stateSource, binding.deviceId, "numeric-sensor"),
|
|
9740
9889
|
petFeeder: createSliceHandle(stateSource, binding.deviceId, "pet-feeder"),
|
|
9890
|
+
petFountain: createSliceHandle(stateSource, binding.deviceId, "pet-fountain"),
|
|
9741
9891
|
powerMeter: createSliceHandle(stateSource, binding.deviceId, "power-meter"),
|
|
9742
9892
|
presence: createSliceHandle(stateSource, binding.deviceId, "presence"),
|
|
9743
9893
|
pressureSensor: createSliceHandle(stateSource, binding.deviceId, "pressure-sensor"),
|
|
@@ -9828,6 +9978,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9828
9978
|
...bound("numeric-sensor") ? { numericSensor: numericSensorInterface } : {},
|
|
9829
9979
|
...bound("osd") ? { osd: osdInterface } : {},
|
|
9830
9980
|
...bound("pet-feeder") ? { petFeeder: petFeederInterface } : {},
|
|
9981
|
+
...bound("pet-fountain") ? { petFountain: petFountainInterface } : {},
|
|
9831
9982
|
...bound("pipeline-analytics") ? { pipelineAnalytics: pipelineAnalyticsInterface } : {},
|
|
9832
9983
|
...bound("power-meter") ? { powerMeter: powerMeterInterface } : {},
|
|
9833
9984
|
...bound("presence") ? { presence: presenceInterface } : {},
|
|
@@ -9891,7 +10042,7 @@ function createDeviceProxy(api, binding, opts) {
|
|
|
9891
10042
|
* can answer "may a rule actuate this?" without importing the schema barrel
|
|
9892
10043
|
* (~144MB RSS per runner, D28).
|
|
9893
10044
|
*
|
|
9894
|
-
* Coverage:
|
|
10045
|
+
* Coverage: 97 device-scoped capabilities.
|
|
9895
10046
|
*/
|
|
9896
10047
|
var DEVICE_SCOPED_CAPS = new Set([
|
|
9897
10048
|
"accessories",
|
|
@@ -9957,6 +10108,7 @@ var DEVICE_SCOPED_CAPS = new Set([
|
|
|
9957
10108
|
"numeric-sensor",
|
|
9958
10109
|
"osd",
|
|
9959
10110
|
"pet-feeder",
|
|
10111
|
+
"pet-fountain",
|
|
9960
10112
|
"pipeline-analytics",
|
|
9961
10113
|
"power-meter",
|
|
9962
10114
|
"presence",
|
|
@@ -10295,6 +10447,12 @@ Object.defineProperty(exports, "AUDIO_CHUNK_FORMATS", {
|
|
|
10295
10447
|
return AUDIO_CHUNK_FORMATS;
|
|
10296
10448
|
}
|
|
10297
10449
|
});
|
|
10450
|
+
Object.defineProperty(exports, "AddonPageDeclarationSchema", {
|
|
10451
|
+
enumerable: true,
|
|
10452
|
+
get: function() {
|
|
10453
|
+
return AddonPageDeclarationSchema;
|
|
10454
|
+
}
|
|
10455
|
+
});
|
|
10298
10456
|
Object.defineProperty(exports, "AudioChunkFormatSchema", {
|
|
10299
10457
|
enumerable: true,
|
|
10300
10458
|
get: function() {
|
|
@@ -10601,6 +10759,18 @@ Object.defineProperty(exports, "PeerBytesTicketSchema", {
|
|
|
10601
10759
|
return PeerBytesTicketSchema;
|
|
10602
10760
|
}
|
|
10603
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
|
+
});
|
|
10604
10774
|
Object.defineProperty(exports, "PlaintextSecretError", {
|
|
10605
10775
|
enumerable: true,
|
|
10606
10776
|
get: function() {
|
|
@@ -10919,6 +11089,12 @@ Object.defineProperty(exports, "WELL_KNOWN_TAB_MAP", {
|
|
|
10919
11089
|
return WELL_KNOWN_TAB_MAP;
|
|
10920
11090
|
}
|
|
10921
11091
|
});
|
|
11092
|
+
Object.defineProperty(exports, "addonPagesSourceCapability", {
|
|
11093
|
+
enumerable: true,
|
|
11094
|
+
get: function() {
|
|
11095
|
+
return addonPagesSourceCapability;
|
|
11096
|
+
}
|
|
11097
|
+
});
|
|
10922
11098
|
Object.defineProperty(exports, "addonSliceHandleApi", {
|
|
10923
11099
|
enumerable: true,
|
|
10924
11100
|
get: function() {
|
|
@@ -66,8 +66,8 @@ export interface AgentPipelineSettings {
|
|
|
66
66
|
* Placement capabilities (placement-model-design §6) — the per-node record
|
|
67
67
|
* that replaced the four flat orchestrator lists (`enabledNodes`,
|
|
68
68
|
* `enabledDecoderNodes`, `enabledAudioNodes`, `remoteSourcingNodes`). Each
|
|
69
|
-
* flag is optional; an absent flag
|
|
70
|
-
*
|
|
69
|
+
* flag is optional; an absent flag is ON for every node (only an
|
|
70
|
+
* explicit `false` turns a role off). The orchestrator derives its
|
|
71
71
|
* enabled-node sets from these flags across the cluster.
|
|
72
72
|
*/
|
|
73
73
|
readonly detect?: boolean;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
/** The admin-ui route the hub's OAuth completions land on (relative to its mount). */
|
|
14
14
|
export declare const OAUTH_LANDING_PATH = "/sso-complete";
|
|
15
|
-
export declare const OAUTH_LANDING_REASONS: readonly ['access_denied', 'invalid_state', 'invalid_request', 'unknown_broker', 'not_configured', 'exchange_failed', 'no_refresh_token', 'unavailable', 'unknown'];
|
|
15
|
+
export declare const OAUTH_LANDING_REASONS: readonly ['access_denied', 'invalid_state', 'invalid_request', 'unknown_broker', 'not_configured', 'exchange_failed', 'no_authorization_code', 'no_refresh_token', 'unavailable', 'unknown'];
|
|
16
16
|
export type OauthLandingReason = (typeof OAUTH_LANDING_REASONS)[number];
|
|
17
17
|
export declare function isOauthLandingReason(value: unknown): value is OauthLandingReason;
|
|
18
18
|
export interface OauthLandingOutcome {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Names-only trace of one proxied login request (D955). A sign-in that loses a parameter on
|
|
3
|
+
* the way (an OAuth extension, a hidden field) is invisible in the page flow; this says WHICH
|
|
4
|
+
* request still carried it. Everything here is a NAME, a count, a status or a boolean: no
|
|
5
|
+
* query value, form value, cookie value or attempt id ever leaves this module.
|
|
6
|
+
*/
|
|
7
|
+
/** The most trace lines one login attempt writes; an attempt lives minutes, this is a backstop. */
|
|
8
|
+
export declare const FLOW_TRACE_MAX_LINES = 200;
|
|
9
|
+
export interface FlowTraceInput {
|
|
10
|
+
readonly attemptId: string;
|
|
11
|
+
readonly method: string;
|
|
12
|
+
readonly upstreamHost: string;
|
|
13
|
+
readonly upstreamPath: string;
|
|
14
|
+
readonly requestSearch: string;
|
|
15
|
+
/** The raw urlencoded request body of a form POST, or null. */
|
|
16
|
+
readonly formBody: string | null;
|
|
17
|
+
readonly contentType: string | undefined;
|
|
18
|
+
readonly status: number;
|
|
19
|
+
readonly location: string | null;
|
|
20
|
+
readonly setCookies: readonly string[];
|
|
21
|
+
readonly cookieHeader: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
/** A short stable label for the attempt: enough to group lines, useless as a capability. */
|
|
24
|
+
export declare function attemptLabel(attemptId: string): string;
|
|
25
|
+
/** Distinct parameter names of a `?a=1&b=2` string (or of a urlencoded body), in order. */
|
|
26
|
+
export declare function paramNames(query: string): string[];
|
|
27
|
+
export declare function hasOa2(names: readonly string[]): boolean;
|
|
28
|
+
/** The `meta` of one trace line. Values: never. */
|
|
29
|
+
export declare function flowTraceMeta(input: FlowTraceInput): Record<string, string | number | boolean>;
|