@camstack/addon-post-analysis 1.2.655 → 1.2.656
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 +6 -0
- package/dist/{clip-model-registry-C-en5vSD.js → clip-model-registry-BQ_2RsIp.js} +473 -5
- package/dist/{clip-model-registry-_b3KHYFm.mjs → clip-model-registry-C06M8A8U.mjs} +473 -5
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CF-Mts9j.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-8vah5-KD.mjs} +2 -2
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YXyP9GJm.mjs +26 -0
- package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DXQUFp7P.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-gv38vKug.mjs} +1 -1
- package/dist/pipeline-analytics/{hostInit-BSfz5s98.mjs → hostInit-0O7AUcsV.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +20 -2
- package/dist/pipeline-analytics/index.mjs +20 -2
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C7OJ7wek.mjs +0 -26
|
@@ -5645,7 +5645,7 @@ var ZodIssueCode = {
|
|
|
5645
5645
|
var ZodFirstPartyTypeKind;
|
|
5646
5646
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5647
5647
|
//#endregion
|
|
5648
|
-
//#region ../types/dist/sleep-
|
|
5648
|
+
//#region ../types/dist/sleep-SX9bkW3_.mjs
|
|
5649
5649
|
/**
|
|
5650
5650
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5651
5651
|
* window to float samples (D455).
|
|
@@ -9316,6 +9316,7 @@ var CAP_NAMES = Object.freeze([
|
|
|
9316
9316
|
"remote-layout-components",
|
|
9317
9317
|
"running-state",
|
|
9318
9318
|
"scene-monitor",
|
|
9319
|
+
"schedulers",
|
|
9319
9320
|
"script-runner",
|
|
9320
9321
|
"server-management",
|
|
9321
9322
|
"settings-store",
|
|
@@ -10261,7 +10262,8 @@ Object.freeze({
|
|
|
10261
10262
|
"unlocked",
|
|
10262
10263
|
"locking",
|
|
10263
10264
|
"unlocking",
|
|
10264
|
-
"jammed"
|
|
10265
|
+
"jammed",
|
|
10266
|
+
"door-open"
|
|
10265
10267
|
]
|
|
10266
10268
|
}],
|
|
10267
10269
|
"media-player": [
|
|
@@ -17755,6 +17757,11 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
17755
17757
|
value: "jammed",
|
|
17756
17758
|
label: t("Jammed", "Inceppata"),
|
|
17757
17759
|
phrase: t("When {device} jams", "Quando {device} si inceppa")
|
|
17760
|
+
},
|
|
17761
|
+
{
|
|
17762
|
+
value: "door-open",
|
|
17763
|
+
label: t("Door open", "Porta aperta"),
|
|
17764
|
+
phrase: t("When the door of {device} opens", "Quando la porta di {device} si apre")
|
|
17758
17765
|
}
|
|
17759
17766
|
],
|
|
17760
17767
|
icon: "lock"
|
|
@@ -21245,6 +21252,7 @@ var SYSTEM_CAP_VOCABULARY = {
|
|
|
21245
21252
|
records: system(INTERNAL),
|
|
21246
21253
|
remote: system("the per-device remote setup — authored in the Customize remote editor, sent through the remote UI"),
|
|
21247
21254
|
"remote-layout-components": system("the palette of the remote template editor — read-only data, never actuated"),
|
|
21255
|
+
schedulers: system("time schedulers — authored on their own page, not device actions"),
|
|
21248
21256
|
"server-management": system(CLUSTER),
|
|
21249
21257
|
"settings-store": system(INTERNAL),
|
|
21250
21258
|
"smtp-provider": system(INTERNAL),
|
|
@@ -42368,6 +42376,122 @@ var AutomationWhenSchema = lazy(() => discriminatedUnion("kind", [
|
|
|
42368
42376
|
StationaryPresentLeafSchema,
|
|
42369
42377
|
ExpressionLeafSchema
|
|
42370
42378
|
]));
|
|
42379
|
+
var EVENT_KINDS = new Set([
|
|
42380
|
+
"device-becomes",
|
|
42381
|
+
"device-event",
|
|
42382
|
+
"schedule",
|
|
42383
|
+
"manual",
|
|
42384
|
+
"interval",
|
|
42385
|
+
"detection",
|
|
42386
|
+
"stationary"
|
|
42387
|
+
]);
|
|
42388
|
+
function isEventLeaf(node) {
|
|
42389
|
+
return EVENT_KINDS.has(node.kind);
|
|
42390
|
+
}
|
|
42391
|
+
function isLeaf(node) {
|
|
42392
|
+
return node.kind !== "all" && node.kind !== "any" && node.kind !== "not";
|
|
42393
|
+
}
|
|
42394
|
+
/** Depth of a tree, root container = 1. A bare leaf is depth 1. */
|
|
42395
|
+
function whenDepth(node) {
|
|
42396
|
+
if (isLeaf(node)) return 1;
|
|
42397
|
+
if (node.kind === "not") return 1 + whenDepth(node.child);
|
|
42398
|
+
let deepest = 0;
|
|
42399
|
+
for (const child of node.children) deepest = Math.max(deepest, whenDepth(child));
|
|
42400
|
+
return 1 + deepest;
|
|
42401
|
+
}
|
|
42402
|
+
/** Leaves only — containers do not count toward the leaf budget. */
|
|
42403
|
+
function countWhenLeaves(node) {
|
|
42404
|
+
if (isLeaf(node)) return 1;
|
|
42405
|
+
if (node.kind === "not") return countWhenLeaves(node.child);
|
|
42406
|
+
let total = 0;
|
|
42407
|
+
for (const child of node.children) total += countWhenLeaves(child);
|
|
42408
|
+
return total;
|
|
42409
|
+
}
|
|
42410
|
+
/** Every leaf with its path (`when`, `when.0`, `when.0.1`, `when.0` under a `not`). */
|
|
42411
|
+
function forEachLeaf(node, visit, path = "when") {
|
|
42412
|
+
if (isLeaf(node)) {
|
|
42413
|
+
visit(node, path);
|
|
42414
|
+
return;
|
|
42415
|
+
}
|
|
42416
|
+
if (node.kind === "not") {
|
|
42417
|
+
forEachLeaf(node.child, visit, `${path}.0`);
|
|
42418
|
+
return;
|
|
42419
|
+
}
|
|
42420
|
+
node.children.forEach((child, i) => {
|
|
42421
|
+
forEachLeaf(child, visit, `${path}.${i}`);
|
|
42422
|
+
});
|
|
42423
|
+
}
|
|
42424
|
+
function hasEventLeaves(node) {
|
|
42425
|
+
let found = false;
|
|
42426
|
+
forEachLeaf(node, (leaf) => {
|
|
42427
|
+
if (isEventLeaf(leaf)) found = true;
|
|
42428
|
+
});
|
|
42429
|
+
return found;
|
|
42430
|
+
}
|
|
42431
|
+
function hasEmptyContainer(node) {
|
|
42432
|
+
if (isLeaf(node)) return false;
|
|
42433
|
+
if (node.kind === "not") return hasEmptyContainer(node.child);
|
|
42434
|
+
if (node.children.length === 0) return true;
|
|
42435
|
+
return node.children.some(hasEmptyContainer);
|
|
42436
|
+
}
|
|
42437
|
+
var LEAF_WORDS = {
|
|
42438
|
+
"device-becomes": "a device value that becomes",
|
|
42439
|
+
"device-event": "a device event",
|
|
42440
|
+
schedule: "a schedule",
|
|
42441
|
+
manual: "a manual run",
|
|
42442
|
+
interval: "an interval",
|
|
42443
|
+
detection: "a detection",
|
|
42444
|
+
stationary: "a parked object appearing or leaving"
|
|
42445
|
+
};
|
|
42446
|
+
function say(kind) {
|
|
42447
|
+
return LEAF_WORDS[kind] ?? kind;
|
|
42448
|
+
}
|
|
42449
|
+
/**
|
|
42450
|
+
* The cheapest set of event leaves that makes `node` true, with negation pushed
|
|
42451
|
+
* down to the leaves first (De Morgan), so `not(any(A, B))` and `all(not A,
|
|
42452
|
+
* not B)` are the same shape to the check. A negated event is its own error: an
|
|
42453
|
+
* event is an instant, "the event did not occur" is true at every other moment.
|
|
42454
|
+
*/
|
|
42455
|
+
function eventNeed(node, path, negated) {
|
|
42456
|
+
if (isLeaf(node)) {
|
|
42457
|
+
if (!isEventLeaf(node)) return { paths: [] };
|
|
42458
|
+
if (negated) return { error: `"not" is applied to ${say(node.kind)} (${path}) — an event is an instant, so "it did not happen" is true at every other moment and can never start a run. Negate a state ("is") instead, or remove the "not"` };
|
|
42459
|
+
return { paths: [{
|
|
42460
|
+
path,
|
|
42461
|
+
kind: node.kind
|
|
42462
|
+
}] };
|
|
42463
|
+
}
|
|
42464
|
+
if (node.kind === "not") return eventNeed(node.child, `${path}.0`, !negated);
|
|
42465
|
+
const conjunctive = node.kind === "all" !== negated;
|
|
42466
|
+
const parts = [];
|
|
42467
|
+
for (let i = 0; i < node.children.length; i += 1) {
|
|
42468
|
+
const child = node.children[i];
|
|
42469
|
+
if (child === void 0) continue;
|
|
42470
|
+
const need = eventNeed(child, `${path}.${i}`, negated);
|
|
42471
|
+
if ("error" in need) return need;
|
|
42472
|
+
parts.push(need);
|
|
42473
|
+
}
|
|
42474
|
+
if (conjunctive) return { paths: parts.flatMap((p) => p.paths) };
|
|
42475
|
+
let best;
|
|
42476
|
+
for (const part of parts) if (best === void 0 || part.paths.length < best.paths.length) best = part;
|
|
42477
|
+
return best ?? { paths: [] };
|
|
42478
|
+
}
|
|
42479
|
+
/**
|
|
42480
|
+
* Author-time bounds and sense check of a `when` tree. Returns `null` when it
|
|
42481
|
+
* is legal, else a message the editor shows verbatim.
|
|
42482
|
+
*/
|
|
42483
|
+
function validateWhenTree(when) {
|
|
42484
|
+
if (hasEmptyContainer(when)) return "a group is empty — group existing rows instead of leaving a container to fill";
|
|
42485
|
+
const depth = whenDepth(when);
|
|
42486
|
+
if (depth > 4) return `the rules nest ${depth} levels deep — the limit is 4. "not (any of …)" is the same as "all of (not …)", which is one level shallower`;
|
|
42487
|
+
const leaves = countWhenLeaves(when);
|
|
42488
|
+
if (leaves > 32) return `the rules use ${leaves} rows — the limit is 32`;
|
|
42489
|
+
const need = eventNeed(when, "when", false);
|
|
42490
|
+
if ("error" in need) return need.error;
|
|
42491
|
+
const [first, second] = need.paths;
|
|
42492
|
+
if (first !== void 0 && second !== void 0) return `${say(first.kind)} (${first.path}) and ${say(second.kind)} (${second.path}) would both have to happen at the same instant, and an event happens at one moment — this can never run. Use "any of" to start on either, or turn one of them into a state ("is") that must already hold`;
|
|
42493
|
+
return null;
|
|
42494
|
+
}
|
|
42371
42495
|
/**
|
|
42372
42496
|
* The recipe shape before the single `when` tree: a flat list of triggers
|
|
42373
42497
|
* (OR'd, each an instant) and an optional condition tree. Stored recipes —
|
|
@@ -42723,6 +42847,187 @@ function convertLegacyRecipe(legacy) {
|
|
|
42723
42847
|
var AutomationRecipeSchema = union([CurrentAutomationRecipeSchema, LegacyAutomationRecipeSchema.transform(convertLegacyRecipe)]);
|
|
42724
42848
|
new Set(Object.values(COCO_TO_MACRO.mapping));
|
|
42725
42849
|
/**
|
|
42850
|
+
* Schedulers (D983) — an entity that performs actions over the day.
|
|
42851
|
+
*
|
|
42852
|
+
* A scheduler has profiles; a profile has weekdays and a timeline of POINTS.
|
|
42853
|
+
* A point is an `edge` (run once at its time), a `hold` (from this point until
|
|
42854
|
+
* the next point of the profile, keep the steps' effects true) or a `release`
|
|
42855
|
+
* (end the current hold without acting). The scheduler AND each profile carry
|
|
42856
|
+
* a manual `enabled` flag and an optional `activeWhen`: a `when` STATE tree
|
|
42857
|
+
* (facts only — an event leaf is an instant and cannot be "in force").
|
|
42858
|
+
*
|
|
42859
|
+
* This file is the data half: the schemas, and the author-time rules that
|
|
42860
|
+
* decide whether a scheduler can be saved at all (a hold needs an action that
|
|
42861
|
+
* leads to a state; a sun point needs the site location). It holds no runtime.
|
|
42862
|
+
*/
|
|
42863
|
+
/** A `when` tree that is a STATE: no event leaf, and legal as a tree. */
|
|
42864
|
+
var SchedulerStateTreeSchema = AutomationWhenSchema.superRefine((when, ctx) => {
|
|
42865
|
+
if (hasEventLeaves(when)) {
|
|
42866
|
+
ctx.addIssue({
|
|
42867
|
+
code: "custom",
|
|
42868
|
+
message: "a scheduler condition is a state — an event (\"becomes\", \"detects\", \"at a time\") is an instant and cannot be in force"
|
|
42869
|
+
});
|
|
42870
|
+
return;
|
|
42871
|
+
}
|
|
42872
|
+
const problem = validateWhenTree(when);
|
|
42873
|
+
if (problem !== null) ctx.addIssue({
|
|
42874
|
+
code: "custom",
|
|
42875
|
+
message: problem
|
|
42876
|
+
});
|
|
42877
|
+
});
|
|
42878
|
+
/** A point's moment: a clock time or a sun event. A one-shot date is not a position on a day. */
|
|
42879
|
+
var SchedulerTimeSpecSchema = TimeSpecSchema.refine((spec) => spec.kind !== "date", { message: "a scheduler point is a clock time or a sun event — a one-shot date has no place on a timeline" });
|
|
42880
|
+
var SchedulerPointModeSchema = _enum([
|
|
42881
|
+
"edge",
|
|
42882
|
+
"hold",
|
|
42883
|
+
"release"
|
|
42884
|
+
]);
|
|
42885
|
+
/** What a hold does when someone changes the device by hand. */
|
|
42886
|
+
var HoldOverrideSchema = discriminatedUnion("mode", [object({ mode: literal("respect") }), object({
|
|
42887
|
+
mode: literal("reassert"),
|
|
42888
|
+
/** How long the manual state is left alone before the hold puts its own back. */
|
|
42889
|
+
graceMs: number().int().min(0).max(24 * 36e5)
|
|
42890
|
+
})]);
|
|
42891
|
+
/** A missed edge up to this late still runs. */
|
|
42892
|
+
var DEFAULT_MAX_LATE_MS = 10 * 6e4;
|
|
42893
|
+
var SchedulerPointSchema = object({
|
|
42894
|
+
id: string().min(1).max(64),
|
|
42895
|
+
at: SchedulerTimeSpecSchema,
|
|
42896
|
+
mode: SchedulerPointModeSchema,
|
|
42897
|
+
/** The actions of an `edge` or `hold`; a `release` has none. */
|
|
42898
|
+
steps: array(ActionStepSchema).max(20).default([]),
|
|
42899
|
+
/** Checked when the point runs (an edge) or is applied (a hold). */
|
|
42900
|
+
conditions: SchedulerStateTreeSchema.optional(),
|
|
42901
|
+
/** Hold only; absent means `respect`. */
|
|
42902
|
+
override: HoldOverrideSchema.optional(),
|
|
42903
|
+
/** Hold only: re-applications per window; absent means {@link DEFAULT_MAX_HOLD_ATTEMPTS}. */
|
|
42904
|
+
maxHoldAttempts: number().int().min(1).max(20).optional()
|
|
42905
|
+
});
|
|
42906
|
+
var SchedulerProfileSchema = object({
|
|
42907
|
+
id: string().min(1).max(64),
|
|
42908
|
+
name: string().min(1).max(120),
|
|
42909
|
+
enabled: boolean().default(true),
|
|
42910
|
+
activeWhen: SchedulerStateTreeSchema.optional(),
|
|
42911
|
+
days: array(WeekdayKeySchema).min(1).max(7),
|
|
42912
|
+
points: array(SchedulerPointSchema).max(50)
|
|
42913
|
+
});
|
|
42914
|
+
/** What an operator writes. */
|
|
42915
|
+
var SchedulerInputSchema = object({
|
|
42916
|
+
name: string().min(1).max(120),
|
|
42917
|
+
enabled: boolean().default(true),
|
|
42918
|
+
activeWhen: SchedulerStateTreeSchema.optional(),
|
|
42919
|
+
/** Higher wins when two holds want the same device in different states. */
|
|
42920
|
+
priority: number().int().min(0).max(100).default(0),
|
|
42921
|
+
maxLateMs: number().int().min(1e3).max(24 * 36e5).default(DEFAULT_MAX_LATE_MS),
|
|
42922
|
+
profiles: array(SchedulerProfileSchema).max(20)
|
|
42923
|
+
});
|
|
42924
|
+
var SchedulerSchema = SchedulerInputSchema.extend({
|
|
42925
|
+
id: string().min(1),
|
|
42926
|
+
createdAt: number(),
|
|
42927
|
+
updatedAt: number()
|
|
42928
|
+
});
|
|
42929
|
+
/** Every outcome a scheduler reports to the runs ledger (`AutomationRunTrace.scheduler`). */
|
|
42930
|
+
var SchedulerOutcomeSchema = _enum([
|
|
42931
|
+
"done",
|
|
42932
|
+
"missed",
|
|
42933
|
+
"inactive",
|
|
42934
|
+
"condition-false",
|
|
42935
|
+
"failed",
|
|
42936
|
+
"held",
|
|
42937
|
+
"gave-up",
|
|
42938
|
+
"overridden",
|
|
42939
|
+
"suspended-manual"
|
|
42940
|
+
]);
|
|
42941
|
+
_enum([
|
|
42942
|
+
"not-found",
|
|
42943
|
+
"invalid-scheduler",
|
|
42944
|
+
"invalid-date"
|
|
42945
|
+
]);
|
|
42946
|
+
var LOCAL_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
|
|
42947
|
+
/** One point of the day, placed. `at` is `null` when the sun never crosses that day. */
|
|
42948
|
+
var SchedulerPreviewPointSchema = object({
|
|
42949
|
+
pointId: string(),
|
|
42950
|
+
mode: SchedulerPointModeSchema,
|
|
42951
|
+
at: number().nullable(),
|
|
42952
|
+
/** A hold: when its window ends (the next point, else the end of the day). */
|
|
42953
|
+
until: number().nullable(),
|
|
42954
|
+
/** The point's steps are held on a different scheduler's claim at this time — see `conflicts`. */
|
|
42955
|
+
stepCount: number().int()
|
|
42956
|
+
});
|
|
42957
|
+
var SchedulerPreviewSchema = object({
|
|
42958
|
+
schedulerId: string(),
|
|
42959
|
+
/** The site-local day previewed. */
|
|
42960
|
+
date: string().regex(LOCAL_DATE_PATTERN),
|
|
42961
|
+
timeZone: string(),
|
|
42962
|
+
/** Why no profile is in force, or `null` when one is. */
|
|
42963
|
+
idleReason: string().nullable(),
|
|
42964
|
+
/** The profile in force that day: first in list order whose rules hold. */
|
|
42965
|
+
profileId: string().nullable(),
|
|
42966
|
+
points: array(SchedulerPreviewPointSchema)
|
|
42967
|
+
});
|
|
42968
|
+
/** Two holds that want the same device in different states at the same time. */
|
|
42969
|
+
var SchedulerConflictSchema = object({
|
|
42970
|
+
deviceId: number().int(),
|
|
42971
|
+
cap: string(),
|
|
42972
|
+
field: string(),
|
|
42973
|
+
mine: object({
|
|
42974
|
+
profileId: string(),
|
|
42975
|
+
pointId: string(),
|
|
42976
|
+
value: union([
|
|
42977
|
+
string(),
|
|
42978
|
+
number(),
|
|
42979
|
+
boolean()
|
|
42980
|
+
]),
|
|
42981
|
+
priority: number().int()
|
|
42982
|
+
}),
|
|
42983
|
+
other: object({
|
|
42984
|
+
schedulerId: string(),
|
|
42985
|
+
schedulerName: string(),
|
|
42986
|
+
profileId: string(),
|
|
42987
|
+
pointId: string(),
|
|
42988
|
+
value: union([
|
|
42989
|
+
string(),
|
|
42990
|
+
number(),
|
|
42991
|
+
boolean()
|
|
42992
|
+
]),
|
|
42993
|
+
priority: number().int()
|
|
42994
|
+
}),
|
|
42995
|
+
/** The overlapping stretch, as site-local minutes of the day. */
|
|
42996
|
+
fromMinute: number().int(),
|
|
42997
|
+
toMinute: number().int(),
|
|
42998
|
+
/** `mine` | `other` | `tie` — who holds when it happens (a tie: the one that started first). */
|
|
42999
|
+
winner: _enum([
|
|
43000
|
+
"mine",
|
|
43001
|
+
"other",
|
|
43002
|
+
"tie"
|
|
43003
|
+
])
|
|
43004
|
+
});
|
|
43005
|
+
var HoldTargetStatusSchema = _enum([
|
|
43006
|
+
"pending",
|
|
43007
|
+
"held",
|
|
43008
|
+
"suspended-manual",
|
|
43009
|
+
"gave-up",
|
|
43010
|
+
"overridden"
|
|
43011
|
+
]);
|
|
43012
|
+
var SchedulerStatusSchema = object({
|
|
43013
|
+
schedulerId: string(),
|
|
43014
|
+
profileId: string().nullable(),
|
|
43015
|
+
/** The hold in force right now, with where each target stands. */
|
|
43016
|
+
hold: object({
|
|
43017
|
+
pointId: string(),
|
|
43018
|
+
until: number(),
|
|
43019
|
+
/** `true` while the scheduler or profile `activeWhen` is false. */
|
|
43020
|
+
suspendedInactive: boolean(),
|
|
43021
|
+
targets: array(object({
|
|
43022
|
+
deviceId: number().int(),
|
|
43023
|
+
cap: string(),
|
|
43024
|
+
field: string(),
|
|
43025
|
+
status: HoldTargetStatusSchema,
|
|
43026
|
+
attempts: number().int()
|
|
43027
|
+
}))
|
|
43028
|
+
}).nullable()
|
|
43029
|
+
});
|
|
43030
|
+
/**
|
|
42726
43031
|
* Run traces — what an automation (or, later, an Action run) DID, node by node,
|
|
42727
43032
|
* so the editor can paint every block green or red with its reason.
|
|
42728
43033
|
*
|
|
@@ -42858,7 +43163,13 @@ var AutomationRunTraceSchema = object({
|
|
|
42858
43163
|
/** How many identical consecutive skips this trace stands for (>= 1). */
|
|
42859
43164
|
repeat: number().int().min(1),
|
|
42860
43165
|
/** When the latest of those repeats happened. */
|
|
42861
|
-
lastAt: number()
|
|
43166
|
+
lastAt: number(),
|
|
43167
|
+
/**
|
|
43168
|
+
* A scheduler point's own outcome (D983). `outcome` carries the closest
|
|
43169
|
+
* automation outcome so a reader that does not know schedulers still reads
|
|
43170
|
+
* the trace; this field says exactly what happened.
|
|
43171
|
+
*/
|
|
43172
|
+
scheduler: SchedulerOutcomeSchema.optional()
|
|
42862
43173
|
});
|
|
42863
43174
|
/**
|
|
42864
43175
|
* What the hub's `runs` ledger holds for one owner (`automation:<blockId>` or
|
|
@@ -46399,6 +46710,7 @@ method(object({
|
|
|
46399
46710
|
kind: "mutation",
|
|
46400
46711
|
auth: "admin"
|
|
46401
46712
|
}), method(object({ blockIds: array(string()) }), object({ states: array(CompositionBlockStateSchema) }), { auth: "admin" });
|
|
46713
|
+
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Gateway, DeviceType.Camera, DeviceType.Lock, DeviceType.Camera, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
46402
46714
|
var NUMBER = {
|
|
46403
46715
|
kind: "fixed",
|
|
46404
46716
|
result: ["number"]
|
|
@@ -67220,6 +67532,43 @@ method(object({}), array(ActionEntrySchema), { auth: "admin" }), method(object({
|
|
|
67220
67532
|
auth: "admin"
|
|
67221
67533
|
});
|
|
67222
67534
|
/**
|
|
67535
|
+
* schedulers — timelines of edge and hold points that perform actions over the
|
|
67536
|
+
* day (D983). Provided by the core-blocks builtin on the hub, beside `actions`:
|
|
67537
|
+
* the same runs ledger (owner `scheduler:<id>`), the same target resolver, the
|
|
67538
|
+
* same step runner.
|
|
67539
|
+
*
|
|
67540
|
+
* The hub runs ONE timer for the next point across every scheduler. A save is
|
|
67541
|
+
* refused with its reason (`[invalid-scheduler] …`) when a hold has a step that
|
|
67542
|
+
* leads to no state, or a sun point has no site location to read.
|
|
67543
|
+
*/
|
|
67544
|
+
var SchedulerIdInput = object({ schedulerId: string().min(1) });
|
|
67545
|
+
method(object({}), array(SchedulerSchema), { auth: "admin" }), method(SchedulerIdInput, object({ scheduler: SchedulerSchema.nullable() }), { auth: "admin" }), method(object({ scheduler: SchedulerInputSchema }), object({ scheduler: SchedulerSchema }), {
|
|
67546
|
+
kind: "mutation",
|
|
67547
|
+
auth: "admin"
|
|
67548
|
+
}), method(object({
|
|
67549
|
+
schedulerId: string().min(1),
|
|
67550
|
+
scheduler: SchedulerInputSchema
|
|
67551
|
+
}), object({ scheduler: SchedulerSchema }), {
|
|
67552
|
+
kind: "mutation",
|
|
67553
|
+
auth: "admin"
|
|
67554
|
+
}), method(SchedulerIdInput, _void(), {
|
|
67555
|
+
kind: "mutation",
|
|
67556
|
+
auth: "admin"
|
|
67557
|
+
}), method(object({
|
|
67558
|
+
schedulerId: string().min(1),
|
|
67559
|
+
profileId: string().min(1).optional(),
|
|
67560
|
+
enabled: boolean()
|
|
67561
|
+
}), object({ scheduler: SchedulerSchema }), {
|
|
67562
|
+
kind: "mutation",
|
|
67563
|
+
auth: "admin"
|
|
67564
|
+
}), method(object({
|
|
67565
|
+
schedulerId: string().min(1),
|
|
67566
|
+
date: string().regex(LOCAL_DATE_PATTERN).optional()
|
|
67567
|
+
}), SchedulerPreviewSchema, { auth: "admin" }), method(object({
|
|
67568
|
+
scheduler: SchedulerInputSchema,
|
|
67569
|
+
schedulerId: string().min(1).optional()
|
|
67570
|
+
}), object({ conflicts: array(SchedulerConflictSchema) }), { auth: "admin" }), method(object({}), array(SchedulerStatusSchema), { auth: "admin" }), method(SchedulerIdInput, object({ traces: array(AutomationRunTraceSchema) }), { auth: "admin" });
|
|
67571
|
+
/**
|
|
67223
67572
|
* actions — the ONE surface for runnable actions, for the UI and for
|
|
67224
67573
|
* automations. Provided by the core-blocks builtin on the hub.
|
|
67225
67574
|
*
|
|
@@ -71525,6 +71874,8 @@ var IntegrationWithStateSchema = object({
|
|
|
71525
71874
|
name: string(),
|
|
71526
71875
|
enabled: boolean(),
|
|
71527
71876
|
info: record(string(), unknown()).readonly(),
|
|
71877
|
+
/** The discovery candidate this integration was set up from (D984). */
|
|
71878
|
+
originStableId: string().optional(),
|
|
71528
71879
|
createdAt: number(),
|
|
71529
71880
|
updatedAt: number(),
|
|
71530
71881
|
processState: string()
|
|
@@ -71535,6 +71886,8 @@ var IntegrationLiteSchema = object({
|
|
|
71535
71886
|
name: string(),
|
|
71536
71887
|
enabled: boolean(),
|
|
71537
71888
|
info: record(string(), unknown()).readonly(),
|
|
71889
|
+
/** The discovery candidate this integration was set up from (D984). */
|
|
71890
|
+
originStableId: string().optional(),
|
|
71538
71891
|
createdAt: number(),
|
|
71539
71892
|
updatedAt: number()
|
|
71540
71893
|
});
|
|
@@ -71632,6 +71985,8 @@ var CreateIntegrationInputSchema = object({
|
|
|
71632
71985
|
name: string(),
|
|
71633
71986
|
enabled: boolean().optional(),
|
|
71634
71987
|
info: record(string(), unknown()).optional(),
|
|
71988
|
+
/** `stableId` of the discovery candidate the form was seeded from (D984). */
|
|
71989
|
+
originStableId: string().optional(),
|
|
71635
71990
|
settings: record(string(), unknown()).optional(),
|
|
71636
71991
|
/** Keys of `settings` the form's schema declares secret (by type) — kept in
|
|
71637
71992
|
* the keychain, not the table (D787). */
|
|
@@ -72412,12 +72767,22 @@ method(_void(), ListResultSchema), method(_void(), PreferredSchema), method(obje
|
|
|
72412
72767
|
* reports `LockEntityFeature.OPEN` (bit value 1) in HA
|
|
72413
72768
|
* `supported_features`.
|
|
72414
72769
|
*/
|
|
72770
|
+
/**
|
|
72771
|
+
* `door-open` (D984): the linked door contact reads open, so the bolt cannot be
|
|
72772
|
+
* thrown. It is the lock's REAL reported state, written into the mirrored slice
|
|
72773
|
+
* by the door-contact Customize extension — never a provider's own value, and
|
|
72774
|
+
* never a projection a reader has to compute. Precedence: a native `jammed`
|
|
72775
|
+
* wins; otherwise an open contact reports `door-open` whatever the native state
|
|
72776
|
+
* says (`locked` included); a closed or unknown contact leaves the native state.
|
|
72777
|
+
* A `lock()` is refused while the state is `door-open`; `unlock()` never is.
|
|
72778
|
+
*/
|
|
72415
72779
|
var LockStateSchema = _enum([
|
|
72416
72780
|
"locked",
|
|
72417
72781
|
"unlocked",
|
|
72418
72782
|
"locking",
|
|
72419
72783
|
"unlocking",
|
|
72420
|
-
"jammed"
|
|
72784
|
+
"jammed",
|
|
72785
|
+
"door-open"
|
|
72421
72786
|
]);
|
|
72422
72787
|
var LockControlStatusSchema = object({
|
|
72423
72788
|
/** Lifecycle state of the lock. `jammed` means the motor reported
|
|
@@ -72426,6 +72791,38 @@ var LockControlStatusSchema = object({
|
|
|
72426
72791
|
/** Ms epoch when the slice was last updated. */
|
|
72427
72792
|
lastChangedAt: number()
|
|
72428
72793
|
});
|
|
72794
|
+
/**
|
|
72795
|
+
* "Door contact" Customize extension (D984): the ONE extension that replaces a
|
|
72796
|
+
* native field. `state` is listed in `overridable` for this target, so the
|
|
72797
|
+
* validator and the guard accept it and nothing else.
|
|
72798
|
+
*/
|
|
72799
|
+
var lockControlCustomize = {
|
|
72800
|
+
version: 1,
|
|
72801
|
+
overridable: [{
|
|
72802
|
+
path: "state",
|
|
72803
|
+
by: "door-contact"
|
|
72804
|
+
}],
|
|
72805
|
+
targets: [{
|
|
72806
|
+
id: "door-contact",
|
|
72807
|
+
cardinality: "scalar",
|
|
72808
|
+
vocabulary: {
|
|
72809
|
+
cap: "lock-control",
|
|
72810
|
+
stateField: "state"
|
|
72811
|
+
},
|
|
72812
|
+
deviceTypes: [DeviceType.Lock],
|
|
72813
|
+
apply: "replace",
|
|
72814
|
+
path: "state",
|
|
72815
|
+
override: {
|
|
72816
|
+
whenSourceTrue: "door-open",
|
|
72817
|
+
unlessNative: ["jammed"]
|
|
72818
|
+
},
|
|
72819
|
+
sources: [{
|
|
72820
|
+
kind: "binary",
|
|
72821
|
+
transforms: [{ kind: "identity" }]
|
|
72822
|
+
}],
|
|
72823
|
+
sourceReport: { status: "assignment-status" }
|
|
72824
|
+
}]
|
|
72825
|
+
};
|
|
72429
72826
|
var lockControlCapability = {
|
|
72430
72827
|
name: "lock-control",
|
|
72431
72828
|
scope: "device",
|
|
@@ -72471,6 +72868,7 @@ var lockControlCapability = {
|
|
|
72471
72868
|
* transitions.
|
|
72472
72869
|
*/
|
|
72473
72870
|
runtimeState: LockControlStatusSchema,
|
|
72871
|
+
customize: lockControlCustomize,
|
|
72474
72872
|
/**
|
|
72475
72873
|
* Runtime-state durability: **restored** — a lock left locked must still read locked.
|
|
72476
72874
|
*
|
|
@@ -80985,7 +81383,6 @@ discriminatedUnion("kind", [object({
|
|
|
80985
81383
|
})]);
|
|
80986
81384
|
DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
|
|
80987
81385
|
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
80988
|
-
DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.EventEmitter, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.PetFountain, DeviceType.Dishwasher, DeviceType.Washer, DeviceType.Dryer, DeviceType.Gateway, DeviceType.Camera, DeviceType.Camera, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.Switch, DeviceType.Light, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.PetFeeder, DeviceType.MediaPlayer, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
|
|
80989
81386
|
String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
|
|
80990
81387
|
DeviceRole.BinarySensor, DeviceRole.MotionSensor;
|
|
80991
81388
|
new Set(CAP_NAMES);
|
|
@@ -90098,6 +90495,76 @@ Object.freeze({
|
|
|
90098
90495
|
access: "create",
|
|
90099
90496
|
role: "feature:scenes"
|
|
90100
90497
|
},
|
|
90498
|
+
"schedulers.conflicts": {
|
|
90499
|
+
capName: "schedulers",
|
|
90500
|
+
capScope: "system",
|
|
90501
|
+
addonId: null,
|
|
90502
|
+
access: "view",
|
|
90503
|
+
role: "admin"
|
|
90504
|
+
},
|
|
90505
|
+
"schedulers.create": {
|
|
90506
|
+
capName: "schedulers",
|
|
90507
|
+
capScope: "system",
|
|
90508
|
+
addonId: null,
|
|
90509
|
+
access: "create",
|
|
90510
|
+
role: "admin"
|
|
90511
|
+
},
|
|
90512
|
+
"schedulers.delete": {
|
|
90513
|
+
capName: "schedulers",
|
|
90514
|
+
capScope: "system",
|
|
90515
|
+
addonId: null,
|
|
90516
|
+
access: "delete",
|
|
90517
|
+
role: "admin"
|
|
90518
|
+
},
|
|
90519
|
+
"schedulers.get": {
|
|
90520
|
+
capName: "schedulers",
|
|
90521
|
+
capScope: "system",
|
|
90522
|
+
addonId: null,
|
|
90523
|
+
access: "view",
|
|
90524
|
+
role: "admin"
|
|
90525
|
+
},
|
|
90526
|
+
"schedulers.getStatus": {
|
|
90527
|
+
capName: "schedulers",
|
|
90528
|
+
capScope: "system",
|
|
90529
|
+
addonId: null,
|
|
90530
|
+
access: "view",
|
|
90531
|
+
role: "admin"
|
|
90532
|
+
},
|
|
90533
|
+
"schedulers.getTraces": {
|
|
90534
|
+
capName: "schedulers",
|
|
90535
|
+
capScope: "system",
|
|
90536
|
+
addonId: null,
|
|
90537
|
+
access: "view",
|
|
90538
|
+
role: "admin"
|
|
90539
|
+
},
|
|
90540
|
+
"schedulers.list": {
|
|
90541
|
+
capName: "schedulers",
|
|
90542
|
+
capScope: "system",
|
|
90543
|
+
addonId: null,
|
|
90544
|
+
access: "view",
|
|
90545
|
+
role: "admin"
|
|
90546
|
+
},
|
|
90547
|
+
"schedulers.preview": {
|
|
90548
|
+
capName: "schedulers",
|
|
90549
|
+
capScope: "system",
|
|
90550
|
+
addonId: null,
|
|
90551
|
+
access: "view",
|
|
90552
|
+
role: "admin"
|
|
90553
|
+
},
|
|
90554
|
+
"schedulers.setEnabled": {
|
|
90555
|
+
capName: "schedulers",
|
|
90556
|
+
capScope: "system",
|
|
90557
|
+
addonId: null,
|
|
90558
|
+
access: "create",
|
|
90559
|
+
role: "admin"
|
|
90560
|
+
},
|
|
90561
|
+
"schedulers.update": {
|
|
90562
|
+
capName: "schedulers",
|
|
90563
|
+
capScope: "system",
|
|
90564
|
+
addonId: null,
|
|
90565
|
+
access: "create",
|
|
90566
|
+
role: "admin"
|
|
90567
|
+
},
|
|
90101
90568
|
"scriptRunner.getStatus": {
|
|
90102
90569
|
capName: "script-runner",
|
|
90103
90570
|
capScope: "device",
|
|
@@ -98683,6 +99150,7 @@ new Set([
|
|
|
98683
99150
|
"locking",
|
|
98684
99151
|
"unlocking",
|
|
98685
99152
|
"jammed",
|
|
99153
|
+
"door-open",
|
|
98686
99154
|
"on",
|
|
98687
99155
|
"off",
|
|
98688
99156
|
"home",
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_clip_model_registry = require("../clip-model-registry-
|
|
5
|
+
const require_clip_model_registry = require("../clip-model-registry-BQ_2RsIp.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
node_fs = require_clip_model_registry.__toESM(node_fs);
|
|
8
8
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Si as resolvePoolMemoryPolicy, _r as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, aa as BaseAddon, br as embeddingRequirementsUnavailableError, gr as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, rn as PoolMemoryWatchdog, si as parseProcStatus, t as BUILTIN_CLIP_MODELS, va as normalizeNodeId, yr as embeddingRequirementsFailedError } from "../clip-model-registry-
|
|
1
|
+
import { Si as resolvePoolMemoryPolicy, _r as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, aa as BaseAddon, br as embeddingRequirementsUnavailableError, gr as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, rn as PoolMemoryWatchdog, si as parseProcStatus, t as BUILTIN_CLIP_MODELS, va as normalizeNodeId, yr as embeddingRequirementsFailedError } from "../clip-model-registry-C06M8A8U.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-Cx9AsA5q.mjs";
|
|
2
2
|
import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
|
|
3
|
-
import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-
|
|
3
|
+
import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-gv38vKug.mjs";
|
|
4
4
|
import { n as x, t as S } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CkwmHEi0.mjs";
|
|
5
|
-
import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-
|
|
5
|
+
import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YXyP9GJm.mjs";
|
|
6
6
|
//#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
7
7
|
var w = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), T = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), E = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), D = (e) => {
|
|
8
8
|
let t = E(e);
|
|
@@ -18,7 +18,7 @@ var e = {
|
|
|
18
18
|
},
|
|
19
19
|
"@camstack/types": {
|
|
20
20
|
name: "@camstack/types",
|
|
21
|
-
version: "1.2.
|
|
21
|
+
version: "1.2.457",
|
|
22
22
|
scope: ["default"],
|
|
23
23
|
loaded: !1,
|
|
24
24
|
from: "addon_pipeline_analytics_widgets",
|
|
@@ -33,7 +33,7 @@ var e = {
|
|
|
33
33
|
},
|
|
34
34
|
"@camstack/ui-library": {
|
|
35
35
|
name: "@camstack/ui-library",
|
|
36
|
-
version: "1.2.
|
|
36
|
+
version: "1.2.361",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|