@miravo/cli-linux-arm64-musl 0.9.0 → 0.10.0
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/console-dist/assets/AnimatePresence-BZCmb1bq.js +9 -0
- package/console-dist/assets/{activity-Cy_niK56.js → activity-Cn48I9qe.js} +1 -1
- package/console-dist/assets/api-DybIIqOe.js +1 -0
- package/console-dist/assets/api-kPM52mb-.js +1 -0
- package/console-dist/assets/asset-detail-tmOrYE8x.js +1 -0
- package/console-dist/assets/{auth-screen-backdrop-CgwRhIbi.js → auth-screen-backdrop-hcEYy3K4.js} +1 -1
- package/console-dist/assets/badge-D4jktT8T.js +1 -0
- package/console-dist/assets/catalog-DN-klsod.js +1 -0
- package/console-dist/assets/catalog-M-k7Y9Sp.js +1 -0
- package/console-dist/assets/catalog-source-2aT9qob-.js +1 -0
- package/console-dist/assets/catalog-template-icons-C7KJdJJX.js +1 -0
- package/console-dist/assets/checkbox-AaJhjtZk.js +1 -0
- package/console-dist/assets/chevron-down-CAk5w9Wt.js +1 -0
- package/console-dist/assets/chevron-right-BfZjrUWh.js +1 -0
- package/console-dist/assets/circle-x-CGcRflg7.js +1 -0
- package/console-dist/assets/combobox-BFEY6lgO.js +1 -0
- package/console-dist/assets/control-CD9UoTvu.js +1 -0
- package/console-dist/assets/control-DHa2-a2v.js +1 -0
- package/console-dist/assets/copy-button-DHm7RGJ5.js +1 -0
- package/console-dist/assets/dialog-Di9Bs0FH.js +1 -0
- package/console-dist/assets/{download-DmUZKo9N.js → download-B9e1wNK4.js} +1 -1
- package/console-dist/assets/events-D19CzgoQ.js +1 -0
- package/console-dist/assets/events-DmftG8n5.js +1 -0
- package/console-dist/assets/export-tab-ouFgYEU_.js +1 -0
- package/console-dist/assets/factory-CT2VYi0n.js +1 -0
- package/console-dist/assets/factory-DSrBtcG2.js +1 -0
- package/console-dist/assets/{format-6q8Tnwmn.js → format-OUFL_tef.js} +1 -1
- package/console-dist/assets/{get-error-message-BowDodwy.js → get-error-message-eGdenTLv.js} +1 -1
- package/console-dist/assets/index-DuJJSpJp.js +12 -0
- package/console-dist/assets/index-iEV9hU2I.css +2 -0
- package/console-dist/assets/integration-api-Bg7D1eQc.js +2 -0
- package/console-dist/assets/integration-targets-BehiqWyT.js +1 -0
- package/console-dist/assets/integrations-DWW9HjH0.js +1 -0
- package/console-dist/assets/integrations-DoXNrzD5.js +1 -0
- package/console-dist/assets/{label-DTHSKF2S.js → label-DWyy9MeT.js} +1 -1
- package/console-dist/assets/local-flag-CPAqDO-L.js +1 -0
- package/console-dist/assets/{login-O9dnrHI9.js → login-BZKYK0yZ.js} +1 -1
- package/console-dist/assets/models-CrDBHBV5.js +1 -0
- package/console-dist/assets/models-jBVcY8Xd.js +1 -0
- package/console-dist/assets/{not-found-Dw4OTZHH.js → not-found-BqVny4Md.js} +1 -1
- package/console-dist/assets/play-TTg_EXSa.js +1 -0
- package/console-dist/assets/plus-BbVbvFTe.js +1 -0
- package/console-dist/assets/protocol-card-B2SpAJKe.js +1 -0
- package/console-dist/assets/{query-fetch-error-ytmF7SP9.js → query-fetch-error-C2Ec4RQS.js} +1 -1
- package/console-dist/assets/radio-DRkzblxj.js +1 -0
- package/console-dist/assets/rocket-807Pf7C1.js +1 -0
- package/console-dist/assets/select-Bg6PPro0.js +1 -0
- package/console-dist/assets/{select-display-items-BEVMAho-.js → select-display-items-D-L3PesO.js} +1 -1
- package/console-dist/assets/server-CS2Tw__K.js +1 -0
- package/console-dist/assets/source-host-miravo-D_AecPVc.js +1 -0
- package/console-dist/assets/tabs-bI9sskHy.js +1 -0
- package/console-dist/assets/tags-B7e7VYVW.js +1 -0
- package/console-dist/assets/tags-DJJKQRZZ.js +4 -0
- package/console-dist/assets/{transition-nav-link-Crj9XTbK.js → transition-nav-link-cn4KZD6W.js} +1 -1
- package/console-dist/assets/trash-2-BJ-1df0F.js +1 -0
- package/console-dist/assets/{triangle-alert-BXrJNk3g.js → triangle-alert-D1AraFcP.js} +1 -1
- package/console-dist/assets/use-engine-command-mutation-DMkQxmt9.js +1 -0
- package/console-dist/assets/use-transition-navigate-BiV2QCcA.js +2 -0
- package/console-dist/assets/validation-q38DYDwu.js +1 -0
- package/console-dist/assets/vendor-ui-D8j69UH4.js +1 -0
- package/console-dist/index.html +55 -50
- package/miravo +2 -2
- package/package.json +1 -1
- package/console-dist/assets/AnimatePresence-CPmH1DMY.js +0 -9
- package/console-dist/assets/api-0DOQsu1W.js +0 -1
- package/console-dist/assets/api-DdyA1QMC.js +0 -1
- package/console-dist/assets/arrow-right-BjBb4z7g.js +0 -1
- package/console-dist/assets/arrow-up-down-C1oJAmrw.js +0 -1
- package/console-dist/assets/asset-detail-D-coMgED.js +0 -1
- package/console-dist/assets/badge-DuuEINVl.js +0 -1
- package/console-dist/assets/catalog-Ca9rhNLN.js +0 -1
- package/console-dist/assets/catalog-CdbAE0Ki.js +0 -1
- package/console-dist/assets/catalog-source-CPFWtBJF.js +0 -1
- package/console-dist/assets/catalog-template-icons-aec8m5-A.js +0 -1
- package/console-dist/assets/checkbox-BL44aFel.js +0 -1
- package/console-dist/assets/circle-question-mark-CJvcT6V6.js +0 -1
- package/console-dist/assets/combobox-B5iFVe7N.js +0 -1
- package/console-dist/assets/control-CtvncuAA.js +0 -1
- package/console-dist/assets/control-DYdEZmP0.js +0 -1
- package/console-dist/assets/copy-button-RVCJ3aqM.js +0 -1
- package/console-dist/assets/dropdown-menu-82O7jPU6.js +0 -1
- package/console-dist/assets/events-Bp3BqWYo.js +0 -1
- package/console-dist/assets/events-D5uZ2cwr.js +0 -1
- package/console-dist/assets/fleet-CBXZ0Xts.js +0 -1
- package/console-dist/assets/fleet-CRB8-QDg.js +0 -1
- package/console-dist/assets/index-BPmjm3uU.css +0 -2
- package/console-dist/assets/index-Chh5Cd8X.js +0 -12
- package/console-dist/assets/integration-targets-ChYQ8POe.js +0 -1
- package/console-dist/assets/integrations-BrZWbG5Q.js +0 -1
- package/console-dist/assets/integrations-D4x6ee5M.js +0 -1
- package/console-dist/assets/layers-1figUpjG.js +0 -1
- package/console-dist/assets/models-BDeOqKQk.js +0 -1
- package/console-dist/assets/models-CgWCVmnx.js +0 -1
- package/console-dist/assets/proxy-Be4WzmcS.js +0 -1
- package/console-dist/assets/select-Cg2u0NQI.js +0 -1
- package/console-dist/assets/shallow-Cin0mLuv.js +0 -1
- package/console-dist/assets/spawn-protocol-scope-picker-DDi-hZwj.js +0 -1
- package/console-dist/assets/tabs-BJs5Kci7.js +0 -1
- package/console-dist/assets/tags-CcmWc8Xj.js +0 -1
- package/console-dist/assets/tags-DnyhyxDB.js +0 -4
- package/console-dist/assets/tooltip-D1ydB4g3.js +0 -1
- package/console-dist/assets/use-engine-command-mutation-OZ8_Roso.js +0 -1
- package/console-dist/assets/use-integration-stream-CFkuEB9r.js +0 -2
- package/console-dist/assets/use-transition-navigate-BBXUEW59.js +0 -2
- package/console-dist/assets/validation-BvXCKp12.js +0 -1
- package/console-dist/assets/vendor-ui-CWUk2ulb.js +0 -1
- /package/console-dist/assets/{chunk-OE4NN4TA-DBWZidbW.js → chunk-OE4NN4TA-Q4iNR9l9.js} +0 -0
- /package/console-dist/assets/{dist-xY0pK9Wy.js → dist-CtuJWBnP.js} +0 -0
- /package/console-dist/assets/{runtime-link-D-uJbw97.js → runtime-link-ChF8TM68.js} +0 -0
- /package/console-dist/assets/{transition-types-CPlGtM8w.js → transition-types-049V0Kr0.js} +0 -0
- /package/console-dist/assets/{utils-XFKvwlFT.js → utils-BO2u-wC_.js} +0 -0
- /package/console-dist/assets/{vendor-table-BAHQgdwg.js → vendor-table-Br-cHaxY.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{$ as n,C as r,D as i,G as a,J as o,K as s,O as c,Q as l,R as u,U as d,V as f,W as p,X as m,Y as h,Z as g,c as ee,d as te,et as _,n as ne,nt as re,ot as v,q as y,rt as b,tt as x,y as ie}from"./api-kPM52mb-.js";import{c as S}from"./dialog-Di9Bs0FH.js";import{x as ae}from"./format-OUFL_tef.js";import{n as oe,r as se,t as ce}from"./runtime-link-ChF8TM68.js";var C=class extends d{column;constructor(e,t,n,r){super(`Invalid expression "${e}" at column ${t}: ${n}`,r),this.name=`ExpressionSyntaxError`,this.column=t}},w={min:{min:2,max:1/0,usage:`min(a, b, ...) takes at least 2 arguments`},max:{min:2,max:1/0,usage:`max(a, b, ...) takes at least 2 arguments`},clamp:{min:3,max:3,usage:`clamp(x, lo, hi) takes exactly 3 arguments`}},le=[`param`,`port`,`prev`],ue=/[A-Za-z_]/,T=/[A-Za-z0-9_]/,E=/[0-9]/,de=new Set([`+`,`-`,`*`,`/`,`(`,`)`,`,`]);function fe(e){return Object.hasOwn(w,e)}function D(e,t,n){let r=t;for(;r<e.length&&n.test(e.charAt(r));)r++;return r}function pe(e){let t=[],n=0;for(;n<e.length;){let r=e.charAt(n),i=n+1;if(/\s/.test(r))n++;else if(E.test(r)||r===`.`&&E.test(e.charAt(n+1))){let r=D(e,n,E);e.charAt(r)===`.`&&(r=D(e,r+1,E)),t.push({type:`number`,value:Number(e.slice(n,r)),column:i}),n=r}else if(ue.test(r)){let r=D(e,n,T);t.push({type:`ident`,value:e.slice(n,r),column:i}),n=r}else if(r===`$`){let r=D(e,n+1,T),a=e.slice(n+1,r);if(!le.includes(a))throw new C(e,i,`unknown reference prefix "$${a}".`,`Use $param.NAME, $port.NAME or $prev.NAME, or a bare member name for the current tick.`);let o=r+1;if(e.charAt(r)!==`.`||!ue.test(e.charAt(o)))throw new C(e,i,`"$${a}" must be followed by ".NAME".`,`Write $${a}.NAME with a name of letters, digits and underscores, e.g. $${a}.rated_rpm.`);let s=D(e,o,T);t.push({type:`ref`,prefix:a,value:e.slice(o,s),column:i}),n=s}else if(de.has(r))t.push({type:`punct`,value:r,column:i}),n++;else throw new C(e,i,`unexpected character "${r}".`,`Use only numbers, + - * /, parentheses, min/max/clamp, and references ($param.X, $port.X, $prev.X, or a member name).`)}return t.push({type:`end`,column:e.length+1}),t}var me=class{pos=0;source;tokens;constructor(e,t){this.source=e,this.tokens=t}parse(){let e=this.parseExpr(),t=this.peek();if(t.type!==`end`)throw this.error(t,`unexpected ${he(t)} after a complete expression.`,`Remove the trailing input, or join the parts with an operator (+ - * /).`);return e}peek(){return this.tokens[this.pos]}next(){let e=this.peek();return e.type!==`end`&&this.pos++,e}isPunct(e){let t=this.peek();return t.type===`punct`&&t.value===e}error(e,t,n){return new C(this.source,e.column,t,n)}expect(e,t){let n=this.peek();if(n.type===`punct`&&n.value===e){this.pos++;return}throw this.error(n,`expected "${e}" but found ${he(n)}.`,t)}parseExpr(){let e=this.parseTerm();for(;this.isPunct(`+`)||this.isPunct(`-`);)e={kind:`binary`,op:this.next().value,left:e,right:this.parseTerm()};return e}parseTerm(){let e=this.parseUnary();for(;this.isPunct(`*`)||this.isPunct(`/`);)e={kind:`binary`,op:this.next().value,left:e,right:this.parseUnary()};return e}parseUnary(){return this.isPunct(`-`)||this.isPunct(`+`)?{kind:`unary`,op:this.next().value,operand:this.parseUnary()}:this.parsePrimary()}parsePrimary(){let e=this.next();switch(e.type){case`number`:return{kind:`number`,value:e.value};case`ref`:return this.referenceNode(e.prefix,e.value);case`ident`:return this.isPunct(`(`)?this.parseCall(e):{kind:`member`,name:e.value};case`punct`:if(e.value===`(`){let e=this.parseExpr();return this.expect(`)`,`Add the missing closing parenthesis.`),e}throw this.error(e,`unexpected "${e.value}" where a value was expected.`,`Put a number, a reference, a function call or a parenthesized expression here.`);case`end`:throw this.error(e,`expression ended where a value was expected.`,`Complete the expression, e.g. remove the trailing operator.`);default:return e}}referenceNode(e,t){switch(e){case`param`:return{kind:`param`,name:t};case`port`:return{kind:`port`,name:t};default:return{kind:`previous`,name:t}}}parseCall(e){let t=e.value;if(!fe(t))throw this.error(e,`unknown function "${t}".`,`Supported functions: ${Object.keys(w).join(`, `)}. A member name cannot be followed by "(".`);this.next();let n=[this.parseExpr()];for(;this.isPunct(`,`);)this.next(),n.push(this.parseExpr());this.expect(`)`,`Close the ${t}(...) call with ")" and separate arguments with ",".`);let r=w[t];if(n.length<r.min||n.length>r.max)throw this.error(e,`${t}() called with ${n.length} argument${n.length===1?``:`s`}.`,`${r.usage}.`);return{kind:`call`,fn:t,args:n}}};function he(e){switch(e.type){case`number`:return`number ${e.value}`;case`ident`:return`name "${e.value}"`;case`ref`:return`reference "$${e.prefix}.${e.value}"`;case`punct`:return`"${e.value}"`;case`end`:return`end of expression`;default:return String(e)}}function O(e){return new me(e,pe(e)).parse()}function ge(e){let t=new Set,n=new Set,r=new Set,i=new Set,a=e=>{switch(e.kind){case`number`:return;case`member`:t.add(e.name);return;case`previous`:n.add(e.name);return;case`param`:r.add(e.name);return;case`port`:i.add(e.name);return;case`unary`:a(e.operand);return;case`binary`:a(e.left),a(e.right);return;case`call`:for(let t of e.args)a(t);return;default:}};return a(e),{members:t,previousMembers:n,params:r,ports:i}}var _e=`%.ACH.A.Hz.L.L/h.L/min.L/s.N.Pa.V.bar.cfm.count.count/m3.degC.h.kN.kVA.kW.kWh.m.m/s.m3.m3/h.min.mm.mm/min.mm/s.ppm.pu.rpm.s`.split(`.`),k=y(_e);new Set(_e);function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ve(e){if(typeof e==`string`)return f.exec(e)?.[1]}function ye(e){try{let t=ge(O(e)),n=[...t.members,...[...t.previousMembers].map(e=>`$prev.${e}`),...[...t.ports].map(e=>`$port.${e}`)];return n.length>0?`"${e}" references ${n.join(`, `)}, but coefficient fields are evaluated once per asset and may only use numbers and $param.X. Fix: use the "expression" generator for member, $prev or $port references, or replace them with $param.X.`:void 0}catch(e){if(e instanceof C)return`${e.message} Fix: ${e.fix}`;throw e}}function be(e,t,n){if(!A(e)||e.type!==`weighted-sum`)return;let r=e.terms;if(Array.isArray(r))for(let e=0;e<r.length;e++){let i=r[e];A(i)&&n(i,[...t,`terms`,e])}}function xe(e,t,n){if(!A(e))return;let r=[...t,`member`],i=[...t,`previous_member`],a=[...t,`param`],o=[...t,`port`],s=[...t,`generator`];typeof e.member==`string`&&n.onMember?.(e.member,r),typeof e.previous_member==`string`&&n.onPreviousMember?.(e.previous_member,i),typeof e.param==`string`&&n.onParam?.(e.param,a),typeof e.port==`string`&&n.onPort?.(e.port,o),`generator`in e&&n.onGenerator?.(e.generator,s)}function Se(e,t,n,r,i){return{onMember:e,onPreviousMember:t,onParam:n,onPort:r,onGenerator:i}}function Ce(e,t,n,r,i,a,o){xe(e,t,Se(n,r,i,a,o))}var j=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`;y([`float`,`int`,`string`,`bool`]);var we=s(`type`,[g({type:h(`float`),default:m().finite(),min:m().finite().optional(),max:m().finite().optional(),unit:k.optional()}),g({type:h(`int`),default:m().int().safe(),min:m().int().safe().optional(),max:m().int().safe().optional(),unit:k.optional()}),g({type:h(`string`),default:n(),unit:k.optional()}),g({type:h(`bool`),default:a(),unit:k.optional()})]),Te=g({default:m().finite(),unit:k.optional(),description:n().optional()}).strict(),M=x([g({member:n()}).strict(),g({previous_member:n()}).strict(),g({param:n()}).strict(),g({port:n()}).strict(),g({generator:o(()=>Ye)}).strict()]),N=n().superRefine((e,t)=>{let n=ye(e);n!==void 0&&t.addIssue({code:b.custom,message:n})}),P=x([m(),N]),Ee=x([m().finite(),N]),De={initial_value:P.default(0),gain:P.default(1),bias:P.default(0),min:m().nullable().default(null),max:m().nullable().default(null),input:M},F=g({type:h(`sine`),center:P,amplitude:m().positive(),period:m().positive()}).strict(),Oe=g({type:h(`random-walk`),min:m(),max:m(),step:m().positive()}).strict(),ke=g({type:h(`noise`),center:P,stddev:m().positive()}).strict(),Ae=g({type:h(`step`),values:p(m()).min(1),interval:m().positive()}).strict(),je=g({type:h(`correlated`),source:n().regex(u,j),factor:Ee,offset:Ee,power:m().int().positive().optional()}).strict(),Me=g({from:n(),to:n(),rate_per_hour:m().finite().nonnegative().optional(),on:n().optional()}).strict(),I=g({type:h(`state-machine`),states:p(n()).min(1),initial:n(),transitions:p(Me).min(1)}).strict();function L(e,t){let n=new Set(e.states);n.has(e.initial)||t.addIssue({code:b.custom,path:[`initial`],message:`State machine initial state "${e.initial}" is not in states. Fix: Set initial to one of: ${e.states.join(`, `)}.`});for(let r=0;r<e.transitions.length;r++){let i=e.transitions[r];i&&(n.has(i.from)||t.addIssue({code:b.custom,path:[`transitions`,r,`from`],message:`State machine transition from "${i.from}" references a state that is not in states. Fix: Add "${i.from}" to states or change transition.from to one of: ${e.states.join(`, `)}.`}),n.has(i.to)||t.addIssue({code:b.custom,path:[`transitions`,r,`to`],message:`State machine transition to "${i.to}" references a state that is not in states. Fix: Add "${i.to}" to states or change transition.to to one of: ${e.states.join(`, `)}.`}))}}I.superRefine(L);var Ne=g({type:h(`ramp`),start_value:m().default(0),rate:m(),duration:m().nonnegative(),start_time:m().default(0),min:m().nullable().default(null),max:m().nullable().default(null)}).strict(),R=g({type:h(`mean-reverting-noise`),mean:P,tau:m().positive(),sigma:m().positive(),initial_value:m().optional(),min:m().nullable().default(null),max:m().nullable().default(null)}).strict(),Pe=g({time:m().nonnegative(),value:m()}),z=g({type:h(`timetable`),points:p(Pe).min(2),repeat:a().default(!1),interpolation:y([`linear`,`step`]).default(`linear`)}).strict(),Fe=g({type:h(`waveform`),shape:y([`sawtooth`,`triangle`,`square`,`pulse`]),center:P,amplitude:m().positive(),period:m().positive(),duty_cycle:m().min(0).max(1).default(.5)}).strict(),Ie=g({type:h(`chirp`),center:P,amplitude:m().positive(),start_freq_hz:m().positive(),end_freq_hz:m().positive(),sweep_duration:m().positive(),sweep:y([`linear`,`exponential`]).default(`linear`),repeat:a().default(!0)}).strict(),B=g({type:h(`impulse`),baseline:m().default(0),amplitude:m(),rate_per_hour:m().finite().nonnegative().optional(),interval:m().positive().optional(),decay:m().min(0).max(1).optional(),duration_s:m().finite().positive().default(1)}).strict();function V(e,t){e.rate_per_hour===void 0&&e.interval===void 0&&t.addIssue({code:b.custom,path:[`rate_per_hour`],message:`Impulse generator requires either rate_per_hour or interval. Fix: Add rate_per_hour: 36 or interval: 60 (simulated seconds between triggers).`}),e.rate_per_hour!==void 0&&e.interval!==void 0&&t.addIssue({code:b.custom,path:[`interval`],message:`Impulse generator cannot have both rate_per_hour and interval. Fix: Remove one: use rate_per_hour for random triggers, or interval for periodic triggers.`})}B.superRefine(V);var Le=g({type:h(`first-order-lag`),tau:m().positive(),...De}).strict(),Re=g({type:h(`integrator`),initial_value:P.default(0),gain:P.default(1),bias_rate:m().default(0),min:m().default(-1/0),max:m().default(1/0),wrap:a().default(!1),wrap_at:m().nullable().default(null),input:M}).strict(),ze=g({type:h(`transport-delay`),delay:x([m().nonnegative(),N]),initial_value:m().optional(),interpolation:y([`linear`,`zoh`]).default(`linear`),input:M}).strict(),Be=g({type:h(`slew-rate-limiter`),rate_up:m().positive(),rate_down:m().positive().optional(),initial_value:P.default(0),min:m().nullable().default(null),max:m().nullable().default(null),input:M}).strict(),Ve=g({type:h(`second-order`),natural_freq_hz:m().positive(),damping_ratio:m().positive(),initial_velocity:m().default(0),...De,min:P.nullable().default(null),max:P.nullable().default(null)}).strict(),He=g({type:h(`hysteresis-relay`),on_threshold:P,off_threshold:P,output_on:x([m(),n()]).default(1),output_off:x([m(),n()]).default(0),initial_state:y([`on`,`off`]).default(`off`),mode:y([`rising`,`falling`]).default(`rising`),input:M}).strict(),Ue=g({weight:P.default(1),input:M}),We=g({type:h(`weighted-sum`),bias:P.default(0),terms:p(Ue).min(1),min:P.nullable().default(null),max:P.nullable().default(null)}).strict(),Ge=g({type:h(`expression`),expression:n().min(1),min:P.nullable().default(null),max:P.nullable().default(null)}).strict();function Ke(e,t){try{O(e.expression)}catch(e){if(!(e instanceof C))throw e;t.addIssue({code:b.custom,path:[`expression`],message:`${e.message} Fix: ${e.fix}`})}}var qe=g({type:h(`gate`),enabled_member:n().regex(u,j),input:M,disabled_value:x([m(),n(),a()])}).strict(),Je=s(`type`,[F,Oe,ke,Ae,je,I,Ne,R,z,Fe,Ie,B]).superRefine((e,t)=>{e.type===`state-machine`&&L(e,t),e.type===`impulse`&&V(e,t)}),Ye=s(`type`,[F,Oe,ke,Ae,je,I,Ne,R,z,Fe,Ie,B,g({type:h(`health-dependent`),stages:l(n(),Je)}).strict(),Le,Re,ze,Be,Ve,He,We,Ge,qe]).superRefine((e,t)=>{e.type===`state-machine`&&L(e,t),e.type===`impulse`&&V(e,t),e.type===`expression`&&Ke(e,t)}),Xe=g({multiplier:m().finite().optional(),offset:m().finite().optional()}).strict(),Ze=g({scrap_rate_add:m().finite().nonnegative().optional(),name:n().min(1),duration_hours:_([m().nonnegative(),m().nonnegative()]).refine(([e,t])=>e<=t,{message:`duration_hours max must be greater than or equal to min.`}),effects:l(n(),Xe)}),Qe=g({interval_hours:m().finite().positive(),restores_to:n().optional()}).strict(),$e=g({running_member:n().optional(),stages:p(Ze).min(1),maintenance:Qe.optional()}).superRefine((e,t)=>{let n=new Set;for(let r=0;r<e.stages.length;r++){let i=e.stages[r];i&&(n.has(i.name)&&t.addIssue({code:b.custom,path:[`stages`,r,`name`],message:`Lifecycle stage names must be unique. Duplicate "${i.name}". Fix: Rename one stage so each lifecycle stage has a unique name.`}),n.add(i.name))}let r=e.maintenance?.restores_to;r!==void 0&&!n.has(r)&&t.addIssue({code:b.custom,path:[`maintenance`,`restores_to`],message:`Lifecycle maintenance restores_to "${r}" is not a lifecycle stage. Fix: use one of [${[...n].join(`, `)}].`})}),et=g({multiplier:m().finite().optional(),offset:m().finite().optional(),spike:m().finite().optional(),quality:y([`uncertain`,`bad`]).optional(),duration_s:m().finite().positive().optional(),onset_s:m().finite().positive().optional(),recovery_s:m().finite().positive().optional()}).strict(),tt=g({condition:n().optional(),lifecycle_stage:n().optional(),rate_per_hour:m().finite().nonnegative()}).strict(),nt=g({duration_s:m().finite().positive(),effects:l(n(),g({multiplier:m().finite().optional(),offset:m().finite().optional()}).strict()).refine(e=>Object.keys(e).length>0,{message:`Precursor effects must target at least one member.`})}).strict(),rt=g({production_effect:x([h(`stop`),g({derate:m().finite().positive().max(1)}).strict(),g({scrap:m().finite().min(0).max(1)}).strict()]).optional(),name:n().regex(u,j),trigger:tt,effects:l(n(),x([et,n()])),precursor:nt.optional()}).strict();g({path:n().min(1),name:n().min(1),description:n().optional(),memberCount:m().int().nonnegative(),methodCount:m().int().nonnegative(),faultCount:m().int().nonnegative(),hasLifecycle:a(),lifecycleStageCount:m().int().nonnegative()}),g({path:n().min(1),id:n().min(1),name:n().min(1),description:n().optional(),areaCount:m().int().nonnegative(),assetAssignmentCount:m().int().nonnegative(),uniqueModelCount:m().int().nonnegative(),modelNames:p(n().min(1)),totalAssetCount:m().int().nonnegative()});var it=g({severity:y([`error`,`warning`]),message:n(),fix:n(),file:n().optional(),line:m().int().positive().optional()});g({valid:a(),templatePath:n(),issues:p(it)});var at=n().min(1).max(128).regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/),H=y([`Boolean`,`Int32`,`UInt16`,`UInt32`,`Double`,`Float`,`String`]);y([`variable`,`property`]);var ot=y([`read`,`readwrite`,`write`]),st=y([`>`,`>=`,`<`,`<=`,`==`,`!=`]),ct=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`,lt=s(`type`,[g({type:h(`threshold`),member:n().regex(u,ct),operator:st,threshold:m().finite()}).strict(),g({type:h(`lifecycle-stage`)}).strict(),g({type:h(`health-state`)}).strict(),g({type:h(`fault-active`)}).strict(),g({type:h(`fault-count`)}).strict(),g({type:h(`active-fault-code`),fallback:n().default(``)}).strict(),g({type:h(`availability-state`),member:n().regex(u,ct),operator:st.default(`>`),threshold:m().finite().default(0),running_state:n().default(`running`),stopped_state:n().default(`stopped`),faulted_state:n().default(`faulted`)}).strict()]),U=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`,W=p(n().min(1)).min(1),ut=g({data_type:H,unit:k.optional(),description:n().optional(),enum_values:W.optional()}).strict(),dt=x([g({member:n().regex(u,U),value:x([m(),n(),a()])}).strict(),g({member:n().regex(u,U),argument:n().regex(u,U)}).strict()]),ft=g({type:h(`set-members`),writes:p(dt).min(1)}).strict(),pt=x([g({parameter:n().regex(u,U),value:m().finite()}).strict(),g({parameter:n().regex(u,U),argument:n().regex(u,U)}).strict()]),mt=s(`type`,[ft,g({type:h(`set-parameters`),writes:p(pt).min(1)}).strict(),g({type:h(`clear-faults`)}).strict(),g({type:h(`reset-lifecycle`),stage:n().min(1).optional(),clear_faults:a().optional()}).strict()]),ht=g({description:n().optional(),input_arguments:l(n().regex(u,U),ut).optional(),output_arguments:l(n().regex(u,U),ut).optional(),runtime:mt.optional()}).strict(),gt=l(n().regex(u,U),ht);function G(e){return e===`Double`||e===`Float`||e===`Int32`||e===`UInt16`||e===`UInt32`}function _t(e){return e===`Int32`||e===`UInt16`||e===`UInt32`}function K(e,t){switch(t){case`Boolean`:return typeof e==`boolean`;case`String`:return typeof e==`string`;case`Double`:case`Float`:return typeof e==`number`&&Number.isFinite(e);case`Int32`:return typeof e==`number`&&Number.isSafeInteger(e)&&e>=-2147483648&&e<=2147483647;case`UInt16`:return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0&&e<=65535;case`UInt32`:return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0&&e<=4294967295;default:return!1}}function vt(e,t,n){e.unit!==void 0&&(e.data_type===`Boolean`||e.data_type===`String`)&&t.addIssue({code:b.custom,path:[...n,`unit`],message:`Members with data_type "${e.data_type}" must not declare engineering units. Fix: remove the unit or use a numeric data_type.`}),e.enum_values&&e.data_type!==`String`&&t.addIssue({code:b.custom,path:[...n,`enum_values`],message:`enum_values is only valid for String members. Fix: remove enum_values or change data_type to "String".`})}function q(e,t,n,r,i){if(A(e)&&typeof e.type==`string`)switch(e.type){case`correlated`:typeof e.source==`string`&&n.push({member:e.source,path:[...t,`source`],previousTick:!1}),Y(e.factor,[...t,`factor`],r),Y(e.offset,[...t,`offset`],r);return;case`sine`:case`noise`:case`waveform`:case`chirp`:Y(e.center,[...t,`center`],r);return;case`mean-reverting-noise`:Y(e.mean,[...t,`mean`],r);return;case`second-order`:Y(e.initial_value,[...t,`initial_value`],r),Y(e.min,[...t,`min`],r),Y(e.max,[...t,`max`],r),Y(e.gain,[...t,`gain`],r),Y(e.bias,[...t,`bias`],r),J(e.input,[...t,`input`],n,r,i);return;case`first-order-lag`:Y(e.initial_value,[...t,`initial_value`],r),Y(e.gain,[...t,`gain`],r),Y(e.bias,[...t,`bias`],r),J(e.input,[...t,`input`],n,r,i);return;case`transport-delay`:Y(e.delay,[...t,`delay`],r),J(e.input,[...t,`input`],n,r,i);return;case`integrator`:Y(e.initial_value,[...t,`initial_value`],r),Y(e.gain,[...t,`gain`],r),J(e.input,[...t,`input`],n,r,i);return;case`slew-rate-limiter`:Y(e.initial_value,[...t,`initial_value`],r),J(e.input,[...t,`input`],n,r,i);return;case`hysteresis-relay`:Y(e.on_threshold,[...t,`on_threshold`],r),Y(e.off_threshold,[...t,`off_threshold`],r),J(e.input,[...t,`input`],n,r,i);return;case`weighted-sum`:Y(e.bias,[...t,`bias`],r),Y(e.min,[...t,`min`],r),Y(e.max,[...t,`max`],r),be(e,t,(e,t)=>{Y(e.weight,[...t,`weight`],r),J(e.input,[...t,`input`],n,r,i)});return;case`expression`:{Y(e.min,[...t,`min`],r),Y(e.max,[...t,`max`],r);let a=typeof e.expression==`string`?yt(e.expression):void 0;if(!a)return;let o=[...t,`expression`];for(let e of a.members)n.push({member:e,path:o,previousTick:!1});for(let e of a.previousMembers)n.push({member:e,path:o,previousTick:!0});for(let e of a.params)r.push({param:e,path:o});for(let e of a.ports)i.push({port:e,path:o});return}case`gate`:n.push({member:String(e.enabled_member),path:[...t,`enabled_member`],previousTick:!1}),J(e.input,[...t,`input`],n,r,i);return;case`health-dependent`:{let a=e.stages;if(!A(a))return;for(let[e,o]of Object.entries(a))q(o,[...t,`stages`,e],n,r,i);return}default:return}}function J(e,t,n,r,i){Ce(e,t,(e,t)=>n.push({member:e,path:t,previousTick:!1}),(e,t)=>n.push({member:e,path:t,previousTick:!0}),(e,t)=>r.push({param:e,path:t}),(e,t)=>i.push({port:e,path:t}),(e,t)=>q(e,t,n,r,i))}function Y(e,t,n){if(typeof e!=`string`)return;let r=yt(e);if(r)for(let e of r.params)n.push({param:e,path:t})}function yt(e){try{return ge(O(e))}catch(e){if(e instanceof C)return;throw e}}function bt(e,t,n){if(!A(e))return;let r=e.type;(r===`threshold`||r===`availability-state`)&&typeof e.member==`string`&&n.push({member:e.member,path:[...t,`member`],previousTick:!1})}function X(e,t,n){if(!A(e))return;let r=e.type;if(typeof r!=`string`)return;if(r===`integrator`&&e.wrap===!0&&(typeof e.wrap_at!=`number`||!Number.isFinite(e.wrap_at)||e.wrap_at<=0)&&n.addIssue({code:b.custom,path:[...t,`wrap_at`],message:`wrap_at must be a finite number greater than 0 when wrap is true. Fix: Set wrap_at to a positive number, or set wrap to false.`}),r===`health-dependent`){let r=e.stages;if(A(r))for(let[e,i]of Object.entries(r))X(i,[...t,`stages`,e],n)}function i(e,t){!A(e)||!(`generator`in e)||X(e.generator,[...t,`generator`],n)}i(e.input,[...t,`input`]),be(e,t,(e,t)=>{i(e.input,[...t,`input`])})}function xt(e){switch(e){case`Boolean`:return!1;case`String`:return``;case`Double`:case`Float`:case`Int32`:case`UInt16`:case`UInt32`:return 0;default:return 0}}var St=p(s(`type`,[g({type:h(`white_noise`),strength:m().min(0).max(1),scale:m().positive().optional()}).strict(),g({type:h(`drift`),tau:m().positive(),sigma:m().min(0).max(1),scale:m().positive().optional()}).strict(),g({type:h(`outlier`),probability:m().min(0).max(1),magnitude:m().positive(),scale:m().positive().optional()}).strict(),g({type:h(`gap`),probability:m().min(0).max(1),duration:m().int().positive().default(10)}).strict(),g({type:h(`noise_burst`),probability:m().min(0).max(1),duration:m().int().positive().default(5),strength:m().min(0).max(1),scale:m().positive().optional()}).strict(),g({type:h(`quantize`),resolution:m().positive().optional(),bits:m().int().min(8).max(24).optional()}).strict(),g({type:h(`deadband`),absolute:m().positive().optional(),percent:m().positive().max(100).optional()}).strict(),g({type:h(`stuck`),probability:m().min(0).max(1),duration_s:x([m().positive(),_([m().positive(),m().positive()])]),quality:y([`good`,`uncertain`]).default(`good`)}).strict()])).min(1).optional(),Ct={white_noise:0,drift:0,outlier:0,noise_burst:0,quantize:1,deadband:2,stuck:2};function wt(e,t,n){let r=[],i=0,a=``;return e.forEach((e,o)=>{let s=e=>{r.push({index:o,message:e})};e.type===`quantize`?(e.resolution===void 0==(e.bits===void 0)&&s(`Member "${n}" quantize needs exactly one of resolution or bits. Fix: use "quantize: { resolution: 0.1 }" or "quantize: { bits: 12 }".`),e.bits!==void 0&&!t&&s(`Member "${n}" quantize uses bits but has no eu_range. Fix: add eu_range: [min, max] to the member, or use resolution: <number>.`)):e.type===`deadband`?(e.absolute===void 0==(e.percent===void 0)&&s(`Member "${n}" deadband needs exactly one of absolute or percent. Fix: use "deadband: { absolute: 0.5 }" or "deadband: { percent: 1 }".`),e.percent!==void 0&&!t&&s(`Member "${n}" deadband uses percent but has no eu_range. Fix: add eu_range: [min, max] to the member, or use absolute: <number>.`)):e.type===`stuck`&&Array.isArray(e.duration_s)&&e.duration_s[0]>e.duration_s[1]&&s(`Member "${n}" stuck duration_s [${e.duration_s[0]}, ${e.duration_s[1]}] has min > max. Fix: swap the values.`);let c=Ct[e.type];c!==void 0&&(c<i?s(`Member "${n}" declares "${e.type}" after "${a}". Fix: order effects as white_noise/drift/outlier/noise_burst, then quantize, then deadband/stuck.`):c>i&&(i=c,a=e.type))}),r}var Z=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`,Tt=new Set([`enterprise`,`site`,`area`,`line`,`prefix`]),Et=n().regex(f,`Must be a $param.X parameter reference`),Dt=x([m(),n(),a()]),Ot=g({name:n().regex(u,Z),description:n().optional(),namespace:n().optional()}).strict(),kt=s(`kind`,[g({kind:h(`variable`),data_type:H,access:ot,unit:k.optional(),enum_values:W.optional(),eu_range:_([m(),m()]).refine(([e,t])=>e<=t,{message:`eu_range[0] (min) must be <= eu_range[1] (max).`}).optional(),generator:Ye.optional(),binding:lt.optional(),default:Dt.optional(),observation_effects:St}).strict(),g({kind:h(`property`),data_type:H,access:ot,unit:k.optional(),enum_values:W.optional(),default:x([Dt,Et]).optional()}).strict()]);function At(e){return l(n().regex(u,Z),kt).refine(e=>Object.keys(e).length>=1,{message:`Members map must have at least 1 member.`}).refine(t=>Object.keys(t).length<=e,{message:`Members map must have at most ${e} members.`}).refine(e=>!Object.keys(e).some(e=>Tt.has(e)),{message:`Member names cannot use reserved env keys: enterprise/site/area/line/prefix`})}function jt(e={}){let t=At(e.maxMembersPerModel??1e3);return g({schema_version:h(`2`),model:Ot,parameters:l(n(),we).optional(),inputs:l(n().regex(u,Z),Te).optional(),members:t,methods:gt.optional(),lifecycle:$e.optional(),faults:p(rt).optional()}).strict().superRefine((e,t)=>{let n=Object.keys(e.members),r=new Map;for(let e=0;e<n.length;e++){let t=n[e];t!==void 0&&r.set(t,e)}let i=e.lifecycle?.running_member;i!==void 0&&e.members[i]?.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`lifecycle`,`running_member`],message:`Lifecycle running_member "${i}" must name a Boolean member of this model. Fix: define that Boolean member or change running_member.`});let a=new Set(Object.keys(e.parameters??{})),o=new Set(Object.entries(e.parameters??{}).filter(([,e])=>e.type===`float`||e.type===`int`).map(([e])=>e)),s=new Set(Object.keys(e.inputs??{}));for(let e of s){let n;if(r.has(e))n=`member`;else if(a.has(e))n=`parameter`;else continue;t.addIssue({code:b.custom,path:[`inputs`,e],message:`Input port "${e}" has the same name as a ${n}. Fix: Rename the port (for example "${e}_in") so port, member and parameter names stay distinct.`})}for(let i=0;i<n.length;i++){let c=n[i];if(c===void 0)continue;let l=e.members[c];if(!l||(vt(l,t,[`members`,c]),l.kind===`variable`&&l.generator!==void 0&&l.binding!==void 0&&t.addIssue({code:b.custom,path:[`members`,c,`binding`],message:`Variable members cannot define both "generator" and "binding". Fix: keep one source of value generation.`}),l.kind===`variable`&&l.binding!==void 0&&l.access!==`read`&&t.addIssue({code:b.custom,path:[`members`,c,`access`],message:`Variable members with a "binding" must use access "read". Fix: change access to "read" or remove the binding.`}),l.kind!==`variable`||!l.generator&&!l.binding))continue;let u=[],d=[],f=[],p=[`members`,c,`generator`];if(l.generator&&q(l.generator,p,u,d,f),l.binding&&bt(l.binding,[`members`,c,`binding`],u),l.generator&&(X(l.generator,p,t),l.generator.type===`gate`)){let n=e.members[l.generator.enabled_member];n&&n.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`members`,c,`generator`,`enabled_member`],message:`Gate generator for "${c}" references "${l.generator.enabled_member}", but "${l.generator.enabled_member}" is not Boolean. Fix: use a Boolean command/state member for enabled_member.`}),K(l.generator.disabled_value,l.data_type)||t.addIssue({code:b.custom,path:[`members`,c,`generator`,`disabled_value`],message:`Gate generator disabled_value for "${c}" does not match data_type "${l.data_type}". Fix: use a compatible disabled_value literal.`})}for(let e of u){let n=r.get(e.member);if(n===void 0){t.addIssue({code:b.custom,path:[...e.path],message:`Member "${c}" references member "${e.member}", but "${e.member}" is not defined. Fix: Define "${e.member}" in members, or change the reference to a parameter.`});continue}!e.previousTick&&n>=i&&t.addIssue({code:b.custom,path:[...e.path],message:`Member "${c}" references member "${e.member}" which is defined later (or is itself). Members are evaluated in declaration order. Fix: Move "${e.member}" above "${c}".`})}for(let e of f)s.has(e.port)||t.addIssue({code:b.custom,path:[...e.path],message:`Member "${c}" reads input port "${e.port}", but "${e.port}" is not declared. Fix: Declare it under inputs (for example inputs: { ${e.port}: { default: 0 } }), or use { member: ... } / { param: ... }.`});for(let n of d)a.has(n.param)?o.has(n.param)||t.addIssue({code:b.custom,path:[...n.path],message:`Member "${c}" references parameter "${n.param}" in a numeric position, but "${n.param}" has type "${e.parameters?.[n.param]?.type}". Only float and int parameters can be used as generator coefficients or inputs. Fix: Change "${n.param}" to type "float" or "int".`}):t.addIssue({code:b.custom,path:[...n.path],message:`Member "${c}" references parameter "${n.param}", but "${n.param}" is not defined. Fix: Define "${n.param}" under parameters, or replace "$param.${n.param}" with a literal value.`});if(l.binding)switch(l.binding.type){case`threshold`:l.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "threshold" must use data_type "Boolean". Fix: change data_type to "Boolean".`}),Mt(c,l.binding.member,e,t,[`members`,c,`binding`,`member`]);break;case`availability-state`:l.data_type!==`String`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "availability-state" must use data_type "String". Fix: change data_type to "String".`}),Mt(c,l.binding.member,e,t,[`members`,c,`binding`,`member`]);break;case`lifecycle-stage`:case`health-state`:case`active-fault-code`:l.data_type!==`String`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "${l.binding.type}" must use data_type "String". Fix: change data_type to "String".`});break;case`fault-active`:l.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "fault-active" must use data_type "Boolean". Fix: change data_type to "Boolean".`});break;case`fault-count`:l.data_type!==`Int32`&&l.data_type!==`UInt16`&&l.data_type!==`UInt32`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "fault-count" must use an integer data_type (Int32, UInt16, or UInt32). Fix: change data_type to an integer type.`});break;default:l.binding}if(l.kind===`variable`&&l.observation_effects){G(l.data_type)||t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`],message:`Observation effects on "${c}" require a numeric data_type (Double, Float, Int32, UInt16, or UInt32). Member has data_type "${l.data_type}", which cannot be degraded by noise, gaps, or drift. Fix: remove observation_effects, or change data_type to a numeric type.`}),l.access!==`read`&&t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`],message:`Observation effects on "${c}" require access "read". Observation effects corrupt values — they must not be applied to command targets or setpoints. Fix: change access to "read" or remove observation_effects.`});for(let e=0;e<l.observation_effects.length;e++){let n=l.observation_effects[e];n&&(n.type===`white_noise`||n.type===`drift`||n.type===`outlier`||n.type===`noise_burst`)&&!(`scale`in n&&n.scale!==void 0)&&!l.eu_range&&t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`,e],message:`Member "${c}" uses relative observation effect "${n.type}" but has no eu_range and no explicit scale. Fix: add eu_range: [min, max] to the member, or add scale: <number> to the effect.`})}for(let e of wt(l.observation_effects,l.eu_range,c))t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`,e.index],message:e.message})}}function c(n,i,a){if(!r.has(n)){t.addIssue({code:b.custom,path:[...i],message:`${a} has effect on "${n}", but "${n}" is not a defined member. Fix: Change "${n}" to a valid member name.`});return}let o=e.members[n];o&&o.kind!==`variable`&&t.addIssue({code:b.custom,path:[...i],message:`${a} has effect on "${n}", but "${n}" is a property (kind: "property"). Effects can only target variable members.`})}if(e.lifecycle){let t=[`lifecycle`,`stages`];for(let n of e.lifecycle.stages)for(let e of Object.keys(n.effects))c(e,t,`Lifecycle stage "${n.name}"`)}if(e.faults){let n=new Set;for(let r=0;r<e.faults.length;r++){let i=e.faults[r];if(!i)continue;n.has(i.name)&&t.addIssue({code:b.custom,path:[`faults`,r,`name`],message:`Fault names must be unique. Duplicate "${i.name}". Fix: Rename one fault so each fault has a unique name.`}),n.add(i.name);let a=[`faults`,r,`effects`];for(let e of Object.keys(i.effects))c(e,a,`Fault "${i.name}"`);for(let e of Object.keys(i.precursor?.effects??{}))c(e,[`faults`,r,`precursor`,`effects`],`Fault "${i.name}" precursor`)}}for(let r of n){let n=e.members[r];if(!n||n.kind!==`property`||typeof n.default!=`string`)continue;let i=ve(n.default);i!==void 0&&!a.has(i)&&t.addIssue({code:b.custom,path:[`members`,r,`default`],message:`Property "${r}" default references parameter "${i}", but "${i}" is not defined. Fix: Define "${i}" under parameters, or use a literal value.`})}if(e.methods)for(let[n,r]of Object.entries(e.methods))Nt(n,r.input_arguments,t,[`methods`,n,`input_arguments`]),Nt(n,r.output_arguments,t,[`methods`,n,`output_arguments`]),Pt(n,r,e,t,[`methods`,n,`runtime`])})}function Mt(e,t,n,r,i){let a=n.members[t];a&&(G(a.data_type)||r.addIssue({code:b.custom,path:[...i],message:`Member "${e}" binding references "${t}", but "${t}" is not numeric. Fix: bind to a numeric member or change the source member data_type.`}))}function Nt(e,t,n,r){if(t)for(let[i,a]of Object.entries(t))a.unit!==void 0&&(a.data_type===`Boolean`||a.data_type===`String`)&&n.addIssue({code:b.custom,path:[...r,i,`unit`],message:`Method "${e}" argument "${i}" uses data_type "${a.data_type}" and must not declare an engineering unit. Fix: remove the unit or use a numeric data_type.`}),a.enum_values&&a.data_type!==`String`&&n.addIssue({code:b.custom,path:[...r,i,`enum_values`],message:`Method "${e}" argument "${i}" can only use enum_values with data_type "String". Fix: remove enum_values or change the data_type.`})}function Pt(e,t,n,r,i){let a=t.runtime;if(a)switch(a.type){case`clear-faults`:return;case`reset-lifecycle`:{if(!n.lifecycle){r.addIssue({code:b.custom,path:[...i],message:`Method "${e}" uses runtime "reset-lifecycle" but the model has no lifecycle. Fix: add a lifecycle block or remove the method.`});return}let t=n.lifecycle.stages.map(e=>e.name);a.stage!==void 0&&!t.includes(a.stage)&&r.addIssue({code:b.custom,path:[...i,`stage`],message:`Method "${e}" stage "${a.stage}" is not a lifecycle stage. Fix: use one of [${t.join(`, `)}].`});return}case`set-parameters`:for(let o=0;o<a.writes.length;o++){let s=a.writes[o];if(!s)continue;let c=[...i,`writes`,o],l=n.parameters?.[s.parameter];if(!l){r.addIssue({code:b.custom,path:[...c,`parameter`],message:`Method "${e}" runtime targets parameter "${s.parameter}", but "${s.parameter}" is not defined. Fix: target a declared parameter.`});continue}if(l.type!==`float`&&l.type!==`int`){r.addIssue({code:b.custom,path:[...c,`parameter`],message:`Method "${e}" runtime targets parameter "${s.parameter}" of type "${l.type}". Fix: use set-parameters only with float or int parameters.`});continue}if(`argument`in s){let n=t.input_arguments?.[s.argument];if(!n){r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime references input argument "${s.argument}", but that argument is not defined. Fix: declare the input argument or use a literal value.`});continue}G(n.data_type)||r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" must be numeric to write parameter "${s.parameter}". Fix: use Double, Float, Int32, UInt16, or UInt32.`}),l.type===`int`&&!_t(n.data_type)&&r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" uses data_type "${n.data_type}" but parameter "${s.parameter}" is type "int". Fix: use Int32, UInt16, or UInt32 so runtime writes stay integer-safe.`});continue}l.type===`int`&&!Number.isSafeInteger(s.value)&&r.addIssue({code:b.custom,path:[...c,`value`],message:`Method "${e}" runtime literal for integer parameter "${s.parameter}" must be a safe integer. Fix: use a whole-number literal.`})}return;case`set-members`:for(let o=0;o<a.writes.length;o++){let s=a.writes[o];if(!s)continue;let c=[...i,`writes`,o],l=n.members[s.member];if(!l){r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets member "${s.member}", but "${s.member}" is not defined. Fix: target a declared member.`});continue}if(l.kind!==`variable`&&r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets "${s.member}", but "${s.member}" is a property. Fix: target a writable variable member.`}),l.access!==`readwrite`&&l.access!==`write`&&r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets "${s.member}", but "${s.member}" is not writable. Fix: set access to "readwrite" or "write".`}),l.kind===`variable`&&l.binding&&r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets "${s.member}", but bound members are computed at runtime. Fix: write to a command/setpoint member without a binding.`}),`argument`in s){let n=t.input_arguments?.[s.argument];if(!n){r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime references input argument "${s.argument}", but that argument is not defined. Fix: declare the input argument or use a literal value.`});continue}if(K(xt(n.data_type),l.data_type)||r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" uses data_type "${n.data_type}" which does not match target member "${s.member}" data_type "${l.data_type}". Fix: align the argument and target member data types.`}),n.enum_values&&l.enum_values){let t=n.enum_values.filter(e=>!l.enum_values?.includes(e));t.length>0&&r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" allows values [${t.join(`, `)}] that are not valid for target member "${s.member}". Fix: align enum_values between the argument and target member.`})}continue}K(s.value,l.data_type)||r.addIssue({code:b.custom,path:[...c,`value`],message:`Method "${e}" runtime literal for "${s.member}" does not match data_type "${l.data_type}". Fix: use a compatible literal value.`}),l.enum_values&&typeof s.value==`string`&&!l.enum_values.includes(s.value)&&r.addIssue({code:b.custom,path:[...c,`value`],message:`Method "${e}" runtime literal "${s.value}" is not allowed for member "${s.member}". Fix: use one of [${l.enum_values.join(`, `)}].`})}return;default:}}jt();var Ft=x([m().finite(),n(),a()]),It=n().regex(/^[a-f0-9]{64}$/),Lt=g({id:n().min(1),model:n().min(1),browsePath:p(n().min(1)).min(1),parameters:l(n(),Ft),lifecycleStage:n().min(1),operatingHours:m().finite().nonnegative(),activeFaults:p(n().min(1)),templateId:n().min(1).optional(),protocolScope:p(c).min(1).optional(),inputBindings:l(n(),i).optional(),observationState:l(n(),l(n(),re())).optional().default({}),lifecycleState:g({stageStartHours:m().finite().nonnegative().optional(),lastMaintenanceHours:m().finite().nonnegative().optional()}).optional(),faultState:l(n(),g({remaining:m().finite(),pendingSample:a(),elapsed:m().finite(),recovering:a(),recoveryElapsed:m().finite(),recoverySeconds:m().finite(),precursor:a().optional(),precursorElapsed:m().finite().optional()})).optional().default({})}),Rt=g({templateId:n().min(1),templateName:n().min(1),templatePath:n().min(1),entryHash:It,idFloors:l(n(),m().int().nonnegative()).default({})}),zt=g({name:n().min(1),enabled:a(),config:l(n(),re()),secretPaths:p(p(n())).optional()});g({version:h(3),savedAt:n().min(1),factoryName:at,models:p(n().min(1)),assets:p(Lt),templates:p(Rt),adapters:p(zt).default([]).refine(e=>new Set(e.map(e=>e.name)).size===e.length,{message:`Duplicate adapter names. Keep one entry per adapter name in 'adapters', or delete the state file to start fresh.`})});var Bt=`group relative border border-solid border-border transition-colors hover:border-muted-foreground/25`,Vt=`group relative border border-solid border-border`,Ht=`blueprint-card ${Bt} overflow-hidden rounded-[var(--miravo-radius-stadium-sm)]`,Ut=`${Vt} w-full min-w-0 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] bg-transparent`,Wt=`${Vt} w-full min-w-0 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] bg-transparent`,Gt=`blueprint-card catalog-card-frame group relative border border-solid overflow-hidden rounded-[var(--miravo-radius-stadium-sm)]`,Kt=Gt,qt=`border-border bg-muted/40 text-primary shadow-none hover:border-muted-foreground/30 hover:bg-muted/60 hover:text-primary focus-visible:border-ring border-border bg-muted/30 hover:border-muted-foreground/35 hover:bg-muted/45 [&_svg]:text-primary`,Q=e(t(),1),Jt=new Set([`spawn`,`removeAsset`,`loadTemplate`,`unloadTemplate`,`resetFactory`,`enableAdapter`,`disableAdapter`]);function Yt(e,t){let n=e.type===`spawn`&&Array.isArray(t.data)?ae(t.data):void 0;S.success(t.message,n?{description:`Created ${n}`}:void 0)}function $(e){if(e instanceof ce){S.error(`Command not sent`,{description:e.detail});return}if(e instanceof ne){S.error(e.result.message,{description:e.result.error});return}if(r.is(e)){S.error(e.message,{description:e.hint});return}if(e instanceof TypeError){if(typeof navigator<`u`&&navigator.onLine===!1){S.error(`Command not sent`,{description:`This browser is offline — reconnect to the network and try again.`});return}let{connectionState:e}=v.getState(),t=se(e);if(t){S.error(`Command not sent`,{description:t});return}S.error(`Command failed`,{description:`Could not reach the Miravo server — it may have stopped or restarted.`});return}S.error(`Command failed`,{description:e instanceof Error?e.message:`Unknown error.`})}async function Xt(){try{let e=await ee();ie.setQueryData([`bootstrap`],e),e.authenticated?v.getState().replaceRuntime(e.runtime,{allowSameRevision:!0,allowRevisionRewind:!0}):v.getState().markUnauthenticated()}catch{}finally{ie.invalidateQueries({queryKey:[`bootstrap`]})}}function Zt(){let[e,t]=(0,Q.useState)(!1);return{mutate:(0,Q.useCallback)(e=>{try{oe(v.getState().connectionState)}catch(e){$(e);return}t(!0),te(e).then(t=>{if(Yt(e,t),Jt.has(e.type))return Xt()}).catch($).finally(()=>{t(!1)})},[]),mutateAsync:(0,Q.useCallback)(async e=>{try{oe(v.getState().connectionState)}catch(e){throw $(e),e}t(!0);try{let t=await te(e);return Yt(e,t),Jt.has(e.type)&&await Xt(),t}catch(e){throw $(e),e}finally{t(!1)}},[]),isPending:e}}export{Ht as a,qt as i,Wt as n,Gt as o,Ut as r,Kt as s,Zt as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/factory-CT2VYi0n.js","assets/factory-DSrBtcG2.js","assets/rolldown-runtime-COnpUsM8.js","assets/chunk-OE4NN4TA-Q4iNR9l9.js","assets/vendor-charts-95ykyDlI.js","assets/api-kPM52mb-.js","assets/vendor-ui-D8j69UH4.js","assets/query-fetch-error-C2Ec4RQS.js","assets/format-OUFL_tef.js","assets/utils-BO2u-wC_.js","assets/AnimatePresence-BZCmb1bq.js","assets/badge-D4jktT8T.js","assets/activity-Cn48I9qe.js","assets/server-CS2Tw__K.js","assets/local-flag-CPAqDO-L.js","assets/catalog-template-icons-C7KJdJJX.js","assets/chevron-down-CAk5w9Wt.js","assets/chevron-right-BfZjrUWh.js","assets/copy-button-DHm7RGJ5.js","assets/dialog-Di9Bs0FH.js","assets/tabs-bI9sskHy.js","assets/export-tab-ouFgYEU_.js","assets/download-B9e1wNK4.js","assets/source-host-miravo-D_AecPVc.js","assets/label-DWyy9MeT.js","assets/use-engine-command-mutation-DMkQxmt9.js","assets/runtime-link-ChF8TM68.js","assets/get-error-message-eGdenTLv.js","assets/circle-x-CGcRflg7.js","assets/integration-api-Bg7D1eQc.js","assets/protocol-card-B2SpAJKe.js","assets/radio-DRkzblxj.js","assets/triangle-alert-D1AraFcP.js","assets/transition-nav-link-cn4KZD6W.js","assets/plus-BbVbvFTe.js","assets/rocket-807Pf7C1.js","assets/trash-2-BJ-1df0F.js","assets/dist-CtuJWBnP.js","assets/combobox-BFEY6lgO.js","assets/checkbox-AaJhjtZk.js","assets/select-Bg6PPro0.js","assets/select-display-items-D-L3PesO.js","assets/integration-targets-BehiqWyT.js","assets/transition-types-049V0Kr0.js","assets/catalog-DN-klsod.js","assets/catalog-M-k7Y9Sp.js","assets/play-TTg_EXSa.js","assets/catalog-source-2aT9qob-.js","assets/models-CrDBHBV5.js","assets/models-jBVcY8Xd.js","assets/events-DmftG8n5.js","assets/events-D19CzgoQ.js","assets/auth-screen-backdrop-hcEYy3K4.js","assets/control-DHa2-a2v.js","assets/control-CD9UoTvu.js","assets/validation-q38DYDwu.js","assets/tags-B7e7VYVW.js","assets/tags-DJJKQRZZ.js","assets/vendor-table-Br-cHaxY.js","assets/integrations-DWW9HjH0.js","assets/integrations-DoXNrzD5.js","assets/asset-detail-tmOrYE8x.js","assets/login-BZKYK0yZ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{c as n,d as r}from"./chunk-OE4NN4TA-Q4iNR9l9.js";var i=e(t(),1),a=[{test:e=>e===`/`,load:()=>r(()=>import(`./factory-CT2VYi0n.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]))},{test:e=>e===`/catalog`,load:()=>r(()=>import(`./catalog-DN-klsod.js`),__vite__mapDeps([44,45,2,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,26,27,46,35,47]))},{test:e=>e===`/models`,load:()=>r(()=>import(`./models-CrDBHBV5.js`),__vite__mapDeps([48,49,2,5,4,6,7,8,9,10,11,12,16,23,20,46,34,35,47,21,22,19,24,25,26,32,39,27]))},{test:e=>e===`/events`,load:()=>r(()=>import(`./events-DmftG8n5.js`),__vite__mapDeps([50,51,2,3,4,5,6,7,8,9,10,11,52,38,16,40,41,27,26,43]))},{test:e=>e===`/control`,load:()=>r(()=>import(`./control-DHa2-a2v.js`),__vite__mapDeps([53,54,2,5,4,6,8,9,10,11,13,28,30,12,16,18,19,20,31,32,33,3,24,25,26,55,46,35,37,38,40]))},{test:e=>e===`/tags`,load:()=>r(()=>import(`./tags-B7e7VYVW.js`),__vite__mapDeps([56,57,2,3,4,5,6,7,8,9,58,14,16,17,18,19,22,37,52,38,24,40,27,42]))},{test:e=>e===`/integrations`,load:()=>r(()=>import(`./integrations-DWW9HjH0.js`),__vite__mapDeps([59,60,2,3,4,5,6,7,8,9,10,11,12,13,16,28,29,18,19,23,20,34,36,32,37,24,40,27,42]))},{test:e=>e.startsWith(`/asset/`),load:()=>r(()=>import(`./asset-detail-tmOrYE8x.js`),__vite__mapDeps([61,2,3,4,5,6,7,8,9,11,12,28,18,19,55,25,26,20,46,31,36,32,37,52,27,43]))},{test:e=>e===`/login`,load:()=>r(()=>import(`./login-BZKYK0yZ.js`),__vite__mapDeps([62,2,5,4,6,33,3,27]))}],o=new Set;function s(e){if(!e.startsWith(`/`))return null;let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n===-1?e.length:n:n===-1?t:Math.min(t,n);return e.slice(0,r)}function c(e){let t=s(e);if(!t||o.has(t))return;let n=a.find(e=>e.test(t));n&&(o.add(t),n.load().catch(()=>{o.delete(t)}))}function l(){let e=n();return(0,i.useCallback)((t,n)=>{n?.preload!==!1&&c(t),(0,i.startTransition)(()=>{n?.transitionType&&(0,i.addTransitionType)(n.transitionType),e(t,{replace:n?.replace})})},[e])}export{c as n,l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ot as e,tt as t}from"./vendor-ui-D8j69UH4.js";import{$ as n,G as r,X as i,Z as a,j as o,k as s}from"./api-kPM52mb-.js";import{c}from"./dialog-Di9Bs0FH.js";import{n as l,t as u}from"./utils-BO2u-wC_.js";import"./use-engine-command-mutation-DMkQxmt9.js";var d=l(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),f=l(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),p=e();function m({className:e,orientation:n=`horizontal`,...r}){return(0,p.jsx)(t,{"data-slot":`separator`,orientation:n,className:u(`shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch`,e),...r})}function h(){return n().trim().optional().refine(e=>e===void 0||e===``||e.length<=120,{message:`Use at most 120 characters.`}).refine(e=>e===void 0||e===``||o(e)===null,{message:`Use letters, numbers, underscores, and hyphens only.`})}var g=a({multiplier:i({message:`Speed multiplier must be a number.`}).positive(`Speed multiplier must be positive.`).finite(`Speed multiplier must be finite.`).max(1e3,`Speed multiplier cannot exceed 1000.`)});a({model:n().min(1,`Model is required.`),count:i({message:`Count must be a number.`}).int(`Count must be a whole number.`).positive(`Count must be at least 1.`).max(100,`Count cannot exceed 100.`),assetName:h(),assetPrefix:h(),protocolScope:s.optional(),dryRun:r().optional()});var _=a({assetId:n().min(1,`Asset is required.`),fault:n().min(1,`Fault name is required.`)});function v(e,t,n){if(!t.trim())return c.error(`Argument "${e}" is required.`),null;switch(n){case`Double`:case`Float`:{let n=Number(t);return Number.isFinite(n)?{value:n}:(c.error(`"${e}" must be a valid number.`),null)}case`Int32`:case`UInt16`:case`UInt32`:{let r=Number(t);return!Number.isFinite(r)||!Number.isSafeInteger(r)?(c.error(`"${e}" must be a valid integer.`),null):(n===`UInt16`||n===`UInt32`)&&r<0?(c.error(`"${e}" must be non-negative.`),null):{value:r}}case`Boolean`:return t!==`true`&&t!==`false`?(c.error(`"${e}" must be "true" or "false".`),null):{value:t===`true`};case`String`:return{value:t};default:return{value:t}}}function y(e,t){let n=e.safeParse(t);return n.success?n.data:(c.error(n.error.issues[0]?.message??`Validation error.`),null)}export{m as a,v as i,g as n,f as o,y as r,d as s,_ as t};
|