@ngocsangairvds/vsaf 5.1.2 → 5.1.3

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.
Files changed (60) hide show
  1. package/package.json +6 -4
  2. package/packages/cli/dist/index.d.ts +1 -1
  3. package/packages/cli/dist/index.js +1 -1
  4. package/packages/core/dist/index.d.ts +5 -0
  5. package/packages/core/dist/index.d.ts.map +1 -1
  6. package/packages/core/dist/index.js +13 -1
  7. package/packages/core/dist/index.js.map +1 -1
  8. package/packages/core/dist/isolation/isolation-policy.d.ts +19 -0
  9. package/packages/core/dist/isolation/isolation-policy.d.ts.map +1 -0
  10. package/packages/core/dist/isolation/isolation-policy.js +52 -0
  11. package/packages/core/dist/isolation/isolation-policy.js.map +1 -0
  12. package/packages/core/dist/providers/command-provider.d.ts +32 -0
  13. package/packages/core/dist/providers/command-provider.d.ts.map +1 -0
  14. package/packages/core/dist/providers/command-provider.js +148 -0
  15. package/packages/core/dist/providers/command-provider.js.map +1 -0
  16. package/packages/core/dist/providers/default-adapters.js +2 -2
  17. package/packages/core/dist/providers/default-adapters.js.map +1 -1
  18. package/packages/core/dist/runtime/executor.d.ts +44 -0
  19. package/packages/core/dist/runtime/executor.d.ts.map +1 -0
  20. package/packages/core/dist/runtime/executor.js +123 -0
  21. package/packages/core/dist/runtime/executor.js.map +1 -0
  22. package/packages/core/dist/runtime/index.d.ts +5 -0
  23. package/packages/core/dist/runtime/index.d.ts.map +1 -0
  24. package/packages/core/dist/runtime/index.js +30 -0
  25. package/packages/core/dist/runtime/index.js.map +1 -0
  26. package/packages/core/dist/runtime/legacy-loader.d.ts +10 -0
  27. package/packages/core/dist/runtime/legacy-loader.d.ts.map +1 -0
  28. package/packages/core/dist/runtime/legacy-loader.js +110 -0
  29. package/packages/core/dist/runtime/legacy-loader.js.map +1 -0
  30. package/packages/core/dist/runtime/load-workflow.d.ts +10 -0
  31. package/packages/core/dist/runtime/load-workflow.d.ts.map +1 -0
  32. package/packages/core/dist/runtime/load-workflow.js +208 -0
  33. package/packages/core/dist/runtime/load-workflow.js.map +1 -0
  34. package/packages/core/dist/runtime/types.d.ts +28 -0
  35. package/packages/core/dist/runtime/types.d.ts.map +1 -0
  36. package/packages/core/dist/runtime/types.js +3 -0
  37. package/packages/core/dist/runtime/types.js.map +1 -0
  38. package/packages/core/dist/store/sqlite-schema.d.ts +2 -0
  39. package/packages/core/dist/store/sqlite-schema.d.ts.map +1 -0
  40. package/packages/core/dist/store/sqlite-schema.js +64 -0
  41. package/packages/core/dist/store/sqlite-schema.js.map +1 -0
  42. package/packages/core/dist/store/sqlite-workflow-store.d.ts +85 -0
  43. package/packages/core/dist/store/sqlite-workflow-store.d.ts.map +1 -0
  44. package/packages/core/dist/store/sqlite-workflow-store.js +208 -0
  45. package/packages/core/dist/store/sqlite-workflow-store.js.map +1 -0
  46. package/packages/web/dist/web/3rdpartylicenses.txt +5 -212
  47. package/packages/web/dist/web/browser/chunk-IPMFXW6N.js +1 -0
  48. package/packages/web/dist/web/browser/chunk-IX2QWMX2.js +1 -0
  49. package/packages/web/dist/web/browser/chunk-QMAH5NZC.js +1 -0
  50. package/packages/web/dist/web/browser/{chunk-7PK6Q4UU.js → chunk-RGFLNLPM.js} +1 -1
  51. package/packages/web/dist/web/browser/chunk-RKWDHBN3.js +5 -0
  52. package/packages/web/dist/web/browser/chunk-XGYEZIV4.js +1 -0
  53. package/packages/web/dist/web/browser/index.html +1 -1
  54. package/packages/web/dist/web/browser/main-IIUZVPMI.js +1 -0
  55. package/packages/web/dist/web/browser/chunk-2QJBTGYU.js +0 -3
  56. package/packages/web/dist/web/browser/chunk-3VYLP4FZ.js +0 -1
  57. package/packages/web/dist/web/browser/chunk-6HRQZQXD.js +0 -1
  58. package/packages/web/dist/web/browser/chunk-O7TQGEFF.js +0 -8
  59. package/packages/web/dist/web/browser/chunk-PWF76NCM.js +0 -1
  60. package/packages/web/dist/web/browser/main-AZU5W3KI.js +0 -1
@@ -0,0 +1 @@
1
+ import{$ as x,A as b,B as se,C as ae,D as le,H as u,I as y,K as ue,L as d,M as h,N as de,O as A,Q as ce,T as he,U as fe,V as ge,W,_ as f,a,b as l,ba as pe,ca as me,d as Q,da as $,e as ee,f as te,g as ne,h as T,j as G,k as p,m,n as _,o as c,q as I,r as ie,s as re,t as B,u as U,v as H,w as s,x as oe,y as L,z as v}from"./chunk-RKWDHBN3.js";var Ae=(()=>{class n{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,i){this._renderer=t,this._elementRef=i}setProperty(t,i){this._renderer.setProperty(this._elementRef.nativeElement,t,i)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}static \u0275fac=function(i){return new(i||n)(s(H),s(B))};static \u0275dir=v({type:n})}return n})(),Be=(()=>{class n extends Ae{static \u0275fac=(()=>{let t;return function(r){return(t||(t=re(n)))(r||n)}})();static \u0275dir=v({type:n,features:[b]})}return n})(),Me=new p("");var Ue={provide:Me,useExisting:T(()=>R),multi:!0};function He(){let n=$()?$().getUserAgent():"";return/android (\d+)/.test(n.toLowerCase())}var Le=new p(""),R=(()=>{class n extends Ae{_compositionMode;_composing=!1;constructor(t,i,r){super(t,i),this._compositionMode=r,this._compositionMode==null&&(this._compositionMode=!He())}writeValue(t){let i=t??"";this.setProperty("value",i)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static \u0275fac=function(i){return new(i||n)(s(H),s(B),s(Le,8))};static \u0275dir=v({type:n,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){i&1&&d("input",function(D){return r._handleInput(D.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(D){return r._compositionEnd(D.target.value)})},standalone:!1,features:[W([Ue]),b]})}return n})();var We=new p(""),$e=new p("");function we(n){return n!=null}function Ee(n){return se(n)?ee(n):n}function Fe(n){let e={};return n.forEach(t=>{e=t!=null?a(a({},e),t):e}),Object.keys(e).length===0?null:e}function Se(n,e){return e.map(t=>t(n))}function qe(n){return!n.validate}function Ie(n){return n.map(e=>qe(e)?e:t=>e.validate(t))}function ze(n){if(!n)return null;let e=n.filter(we);return e.length==0?null:function(t){return Fe(Se(t,e))}}function xe(n){return n!=null?ze(Ie(n)):null}function Ze(n){if(!n)return null;let e=n.filter(we);return e.length==0?null:function(t){let i=Se(t,e).map(Ee);return ne(i).pipe(te(Fe))}}function Ne(n){return n!=null?Ze(Ie(n)):null}function _e(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function Xe(n){return n._rawValidators}function Ye(n){return n._rawAsyncValidators}function q(n){return n?Array.isArray(n)?n:[n]:[]}function O(n,e){return Array.isArray(n)?n.includes(e):n===e}function ve(n,e){let t=q(e);return q(n).forEach(r=>{O(t,r)||t.push(r)}),t}function ye(n,e){return q(e).filter(t=>!O(n,t))}var k=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=xe(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Ne(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control?.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}},z=class extends k{name;get formDirective(){return null}get path(){return null}},S=class extends k{_parent=null;name=null;valueAccessor=null},Z=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var Oe=(()=>{class n extends Z{constructor(t){super(t)}static \u0275fac=function(i){return new(i||n)(s(S,2))};static \u0275dir=v({type:n,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){i&2&&de("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[b]})}return n})();var M="VALID",N="INVALID",C="PENDING",w="DISABLED",g=class{},P=class extends g{value;source;constructor(e,t){super(),this.value=e,this.source=t}},E=class extends g{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}},F=class extends g{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}},V=class extends g{status;source;constructor(e,t){super(),this.status=e,this.source=t}};var X=class extends g{source;constructor(e){super(),this.source=e}};function Ke(n){return(j(n)?n.validators:n)||null}function Je(n){return Array.isArray(n)?xe(n):n||null}function Qe(n,e){return(j(e)?e.asyncValidators:n)||null}function et(n){return Array.isArray(n)?Ne(n):n||null}function j(n){return n!=null&&!Array.isArray(n)&&typeof n=="object"}var Y=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return f(this.statusReactive)}set status(e){f(()=>this.statusReactive.set(e))}_status=x(()=>this.statusReactive());statusReactive=I(void 0);get valid(){return this.status===M}get invalid(){return this.status===N}get pending(){return this.status===C}get disabled(){return this.status===w}get enabled(){return this.status!==w}errors;get pristine(){return f(this.pristineReactive)}set pristine(e){f(()=>this.pristineReactive.set(e))}_pristine=x(()=>this.pristineReactive());pristineReactive=I(!0);get dirty(){return!this.pristine}get touched(){return f(this.touchedReactive)}set touched(e){f(()=>this.touchedReactive.set(e))}_touched=x(()=>this.touchedReactive());touchedReactive=I(!1);get untouched(){return!this.touched}_events=new Q;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(ve(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(ve(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(ye(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(ye(e,this._rawAsyncValidators))}hasValidator(e){return O(this._rawValidators,e)}hasAsyncValidator(e){return O(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let i=e.sourceControl??this;e.onlySelf||this._parent?.markAsTouched(l(a({},e),{sourceControl:i})),t&&e.emitEvent!==!1&&this._events.next(new F(!0,i))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let i=e.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:i})}),e.onlySelf||this._parent?._updateTouched(e,i),t&&e.emitEvent!==!1&&this._events.next(new F(!1,i))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let i=e.sourceControl??this;e.onlySelf||this._parent?.markAsDirty(l(a({},e),{sourceControl:i})),t&&e.emitEvent!==!1&&this._events.next(new E(!1,i))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let i=e.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),e.onlySelf||this._parent?._updatePristine(e,i),t&&e.emitEvent!==!1&&this._events.next(new E(!0,i))}markAsPending(e={}){this.status=C;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new V(this.status,t)),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.markAsPending(l(a({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=w,this.errors=null,this._forEachChild(r=>{r.disable(l(a({},e),{onlySelf:!0}))}),this._updateValue();let i=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new P(this.value,i)),this._events.next(new V(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(l(a({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=M,this._forEachChild(i=>{i.enable(l(a({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(l(a({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(e,t){e.onlySelf||(this._parent?.updateValueAndValidity(e),e.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===M||this.status===C)&&this._runAsyncValidator(i,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new P(this.value,t)),this._events.next(new V(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),e.onlySelf||this._parent?.updateValueAndValidity(l(a({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?w:M}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=C,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let i=Ee(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(".")),t.length===0)?null:t.reduce((i,r)=>i&&i._find(r),this)}getError(e,t){let i=t?this.get(t):this;return i?.errors?i.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,i){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||i)&&this._events.next(new V(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,i)}_initObservables(){this.valueChanges=new c,this.statusChanges=new c}_calculateStatus(){return this._allControlsDisabled()?w:this.errors?N:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(C)?C:this._anyControlsHaveStatus(N)?N:M}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,e.onlySelf||this._parent?._updatePristine(e,t),r&&this._events.next(new E(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new F(this.touched,t)),e.onlySelf||this._parent?._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){j(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){return!e&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=Je(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=et(this._rawAsyncValidators)}};var ke=new p("",{factory:()=>K}),K="always";function tt(n,e){return[...e.path,n]}function nt(n,e,t=K){rt(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||t==="always")&&e.valueAccessor.setDisabledState?.(n.disabled),ot(n,e),at(n,e),st(n,e),it(n,e)}function Ce(n,e){n.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(e)})}function it(n,e){if(e.valueAccessor.setDisabledState){let t=i=>{e.valueAccessor.setDisabledState(i)};n.registerOnDisabledChange(t),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(t)})}}function rt(n,e){let t=Xe(n);e.validator!==null?n.setValidators(_e(t,e.validator)):typeof t=="function"&&n.setValidators([t]);let i=Ye(n);e.asyncValidator!==null?n.setAsyncValidators(_e(i,e.asyncValidator)):typeof i=="function"&&n.setAsyncValidators([i]);let r=()=>n.updateValueAndValidity();Ce(e._rawValidators,r),Ce(e._rawAsyncValidators,r)}function ot(n,e){e.valueAccessor.registerOnChange(t=>{n._pendingValue=t,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn==="change"&&Pe(n,e)})}function st(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn==="blur"&&n._pendingChange&&Pe(n,e),n.updateOn!=="submit"&&n.markAsTouched()})}function Pe(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function at(n,e){let t=(i,r)=>{e.valueAccessor.writeValue(i),r&&e.viewToModelUpdate(i)};n.registerOnChange(t),e._registerOnDestroy(()=>{n._unregisterOnChange(t)})}function lt(n,e){if(!n.hasOwnProperty("model"))return!1;let t=n.model;return t.isFirstChange()?!0:!Object.is(e,t.currentValue)}function ut(n){return Object.getPrototypeOf(n.constructor)===Be}function dt(n,e){if(!e)return null;Array.isArray(e);let t,i,r;return e.forEach(o=>{o.constructor===R?t=o:ut(o)?i=o:r=o}),r||i||t||null}function Ve(n,e){let t=n.indexOf(e);t>-1&&n.splice(t,1)}function De(n){return typeof n=="object"&&n!==null&&Object.keys(n).length===2&&"value"in n&&"disabled"in n}var ct=class extends Y{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,i){super(Ke(t),Qe(i,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),j(t)&&(t.nonNullable||t.initialValueIsDefault)&&(De(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new X(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){Ve(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){Ve(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){De(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var ht={provide:S,useExisting:T(()=>J)},be=Promise.resolve(),J=(()=>{class n extends S{_changeDetectorRef;callSetDisabledState;control=new ct;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new c;constructor(t,i,r,o,D,Te){super(),this._changeDetectorRef=D,this.callSetDisabledState=Te,this._parent=t,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=dt(this,o)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){let i=t.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),lt(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){nt(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){be.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let i=t.isDisabled.currentValue,r=i!==0&&me(i);be.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?tt(t,this._parent):[t]}static \u0275fac=function(i){return new(i||n)(s(z,9),s(We,10),s($e,10),s(Me,10),s(pe,8),s(ke,8))};static \u0275dir=v({type:n,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[W([ht]),b,ie]})}return n})();var ft=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=L({type:n});static \u0275inj=G({})}return n})();var Re=(()=>{class n{static withConfig(t){return{ngModule:n,providers:[{provide:ke,useValue:t.callSetDisabledState??K}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=L({type:n});static \u0275inj=G({imports:[ft]})}return n})();function pt(n,e){if(n&1){let t=ue();u(0,"div",1),d("click",function(){m(t);let r=h();return _(r.close())}),u(1,"div",2),d("click",function(r){return r.stopPropagation()}),u(2,"h3",3),A(3),y(),u(4,"label",4),A(5,"Arguments"),y(),u(6,"input",5),ge("ngModelChange",function(r){m(t);let o=h();return fe(o.args,r)||(o.args=r),_(r)}),d("keydown.enter",function(){m(t);let r=h();return _(r.submit())}),y(),u(7,"div",6)(8,"button",7),d("click",function(){m(t);let r=h();return _(r.close())}),A(9,"Cancel"),y(),u(10,"button",8),d("click",function(){m(t);let r=h();return _(r.submit())}),A(11,"Start \u25B6"),y()()()()}if(n&2){let t=h();U(3),ce("Run ",t.workflowName),U(3),he("ngModel",t.args)}}var je=class n{visible=!1;workflowName="";run=new c;closed=new c;args="";submit(){this.run.emit(this.args),this.args=""}close(){this.visible=!1,this.args="",this.closed.emit()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=oe({type:n,selectors:[["app-run-dialog"]],inputs:{visible:"visible",workflowName:"workflowName"},outputs:{run:"run",closed:"closed"},decls:1,vars:1,consts:[[1,"fixed","inset-0","bg-black/60","flex","items-center","justify-center","z-50"],[1,"fixed","inset-0","bg-black/60","flex","items-center","justify-center","z-50",3,"click"],[1,"bg-slate-800","rounded-lg","p-6","w-full","max-w-md","border","border-slate-700",3,"click"],[1,"text-lg","font-semibold","text-slate-100","mb-4"],[1,"block","text-sm","text-slate-400","mb-1"],["placeholder",'e.g. "fix #42"',1,"w-full","bg-slate-900","border","border-slate-600","rounded","px-3","py-2","text-slate-100","text-sm","focus:outline-none","focus:border-blue-500","mb-4",3,"ngModelChange","keydown.enter","ngModel"],[1,"flex","justify-end","gap-3"],[1,"px-4","py-2","text-sm","text-slate-400","hover:text-slate-200",3,"click"],[1,"px-4","py-2","text-sm","bg-blue-600","text-white","rounded","hover:bg-blue-500",3,"click"]],template:function(t,i){t&1&&ae(0,pt,12,2,"div",0),t&2&&le(i.visible?0:-1)},dependencies:[Re,R,Oe,J],encapsulation:2})};export{je as a};
@@ -9,5 +9,5 @@
9
9
  <style>@layer theme,base,components,utilities;@layer theme{@theme default}@theme default inline reference{--blur:8px;--shadow:0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-inner:inset 0 2px 4px 0 rgb(0 0 0 / .05);--drop-shadow:0 1px 2px rgb(0 0 0 / .1), 0 1px 1px rgb(0 0 0 / .06);--radius:.25rem;--max-width-prose:65ch}}@layer base{*,:after,:before{box-sizing:border-box;margin:0;padding:0;border:0 solid}html{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:--theme(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:--theme(--default-font-feature-settings,normal);font-variation-settings:--theme(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}@layer utilities{}</style><link rel="stylesheet" href="styles-JBPZVY54.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-JBPZVY54.css"></noscript></head>
10
10
  <body>
11
11
  <app-root></app-root>
12
- <link rel="modulepreload" href="chunk-O7TQGEFF.js"><script src="polyfills-YMBILSHJ.js" type="module"></script><script src="main-AZU5W3KI.js" type="module"></script></body>
12
+ <link rel="modulepreload" href="chunk-RKWDHBN3.js"><script src="polyfills-YMBILSHJ.js" type="module"></script><script src="main-IIUZVPMI.js" type="module"></script></body>
13
13
  </html>
@@ -0,0 +1 @@
1
+ import{H as e,I as o,J as m,O as r,aa as a,ha as l,ja as s,la as c,na as f,oa as u,x as i}from"./chunk-RKWDHBN3.js";var d=[{path:"",loadComponent:()=>import("./chunk-QMAH5NZC.js").then(t=>t.DashboardComponent)},{path:"workflows/:name",loadComponent:()=>import("./chunk-IPMFXW6N.js").then(t=>t.WorkflowDetailComponent)},{path:"runs/:runId",loadComponent:()=>import("./chunk-IX2QWMX2.js").then(t=>t.RunExecutionComponent)}];var C={providers:[a({eventCoalescing:!0}),u(d),s()]};var n=class t{static \u0275fac=function(p){return new(p||t)};static \u0275cmp=i({type:t,selectors:[["app-root"]],decls:8,vars:0,consts:[[1,"min-h-screen","bg-slate-950","text-slate-100"],[1,"flex","items-center","px-6","py-3","bg-slate-900","border-b","border-slate-800"],["routerLink","/",1,"text-xl","font-bold","text-blue-400","hover:text-blue-300"],[1,"ml-auto","text-xs","text-slate-500"],[1,"p-6"]],template:function(p,b){p&1&&(e(0,"div",0)(1,"nav",1)(2,"a",2),r(3,"\u2B21 VSAF"),o(),e(4,"span",3),r(5,"v0.2.0"),o()(),e(6,"main",4),m(7,"router-outlet"),o()())},dependencies:[c,f],encapsulation:2})};l(n,C).catch(t=>console.error(t));
@@ -1,3 +0,0 @@
1
- import{a as K}from"./chunk-7PK6Q4UU.js";import{A as S,C as h,E as d,F as $,G as B,H as m,I as s,J as V,M as v,N as p,O as f,P as q,Q as H,da as T,fa as I,h as W,ja as Y,k as g,ma as J,q as j,t as a,w}from"./chunk-O7TQGEFF.js";function c(r){return typeof r=="function"}function Z(r){let t=r(o=>{Error.call(o),o.stack=new Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var N=Z(r=>function(t){r(this),this.message=t?`${t.length} errors occurred during unsubscription:
2
- ${t.map((o,i)=>`${i+1}) ${o.toString()}`).join(`
3
- `)}`:"",this.name="UnsubscriptionError",this.errors=t});function D(r,e){if(r){let t=r.indexOf(e);0<=t&&r.splice(t,1)}}var x=class r{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;let{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(let n of t)n.remove(this);else t.remove(this);let{initialTeardown:o}=this;if(c(o))try{o()}catch(n){e=n instanceof N?n.errors:[n]}let{_finalizers:i}=this;if(i){this._finalizers=null;for(let n of i)try{G(n)}catch(u){e=e??[],u instanceof N?e=[...e,...u.errors]:e.push(u)}}if(e)throw new N(e)}}add(e){var t;if(e&&e!==this)if(this.closed)G(e);else{if(e instanceof r){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(e)}}_hasParent(e){let{_parentage:t}=this;return t===e||Array.isArray(t)&&t.includes(e)}_addParent(e){let{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e}_removeParent(e){let{_parentage:t}=this;t===e?this._parentage=null:Array.isArray(t)&&D(t,e)}remove(e){let{_finalizers:t}=this;t&&D(t,e),e instanceof r&&e._removeParent(this)}};x.EMPTY=(()=>{let r=new x;return r.closed=!0,r})();var Pe=x.EMPTY;function M(r){return r instanceof x||r&&"closed"in r&&c(r.remove)&&c(r.add)&&c(r.unsubscribe)}function G(r){c(r)?r():r.unsubscribe()}var l={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var y={setTimeout(r,e,...t){let{delegate:o}=y;return o?.setTimeout?o.setTimeout(r,e,...t):setTimeout(r,e,...t)},clearTimeout(r){let{delegate:e}=y;return(e?.clearTimeout||clearTimeout)(r)},delegate:void 0};function Q(r){y.setTimeout(()=>{let{onUnhandledError:e}=l;if(e)e(r);else throw r})}function F(){}var X=P("C",void 0,void 0);function ee(r){return P("E",void 0,r)}function te(r){return P("N",r,void 0)}function P(r,e,t){return{kind:r,value:e,error:t}}var b=null;function re(r){if(l.useDeprecatedSynchronousErrorHandling){let e=!b;if(e&&(b={errorThrown:!1,error:null}),r(),e){let{errorThrown:t,error:o}=b;if(b=null,t)throw o}}else r()}function oe(r){l.useDeprecatedSynchronousErrorHandling&&b&&(b.errorThrown=!0,b.error=r)}var C=class extends x{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,M(e)&&e.add(this)):this.destination=fe}static create(e,t,o){return new E(e,t,o)}next(e){this.isStopped?z(te(e),this):this._next(e)}error(e){this.isStopped?z(ee(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?z(X,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},ce=Function.prototype.bind;function O(r,e){return ce.call(r,e)}var L=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:t}=this;if(t.next)try{t.next(e)}catch(o){R(o)}}error(e){let{partialObserver:t}=this;if(t.error)try{t.error(e)}catch(o){R(o)}else R(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(t){R(t)}}},E=class extends C{constructor(e,t,o){super();let i;if(c(e)||!e)i={next:e??void 0,error:t??void 0,complete:o??void 0};else{let n;this&&l.useDeprecatedNextContext?(n=Object.create(e),n.unsubscribe=()=>this.unsubscribe(),i={next:e.next&&O(e.next,n),error:e.error&&O(e.error,n),complete:e.complete&&O(e.complete,n)}):i=e}this.destination=new L(i)}};function R(r){l.useDeprecatedSynchronousErrorHandling?oe(r):Q(r)}function le(r){throw r}function z(r,e){let{onStoppedNotification:t}=l;t&&y.setTimeout(()=>t(r,e))}var fe={closed:!0,next:F,error:le,complete:F};var ne=typeof Symbol=="function"&&Symbol.observable||"@@observable";function ie(r){return r}function se(r){return r.length===0?ie:r.length===1?r[0]:function(t){return r.reduce((o,i)=>i(o),t)}}var U=(()=>{class r{constructor(t){t&&(this._subscribe=t)}lift(t){let o=new r;return o.source=this,o.operator=t,o}subscribe(t,o,i){let n=xe(t)?t:new E(t,o,i);return re(()=>{let{operator:u,source:_}=this;n.add(u?u.call(n,_):_?this._subscribe(n):this._trySubscribe(n))}),n}_trySubscribe(t){try{return this._subscribe(t)}catch(o){t.error(o)}}forEach(t,o){return o=ae(o),new o((i,n)=>{let u=new E({next:_=>{try{t(_)}catch(ue){n(ue),u.unsubscribe()}},error:n,complete:i});this.subscribe(u)})}_subscribe(t){var o;return(o=this.source)===null||o===void 0?void 0:o.subscribe(t)}[ne](){return this}pipe(...t){return se(t)(this)}toPromise(t){return t=ae(t),new t((o,i)=>{let n;this.subscribe(u=>n=u,u=>i(u),()=>o(n))})}}return r.create=e=>new r(e),r})();function ae(r){var e;return(e=r??l.Promise)!==null&&e!==void 0?e:Promise}function de(r){return r&&c(r.next)&&c(r.error)&&c(r.complete)}function xe(r){return r&&r instanceof C||de(r)&&M(r)}var k=class r{zone=g(j);connect(e){return new U(t=>{let o=new EventSource(`/api/runs/${e}/events`),i=["node:start","node:complete","node:skip","node:fail","run:complete","run:state"];for(let n of i)o.addEventListener(n,u=>{this.zone.run(()=>{t.next({type:n,data:JSON.parse(u.data)})})});return o.onerror=()=>{this.zone.run(()=>{t.complete()}),o.close()},()=>{o.close()}})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=W({token:r,factory:r.\u0275fac,providedIn:"root"})};function ge(r,e){if(r&1&&(m(0,"span",3),p(1),s()),r&2){let t=v();h("ngClass",t.typeBadgeClass),a(),f(t.type)}}function ve(r,e){if(r&1&&(m(0,"span",4),p(1),s()),r&2){let t=v();a(),q("",(t.durationMs/1e3).toFixed(1),"s")}}function ye(r,e){r&1&&(m(0,"span",5),p(1,"running..."),s())}function Ee(r,e){r&1&&(m(0,"span",6),p(1,"skipped"),s())}function Se(r,e){r&1&&(m(0,"span",7),p(1,"FAILED"),s())}var A=class r{nodeId="";status="pending";type;durationMs;get statusIcon(){switch(this.status){case"completed":return"\u2713";case"running":return"\u25CF";case"failed":return"\u2717";case"skipped":return"\u2298";default:return"\u25CB"}}get statusIconClass(){switch(this.status){case"completed":return"text-green-400";case"running":return"text-blue-400 animate-pulse";case"failed":return"text-red-400";case"skipped":return"text-slate-500";default:return"text-slate-600"}}get statusTextClass(){switch(this.status){case"pending":return"text-slate-500";case"skipped":return"text-slate-500";default:return"text-slate-100"}}get typeBadgeClass(){switch(this.type){case"prompt":return"bg-purple-500/10 text-purple-400";case"bash":return"bg-amber-500/10 text-amber-400";case"command":return"bg-cyan-500/10 text-cyan-400";default:return"bg-slate-700 text-slate-400"}}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=w({type:r,selectors:[["app-node-status-row"]],inputs:{nodeId:"nodeId",status:"status",type:"type",durationMs:"durationMs"},decls:10,vars:9,consts:[[1,"flex","items-center","py-2.5","border-b","border-slate-800"],[1,"mr-3","text-sm",3,"ngClass"],[1,"flex-1",3,"ngClass"],[1,"text-xs","px-1.5","py-0.5","rounded","mr-2",3,"ngClass"],[1,"font-mono","text-xs","text-slate-400"],[1,"font-mono","text-xs","text-blue-400","animate-pulse"],[1,"text-xs","text-slate-500"],[1,"text-xs","text-red-400"]],template:function(t,o){t&1&&(m(0,"div",0)(1,"span",1),p(2),s(),m(3,"span",2),p(4),s(),S(5,ge,2,2,"span",3)(6,ve,2,1,"span",4)(7,ye,2,0,"span",5)(8,Ee,2,0,"span",6)(9,Se,2,0,"span",7),s()),t&2&&(a(),h("ngClass",o.statusIconClass),a(),f(o.statusIcon),a(),h("ngClass",o.statusTextClass),a(),f(o.nodeId),a(),d(o.type?5:-1),a(),d(o.status==="completed"&&o.durationMs!==void 0?6:-1),a(),d(o.status==="running"?7:-1),a(),d(o.status==="skipped"?8:-1),a(),d(o.status==="failed"?9:-1))},dependencies:[I,T],encapsulation:2})};var Ce=(r,e)=>e.id;function _e(r,e){if(r&1&&(m(0,"span",6),p(1),s()),r&2){let t=v();h("ngClass",t.statusClass(t.run.status)),a(),H(" ",t.statusIcon(t.run.status)," ",t.run.status," ")}}function we(r,e){if(r&1&&V(0,"app-node-status-row",8),r&2){let t=e.$implicit;h("nodeId",t.id)("status",t.status)("durationMs",t.durationMs)}}function Te(r,e){if(r&1&&(m(0,"div",9)(1,"span",10),p(2,"Elapsed: "),m(3,"span",11),p(4),s()(),m(5,"span",12),p(6,"Nodes: "),m(7,"span",13),p(8),s(),p(9,"/"),m(10,"span",14),p(11),s(),p(12," completed "),s()()),r&2){let t=v();a(4),f(t.elapsedDisplay),a(4),f(t.completedCount),a(3),f(t.nodes.length)}}var me=class r{route=g(Y);api=g(K);sse=g(k);run;nodes=[];sseSub;timerInterval;startTime=Date.now();ngOnInit(){let e=this.route.snapshot.paramMap.get("runId");this.api.getRun(e).subscribe(t=>{this.run=t,this.startTime=new Date(t.startedAt).getTime(),this.rebuildNodeList()}),this.sseSub=this.sse.connect(e).subscribe(t=>{this.handleSseEvent(t)}),this.timerInterval=setInterval(()=>{},1e3)}ngOnDestroy(){this.sseSub?.unsubscribe(),this.timerInterval&&clearInterval(this.timerInterval)}handleSseEvent(e){let t=e.data,o=t.nodeId;switch(e.type){case"run:state":this.run=t,this.startTime=new Date(this.run.startedAt).getTime(),this.rebuildNodeList();break;case"node:start":this.updateNodeStatus(o,"running");break;case"node:complete":this.updateNodeStatus(o,"completed",t.durationMs);break;case"node:skip":this.updateNodeStatus(o,"skipped");break;case"node:fail":this.updateNodeStatus(o,"failed");break;case"run:complete":this.run&&(this.run.status=t.success?"completed":"failed");break}}rebuildNodeList(){this.run&&(this.nodes=Object.entries(this.run.nodes).map(([e,t])=>({id:e,status:t.status,durationMs:t.durationMs})))}updateNodeStatus(e,t,o){let i=this.nodes.find(n=>n.id===e);i?(i.status=t,o!==void 0&&(i.durationMs=o)):this.nodes.push({id:e,status:t,durationMs:o})}get completedCount(){return this.nodes.filter(e=>e.status==="completed").length}get elapsedDisplay(){let e=Math.floor((Date.now()-this.startTime)/1e3),t=Math.floor(e/60),o=e%60;return t>0?`${t}m ${o}s`:`${o}s`}statusClass(e){switch(e){case"completed":return"bg-green-500/10 text-green-400";case"failed":return"bg-red-500/10 text-red-400";case"running":return"bg-blue-500/10 text-blue-400";default:return"bg-slate-700 text-slate-400"}}statusIcon(e){switch(e){case"completed":return"\u2713";case"failed":return"\u2717";case"running":return"\u25CF";default:return"\u25CB"}}static \u0275fac=function(t){return new(t||r)};static \u0275cmp=w({type:r,selectors:[["app-run-execution"]],decls:17,vars:4,consts:[[1,"max-w-3xl","mx-auto"],[1,"flex","items-center","mb-6","gap-2","text-sm"],["routerLink","/",1,"text-slate-500","hover:text-slate-300"],[1,"text-slate-600"],[1,"text-slate-300"],[1,"font-mono","text-slate-100"],[1,"text-xs","px-2","py-0.5","rounded","ml-2",3,"ngClass"],[1,"mb-6"],[3,"nodeId","status","durationMs"],[1,"bg-slate-800","rounded-lg","px-4","py-3","flex","items-center","text-sm"],[1,"text-slate-400"],[1,"text-slate-100","font-mono"],[1,"ml-6","text-slate-400"],[1,"text-green-400"],[1,"text-slate-100"]],template:function(t,o){t&1&&(m(0,"div",0)(1,"div",1)(2,"a",2),p(3,"Dashboard"),s(),m(4,"span",3),p(5,"\u203A"),s(),m(6,"span",4),p(7),s(),m(8,"span",3),p(9,"\u203A"),s(),m(10,"span",5),p(11),s(),S(12,_e,2,3,"span",6),s(),m(13,"div",7),$(14,we,1,3,"app-node-status-row",8,Ce),s(),S(16,Te,13,3,"div",9),s()),t&2&&(a(7),f(o.run==null?null:o.run.workflow),a(4),f(o.run==null?null:o.run.runId),a(),d(o.run?12:-1),a(2),B(o.nodes),a(2),d(o.run?16:-1))},dependencies:[I,T,J,A],encapsulation:2})};export{me as RunExecutionComponent};
@@ -1 +0,0 @@
1
- import{a as N}from"./chunk-PWF76NCM.js";import{a as F}from"./chunk-7PK6Q4UU.js";import{C as d,F as c,G as x,H as i,I as n,J as h,K as k,L as f,M as b,N as r,O as l,P as S,Q as C,W as g,X as D,Y as E,da as R,ea as y,fa as I,k as u,la as T,m as _,ma as W,n as v,t as a,w}from"./chunk-O7TQGEFF.js";var $=o=>["/workflows",o],V=o=>["/runs",o],B=(o,e)=>e.name,M=(o,e)=>e.runId;function O(o,e){if(o&1){let t=k();i(0,"div",3)(1,"a",9)(2,"div",10),r(3),n(),i(4,"div",11),r(5),n()(),i(6,"div",12)(7,"span",13),r(8),n(),i(9,"button",14),f("click",function(){let m=_(t).$implicit,p=b();return v(p.openRunDialog(m.name))}),r(10,"Run \u25B6"),n()()()}if(o&2){let t=e.$implicit;a(),d("routerLink",g(4,$,t.name)),a(2),l(t.name),a(2),l(t.description),a(3),S("",t.nodeCount," nodes")}}function A(o,e){if(o&1&&(i(0,"div",6)(1,"span",15),r(2),n(),i(3,"span",16),r(4),n(),i(5,"span")(6,"span",17),r(7),n()(),i(8,"span",13),r(9),D(10,"date"),n(),i(11,"a",18),r(12,"View \u2192"),n()()),o&2){let t=e.$implicit,s=b();a(2),l(t.runId),a(2),l(t.workflow),a(2),d("ngClass",s.statusClass(t.status)),a(),C(" ",s.statusIcon(t.status)," ",t.status," "),a(2),l(E(10,7,t.startedAt,"short")),a(2),d("routerLink",g(10,V,t.runId))}}function P(o,e){o&1&&(i(0,"div",7),r(1,'No runs yet. Click "Run \u25B6" on a workflow to start.'),n())}var L=class o{api=u(F);router=u(T);workflows=[];runs=[];showRunDialog=!1;selectedWorkflow="";ngOnInit(){this.api.getWorkflows().subscribe(e=>this.workflows=e),this.api.getRuns().subscribe(e=>this.runs=e.reverse())}openRunDialog(e){this.selectedWorkflow=e,this.showRunDialog=!0}onStartRun(e){this.showRunDialog=!1,this.api.startRun(this.selectedWorkflow,e).subscribe(t=>{this.router.navigate(["/runs",t.runId])})}statusClass(e){switch(e){case"completed":return"bg-green-500/10 text-green-400";case"failed":return"bg-red-500/10 text-red-400";case"running":return"bg-blue-500/10 text-blue-400";default:return"bg-slate-700 text-slate-400"}}statusIcon(e){switch(e){case"completed":return"\u2713";case"failed":return"\u2717";case"running":return"\u25CF";default:return"\u25CB"}}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=w({type:o,selectors:[["app-dashboard"]],decls:23,vars:3,consts:[[1,"max-w-6xl","mx-auto"],[1,"text-xs","font-semibold","text-slate-400","uppercase","tracking-wider","mb-3"],[1,"grid","grid-cols-1","md:grid-cols-2","lg:grid-cols-3","gap-3","mb-8"],[1,"bg-slate-800","rounded-lg","p-4","border","border-slate-700","hover:border-slate-600","transition-colors"],[1,"bg-slate-800","rounded-lg","border","border-slate-700","overflow-hidden"],[1,"grid","grid-cols-[1fr_1.5fr_1fr_1fr_0.5fr]","px-4","py-2","text-xs","text-slate-500","uppercase","border-b","border-slate-700"],[1,"grid","grid-cols-[1fr_1.5fr_1fr_1fr_0.5fr]","px-4","py-2.5","text-sm","border-b","border-slate-800","items-center"],[1,"px-4","py-6","text-center","text-sm","text-slate-500"],[3,"run","closed","visible","workflowName"],[1,"block",3,"routerLink"],[1,"font-semibold","text-slate-100","mb-1"],[1,"text-xs","text-slate-500","mb-3","line-clamp-2"],[1,"flex","items-center"],[1,"text-xs","text-slate-400"],[1,"ml-auto","bg-blue-600","text-white","text-xs","px-3","py-1","rounded","hover:bg-blue-500",3,"click"],[1,"font-mono","text-slate-400","text-xs"],[1,"text-slate-100"],[1,"text-xs","px-2","py-0.5","rounded",3,"ngClass"],[1,"text-xs","text-blue-400","hover:text-blue-300",3,"routerLink"]],template:function(t,s){t&1&&(i(0,"div",0)(1,"h2",1),r(2,"Workflows"),n(),i(3,"div",2),c(4,O,11,6,"div",3,B),n(),i(6,"h2",1),r(7,"Recent Runs"),n(),i(8,"div",4)(9,"div",5)(10,"span"),r(11,"Run ID"),n(),i(12,"span"),r(13,"Workflow"),n(),i(14,"span"),r(15,"Status"),n(),i(16,"span"),r(17,"Started"),n(),h(18,"span"),n(),c(19,A,13,12,"div",6,M,!1,P,2,0,"div",7),n()(),i(22,"app-run-dialog",8),f("run",function(p){return s.onStartRun(p)})("closed",function(){return s.showRunDialog=!1}),n()),t&2&&(a(4),x(s.workflows),a(15),x(s.runs),a(3),d("visible",s.showRunDialog)("workflowName",s.selectedWorkflow))},dependencies:[I,R,y,W,N],encapsulation:2})};export{L as DashboardComponent};
@@ -1 +0,0 @@
1
- import{a as I}from"./chunk-PWF76NCM.js";import{a as E}from"./chunk-7PK6Q4UU.js";import{A as _,C as f,E as g,F as b,G as k,H as n,I as t,K as v,L as u,M as d,N as i,O as l,R as C,da as h,fa as D,ja as S,k as m,la as y,m as c,n as x,t as r,w}from"./chunk-O7TQGEFF.js";var T=(a,o)=>o.id;function N(a,o){if(a&1&&(n(0,"div",9)(1,"span",11),i(2),t(),n(3,"span")(4,"span",12),i(5),t()(),n(6,"span",13),i(7),t(),n(8,"span",14),i(9),t()()),a&2){let e=o.$implicit,s=d(2);r(2),l(e.id),r(2),f("ngClass",s.typeBadge(e.type)),r(),l(e.type),r(2),l(e.dependsOn.length?e.dependsOn.join(", "):"\u2014"),r(2),l(e.when||"\u2014")}}function V(a,o){if(a&1){let e=v();n(0,"div",0)(1,"div",1)(2,"div")(3,"h1",2),i(4),t(),n(5,"p",3),i(6),t(),n(7,"p",4),i(8),t()(),n(9,"button",5),u("click",function(){c(e);let p=d();return x(p.showRunDialog=!0)}),i(10,"Run Workflow \u25B6"),t()(),n(11,"div",6)(12,"h3",7),i(13,"DAG Nodes"),t(),n(14,"div",8)(15,"span"),i(16,"Node"),t(),n(17,"span"),i(18,"Type"),t(),n(19,"span"),i(20,"Depends On"),t(),n(21,"span"),i(22,"Condition"),t()(),b(23,N,10,5,"div",9,T),t()(),n(25,"app-run-dialog",10),u("run",function(p){c(e);let W=d();return x(W.onStartRun(p))})("closed",function(){c(e);let p=d();return x(p.showRunDialog=!1)}),t()}if(a&2){let e=d();r(4),l(e.workflow.name),r(2),C(" ",e.workflow.nodeCount," nodes \u2022 provider: ",e.workflow.defaultProvider," \u2022 model: ",e.workflow.defaultModel," "),r(2),l(e.workflow.description),r(15),k(e.workflow.nodes),r(2),f("visible",e.showRunDialog)("workflowName",e.workflow.name)}}var R=class a{route=m(S);api=m(E);router=m(y);workflow;showRunDialog=!1;ngOnInit(){let o=this.route.snapshot.paramMap.get("name");this.api.getWorkflow(o).subscribe(e=>this.workflow=e)}onStartRun(o){this.showRunDialog=!1,this.api.startRun(this.workflow.name,o).subscribe(e=>{this.router.navigate(["/runs",e.runId])})}typeBadge(o){switch(o){case"prompt":return"bg-purple-500/10 text-purple-400";case"bash":return"bg-amber-500/10 text-amber-400";case"command":return"bg-cyan-500/10 text-cyan-400";default:return"bg-slate-700 text-slate-400"}}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=w({type:a,selectors:[["app-workflow-detail"]],decls:1,vars:1,consts:[[1,"max-w-4xl","mx-auto"],[1,"flex","items-start","mb-6"],[1,"text-2xl","font-bold","text-slate-100"],[1,"text-sm","text-slate-500","mt-1"],[1,"text-sm","text-slate-400","mt-2"],[1,"ml-auto","bg-blue-600","text-white","px-5","py-2","rounded-lg","hover:bg-blue-500","text-sm",3,"click"],[1,"bg-slate-800","rounded-lg","border","border-slate-700","p-4"],[1,"text-xs","font-semibold","text-slate-500","uppercase","tracking-wider","mb-3"],[1,"grid","grid-cols-[1.5fr_0.8fr_2fr_1.5fr]","text-xs","text-slate-500","pb-2","border-b","border-slate-700"],[1,"grid","grid-cols-[1.5fr_0.8fr_2fr_1.5fr]","py-2","text-sm","border-b","border-slate-800/50","items-center"],[3,"run","closed","visible","workflowName"],[1,"text-slate-100"],[1,"text-xs","px-1.5","py-0.5","rounded",3,"ngClass"],[1,"font-mono","text-xs","text-slate-400"],[1,"font-mono","text-xs","text-amber-400"]],template:function(e,s){e&1&&_(0,V,26,7),e&2&&g(s.workflow?0:-1)},dependencies:[D,h,I],encapsulation:2})};export{R as WorkflowDetailComponent};