diff --git a/cmd/gomodel/docs/docs.go b/cmd/gomodel/docs/docs.go
index 541d4e6d5..d9d600f73 100644
--- a/cmd/gomodel/docs/docs.go
+++ b/cmd/gomodel/docs/docs.go
@@ -257,7 +257,7 @@ const docTemplate = `{
},
"/admin/audit/sessions": {
"get": {
- "description": "Groups audit log entries by session id into threads and returns\none summary per thread — its latest entry, entry count, and time\nspan — ordered by latest activity. Entries without a session id\nappear as single-entry threads. Filters apply to entries before\ngrouping.",
+ "description": "Groups audit log entries by session id into threads and returns\none summary per thread — its latest matching entry and complete\nrequest count — ordered by latest activity. Entries without a session id\nappear as single-entry threads. Filters apply to entries before\ngrouping.",
"produces": [
"application/json"
],
@@ -6857,6 +6857,10 @@ const docTemplate = `{
},
"USAGE_PRICING_RECALCULATION_ENABLED": {
"type": "string"
+ },
+ "VIRTUAL_MODEL_STRATEGIES": {
+ "description": "VirtualModelStrategies is the comma-separated list of load-balancing\nstrategies this deployment supports. \"adaptive\" appears only when a\nroute-selector extension is registered, so the dashboard never offers\na strategy that would silently fall back to round robin.",
+ "type": "string"
}
}
},
@@ -6929,6 +6933,9 @@ const docTemplate = `{
"path": {
"type": "string"
},
+ "principal_id": {
+ "type": "string"
+ },
"provider": {
"description": "canonical provider type used for routing and filters",
"type": "string"
@@ -6994,20 +7001,11 @@ const docTemplate = `{
"admin.auditSessionResponse": {
"type": "object",
"properties": {
- "count": {
- "type": "integer"
- },
- "first_timestamp": {
- "type": "string"
- },
- "last_timestamp": {
- "type": "string"
- },
"latest": {
"$ref": "#/definitions/admin.auditLogEntryResponse"
},
- "session_id": {
- "type": "string"
+ "request_count": {
+ "type": "integer"
}
}
},
@@ -7391,6 +7389,9 @@ const docTemplate = `{
"service_account_json_base64": {
"type": "string"
},
+ "session_sticky_keys": {
+ "type": "boolean"
+ },
"type": {
"type": "string"
},
@@ -7789,6 +7790,9 @@ const docTemplate = `{
"service_account_json_base64": {
"type": "string"
},
+ "session_sticky_keys": {
+ "type": "boolean"
+ },
"type": {
"type": "string"
},
@@ -7839,6 +7843,10 @@ const docTemplate = `{
"description": "SessionAffinity keeps a detected session on the target that served it\nbefore. Omitted means enabled; false restores stateless balancing.",
"type": "boolean"
},
+ "slowdown": {
+ "description": "Slowdown is an extra-time factor from 0.1 to 10; zero disables it.",
+ "type": "number"
+ },
"source": {
"type": "string"
},
@@ -8043,6 +8051,9 @@ const docTemplate = `{
"anthropicapi.MessagesRequest": {
"type": "object",
"properties": {
+ "cache_control": {
+ "type": "object"
+ },
"max_tokens": {
"type": "integer"
},
@@ -8181,6 +8192,9 @@ const docTemplate = `{
"anthropicapi.Tool": {
"type": "object",
"properties": {
+ "cache_control": {
+ "type": "object"
+ },
"description": {
"type": "string"
},
@@ -8305,6 +8319,10 @@ const docTemplate = `{
"description": "Error details (message can be long, so kept in JSON)",
"type": "string"
},
+ "event_type": {
+ "description": "EventType identifies non-request security lifecycle entries written\nthrough the extension authentication event recorder.",
+ "type": "string"
+ },
"failover": {
"description": "Failover captures runtime redirect details when translated execution\nmoved from the primary selector to a configured failover target.",
"allOf": [
@@ -11137,6 +11155,10 @@ const docTemplate = `{
"session_affinity": {
"type": "boolean"
},
+ "slowdown": {
+ "description": "Slowdown is an extra-time factor from 0.1 to 10; zero disables it.",
+ "type": "number"
+ },
"source": {
"type": "string"
},
@@ -11189,6 +11211,10 @@ const docTemplate = `{
"description": "SessionAffinity keeps requests of one detected session on the target that\nserved it before, while that target stays available. Tri-state: nil means\nenabled (the default); explicit false restores stateless balancing.",
"type": "boolean"
},
+ "slowdown": {
+ "description": "Slowdown is an extra-time factor from 0.1 to 10; zero disables it. Nil\nleaves the setting unspecified so an alias can inherit its target model.",
+ "type": "number"
+ },
"source": {
"type": "string"
},
diff --git a/docs/features/session-keeping.mdx b/docs/features/session-keeping.mdx
index 017144e45..2b98b74e7 100644
--- a/docs/features/session-keeping.mdx
+++ b/docs/features/session-keeping.mdx
@@ -100,8 +100,11 @@ checkbox. Requests with no detected session remain round robin.
Audit entries record the session id (`session_id`), and the Audit Logs page
groups them by default ("Group by session" toggle). Each thread shows its
latest request with a count badge; the expander on the left unfolds the older
-requests. `GET /admin/audit/sessions` serves the thread list;
-`GET /admin/audit/log?session_id=…` returns one session's entries.
+requests. The badge counts the complete session. Filters select which sessions
+appear and which matching request represents each thread.
+`GET /admin/audit/sessions` returns each thread's `request_count` and latest
+matching audit-log entry. `GET /admin/audit/log?session_id=…` returns all
+requests in an expanded session.
## Configuration
diff --git a/docs/openapi.json b/docs/openapi.json
index 2aea14a61..6c29efd45 100644
--- a/docs/openapi.json
+++ b/docs/openapi.json
@@ -340,7 +340,7 @@
},
"/admin/audit/sessions": {
"get": {
- "description": "Groups audit log entries by session id into threads and returns\none summary per thread — its latest entry, entry count, and time\nspan — ordered by latest activity. Entries without a session id\nappear as single-entry threads. Filters apply to entries before\ngrouping.",
+ "description": "Groups audit log entries by session id into threads and returns\none summary per thread — its latest matching entry and complete\nrequest count — ordered by latest activity. Entries without a session id\nappear as single-entry threads. Filters apply to entries before\ngrouping.",
"tags": [
"admin"
],
@@ -10259,6 +10259,10 @@
},
"USAGE_PRICING_RECALCULATION_ENABLED": {
"type": "string"
+ },
+ "VIRTUAL_MODEL_STRATEGIES": {
+ "description": "VirtualModelStrategies is the comma-separated list of load-balancing\nstrategies this deployment supports. \"adaptive\" appears only when a\nroute-selector extension is registered, so the dashboard never offers\na strategy that would silently fall back to round robin.",
+ "type": "string"
}
}
},
@@ -10331,6 +10335,9 @@
"path": {
"type": "string"
},
+ "principal_id": {
+ "type": "string"
+ },
"provider": {
"description": "canonical provider type used for routing and filters",
"type": "string"
@@ -10396,20 +10403,11 @@
"admin.auditSessionResponse": {
"type": "object",
"properties": {
- "count": {
- "type": "integer"
- },
- "first_timestamp": {
- "type": "string"
- },
- "last_timestamp": {
- "type": "string"
- },
"latest": {
"$ref": "#/components/schemas/admin.auditLogEntryResponse"
},
- "session_id": {
- "type": "string"
+ "request_count": {
+ "type": "integer"
}
}
},
@@ -10811,6 +10809,9 @@
"service_account_json_base64": {
"type": "string"
},
+ "session_sticky_keys": {
+ "type": "boolean"
+ },
"type": {
"type": "string"
},
@@ -11220,6 +11221,9 @@
"service_account_json_base64": {
"type": "string"
},
+ "session_sticky_keys": {
+ "type": "boolean"
+ },
"type": {
"type": "string"
},
@@ -11490,6 +11494,9 @@
"anthropicapi.MessagesRequest": {
"type": "object",
"properties": {
+ "cache_control": {
+ "type": "object"
+ },
"max_tokens": {
"type": "integer"
},
@@ -11628,6 +11635,9 @@
"anthropicapi.Tool": {
"type": "object",
"properties": {
+ "cache_control": {
+ "type": "object"
+ },
"description": {
"type": "string"
},
@@ -11752,6 +11762,10 @@
"description": "Error details (message can be long, so kept in JSON)",
"type": "string"
},
+ "event_type": {
+ "description": "EventType identifies non-request security lifecycle entries written\nthrough the extension authentication event recorder.",
+ "type": "string"
+ },
"failover": {
"description": "Failover captures runtime redirect details when translated execution\nmoved from the primary selector to a configured failover target.",
"allOf": [
diff --git a/internal/admin/dashboard/static/dist/assets/index-SJFFXBLZ.js b/internal/admin/dashboard/static/dist/assets/index-s6JXpqTB.js
similarity index 95%
rename from internal/admin/dashboard/static/dist/assets/index-SJFFXBLZ.js
rename to internal/admin/dashboard/static/dist/assets/index-s6JXpqTB.js
index d763f315d..ec215a144 100644
--- a/internal/admin/dashboard/static/dist/assets/index-SJFFXBLZ.js
+++ b/internal/admin/dashboard/static/dist/assets/index-s6JXpqTB.js
@@ -37,7 +37,7 @@
/team/alpha
/non-existing`),D(g);var y=I(g,2);Tk(y,{id:`virtual-model-description`,label:`Description`,children:(e,t)=>{var r=BN();ut(r),L(()=>r.disabled=n.vmFormManaged),la(r,()=>n.vmForm.description,e=>n.vmForm.description=e),V(e,r)},$$slots:{default:!0}});var b=I(y,2),x=e=>{Tk(e,{id:`virtual-model-slowdown`,label:`Slowdown (extra inference time)`,children:(e,t)=>{var r=VN(),i=F(r);ea(i),Ve(2),L(()=>i.disabled=n.vmFormManaged),la(i,()=>n.vmForm.slowdown,e=>n.vmForm.slowdown=e),V(e,r)},$$slots:{default:!0}})},S=A(()=>n.vmFormSupportsSlowdown());U(b,e=>{R(S)&&e(x)});var C=I(b,2),w=P(C),T=e=>{var t=HN(),r=P(t,!0);D(t),L(()=>H(r,`Default enabled: `+(n.vmFormDefaultEnabled?`yes`:`no`)+` · Effective now: `+(n.vmFormEffectiveEnabled?`yes`:`no`))),V(e,t)};U(w,e=>{n.vmFormMode===`edit`&&e(T)});var E=I(w,2),ee=P(E);{let e=A(()=>n.vmFormToggleRestricted()),t=A(()=>n.vmFormToggleLabel());TN(ee,{get enabled(){return n.vmForm.enabled},get restricted(){return R(e)},label:`virtual model`,get disabled(){return n.vmFormManaged},get text(){return R(t)},onclick:()=>{n.vmFormManaged||(n.vmForm.enabled=!n.vmForm.enabled)}})}D(E),D(C),L(()=>{f.disabled=n.vmFormManaged,v.disabled=n.vmFormManaged}),z(`click`,f,()=>n.addVmTarget()),la(v,()=>n.vmForm.user_paths,e=>n.vmForm.user_paths=e),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var GN=B(`
Pricing override
`,1),KN=B(`Remove Override `),qN=B(` `),JN=B(` `),YN=B(` `),XN=B(``),ZN=B(`Tiered pricing exists for this override and will be preserved. Tier editing can be added
without a database migration.
`),QN=B(`No pricing fields set.
`),$N=B(`
`),eP=B(`
Currency is USD. Saved fields override model registry and config.yaml pricing for this
- selector; unset fields continue to inherit.
Add Price
`,1);function tP(e,t){O(t,!0);let n=TM;Ck(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=GN(),r=I(F(t),2),i=P(r,!0);D(r),L(()=>H(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),V(e,t)},extraActions:e=>{var t=Xr(),r=F(t),i=e=>{var t=KN();L(()=>t.disabled=n.modelPricingOverrideSubmitting),z(`click`,t,()=>n.deleteModelPricingOverride()),V(e,t)};U(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),V(e,t)},children:(e,t)=>{var r=eP(),i=F(r),a=P(i);Tk(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=qN();ea(r),la(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),V(e,r)},$$slots:{default:!0}});var o=I(a,2),s=e=>{Tk(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=YN();W(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=JN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),z(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Ui(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),V(e,r)},$$slots:{default:!0}})};U(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),D(i);var c=I(i,4);W(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=XN(),a=P(i),o=P(a),s=I(o,2);W(s,21,()=>n.availablePricingFieldOptions(R(t)),e=>e.value,(e,t)=>{var n=JN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).group+` - `+R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s),D(a);var c=I(a,2),l=P(c),u=I(l,2);ea(u),D(c);var d=I(c,2);{let e=A(()=>`Remove `+n.pricingFieldLabel(R(t).field));yO(d,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(R(t)),children:(e,t)=>{J(e,{get icon(){return Ol},class:`table-icon-svg`})},$$slots:{default:!0}})}D(i),L(()=>{K(o,`for`,`pricing-type-`+R(t).id),K(s,`id`,`pricing-type-`+R(t).id),K(l,`for`,`pricing-value-`+R(t).id),K(u,`id`,`pricing-value-`+R(t).id)}),Ui(s,()=>R(t).field,e=>R(t).field=e),la(u,()=>R(t).value,e=>R(t).value=e),V(e,i)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(u),D(l);var d=I(l,2),f=e=>{V(e,ZN())};U(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=I(d,2),m=I(P(p),2),h=e=>{V(e,QN())},g=A(()=>n.modelPricingEffectivePreviewRows().length===0);U(m,e=>{R(g)&&e(h)}),W(I(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=$N(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{H(i,R(t).label),H(o,e),H(c,R(t).source)},[()=>R(t).value===null||R(t).value===void 0?`-`:dd(Number(R(t).value))]),V(e,n)}),D(p),z(`click`,u,()=>n.addModelPricingOverrideRow()),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),k()}Br([`click`,`change`]);var nP=B(`Failover mapping
`,1),rP=B(`Remove `),iP=B(`This failover mapping is defined in configuration and is read-only here.
`),aP=B(` `),oP=B(`
`),sP=B(` Add fallback model
`,1),cP=B(``);function lP(e,t){O(t,!0);{let t=e=>{var t=nP(),n=I(F(t),2),r=P(n,!0);D(n),L(()=>H(r,Q.failoverForm.source||`Failover`)),V(e,t)},n=e=>{var t=Xr(),n=F(t),r=e=>{var t=rP();L(()=>t.disabled=Q.failoverSaving||Q.failoverGenerating),z(`click`,t,()=>Q.deleteFailoverRule()),V(e,t)};U(n,e=>{Q.failoverFormMode===`edit`&&!Q.failoverFormManaged&&e(r)}),V(e,t)},r=A(()=>Q.failoverGenerating||Q.failoverFormManaged);Ck(e,{get open(){return Q.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Q.failoverError},get submitting(){return Q.failoverSaving},get submitDisabled(){return R(r)},submitLabel:`Save`,onclose:()=>Q.closeFailoverForm(),onsubmit:()=>Q.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=cP(),r=P(n),i=e=>{V(e,iP())};U(r,e=>{Q.failoverFormManaged&&e(i)});var a=I(r,2);W(a,21,()=>Id.models,ii,(e,t)=>{var n=aP(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>ij(R(t)),()=>ij(R(t))]),V(e,n)}),D(a);var o=I(a,2);Tk(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=sP(),r=F(n),i=P(r),a=P(i);ea(a);var o=I(a,2),s=e=>{yO(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removePrimaryFailoverTarget(),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}})};U(o,e=>{Q.failoverForm.target_model&&e(s)}),D(i),W(I(i,2),17,()=>Q.failoverForm.targets,ii,(e,t,n)=>{var r=oP(),i=P(r);ea(i),yO(I(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeFailoverTarget(n),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),L(()=>i.disabled=Q.failoverFormManaged),la(i,()=>R(t).model,e=>R(t).model=e),V(e,r)}),D(r);var c=I(r,2),l=P(c);J(P(l),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(l);var u=I(l,2),d=P(u);J(d,{get icon(){return El},class:`form-action-icon`});var f=I(d,2),p=P(f,!0);D(f),D(u),D(c),L(e=>{a.disabled=Q.failoverFormManaged,l.disabled=Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving,u.disabled=e,H(p,Q.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving||!Q.failoverEnabled()]),la(a,()=>Q.failoverForm.target_model,e=>Q.failoverForm.target_model=e),z(`click`,l,()=>Q.addFailoverTarget()),z(`click`,u,()=>Q.generateFailoverForForm()),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=P(s);TN(P(c),{get enabled(){return Q.failoverForm.enabled},label:`failover mapping`,get disabled(){return Q.failoverFormManaged},onclick:()=>{Q.failoverFormManaged||(Q.failoverForm.enabled=!Q.failoverForm.enabled)}}),D(c),D(s),D(n),V(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var uP=B(` `),dP=B(`
`),fP=B(` `),pP=B(`
`),mP=B(`No failover suggestions were generated.
`),hP=B(`No failover drafts match the filter.
`),gP=B(`
`),_P=B(``);function vP(e,t){O(t,!0),Nu(e,{get open(){return Q.failoverDraftsOpen},variant:`editor`,onclose:()=>Q.closeFailoverDraftsModal(),children:(e,t)=>{var n=_P(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=uP(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Q.failoverDraftCountLabel()]),V(e,t)};U(a,e=>{Q.failoverGeneratedRules.length>0&&e(o)}),ku(I(a,2),{label:`Close failover drafts`,onclick:()=>Q.closeFailoverDraftsModal(),get disabled(){return Q.failoverDraftSaving}}),D(i),D(r);var s=I(r,2),c=e=>{_O(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};U(s,e=>{Q.failoverGenerating&&e(c)});var l=I(s,2),u=e=>{var t=dP(),n=P(t);SD(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Q.failoverDraftFilter},set value(e){Q.failoverDraftFilter=e}});var r=I(n,2),i=P(r);J(i,{get icon(){return Mc},class:`form-action-icon`});var a=I(i,2),o=P(a,!0);D(a),D(r),D(t),L(e=>{r.disabled=Q.failoverDraftSaving,H(o,e)},[()=>Q.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),z(`click`,r,()=>Q.toggleAllFailoverDrafts()),V(e,t)};U(l,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&e(u)});var d=I(l,2),f=e=>{var t=pP();W(t,21,()=>Q.filteredFailoverDrafts(),e=>`failover-draft:`+Q.failoverPrimaryModel(e),(e,t)=>{var n=fP(),r=P(n);ea(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(i),D(n),L((e,t,n,i)=>{na(r,e),r.disabled=Q.failoverDraftSaving,K(r,`aria-label`,t),H(o,n),H(c,i)},[()=>Q.failoverDraftSelected(R(t)),()=>`Select failover draft for `+Q.failoverPrimaryModel(R(t)),()=>Q.failoverPrimaryModel(R(t)),()=>Q.failoverTargetLabel(R(t))]),z(`change`,r,e=>Q.setFailoverDraftSelected(R(t),e.currentTarget.checked)),V(e,n)}),D(t),V(e,t)},p=A(()=>!Q.failoverGenerating&&Q.filteredFailoverDrafts().length>0);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{V(e,mP())};U(m,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length===0&&!Q.failoverError&&e(h)});var g=I(m,2),_=e=>{V(e,hP())},v=A(()=>!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&Q.filteredFailoverDrafts().length===0);U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=gP(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(y,e=>{Q.failoverError&&e(b)});var x=I(y,2),S=P(x),C=I(S,2),w=P(C);J(w,{get icon(){return cl},class:`form-action-icon`});var T=I(w,2),E=P(T,!0);D(T),D(C),D(x),D(n),L(e=>{S.disabled=Q.failoverDraftSaving,C.disabled=e,H(E,Q.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Q.failoverGenerating||Q.failoverDraftSaving||Q.selectedFailoverDraftCount()===0]),z(`click`,S,()=>Q.closeFailoverDraftsModal()),z(`click`,C,()=>Q.saveSelectedFailoverDrafts()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`,`change`]);var yP=B(`Rate limit management is unavailable.
`),bP=B(` Add `,1),xP=B(`
`),SP=B(`No rules.
`),CP=B(` Edit `,1),wP=B(``),TP=B(`
`),EP=B(``),DP=B(`Open Rate Limits page `),OP=B(``);function kP(e,t){O(t,!0);function n(){Y.dialogOpen||Z.closeRateLimitInspector()}Nu(e,{get open(){return Z.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=OP(),r=P(n),i=P(r),a=I(P(i),2),o=P(a),s=P(o,!0);D(o),D(a),D(i),ku(I(i,2),{label:`Close rate limits inspector`,onclick:()=>Z.closeRateLimitInspector()}),D(r);var c=I(r,2),l=e=>{_O(e,{label:`Loading rate limits...`})},u=e=>{V(e,yP())},d=e=>{var t=Xr();W(F(t),17,()=>Z.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=EP(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2);{let e=A(()=>`Add `+R(t).title.toLowerCase());yO(o,{get label(){return R(e)},class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(R(t).scope,R(t).subject),children:(e,t)=>{var n=bP();J(F(n),{get icon(){return il},class:`table-icon-svg`}),Ve(2),V(e,n)},$$slots:{default:!0}})}D(r);var s=I(r,2),c=e=>{var n=xP(),r=P(n,!0);D(n),L(()=>H(r,R(t).hint)),V(e,n)};U(s,e=>{R(t).hint&&e(c)});var l=I(s,2),u=e=>{V(e,SP())},d=e=>{var n=TP();W(n,21,()=>R(t).items,e=>Z.rateLimitKey(e),(e,t)=>{var n=wP(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=P(c);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?xc:bl);J(l,{get icon(){return R(e)},class:`budget-period-icon`})}var u=I(l,2),d=P(u,!0);D(u),D(c),D(s);var f=I(s,2),p=P(f),m=P(p),h=P(m,!0);D(m);var g=I(m,2),_=P(g,!0);D(g),D(p);var v=I(p,2),y=P(v),b=e=>{yO(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(null,null,R(t)),children:(e,t)=>{var n=CP();J(F(n),{get icon(){return nl},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},x=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(y,e=>{R(x)&&e(b)}),D(v),D(f),D(i),D(r),D(n),L((e,t,r,i,a,s,c,l)=>{G(n,1,`budget-row ${e??``}`),Bi(n,t),K(n,`title`,r),H(o,i),H(d,a),H(h,s),K(g,`title`,c),H(_,l)},[()=>Z.rateLimitPressureClass(R(t)),()=>Z.rateLimitPressureStyle(R(t)),()=>Z.rateLimitPressurePercent(R(t))+`% of the most constrained cap used`,()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitInspectorSummary(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n)};U(l,e=>{R(t).items.length===0?e(u):e(d,-1)}),D(n),L(()=>H(a,R(t).title)),V(e,n)}),V(e,t)};U(c,e=>{Z.rateLimitsLoading?e(l):Z.rateLimitsAvailable?e(d,-1):e(u,1)});var f=I(c,2),p=P(f),m=I(p,2),h=e=>{var t=DP();z(`click`,t,()=>{Z.closeRateLimitInspector(),Bl.navigate(`rate-limits`)}),V(e,t)},g=A(()=>Z.rateLimitsEnabled());U(m,e=>{R(g)&&e(h)}),D(f),D(n),L(()=>H(s,Z.rateLimitInspector.title)),z(`click`,p,()=>Z.closeRateLimitInspector()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);var AP=B(` models
`),jP=B(`Virtual models feature is unavailable.
`),MP=B(`
`),NP=B(` `),PP=B(`
`),FP=B(` New virtual model `),IP=B(``),LP=B(`No models registered.
`),RP=B(`No models in this category.
`),zP=B(`No models match your filter.
`),BP=B(`
`);function VP(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`models`&&(iM.fetchVirtualModels(),TM.fetchModelPricingOverrides(),Q.fetchFailoverRules(),Z.fetchRateLimitsPage())}),On(()=>{let e=iM.filteredDisplayModels.length;return wr(()=>iM.restartModelRendering(e)),()=>iM.stopModelRendering()});let n=A(()=>Y.needsAuth);var r=BP(),i=P(r),a=I(P(i),2),o=e=>{var t=AP(),n=P(t),r=P(n,!0);D(n),Ve(),D(t),L(()=>H(r,Id.filter?iM.filteredDisplayModels.length+` / `+iM.displayModels.length:iM.displayModels.length)),V(e,t)};U(a,e=>{iM.displayModels.length>0&&e(o)}),D(i);var s=I(i,2);Rd(s,{});var c=I(s,2),l=e=>{V(e,jP())};U(c,e=>{!iM.virtualModelsAvailable&&!R(n)&&e(l)});var u=I(c,2),d=e=>{var t=MP(),n=P(t,!0);D(t),L(()=>H(n,iM.aliasError)),V(e,t)};U(u,e=>{iM.aliasError&&!R(n)&&e(d)});var f=I(u,2),p=e=>{var t=MP(),n=P(t,!0);D(t),L(()=>H(n,TM.modelPricingOverrideError)),V(e,t)};U(f,e=>{TM.modelPricingOverrideError&&!R(n)&&!TM.modelPricingOverrideFormOpen&&e(p)});var m=I(f,2),h=e=>{var t=PP();W(t,21,()=>Id.categories,e=>e.category,(e,t)=>{var n=NP();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L(()=>{r=G(n,1,`category-tab svelte-scpjps`,null,r,{active:Id.activeCategory===R(t).category}),H(a,R(t).display_name),H(s,R(t).count)}),z(`click`,n,()=>Id.selectCategory(R(t).category)),V(e,n)}),D(t),V(e,t)};U(m,e=>{Id.categories.length>0&&e(h)});var g=I(m,2),_=e=>{var t=IP(),n=P(t);SD(P(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Id.filter},set value(e){Id.filter=e}}),D(n);var r=I(n,2),i=P(r),a=e=>{var t=FP();J(P(t),{get icon(){return il},class:`alias-create-icon`}),Ve(2),D(t),z(`click`,t,()=>iM.openVirtualModelCreate()),V(e,t)};U(i,e=>{iM.virtualModelsAvailable&&e(a)}),D(r),D(t),V(e,t)};U(g,e=>{(iM.displayModels.length>0||Id.filter||iM.virtualModelsAvailable)&&e(_)});var v=I(g,2),y=e=>{{let t=A(()=>iM.modelLoadingText());_O(e,{get label(){return R(t)},class:`models-loading-state`})}},b=A(()=>iM.modelsBusy()&&!R(n));U(v,e=>{R(b)&&e(y)});var x=I(v,2);WN(x,{});var S=I(x,2);tP(S,{});var C=I(S,2),w=e=>{CN(e,{})};U(C,e=>{(iM.displayModels.length>0||Id.filter)&&e(w)});var T=I(C,2),E=e=>{V(e,LP())};U(T,e=>{iM.displayModels.length===0&&!Id.loading&&!R(n)&&!Id.filter&&(Id.activeCategory===`all`||!Id.activeCategory)&&e(E)});var ee=I(T,2),te=e=>{V(e,RP())};U(ee,e=>{iM.displayModels.length===0&&!Id.loading&&!R(n)&&!Id.filter&&Id.activeCategory&&Id.activeCategory!==`all`&&e(te)});var ne=I(ee,2),re=e=>{V(e,zP())};U(ne,e=>{iM.displayModels.length>0&&iM.filteredDisplayModels.length===0&&Id.filter&&e(re)});var ie=I(ne,2);kP(ie,{});var ae=I(ie,2);RA(ae,{});var oe=I(ae,2);lP(oe,{}),vP(I(oe,2),{}),D(r),V(e,r),k()}Br([`click`]);var HP=`draft-workflow-preview`;function UP(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function WP(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function GP(e){return{ref:``,step:Number.isFinite(e)?e:10}}function KP(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function qP(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function JP(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function YP(e){return{cache:!!qP(e,`cache`,!1),audit:!!qP(e,`audit`,!1),usage:!!qP(e,`usage`,!1),budget:qP(e,`budget`,!0)!==!1,guardrails:!!qP(e,`guardrails`,!1),failover:qP(e,`failover`,!0)!==!1}}function XP(e,t){let n=YP(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function ZP(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...XP((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:YP(n).failover}}function QP(e,t){return ZP(e,t).failover?`On`:`Off`}function $P(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function eF(e,t){return ZP(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function tF(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function nF(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function rF(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=nF(e);t&&n.add(t)}),[...n].sort()}function iF(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&nF(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function aF(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function oF(e){return String(e&&e.scope_display||`global`).trim()||`global`}function sF(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=oF(e);return n===`global`?`All models`:n}function cF(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function lF(e){if(cF(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function uF(e){let t=e||UP(),n=String(t.scope_provider||``).trim(),r=lF(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function dF(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=lF(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function fF(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=lF(e&&e.scope_user_path),i=dF({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function pF(e,t){let n=t||WP(),r=tF(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=lF(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===lF(n.scope_user_path)}function mF(e,t,n){let r=uF(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>pF(e,r))||null}function hF(e){return String(e&&e.scope_type||``).trim()!==`global`}function gF(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function _F(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,tF(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function vF(e,t){let n=e||UP(),r=uF(n),i=YP(n.features||{}),a=XP(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?$P(n):[];return{id:HP,scope_type:dF(r),scope_display:fF(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function yF({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||UP(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=lF(a.scope_user_path),l=YP(a.features||{}),u=XP(l,t),d=mF(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=JP(f,`failover`),m=p?qP(f,`failover`,!0)!==!1:null,h=i||WP(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&lF(h.scope_user_path)===lF(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function bF(e,{models:t=[],hydratedScope:n=null}={}){let r=n||WP(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!rF(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=iF(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=cF(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var xF=new class{#e=j(N([]));get workflows(){return R(this.#e)}set workflows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get submitting(){return R(this.#o)}set submitting(e){M(this.#o,e,!0)}#s=j(``);get deactivatingID(){return R(this.#s)}set deactivatingID(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get formHydrated(){return R(this.#l)}set formHydrated(e){M(this.#l,e,!0)}#u=j(N(WP()));get hydratedScope(){return R(this.#u)}set hydratedScope(e){M(this.#u,e,!0)}#d=j(N([]));get guardrailRefs(){return R(this.#d)}set guardrailRefs(e){M(this.#d,e,!0)}#f=j(N(UP()));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}#p=null;failoverVisible(){return bu.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:bu.cacheVisible(),audit:bu.auditVisible(),usage:bu.usageVisible(),budget:bu.budgetsVisible(),guardrails:bu.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return _F(this.workflows,this.filter)}providerOptions(){return rF(Id.models,this.hydratedScope)}modelOptions(e){return iF(Id.models,e,this.hydratedScope)}activeScopeMatch(){return mF(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return vF(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=WP(),this.form=UP();return}this.formHydrated=!0,this.hydratedScope={scope_provider:tF(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?YP(e.workflow_payload.features):ZP(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):$P(e);this.form={scope_provider:tF(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=WP(),this.form=UP()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(GP(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return yF({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await bO(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await bO(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([bu.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=bF(e,{models:Id.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await xO(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}ed.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!hF(e))return;let n=sF(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await xO(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){ed.error(e.error);return}ed.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function SF(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function CF({resetDelayMs:e=2e3,logPrefix:t}={}){let n=N({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await SF(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var wF=B(`id: ... `);function TF(e,t){O(t,!0);let n=q(t,`workflowID`,3,``),r=CF({logPrefix:`Failed to copy workflow ID:`});On(()=>{n(),r.reset()});let i=A(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=A(()=>n()?R(i)+` `+n():R(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=wF();let c;var l=I(P(s),4),u=P(l,!0);D(l);var d=I(l,2);J(P(d),{get icon(){return Bc}}),D(d),D(s),L(()=>{c=G(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),K(s,`title`,R(i)),K(s,`aria-label`,R(a)),H(u,n())}),z(`click`,s,o),V(e,s),k()}Br([`click`]);var EF=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Et(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=AF(),l=P(c),u=e=>{var t=DF();let r;J(P(t),{get icon(){return n()}}),D(t),L(()=>r=G(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":R(i)===`workflow-node-endpoint`})),V(e,t)};U(l,e=>{n()&&e(u)});var d=I(l,2),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var t=OF(),n=P(t,!0);D(t),L(()=>H(n,s())),V(e,t)};U(p,e=>{s()&&e(m)});var g=I(p,2),_=e=>{var t=kF(),n=P(t,!0);D(t),L(()=>H(n,o())),V(e,t)};U(g,e=>{o()&&e(_)}),D(c),L(()=>{G(c,1,Ni([`workflow-node`,R(i),a()]),`svelte-nbptrg`),H(f,r())}),V(e,c)},DF=B(`
`),OF=B(` `),kF=B(` `),AF=B(`
`),jF=B(`
`,1),MF=B(`
`,1),NF=B(`
`),PF=B(``),FF=B(``);function IF(e,t){O(t,!0);let n=q(t,`chart`,19,()=>({}));var r=FF();let i;var a=P(r),o=e=>{TF(e,{get workflowID(){return n().workflowID}})};U(a,e=>{n().workflowID&&e(o)});var s=I(a,2),c=P(s);EF(c,()=>({icon:wl,label:`Client`,variant:`workflow-node-endpoint`}));var l=I(c,4);EF(l,()=>({icon:Hc,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=I(l,2),d=e=>{var t=jF(),r=F(t);EF(I(r,2),()=>({icon:Hc,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),V(e,t)};U(u,e=>{n().showCache&&e(d)});var f=I(u,2),p=e=>{var t=MF();EF(I(F(t),2),()=>({icon:Tl,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),V(e,t)};U(f,e=>{n().showBudget&&e(p)});var m=I(f,2),h=e=>{var t=MF();EF(I(F(t),2),()=>({icon:gl,label:`Guardrails`,sub:n().guardrailLabel})),V(e,t)};U(m,e=>{n().showGuardrails&&e(h)});var g=I(m,2),_=I(g,2);EF(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=I(_,2),y=e=>{var t=jF(),r=F(t);EF(I(r,2),()=>({icon:Qc,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),V(e,t)};U(v,e=>{n().showFailover&&e(y)});var b=I(v,2);EF(I(b,2),()=>({icon:Ic,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),D(s);var x=I(s,2),S=e=>{var t=PF(),r=P(t),i=P(r),a=e=>{EF(e,()=>({icon:Ac,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};U(i,e=>{n().showUsage&&e(a)});var o=I(i,2),s=e=>{V(e,NF())};U(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=I(o,2),l=e=>{EF(e,()=>({icon:Uc,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};U(c,e=>{n().showAudit&&e(l)}),D(r),Ve(4),D(t),V(e,t)};U(x,e=>{n().showAsync&&e(S)}),D(r),L(()=>{i=G(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),G(g,1,Ni([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),G(b,1,Ni([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),V(e,r),k()}function LF(e){let t=$P(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function RF(e,t){return t&&t.provider?t.provider:tF(e&&e.scope)||`AI`}function zF(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function BF(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function VF(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:YP(t)}function HF(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function UF(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return UF(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=UF(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:UF(e.error,t+1)):``}function WF(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||UF(t.response_body)}function GF(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function KF(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=HF(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=GF(n);if(i)return i;let a=tF(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function qF(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=HF(e),o=KF(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=WF(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function JF(e){return!!(e&&e.cacheHit)}function YF(e){return!!(e&&e.failoverTarget)}function XF(e){return!!(e&&e.budgetExceeded)}function ZF(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function QF(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function $F(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function eI(e,t,n,r){return e?XF(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function tI(e){return XF(e)?`Exceeded`:null}function nI(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function rI(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function iI(e){return e&&e.failoverTarget?`Redirected`:null}function aI(e){return e&&e.failoverTarget?e.failoverTarget:null}function oI(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function sI(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function cI(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function lI(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function uI(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function dI(e){return!e||!e.authMethod?null:e.authMethod}function fI(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function pI(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function mI(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function hI(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function gI(e,t){return!e||!e._live||pI(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function _I(e,t,n){return!e||!e._live?``:hI(e)?`usage`:gI(e,t)?`audit`:pI(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function vI(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?YP(i.features):ZP(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||XF(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||YF(t),m=BF(e,i.entry),h=_I(i.entry,t,a),g=hI(i.entry),_=gI(i.entry,t),v=pI(i.entry,s),y=mI(i.entry,s);return{showBudget:c,budgetNodeClass:eI(c,t,s,h===`budget`),budgetStatusLabel:tI(t),showGuardrails:l,guardrailLabel:l?LF(e):``,showCache:!!i.forceCache||!!a.cache||JF(t),cacheNodeClass:ZF(t,h===`cache`),cacheConnClass:QF(t),cacheStatusLabel:$F(t),showFailover:p,failoverNodeClass:p?nI(t):``,failoverConnClass:p?rI(t):``,failoverStatusLabel:p?iI(t):null,failoverTargetLabel:p?aI(t):null,aiLabel:RF(e,t),aiSublabel:zF(e,t),aiConnClass:oI(t),aiNodeClass:sI(t,h===`ai`),responseConnClass:oI(t),responseNodeClass:cI(t,h===`response`),responseNodeSublabel:lI(t),authNodeClass:uI(t,h===`auth`),authNodeSublabel:dI(t),usageNodeClass:fI(u,y,g),auditNodeClass:fI(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function yI(e,t){return vI(e,null,{forceCache:!1},t)}function bI(e,t,n){return vI(t,qF(e,t),{entry:e,features:VF(e)||(t?ZP(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var xI=B(`
`),SI=B(`
`),CI=B(`
`),wI=B(`
`),TI=B(`No guardrails configured for this workflow.
`),EI=B(``),DI=B(``),OI=B(` `);function kI(e,t){O(t,!0);let n=q(t,`preview`,3,!1),r=A(()=>xF.featureCaps()),i=A(()=>sF(t.workflow)),a=A(()=>eF(t.workflow,R(r))),o=A(()=>yI(t.workflow,R(r))),s=A(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=OI();let l;var u=P(c),d=P(u),f=P(d),p=P(f,!0);D(f);var m=I(f,2),h=P(m,!0);D(m),D(d);var g=I(d,2),_=P(g),v=P(_,!0);D(_),D(g),D(u);var y=I(u,2),b=e=>{var n=xI(),r=P(n,!0);D(n),L(()=>H(r,t.workflow.description)),V(e,n)};U(y,e=>{t.workflow.description&&e(b)});var x=I(y,2),S=e=>{var n=SI(),i=P(n);D(n),L(e=>H(i,`Failover: ${e??``}`),[()=>QP(t.workflow,R(r))]),V(e,n)},C=A(()=>xF.failoverVisible());U(x,e=>{R(C)&&e(S)});var w=I(x,2);IF(w,{get chart(){return R(o)}});var T=I(w,2),E=e=>{var t=EI(),n=P(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var o=I(n,2),c=e=>{var t=wI();W(t,23,()=>R(a),(e,t)=>R(s)+t,(e,t)=>{var n=CI(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a);D(a),D(n),L(()=>{H(i,R(t).ref),H(o,`step ${R(t).step??``}`)}),V(e,n)}),D(t),V(e,t)},l=e=>{V(e,TI())};U(o,e=>{R(a).length>0?e(c):e(l,-1)}),D(t),L(()=>H(i,R(a).length?R(a).length+` steps`:`None`)),V(e,t)},ee=A(()=>bu.guardrailsVisible());U(T,e=>{R(ee)&&e(E)});var te=I(T,2),ne=e=>{var n=DI(),r=P(n),a=P(r),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>`Edit workflow `+R(i));yO(s,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>xF.openCreate(t.workflow),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}D(r);var c=I(r,2),l=P(c),u=P(l);D(l);var d=I(l,2),f=P(d);D(d);var p=I(d,2),m=P(p);D(p),D(c),D(n),L((e,n,r,s)=>{a.disabled=e,K(a,`aria-label`,`Deactivate workflow `+R(i)),K(a,`title`,n),H(o,xF.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),H(u,`version: v${t.workflow.version??``}`),H(f,`created: ${r??``}`),H(m,`hash: ${s??``}`)},[()=>xF.deactivatingID===t.workflow.id||!hF(t.workflow),()=>hF(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>lu.formatTimestamp(t.workflow.created_at),()=>gF(t.workflow.workflow_hash)]),z(`click`,a,()=>xF.deactivate(t.workflow)),V(e,n)};U(te,e=>{n()||e(ne)}),D(c),L((e,t)=>{l=G(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),H(p,e),H(h,R(i)),H(v,t)},[()=>aF(t.workflow),()=>oF(t.workflow)]),V(e,c),k()}Br([`click`]);var AI=B(` `),jI=B(` `),MI=B(`All providers and models `),NI=B(`All models for provider `),PI=B(` `),FI=B(` `),II=B(``),LI=B(` Cache `),RI=B(` Audit Logs `),zI=B(` Usage `),BI=B(` Budget `),VI=B(` Guardrails `),HI=B(` Failover `),UI=B(`No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected. Open Guardrails
`),WI=B(``),GI=B(`
`),KI=B(`No guardrail steps configured yet.
`),qI=B(`Guardrail Steps Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.
Add Step `),JI=B(`
Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.
Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.
If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.
`,1);function YI(e,t){O(t,!0);{let t=e=>{YT(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=AI(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>xF.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),V(e,t)},$$slots:{title:!0}})},n=A(()=>xF.submitLabel()),r=A(()=>xF.submittingLabel()),i=A(()=>xF.submitMode()===`create`?il:cl);Ck(e,{get open(){return xF.formOpen},ariaLabel:`Workflow editor`,get error(){return xF.formError},get submitting(){return xF.submitting},get submitLabel(){return R(n)},get submittingLabel(){return R(r)},get submitIcon(){return R(i)},dialogClass:`workflow-editor`,onclose:()=>xF.closeForm(),onsubmit:()=>xF.submitForm(),header:t,children:(e,t)=>{var n=JI(),r=F(n),i=P(r);Tk(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=MI(),r=P(n);r.value=r.__value=``,W(I(r),16,()=>xF.providerOptions(),e=>e,(e,t)=>{var n=jI(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(n),z(`change`,n,e=>xF.setProvider(e.currentTarget.value)),Ui(n,()=>xF.form.scope_provider,e=>xF.form.scope_provider=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2),o=e=>{Tk(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=NI(),r=P(n);r.value=r.__value=``,W(I(r),17,()=>xF.modelOptions(xF.form.scope_provider),e=>xF.form.scope_provider+`-`+e,(e,t)=>{var n=jI(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t)),i!==(i=R(t))&&(n.value=(n.__value=R(t))??``)}),V(e,n)}),D(n),Ui(n,()=>xF.form.scope_model,e=>xF.form.scope_model=e),V(e,n)},$$slots:{default:!0}})};U(a,e=>{xF.form.scope_provider&&e(o)});var s=I(a,2);Tk(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=PI();ea(n),la(n,()=>xF.form.name,e=>xF.form.name=e),V(e,n)},$$slots:{default:!0}}),Tk(I(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=FI();ea(n),la(n,()=>xF.form.scope_user_path,e=>xF.form.scope_user_path=e),V(e,n)},$$slots:{default:!0}}),D(r);var c=I(r,8);Tk(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=II();ut(n),la(n,()=>xF.form.description,e=>xF.form.description=e),V(e,n)},$$slots:{default:!0}});var l=I(c,2),u=P(l),d=e=>{var t=LI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.cache,e=>xF.form.features.cache=e),V(e,t)},f=A(()=>bu.cacheVisible());U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var t=RI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.audit,e=>xF.form.features.audit=e),V(e,t)},h=A(()=>bu.auditVisible());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=e=>{var t=zI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.usage,e=>xF.form.features.usage=e),V(e,t)},v=A(()=>bu.usageVisible());U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=BI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.budget,e=>xF.form.features.budget=e),V(e,t)},x=A(()=>bu.budgetsVisible());U(y,e=>{R(x)&&e(b)});var S=I(y,2),C=e=>{var t=VI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.guardrails,e=>xF.form.features.guardrails=e),V(e,t)},w=A(()=>bu.guardrailsVisible());U(S,e=>{R(w)&&e(C)});var T=I(S,2),E=e=>{var t=HI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.failover,e=>xF.form.features.failover=e),V(e,t)},ee=A(()=>xF.failoverVisible());U(T,e=>{R(ee)&&e(E)}),D(l);var te=I(l,2),ne=I(P(te),2);{let e=A(()=>xF.preview());kI(ne,{get workflow(){return R(e)},preview:!0})}D(te);var re=I(te,2),ie=e=>{var t=qI(),n=P(t),r=I(P(n),2);D(n);var i=I(n,2),a=e=>{var t=UI(),n=I(P(t),2);D(t),z(`click`,n,()=>Bl.navigate(`guardrails`)),V(e,t)};U(i,e=>{xF.guardrailRefs.length===0&&e(a)});var o=I(i,2),s=e=>{var t=GI();W(t,21,()=>xF.form.guardrails,ii,(e,t,n)=>{var r=WI(),i=P(r),a=P(i);K(a,`for`,`workflow-guardrail-ref-`+n);var o=I(a,2);ea(o),K(o,`id`,`workflow-guardrail-ref-`+n),K(o,`aria-label`,`Guardrail reference `+(n+1)),D(i);var s=I(i,2),c=P(s);K(c,`for`,`workflow-guardrail-step-`+n);var l=I(c,2);ea(l),K(l,`id`,`workflow-guardrail-step-`+n),K(l,`aria-label`,`Guardrail step `+(n+1)),D(s);var u=I(s,2);D(r),la(o,()=>R(t).ref,e=>R(t).ref=e),la(l,()=>R(t).step,e=>R(t).step=e),z(`click`,u,()=>xF.removeGuardrailStep(n)),V(e,r)}),D(t),V(e,t)},c=e=>{V(e,KI())};U(o,e=>{xF.form.guardrails.length>0?e(s):e(c,-1)}),D(t),z(`click`,r,()=>xF.addGuardrailStep()),V(e,t)},ae=A(()=>xF.form.features.guardrails&&bu.guardrailsVisible());U(re,e=>{R(ae)&&e(ie)}),V(e,n)},$$slots:{header:!0,default:!0}})}k()}Br([`change`,`click`]);var XI=B(` Loading workflows...
`),ZI=B(`
`),QI=B(`No active workflows found.
`),$I=B(`No workflows match your filter.
`),eL=B(``);function tL(e,t){O(t,!0);var n=eL(),r=P(n),i=e=>{var t=XI();wT(P(t),{size:16,label:`Loading workflows`}),Ve(),D(t),V(e,t)};U(r,e=>{xF.loading&&!Y.authError&&e(i)});var a=I(r,2),o=e=>{var t=ZI();W(t,21,()=>xF.filteredWorkflows,e=>e.id,(e,t)=>{kI(e,{get workflow(){return R(t)}})}),D(t),V(e,t)};U(a,e=>{xF.filteredWorkflows.length>0&&e(o)});var s=I(a,2),c=e=>{V(e,QI())};U(s,e=>{xF.workflows.length===0&&!xF.loading&&!Y.authError&&xF.available&&e(c)});var l=I(s,2),u=e=>{V(e,$I())};U(l,e=>{xF.workflows.length>0&&xF.filteredWorkflows.length===0&&!xF.loading&&e(u)}),D(n),V(e,n),k()}var nL=B(` New Workflow `),rL=B(`Workflows feature is unavailable.
`),iL=B(`
`),aL=B(``),oL=B(` `),sL=B(`
`);function cL(e,t){O(t,!0),On(()=>{Y.refreshTick,xF.fetchPage()});var n=sL(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=nL();J(P(t),{get icon(){return il},class:`form-action-icon`,"aria-hidden":`true`}),Ve(2),D(t),z(`click`,t,()=>xF.openCreate()),V(e,t)};U(a,e=>{xF.available&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,rL())};U(s,e=>{!xF.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=iL(),n=P(t,!0);D(t),L(()=>H(n,xF.error)),V(e,t)};U(l,e=>{xF.error&&!Y.authError&&e(u)});var d=I(l,2),f=e=>{var t=aL(),n=P(t);SD(P(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return xF.filter},set value(e){xF.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i,!0);D(i),D(r),D(t),L(()=>H(a,xF.filteredWorkflows.length+` active scopes`)),V(e,t)};U(d,e=>{xF.available&&e(f)});var p=I(d,2);YI(p,{});var m=I(p,2);tL(m,{});var h=I(m,2);W(h,20,()=>xF.guardrailRefs,e=>e,(e,t)=>{var n=oL(),r={};L(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(h),D(n),V(e,n),k()}Br([`click`]);function lL(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Zu}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=uL(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function uL(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var dL=null;function fL(){return dL===null&&(dL=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(dL&&dL.matches)}function pL(e){return fL()?0:e}function mL(e,t){return!t||!t.live?{duration:0}:Yu(e,{duration:pL(150)})}var hL=new class{#e=j(N({}));get workflowVersionsByID(){return R(this.#e)}set workflowVersionsByID(e){M(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:bu.cacheVisible(),audit:bu.auditVisible(),usage:bu.usageVisible(),budget:bu.budgetsVisible(),guardrails:bu.guardrailsVisible(),failover:bu.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await hu(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},gL=6;function _L(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function vL(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>gL)return r;let i=_L(r);return i==null?r:yL(i,t+1,n)||n&&n(i)||r}function yL(e,t=0,n=null,r=null){if(e==null||t>gL)return``;if(typeof e==`string`){let i=_L(e.trim());return i==null?``:yL(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||SL(t&&t.response_body)}function wL(e){let t=e&&e.data?e.data:null;return t?bL(t.error_message)||(CL(e,t)?yL(t.response_body,0):``):``}function TL(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function EL(e){let t=TL(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function DL(e){let t=TL(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function OL(e){let t=TL(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function kL({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function AL({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function jL(e){return String(e&&e.session_id||``).trim()}function ML(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function NL(e){return!!jL(e)&&ML(e)>1}function PL(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_id:jL(e.latest)||String(e.session_id||``).trim(),session_count:Number(e.count||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function FL(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>zL(e))),i=(Array.isArray(t)?t:[]).filter(e=>!zL(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>zL(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!zL(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function IL(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function LL(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>jL(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function RL(e){return String(e&&e.id||``).trim()}function zL(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function BL(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function VL(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function HL(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&VL(t)}function UL(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!HL(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>BL(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>zL(e))),s=[];return a.forEach(e=>{let t=zL(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function WL(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!HL(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>BL(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>zL(e))),s=new Map;i.forEach((e,t)=>{let n=jL(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=zL(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=jL(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]),l[r]={...e,session_count:Math.max(ML(l[r]),ML(e))},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function GL(e,t){let n=RL(t),r=e||{};return n?r[n]?{}:{[n]:!0}:r}function KL(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>RL(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function qL(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function JL(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function YL(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function XL(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function ZL(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function QL(e){let t=ZL(e);return t.length>1||t.some(e=>!(e&&e.success))}function $L(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function eR(e){return String(e&&e.kind||``).trim()||`attempt`}function tR(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function nR(e){return String(e&&e.model||``).trim()||`-`}function rR(e){let t=ZL(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function iR(e){return ZL(e).length+`×`}function aR(e){let t=ZL(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function oR(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=eR(e);n&&n!==`attempt`&&t.push(n),t.push($L(e));let r=tR(e);r&&r!==`-`&&t.push(r);let i=nR(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function sR(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function cR(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function lR(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function uR(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function dR(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=sR(e,t),a=lR(e,t),o=cR(t),s=i!=null&&i!==``,c=eR(t),l=ZL(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:uR(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function fR(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function pR(e){return fR(e).filter(e=>!(e&&e.no_change))}function mR(e){return fR(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function hR(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function gR(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=pR(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:hR(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function _R(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function vR(e){let t=_R(e);return Number(t&&t.cached_input_tokens||0)>0}function yR(e){let t=_R(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function bR(e){let t=_R(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?cd(r)+` cached`:yR(e).toFixed(1)+`% cached`}function xR(e){return vR(e)?bR(e):``}function SR(e,t){let n=_R(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function CR(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&YL(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:xR(e),promptCacheHighlight:SR(e,t),noChangeSteps:mR(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function wR(e){let t=e&&e.data?e.data:null,n=wL(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&YL(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&YL(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function TR(e,t){let n=[{id:`request`,pane:CR(e,t)}];return pR(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:gR(e,t)})}),QL(e)?ZL(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:dR(e,t)})}):n.push({id:`response`,pane:wR(e)}),n}function ER(e){if(!QL(e))return`response`;let t=ZL(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function DR(e,t,n){return e&&(Array.isArray(n)?n:TR(t)).some(t=>t.id===e)?e:ER(t)}function OR(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var kR=100;function AR(){return{entries:[],total:0,limit:25,offset:0}}var jR=new class{#e=j(N({}));get auditExpandedEntries(){return R(this.#e)}set auditExpandedEntries(e){M(this.#e,e,!0)}#t=j(N({}));get auditExpandedThreads(){return R(this.#t)}set auditExpandedThreads(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return PE.auditLog}set auditLog(e){PE.auditLog=e}get auditSearch(){return PE.auditSearch}set auditSearch(e){PE.auditSearch=e}get auditMethod(){return PE.auditMethod}set auditMethod(e){PE.auditMethod=e}get auditStatusCode(){return PE.auditStatusCode}set auditStatusCode(e){PE.auditStatusCode=e}get auditStream(){return PE.auditStream}set auditStream(e){PE.auditStream=e}get auditGroupSessions(){return PE.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Fd.customStartDate,customEndDate:Fd.customEndDate}}toggleAuditGroupSessions(){PE.auditGroupSessions=!PE.auditGroupSessions,Ya(`gomodel_audit_group_sessions`,PE.auditGroupSessions),this.auditExpandedThreads={},PE.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=kL({dateQuery:Fd.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await hu((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=AR();return}let a=n?PL(i.data):i.data,o=(n?WL:UL)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),o.entries=PE.upsertAuditRecords(o.entries,`audit.list`),this.auditLog=o,this.auditExpandedThreads=LL(this.auditExpandedThreads,o.entries),PE.auditThreadChildren=LL(PE.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=KL(this.auditExpandedEntries,s);try{await hL.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=AR()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=PE.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&PE.auditThreadChildren[e]||null}async toggleThread(e){let t=jL(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=IL(this.auditExpandedThreads,t);let r=PE.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=jL(e);if(!t)return;let n=PE.auditThreadChildren[t];PE.auditThreadChildren={...PE.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...PE.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=IL(this.auditExpandedThreads,t))),PE.auditThreadChildren=e};try{let n=await hu(`/admin/audit/log?`+AL({sessionId:t,limit:kR}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=PE.auditThreadChildren[t],a=this.auditLog.entries.find(e=>jL(e)===t),o=FL(i,n.data.entries,a?[a]:[e]);o.entries=PE.upsertAuditRecords(o.entries,`audit.thread`),PE.auditThreadChildren={...PE.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=RL(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=GL(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof PE.fetchAuditEntryDetail==`function`&&PE.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};PE.fetchAuditLog=e=>jR.fetchAuditLog(e),PE.isAuditEntryExpanded=e=>jR.isAuditEntryExpanded(e);var MR=B(``);function NR(e,t){O(t,!0);let n=CD(()=>jR.fetchAuditLog(!0));On(()=>n.cancel);var r=MR(),i=P(r);SD(P(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return jR.auditSearch},set value(e){jR.auditSearch=e}}),D(i);var a=I(i,2),o=P(a),s=P(o);s.value=s.__value=``;var c=I(s);c.value=c.__value=`GET`;var l=I(c);l.value=l.__value=`POST`;var u=I(l);u.value=u.__value=`PUT`;var d=I(u);d.value=d.__value=`PATCH`;var f=I(d);f.value=f.__value=`DELETE`,D(o);var p=I(o,2),m=P(p);m.value=m.__value=``;var h=I(m);h.value=h.__value=`200`;var g=I(h);g.value=g.__value=`201`;var _=I(g);_.value=_.__value=`400`;var v=I(_);v.value=v.__value=`401`;var y=I(v);y.value=y.__value=`403`;var b=I(y);b.value=b.__value=`404`;var x=I(b);x.value=x.__value=`429`;var S=I(x);S.value=S.__value=`500`;var C=I(S);C.value=C.__value=`502`;var w=I(C);w.value=w.__value=`503`;var T=I(w);T.value=T.__value=`504`,D(p);var E=I(p,2),ee=P(E);ee.value=ee.__value=``;var te=I(ee);te.value=te.__value=`true`;var ne=I(te);ne.value=ne.__value=`false`,D(E);var re=I(E,2);J(P(re),{get icon(){return Ol},class:`table-icon-svg`}),Ve(2),D(re),D(a),D(r),z(`change`,o,()=>jR.fetchAuditLog(!0)),Ui(o,()=>jR.auditMethod,e=>jR.auditMethod=e),z(`change`,p,()=>jR.fetchAuditLog(!0)),Ui(p,()=>jR.auditStatusCode,e=>jR.auditStatusCode=e),z(`change`,E,()=>jR.fetchAuditLog(!0)),Ui(E,()=>jR.auditStream,e=>jR.auditStream=e),z(`click`,re,()=>jR.clearAuditFilters()),V(e,r),k()}Br([`change`,`click`]);var PR=B(`Live stream connecting… `),FR=B(` `),IR=B(`Live `),LR=B(` `);function RR(e,t){O(t,!0);let n=A(()=>PE.auditLivePauseReason()),r=A(()=>PE.liveLogsStreaming&&!R(n));var i=Xr(),a=F(i),o=e=>{var t=LR(),i=P(t);let a;var o=I(i,2),s=e=>{V(e,PR())},c=e=>{var t=FR(),r=P(t,!0);D(t),L(e=>H(r,e),[()=>SE(R(n))]),V(e,t)},l=e=>{V(e,IR())};U(o,e=>{PE.liveLogsStreaming?R(n)?e(c,1):e(l,-1):e(s)}),D(t),L(()=>a=G(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":R(r)})),V(e,t)},s=A(()=>bu.liveLogsVisible());U(a,e=>{R(s)&&e(o)}),V(e,i),k()}var zR=B(` `),BR=B(``);function VR(e,t){O(t,!0);let n=A(()=>[{key:`provider`,text:vd(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+xd(t.entry),mono:!0},{key:`failover`,text:XL(t.entry)&&`failover: `+XL(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=BR(),i=I(P(r),2);W(i,21,()=>R(n),e=>e.key,(e,t)=>{var n=zR(),r=P(n,!0);D(n),L(()=>{G(n,1,Ni([`provider-badge`,R(t).class,{mono:R(t).mono}]),`svelte-hyopt0`),H(r,R(t).text)}),V(e,n)}),D(i),D(r),V(e,r),k()}var HR=B(` `),UR=B(` `);function WR(e,t){O(t,!0);let n=A(()=>rR(t.entry)),r=A(()=>R(n).length>0?aR(t.entry):``),i=A(()=>R(n).length>0?iR(t.entry):``);var a=Xr(),o=F(a),s=e=>{var a=UR(),o=P(a);W(o,21,()=>R(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=HR();let r;L(e=>{r=G(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(R(t)&&R(t).success),"audit-attempt-error":!(R(t)&&R(t).success)}),K(n,`title`,e)},[()=>oR(R(t))]),V(e,n)}),D(o);var s=I(o,2),c=P(s,!0);D(s),D(a),L(()=>{K(a,`title`,R(r)),K(a,`aria-label`,R(r)),H(c,R(i))}),V(e,a)};U(o,e=>{R(n).length>0&&e(s)}),V(e,a),k()}var GR=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function KR(e){if(!e||typeof e!=`object`)return``;let t=String(e.type||``).toLowerCase();if(t===`image`||t===`image_url`||t===`input_image`||t===`output_image`)return`[Image]`;if(t===`audio`||t===`input_audio`||t===`output_audio`)return`[Audio]`;if(t===`file`||t===`input_file`||t===`output_file`){let t=String(e.filename||e.name||``).trim();return t?`[File: `+t+`]`:`[File]`}return typeof e.refusal==`string`?e.refusal:``}function qR(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:KR(e)).filter(Boolean).join(`
+ selector; unset fields continue to inherit.
Add Price
`,1);function tP(e,t){O(t,!0);let n=TM;Ck(e,{get open(){return n.modelPricingOverrideFormOpen},ariaLabel:`Model pricing editor`,dialogClass:`model-pricing-editor`,get error(){return n.modelPricingOverrideError},get submitting(){return n.modelPricingOverrideSubmitting},submitLabel:`Save Pricing`,onclose:()=>n.closeModelPricingOverrideForm(),onsubmit:()=>n.submitModelPricingOverrideForm(),header:e=>{var t=GN(),r=I(F(t),2),i=P(r,!0);D(r),L(()=>H(i,n.modelPricingOverrideFormDisplayName||n.modelPricingOverrideForm.selector||`Pricing`)),V(e,t)},extraActions:e=>{var t=Xr(),r=F(t),i=e=>{var t=KN();L(()=>t.disabled=n.modelPricingOverrideSubmitting),z(`click`,t,()=>n.deleteModelPricingOverride()),V(e,t)};U(r,e=>{n.modelPricingOverrideFormHasExistingOverride&&e(i)}),V(e,t)},children:(e,t)=>{var r=eP(),i=F(r),a=P(i);Tk(a,{id:`model-pricing-override-selector`,label:`Selector`,children:(e,t)=>{var r=qN();ea(r),la(r,()=>n.modelPricingOverrideForm.selector,e=>n.modelPricingOverrideForm.selector=e),V(e,r)},$$slots:{default:!0}});var o=I(a,2),s=e=>{Tk(e,{id:`model-pricing-override-scope`,label:`Scope`,children:(e,t)=>{var r=YN();W(r,21,()=>n.modelPricingOverrideFormScopeOptions,e=>e.value,(e,t)=>{var n=JN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(r),z(`change`,r,()=>n.setModelPricingOverrideScope(n.modelPricingOverrideFormScope)),Ui(r,()=>n.modelPricingOverrideFormScope,e=>n.modelPricingOverrideFormScope=e),V(e,r)},$$slots:{default:!0}})};U(o,e=>{n.modelPricingOverrideFormScopeOptions.length>1&&e(s)}),D(i);var c=I(i,4);W(c,21,()=>n.modelPricingOverrideRows,e=>e.id,(e,t,r)=>{var i=XN(),a=P(i),o=P(a),s=I(o,2);W(s,21,()=>n.availablePricingFieldOptions(R(t)),e=>e.value,(e,t)=>{var n=JN(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t).group+` - `+R(t).label),i!==(i=R(t).value)&&(n.value=(n.__value=R(t).value)??``)}),V(e,n)}),D(s),D(a);var c=I(a,2),l=P(c),u=I(l,2);ea(u),D(c);var d=I(c,2);{let e=A(()=>`Remove `+n.pricingFieldLabel(R(t).field));yO(d,{get label(){return R(e)},class:`table-action-btn-danger table-icon-btn pricing-override-remove-row`,onclick:()=>n.removeModelPricingOverrideRow(R(t)),children:(e,t)=>{J(e,{get icon(){return Ol},class:`table-icon-svg`})},$$slots:{default:!0}})}D(i),L(()=>{K(o,`for`,`pricing-type-`+R(t).id),K(s,`id`,`pricing-type-`+R(t).id),K(l,`for`,`pricing-value-`+R(t).id),K(u,`id`,`pricing-value-`+R(t).id)}),Ui(s,()=>R(t).field,e=>R(t).field=e),la(u,()=>R(t).value,e=>R(t).value=e),V(e,i)}),D(c);var l=I(c,2),u=P(l);J(P(u),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(u),D(l);var d=I(l,2),f=e=>{V(e,ZN())};U(d,e=>{n.modelPricingOverrideFormPreservedTiers.length>0&&e(f)});var p=I(d,2),m=I(P(p),2),h=e=>{V(e,QN())},g=A(()=>n.modelPricingEffectivePreviewRows().length===0);U(m,e=>{R(g)&&e(h)}),W(I(m,2),17,()=>n.modelPricingEffectivePreviewRows(),e=>e.field,(e,t)=>{var n=$N(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(n),L(e=>{H(i,R(t).label),H(o,e),H(c,R(t).source)},[()=>R(t).value===null||R(t).value===void 0?`-`:dd(Number(R(t).value))]),V(e,n)}),D(p),z(`click`,u,()=>n.addModelPricingOverrideRow()),V(e,r)},$$slots:{header:!0,extraActions:!0,default:!0}}),k()}Br([`click`,`change`]);var nP=B(`Failover mapping
`,1),rP=B(`Remove `),iP=B(`This failover mapping is defined in configuration and is read-only here.
`),aP=B(` `),oP=B(`
`),sP=B(` Add fallback model
`,1),cP=B(``);function lP(e,t){O(t,!0);{let t=e=>{var t=nP(),n=I(F(t),2),r=P(n,!0);D(n),L(()=>H(r,Q.failoverForm.source||`Failover`)),V(e,t)},n=e=>{var t=Xr(),n=F(t),r=e=>{var t=rP();L(()=>t.disabled=Q.failoverSaving||Q.failoverGenerating),z(`click`,t,()=>Q.deleteFailoverRule()),V(e,t)};U(n,e=>{Q.failoverFormMode===`edit`&&!Q.failoverFormManaged&&e(r)}),V(e,t)},r=A(()=>Q.failoverGenerating||Q.failoverFormManaged);Ck(e,{get open(){return Q.failoverFormOpen},ariaLabel:`Failover editor`,get error(){return Q.failoverError},get submitting(){return Q.failoverSaving},get submitDisabled(){return R(r)},submitLabel:`Save`,onclose:()=>Q.closeFailoverForm(),onsubmit:()=>Q.submitFailoverForm(),header:t,extraActions:n,children:(e,t)=>{var n=cP(),r=P(n),i=e=>{V(e,iP())};U(r,e=>{Q.failoverFormManaged&&e(i)});var a=I(r,2);W(a,21,()=>Id.models,ii,(e,t)=>{var n=aP(),r=P(n,!0);D(n);var i={};L((e,t)=>{H(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>ij(R(t)),()=>ij(R(t))]),V(e,n)}),D(a);var o=I(a,2);Tk(o,{id:`failover-target`,label:`Fallback models`,children:(e,t)=>{var n=sP(),r=F(n),i=P(r),a=P(i);ea(a);var o=I(a,2),s=e=>{yO(e,{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removePrimaryFailoverTarget(),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}})};U(o,e=>{Q.failoverForm.target_model&&e(s)}),D(i),W(I(i,2),17,()=>Q.failoverForm.targets,ii,(e,t,n)=>{var r=oP(),i=P(r);ea(i),yO(I(i,2),{label:`Remove fallback model`,class:`table-action-btn-danger table-icon-btn vm-target-remove`,onclick:()=>Q.removeFailoverTarget(n),get disabled(){return Q.failoverFormManaged},children:(e,t)=>{J(e,{get icon(){return xl},class:`table-icon-svg`})},$$slots:{default:!0}}),D(r),L(()=>i.disabled=Q.failoverFormManaged),la(i,()=>R(t).model,e=>R(t).model=e),V(e,r)}),D(r);var c=I(r,2),l=P(c);J(P(l),{get icon(){return il},class:`form-action-icon`}),Ve(2),D(l);var u=I(l,2),d=P(u);J(d,{get icon(){return El},class:`form-action-icon`});var f=I(d,2),p=P(f,!0);D(f),D(u),D(c),L(e=>{a.disabled=Q.failoverFormManaged,l.disabled=Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving,u.disabled=e,H(p,Q.failoverGenerating?`Generating...`:`Generate automatically`)},[()=>Q.failoverFormManaged||Q.failoverGenerating||Q.failoverSaving||!Q.failoverEnabled()]),la(a,()=>Q.failoverForm.target_model,e=>Q.failoverForm.target_model=e),z(`click`,l,()=>Q.addFailoverTarget()),z(`click`,u,()=>Q.generateFailoverForForm()),V(e,n)},$$slots:{default:!0}});var s=I(o,2),c=P(s);TN(P(c),{get enabled(){return Q.failoverForm.enabled},label:`failover mapping`,get disabled(){return Q.failoverFormManaged},onclick:()=>{Q.failoverFormManaged||(Q.failoverForm.enabled=!Q.failoverForm.enabled)}}),D(c),D(s),D(n),V(e,n)},$$slots:{header:!0,extraActions:!0,default:!0}})}k()}Br([`click`]);var uP=B(` `),dP=B(`
`),fP=B(` `),pP=B(`
`),mP=B(`No failover suggestions were generated.
`),hP=B(`No failover drafts match the filter.
`),gP=B(`
`),_P=B(``);function vP(e,t){O(t,!0),Nu(e,{get open(){return Q.failoverDraftsOpen},variant:`editor`,onclose:()=>Q.closeFailoverDraftsModal(),children:(e,t)=>{var n=_P(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=uP(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>Q.failoverDraftCountLabel()]),V(e,t)};U(a,e=>{Q.failoverGeneratedRules.length>0&&e(o)}),ku(I(a,2),{label:`Close failover drafts`,onclick:()=>Q.closeFailoverDraftsModal(),get disabled(){return Q.failoverDraftSaving}}),D(i),D(r);var s=I(r,2),c=e=>{_O(e,{label:`Generating failover drafts...`,class:`failover-drafts-loading`})};U(s,e=>{Q.failoverGenerating&&e(c)});var l=I(s,2),u=e=>{var t=dP(),n=P(t);SD(n,{placeholder:`Filter failover drafts...`,label:`Filter failover drafts`,get value(){return Q.failoverDraftFilter},set value(e){Q.failoverDraftFilter=e}});var r=I(n,2),i=P(r);J(i,{get icon(){return Mc},class:`form-action-icon`});var a=I(i,2),o=P(a,!0);D(a),D(r),D(t),L(e=>{r.disabled=Q.failoverDraftSaving,H(o,e)},[()=>Q.allFailoverDraftsSelected()?`Deselect all`:`Select all`]),z(`click`,r,()=>Q.toggleAllFailoverDrafts()),V(e,t)};U(l,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&e(u)});var d=I(l,2),f=e=>{var t=pP();W(t,21,()=>Q.filteredFailoverDrafts(),e=>`failover-draft:`+Q.failoverPrimaryModel(e),(e,t)=>{var n=fP(),r=P(n);ea(r);var i=I(r,2),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s,!0);D(s),D(i),D(n),L((e,t,n,i)=>{na(r,e),r.disabled=Q.failoverDraftSaving,K(r,`aria-label`,t),H(o,n),H(c,i)},[()=>Q.failoverDraftSelected(R(t)),()=>`Select failover draft for `+Q.failoverPrimaryModel(R(t)),()=>Q.failoverPrimaryModel(R(t)),()=>Q.failoverTargetLabel(R(t))]),z(`change`,r,e=>Q.setFailoverDraftSelected(R(t),e.currentTarget.checked)),V(e,n)}),D(t),V(e,t)},p=A(()=>!Q.failoverGenerating&&Q.filteredFailoverDrafts().length>0);U(d,e=>{R(p)&&e(f)});var m=I(d,2),h=e=>{V(e,mP())};U(m,e=>{!Q.failoverGenerating&&Q.failoverGeneratedRules.length===0&&!Q.failoverError&&e(h)});var g=I(m,2),_=e=>{V(e,hP())},v=A(()=>!Q.failoverGenerating&&Q.failoverGeneratedRules.length>0&&Q.filteredFailoverDrafts().length===0);U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=gP(),n=P(t,!0);D(t),L(()=>H(n,Q.failoverError)),V(e,t)};U(y,e=>{Q.failoverError&&e(b)});var x=I(y,2),S=P(x),C=I(S,2),w=P(C);J(w,{get icon(){return cl},class:`form-action-icon`});var T=I(w,2),E=P(T,!0);D(T),D(C),D(x),D(n),L(e=>{S.disabled=Q.failoverDraftSaving,C.disabled=e,H(E,Q.failoverDraftSaving?`Saving...`:`Save selected`)},[()=>Q.failoverGenerating||Q.failoverDraftSaving||Q.selectedFailoverDraftCount()===0]),z(`click`,S,()=>Q.closeFailoverDraftsModal()),z(`click`,C,()=>Q.saveSelectedFailoverDrafts()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`,`change`]);var yP=B(`Rate limit management is unavailable.
`),bP=B(` Add `,1),xP=B(`
`),SP=B(`No rules.
`),CP=B(` Edit `,1),wP=B(``),TP=B(`
`),EP=B(``),DP=B(`Open Rate Limits page `),OP=B(``);function kP(e,t){O(t,!0);function n(){Y.dialogOpen||Z.closeRateLimitInspector()}Nu(e,{get open(){return Z.rateLimitInspectorOpen},variant:`editor`,onclose:n,children:(e,t)=>{var n=OP(),r=P(n),i=P(r),a=I(P(i),2),o=P(a),s=P(o,!0);D(o),D(a),D(i),ku(I(i,2),{label:`Close rate limits inspector`,onclick:()=>Z.closeRateLimitInspector()}),D(r);var c=I(r,2),l=e=>{_O(e,{label:`Loading rate limits...`})},u=e=>{V(e,yP())},d=e=>{var t=Xr();W(F(t),17,()=>Z.rateLimitInspectorSections(),e=>e.key,(e,t)=>{var n=EP(),r=P(n),i=P(r),a=P(i,!0);D(i);var o=I(i,2);{let e=A(()=>`Add `+R(t).title.toLowerCase());yO(o,{get label(){return R(e)},class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(R(t).scope,R(t).subject),children:(e,t)=>{var n=bP();J(F(n),{get icon(){return il},class:`table-icon-svg`}),Ve(2),V(e,n)},$$slots:{default:!0}})}D(r);var s=I(r,2),c=e=>{var n=xP(),r=P(n,!0);D(n),L(()=>H(r,R(t).hint)),V(e,n)};U(s,e=>{R(t).hint&&e(c)});var l=I(s,2),u=e=>{V(e,SP())},d=e=>{var n=TP();W(n,21,()=>R(t).items,e=>Z.rateLimitKey(e),(e,t)=>{var n=wP(),r=P(n),i=P(r),a=P(i),o=P(a,!0);D(a);var s=I(a,2),c=P(s),l=P(c);{let e=A(()=>Z.rateLimitIsConcurrent(R(t))?xc:bl);J(l,{get icon(){return R(e)},class:`budget-period-icon`})}var u=I(l,2),d=P(u,!0);D(u),D(c),D(s);var f=I(s,2),p=P(f),m=P(p),h=P(m,!0);D(m);var g=I(m,2),_=P(g,!0);D(g),D(p);var v=I(p,2),y=P(v),b=e=>{yO(e,{label:`Edit rate limit`,class:`budget-action-btn`,onclick:()=>Z.openRateLimitFormFromInspector(null,null,R(t)),children:(e,t)=>{var n=CP();J(F(n),{get icon(){return nl},class:`budget-action-icon`}),Ve(2),V(e,n)},$$slots:{default:!0}})},x=A(()=>!Z.rateLimitIsReadOnly(R(t)));U(y,e=>{R(x)&&e(b)}),D(v),D(f),D(i),D(r),D(n),L((e,t,r,i,a,s,c,l)=>{G(n,1,`budget-row ${e??``}`),Bi(n,t),K(n,`title`,r),H(o,i),H(d,a),H(h,s),K(g,`title`,c),H(_,l)},[()=>Z.rateLimitPressureClass(R(t)),()=>Z.rateLimitPressureStyle(R(t)),()=>Z.rateLimitPressurePercent(R(t))+`% of the most constrained cap used`,()=>Z.rateLimitSubject(R(t)),()=>Z.rateLimitPeriodLabel(R(t)),()=>Z.rateLimitInspectorSummary(R(t)),()=>Z.rateLimitIsReadOnly(R(t))?`Declared in configuration; read-only in the dashboard`:`Managed via dashboard or admin API`,()=>Z.rateLimitSourceLabel(R(t))]),V(e,n)}),D(n),V(e,n)};U(l,e=>{R(t).items.length===0?e(u):e(d,-1)}),D(n),L(()=>H(a,R(t).title)),V(e,n)}),V(e,t)};U(c,e=>{Z.rateLimitsLoading?e(l):Z.rateLimitsAvailable?e(d,-1):e(u,1)});var f=I(c,2),p=P(f),m=I(p,2),h=e=>{var t=DP();z(`click`,t,()=>{Z.closeRateLimitInspector(),Bl.navigate(`rate-limits`)}),V(e,t)},g=A(()=>Z.rateLimitsEnabled());U(m,e=>{R(g)&&e(h)}),D(f),D(n),L(()=>H(s,Z.rateLimitInspector.title)),z(`click`,p,()=>Z.closeRateLimitInspector()),V(e,n)},$$slots:{default:!0}}),k()}Br([`click`]);var AP=B(` models
`),jP=B(`Virtual models feature is unavailable.
`),MP=B(`
`),NP=B(` `),PP=B(`
`),FP=B(` New virtual model `),IP=B(``),LP=B(`No models registered.
`),RP=B(`No models in this category.
`),zP=B(`No models match your filter.
`),BP=B(`
`);function VP(e,t){O(t,!0),On(()=>{Y.refreshTick,Bl.page===`models`&&(iM.fetchVirtualModels(),TM.fetchModelPricingOverrides(),Q.fetchFailoverRules(),Z.fetchRateLimitsPage())}),On(()=>{let e=iM.filteredDisplayModels.length;return wr(()=>iM.restartModelRendering(e)),()=>iM.stopModelRendering()});let n=A(()=>Y.needsAuth);var r=BP(),i=P(r),a=I(P(i),2),o=e=>{var t=AP(),n=P(t),r=P(n,!0);D(n),Ve(),D(t),L(()=>H(r,Id.filter?iM.filteredDisplayModels.length+` / `+iM.displayModels.length:iM.displayModels.length)),V(e,t)};U(a,e=>{iM.displayModels.length>0&&e(o)}),D(i);var s=I(i,2);Rd(s,{});var c=I(s,2),l=e=>{V(e,jP())};U(c,e=>{!iM.virtualModelsAvailable&&!R(n)&&e(l)});var u=I(c,2),d=e=>{var t=MP(),n=P(t,!0);D(t),L(()=>H(n,iM.aliasError)),V(e,t)};U(u,e=>{iM.aliasError&&!R(n)&&e(d)});var f=I(u,2),p=e=>{var t=MP(),n=P(t,!0);D(t),L(()=>H(n,TM.modelPricingOverrideError)),V(e,t)};U(f,e=>{TM.modelPricingOverrideError&&!R(n)&&!TM.modelPricingOverrideFormOpen&&e(p)});var m=I(f,2),h=e=>{var t=PP();W(t,21,()=>Id.categories,e=>e.category,(e,t)=>{var n=NP();let r;var i=P(n),a=P(i,!0);D(i);var o=I(i,2),s=P(o,!0);D(o),D(n),L(()=>{r=G(n,1,`category-tab svelte-scpjps`,null,r,{active:Id.activeCategory===R(t).category}),H(a,R(t).display_name),H(s,R(t).count)}),z(`click`,n,()=>Id.selectCategory(R(t).category)),V(e,n)}),D(t),V(e,t)};U(m,e=>{Id.categories.length>0&&e(h)});var g=I(m,2),_=e=>{var t=IP(),n=P(t);SD(P(n),{placeholder:`Filter by provider, provider/model, alias, or owner...`,label:`Filter models by provider, provider/model, alias, or owner`,get value(){return Id.filter},set value(e){Id.filter=e}}),D(n);var r=I(n,2),i=P(r),a=e=>{var t=FP();J(P(t),{get icon(){return il},class:`alias-create-icon`}),Ve(2),D(t),z(`click`,t,()=>iM.openVirtualModelCreate()),V(e,t)};U(i,e=>{iM.virtualModelsAvailable&&e(a)}),D(r),D(t),V(e,t)};U(g,e=>{(iM.displayModels.length>0||Id.filter||iM.virtualModelsAvailable)&&e(_)});var v=I(g,2),y=e=>{{let t=A(()=>iM.modelLoadingText());_O(e,{get label(){return R(t)},class:`models-loading-state`})}},b=A(()=>iM.modelsBusy()&&!R(n));U(v,e=>{R(b)&&e(y)});var x=I(v,2);WN(x,{});var S=I(x,2);tP(S,{});var C=I(S,2),w=e=>{CN(e,{})};U(C,e=>{(iM.displayModels.length>0||Id.filter)&&e(w)});var T=I(C,2),E=e=>{V(e,LP())};U(T,e=>{iM.displayModels.length===0&&!Id.loading&&!R(n)&&!Id.filter&&(Id.activeCategory===`all`||!Id.activeCategory)&&e(E)});var ee=I(T,2),te=e=>{V(e,RP())};U(ee,e=>{iM.displayModels.length===0&&!Id.loading&&!R(n)&&!Id.filter&&Id.activeCategory&&Id.activeCategory!==`all`&&e(te)});var ne=I(ee,2),re=e=>{V(e,zP())};U(ne,e=>{iM.displayModels.length>0&&iM.filteredDisplayModels.length===0&&Id.filter&&e(re)});var ie=I(ne,2);kP(ie,{});var ae=I(ie,2);RA(ae,{});var oe=I(ae,2);lP(oe,{}),vP(I(oe,2),{}),D(r),V(e,r),k()}Br([`click`]);var HP=`draft-workflow-preview`;function UP(){return{scope_provider:``,scope_model:``,scope_user_path:``,name:``,description:``,features:{cache:!0,audit:!0,usage:!0,budget:!0,guardrails:!1,failover:!0},guardrails:[]}}function WP(){return{scope_provider:``,scope_model:``,scope_user_path:``}}function GP(e){return{ref:``,step:Number.isFinite(e)?e:10}}function KP(e){let t=e==null?``:String(e).trim();if(t===``)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function qP(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=t.charAt(0).toUpperCase()+t.slice(1);for(let n of[t,r])if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==null&&e[n]!==void 0)return e[n];return n}function JP(e,t){return!e||typeof e!=`object`||Array.isArray(e)?!1:[t,t.charAt(0).toUpperCase()+t.slice(1)].some(t=>Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==null&&e[t]!==void 0)}function YP(e){return{cache:!!qP(e,`cache`,!1),audit:!!qP(e,`audit`,!1),usage:!!qP(e,`usage`,!1),budget:qP(e,`budget`,!0)!==!1,guardrails:!!qP(e,`guardrails`,!1),failover:qP(e,`failover`,!0)!==!1}}function XP(e,t){let n=YP(e),r=t||{},i=n.usage&&!!r.usage;return{cache:n.cache&&!!r.cache,audit:n.audit&&!!r.audit,usage:i,budget:i&&n.budget&&!!r.budget,guardrails:n.guardrails&&!!r.guardrails,failover:n.failover&&!!r.failover}}function ZP(e,t){let n=e&&e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:e&&e.features?e.features:{};return{...XP((e&&e.effective_features&&typeof e.effective_features==`object`&&!Array.isArray(e.effective_features)?e.effective_features:null)||n,t),failover:YP(n).failover}}function QP(e,t){return ZP(e,t).failover?`On`:`Off`}function $P(e){return(Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:Array.isArray(e&&e.guardrails)?e.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0)}function eF(e,t){return ZP(e,t).guardrails&&Array.isArray(e&&e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[]}function tF(e){return String(e&&(e.scope_provider_name||e.scope_provider)||``).trim()}function nF(e){return String(e&&(e.provider_name||e.provider_type)||``).trim()}function rF(e,t){let n=new Set,r=String(t&&t.scope_provider||``).trim();return r&&n.add(r),(Array.isArray(e)?e:[]).forEach(e=>{let t=nF(e);t&&n.add(t)}),[...n].sort()}function iF(e,t,n){let r=String(t||``).trim(),i=new Set,a=String(n&&n.scope_provider||``).trim(),o=String(n&&n.scope_model||``).trim();return r&&r===a&&o&&i.add(o),(Array.isArray(e)?e:[]).forEach(e=>{if(r&&nF(e)!==r)return;let t=String(e&&e.model&&e.model.id||``).trim();t&&i.add(t)}),[...i].sort()}function aF(e){let t=String(e&&e.scope_type||``).trim();return t===`provider_model`?`Provider Name + Model`:t===`provider_model_path`?`Provider Name + Model + Path`:t===`provider_path`?`Provider Name + Path`:t===`path`?`Path`:t===`provider`?`Provider Name`:`Global`}function oF(e){return String(e&&e.scope_display||`global`).trim()||`global`}function sF(e){let t=String(e&&e.name||``).trim();if(t)return t;let n=oF(e);return n===`global`?`All models`:n}function cF(e){let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`);for(let e of n){let t=String(e||``).trim();if(t){if(t===`.`||t===`..`)return`User path cannot contain "." or ".." segments.`;if(t.includes(`:`))return`User path cannot contain ":" segments.`}}return``}function lF(e){if(cF(e))return``;let t=String(e||``).trim();if(!t)return``;let n=(t.startsWith(`/`)?t:`/`+t).split(`/`),r=[];for(let e of n){let t=String(e||``).trim();t&&r.push(t)}return r.length?`/`+r.join(`/`):`/`}function uF(e){let t=e||UP(),n=String(t.scope_provider||``).trim(),r=lF(t.scope_user_path);return{scope_provider:n,scope_model:n?String(t.scope_model||``).trim():``,scope_user_path:r}}function dF(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=lF(e&&e.scope_user_path);return!t&&!r?`global`:!t&&r?`path`:!n&&!r?`provider`:!n&&r?`provider_path`:r?`provider_model_path`:`provider_model`}function fF(e){let t=String(e&&e.scope_provider||``).trim(),n=t?String(e&&e.scope_model||``).trim():``,r=lF(e&&e.scope_user_path),i=dF({scope_provider:t,scope_model:n,scope_user_path:r});return i===`global`?`global`:i===`path`?r:i===`provider`?t:i===`provider_path`?t+` @ `+r:i===`provider_model_path`?t+`/`+n+` @ `+r:t+`/`+n}function pF(e,t){let n=t||WP(),r=tF(e&&e.scope),i=r?String(e&&e.scope&&e.scope.scope_model||``).trim():``,a=lF(e&&e.scope&&e.scope.scope_user_path);return r===String(n.scope_provider||``).trim()&&i===String(n.scope_model||``).trim()&&a===lF(n.scope_user_path)}function mF(e,t,n){let r=uF(t);return!(r.scope_provider!==``||r.scope_model!==``||r.scope_user_path!==``)&&!n?null:(Array.isArray(e)?e:[]).find(e=>pF(e,r))||null}function hF(e){return String(e&&e.scope_type||``).trim()!==`global`}function gF(e){let t=String(e||``).trim();return t?t.length<=14?t:t.slice(0,12)+`…`:`—`}function _F(e,t){let n=Array.isArray(e)?e:[];if(!t)return n;let r=String(t).toLowerCase();return n.filter(e=>[e.name,e.description,e.scope_display,e.scope_type,tF(e&&e.scope),e.scope&&e.scope.scope_model,e.scope&&e.scope.scope_user_path,e.workflow_hash,...Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>e.ref):[]].some(e=>String(e||``).toLowerCase().includes(r)))}function vF(e,t){let n=e||UP(),r=uF(n),i=YP(n.features||{}),a=XP(i,t);a.failover=i.failover;let o=!!a.guardrails,s=o?$P(n):[];return{id:HP,scope_type:dF(r),scope_display:fF(r),scope:{scope_provider_name:r.scope_provider,scope_model:r.scope_model,...r.scope_user_path?{scope_user_path:r.scope_user_path}:{}},name:String(n.name||``).trim(),description:String(n.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!a.cache,audit:!!a.audit,usage:!!a.usage,budget:!!a.budget,guardrails:o,failover:!!a.failover},guardrails:s}}}function yF({form:e,caps:t,workflows:n=[],formHydrated:r=!1,hydratedScope:i=null}){let a=e||UP(),o=String(a.scope_provider||``).trim(),s=o?String(a.scope_model||``).trim():``,c=lF(a.scope_user_path),l=YP(a.features||{}),u=XP(l,t),d=mF(n,a,r),f=d&&d.workflow_payload&&d.workflow_payload.features,p=JP(f,`failover`),m=p?qP(f,`failover`,!0)!==!1:null,h=i||WP(),g=String(h.scope_provider||``).trim()===o&&String(h.scope_model||``).trim()===s&&lF(h.scope_user_path)===lF(c),_=!!(t&&t.failover),v=_||!!r&&g&&Object.prototype.hasOwnProperty.call(l,`failover`)||!r&&!!d&&p,y=u.guardrails?(Array.isArray(a.guardrails)?a.guardrails:[]).map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})):[],b={scope_provider_name:o,scope_model:s,...c?{scope_user_path:c}:{},name:String(a.name||``).trim(),description:String(a.description||``).trim(),workflow_payload:{schema_version:1,features:{cache:!!u.cache,audit:!!u.audit,usage:!!u.usage,budget:!!u.budget,guardrails:!!u.guardrails},guardrails:y}};return v&&(b.workflow_payload.features.failover=!_&&!r&&d&&p?m:!!l.failover),b}function bF(e,{models:t=[],hydratedScope:n=null}={}){let r=n||WP(),i=String(r.scope_provider||``).trim(),a=String(r.scope_model||``).trim(),o=String(e&&(e.scope_provider_name||e.scope_provider)||``).trim(),s=String(e&&e.scope_model||``).trim();if(o&&!rF(t,r).includes(o)&&o!==i)return`Choose a registered provider name.`;if(s&&!o)return`Model selection requires a provider name.`;if(s){let e=iF(t,o,r),n=o===i&&s===a;if(!e.includes(s)&&!n)return`Choose a registered model for the selected provider name.`}let c=cF(e.scope_user_path);if(c)return c;let l=e.workflow_payload&&e.workflow_payload.features?e.workflow_payload.features:{},u=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails:[];if(!l.guardrails)return``;let d=new Set;for(let e of u){if(!e.ref)return`Each guardrail step needs a guardrail ref.`;if(!Number.isInteger(e.step)||e.step<0)return`Each guardrail step must use a non-negative integer step number.`;if(d.has(e.ref))return`Each guardrail ref may appear only once in a workflow.`;d.add(e.ref)}return``}var xF=new class{#e=j(N([]));get workflows(){return R(this.#e)}set workflows(e){M(this.#e,e,!0)}#t=j(!0);get available(){return R(this.#t)}set available(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}#r=j(``);get error(){return R(this.#r)}set error(e){M(this.#r,e,!0)}#i=j(``);get filter(){return R(this.#i)}set filter(e){M(this.#i,e,!0)}#a=j(!1);get formOpen(){return R(this.#a)}set formOpen(e){M(this.#a,e,!0)}#o=j(!1);get submitting(){return R(this.#o)}set submitting(e){M(this.#o,e,!0)}#s=j(``);get deactivatingID(){return R(this.#s)}set deactivatingID(e){M(this.#s,e,!0)}#c=j(``);get formError(){return R(this.#c)}set formError(e){M(this.#c,e,!0)}#l=j(!1);get formHydrated(){return R(this.#l)}set formHydrated(e){M(this.#l,e,!0)}#u=j(N(WP()));get hydratedScope(){return R(this.#u)}set hydratedScope(e){M(this.#u,e,!0)}#d=j(N([]));get guardrailRefs(){return R(this.#d)}set guardrailRefs(e){M(this.#d,e,!0)}#f=j(N(UP()));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}#p=null;failoverVisible(){return bu.booleanFlag(`FAILOVER_ENABLED`,!0)}featureCaps(){return{cache:bu.cacheVisible(),audit:bu.auditVisible(),usage:bu.usageVisible(),budget:bu.budgetsVisible(),guardrails:bu.guardrailsVisible(),failover:this.failoverVisible()}}get filteredWorkflows(){return _F(this.workflows,this.filter)}providerOptions(){return rF(Id.models,this.hydratedScope)}modelOptions(e){return iF(Id.models,e,this.hydratedScope)}activeScopeMatch(){return mF(this.workflows,this.form,this.formHydrated)}submitMode(){return this.activeScopeMatch()?`save`:`create`}submitLabel(){return this.submitMode()===`save`?`Save`:`Create`}submittingLabel(){return this.submitMode()===`save`?`Saving...`:`Creating...`}preview(){return vF(this.form,this.featureCaps())}openCreate(e){if(this.formOpen=!0,this.submitting=!1,this.formError=``,!e){this.formHydrated=!1,this.hydratedScope=WP(),this.form=UP();return}this.formHydrated=!0,this.hydratedScope={scope_provider:tF(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``).trim(),scope_user_path:String(e.scope&&e.scope.scope_user_path||``).trim()};let t=e.workflow_payload&&e.workflow_payload.features?YP(e.workflow_payload.features):ZP(e,this.featureCaps()),n=Array.isArray(e.workflow_payload&&e.workflow_payload.guardrails)?e.workflow_payload.guardrails.map(e=>({ref:String(e&&e.ref||``).trim(),step:KP(e&&e.step)})).filter(e=>Number.isInteger(e.step)&&e.step>=0):$P(e);this.form={scope_provider:tF(e.scope),scope_model:String(e.scope&&e.scope.scope_model||``),scope_user_path:String(e.scope&&e.scope.scope_user_path||``),name:String(e.name||``),description:String(e.description||``),features:{cache:!!t.cache,audit:!!t.audit,usage:!!t.usage,budget:!!t.budget,guardrails:!!t.guardrails,failover:!!t.failover},guardrails:n.map(e=>({ref:String(e&&e.ref||``),step:Number.isFinite(e&&e.step)?e.step:10}))}}closeForm(){this.formOpen=!1,this.submitting=!1,this.formError=``,this.formHydrated=!1,this.hydratedScope=WP(),this.form=UP()}setProvider(e){if(this.form.scope_provider=String(e||``).trim(),!this.form.scope_provider){this.form.scope_model=``;return}this.modelOptions(this.form.scope_provider).includes(String(this.form.scope_model||``).trim())||(this.form.scope_model=``)}addGuardrailStep(){let e=(Array.isArray(this.form.guardrails)?this.form.guardrails:[]).reduce((e,t)=>{let n=Number(t&&t.step);return Number.isFinite(n)?Math.max(e,n):e},0)+10;this.form.guardrails.push(GP(e))}removeGuardrailStep(e){Array.isArray(this.form.guardrails)&&this.form.guardrails.splice(e,1)}buildRequest(){return yF({form:this.form,caps:this.featureCaps(),workflows:this.workflows,formHydrated:this.formHydrated,hydratedScope:this.hydratedScope})}async fetchWorkflows(){this.#p&&this.#p.abort();let e=new AbortController;this.#p=e,this.loading=!0,this.error=``;let t=setTimeout(()=>e.abort(),1e4),n=await bO(`/admin/workflows`,{label:`workflows`,options:{signal:e.signal}});if(clearTimeout(t),this.#p===e&&(this.#p=null,this.loading=!1,n.status!==`stale`)){if(n.status===`unavailable`){this.available=!1,this.workflows=[];return}if(n.result&&(this.available=!0),n.status===`error`){this.workflows=[],this.error=e.signal.aborted?`Loading workflows timed out.`:n.error;return}this.workflows=n.items}}async fetchGuardrailRefs(){let e=await bO(`/admin/workflows/guardrails`,{label:`workflow guardrails`});e.status!==`stale`&&(this.guardrailRefs=e.items)}async fetchPage(){await Promise.all([bu.ensureLoaded(),this.fetchWorkflows(),this.fetchGuardrailRefs()])}async submitForm(){if(this.submitting)return;this.formError=``;let e=this.buildRequest(),t=bF(e,{models:Id.models,hydratedScope:this.hydratedScope});if(t){this.formError=t;return}this.submitting=!0;try{let t=await xO(`/admin/workflows`,`POST`,e,{label:`create workflow`,unavailableStatuses:[]});if(t.status===`stale`||t.result&&t.result.status===401)return;if(t.status===`error`){this.formError=t.error;return}ed.success(`Workflow created and activated.`),this.closeForm(),this.fetchPage()}finally{this.submitting=!1}}async deactivate(e){let t=String(e&&e.id||``).trim();if(!t||this.deactivatingID||!hF(e))return;let n=sF(e);if(confirm(`Deactivate workflow "`+n+`"? Requests will fall back to the next active workflow for this scope.`)){this.deactivatingID=t;try{let e=await xO(`/admin/workflows/`+encodeURIComponent(t)+`/deactivate`,`POST`,void 0,{label:`deactivate workflow`,unavailableStatuses:[]});if(e.status===`stale`||e.result&&e.result.status===401)return;if(e.status===`error`){ed.error(e.error);return}ed.success(`Workflow deactivated.`),this.fetchPage()}finally{this.deactivatingID=``}}}};function SF(e){let t=String(e??``),n=typeof navigator<`u`?navigator.clipboard:null;if(n&&typeof n.writeText==`function`)return n.writeText(t);let r=typeof document<`u`?document:null;if(!r||!r.body||typeof r.execCommand!=`function`)return Promise.reject(Error(`Clipboard API unavailable`));let i=r.createElement(`textarea`);i.value=t,i.setAttribute(`readonly`,``),i.style.position=`fixed`,i.style.top=`0`,i.style.left=`0`,i.style.opacity=`0`;try{if(r.body.appendChild(i),i.focus(),i.select(),i.setSelectionRange(0,i.value.length),!r.execCommand(`copy`))throw Error(`execCommand copy returned false`)}finally{i.parentNode&&i.parentNode.removeChild(i)}return Promise.resolve()}function CF({resetDelayMs:e=2e3,logPrefix:t}={}){let n=N({copied:!1,error:!1}),r=null;function i(){r!==null&&clearTimeout(r),r=null}function a(){i(),r=setTimeout(()=>{n.copied=!1,n.error=!1,r=null},e)}return{get copied(){return n.copied},get error(){return n.error},reset(){i(),n.copied=!1,n.error=!1},async copy(e,r){if(!(e==null||e===``)){i(),n.copied=!1,n.error=!1;try{await SF(typeof r==`function`?r(e):String(e)),n.copied=!0,n.error=!1}catch(e){console.error(t||`Failed to copy text:`,e),n.copied=!1,n.error=!0}a()}}}}var wF=B(`id: ... `);function TF(e,t){O(t,!0);let n=q(t,`workflowID`,3,``),r=CF({logPrefix:`Failed to copy workflow ID:`});On(()=>{n(),r.reset()});let i=A(()=>r.error?`Unable to copy workflow ID`:r.copied?`Workflow ID copied`:`Copy workflow ID`),a=A(()=>n()?R(i)+` `+n():R(i));async function o(e){e.preventDefault(),n()&&await r.copy(n())}var s=wF();let c;var l=I(P(s),4),u=P(l,!0);D(l);var d=I(l,2);J(P(d),{get icon(){return Bc}}),D(d),D(s),L(()=>{c=G(s,1,`workflow-pipeline-meta mono svelte-1viff7o`,null,c,{"workflow-pipeline-meta-copied":r.copied,"workflow-pipeline-meta-error":r.error}),K(s,`title`,R(i)),K(s,`aria-label`,R(a)),H(u,n())}),z(`click`,s,o),V(e,s),k()}Br([`click`]);var EF=(e,t)=>{let n=()=>(t?.()).icon,r=()=>(t?.()).label,i=Et(()=>h((t?.()).variant,`workflow-node-feature`)),a=()=>(t?.()).state,o=()=>(t?.()).sub,s=()=>(t?.()).badge;var c=AF(),l=P(c),u=e=>{var t=DF();let r;J(P(t),{get icon(){return n()}}),D(t),L(()=>r=G(t,1,`workflow-node-icon svelte-nbptrg`,null,r,{"workflow-node-icon-endpoint":R(i)===`workflow-node-endpoint`})),V(e,t)};U(l,e=>{n()&&e(u)});var d=I(l,2),f=P(d,!0);D(d);var p=I(d,2),m=e=>{var t=OF(),n=P(t,!0);D(t),L(()=>H(n,s())),V(e,t)};U(p,e=>{s()&&e(m)});var g=I(p,2),_=e=>{var t=kF(),n=P(t,!0);D(t),L(()=>H(n,o())),V(e,t)};U(g,e=>{o()&&e(_)}),D(c),L(()=>{G(c,1,Ni([`workflow-node`,R(i),a()]),`svelte-nbptrg`),H(f,r())}),V(e,c)},DF=B(`
`),OF=B(` `),kF=B(` `),AF=B(`
`),jF=B(`
`,1),MF=B(`
`,1),NF=B(`
`),PF=B(``),FF=B(``);function IF(e,t){O(t,!0);let n=q(t,`chart`,19,()=>({}));var r=FF();let i;var a=P(r),o=e=>{TF(e,{get workflowID(){return n().workflowID}})};U(a,e=>{n().workflowID&&e(o)});var s=I(a,2),c=P(s);EF(c,()=>({icon:wl,label:`Client`,variant:`workflow-node-endpoint`}));var l=I(c,4);EF(l,()=>({icon:Hc,label:`Auth`,state:n().authNodeClass,sub:n().authNodeSublabel}));var u=I(l,2),d=e=>{var t=jF(),r=F(t);EF(I(r,2),()=>({icon:Hc,label:`Cache`,state:n().cacheNodeClass,badge:n().cacheStatusLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().cacheConnClass]),`svelte-nbptrg`)),V(e,t)};U(u,e=>{n().showCache&&e(d)});var f=I(u,2),p=e=>{var t=MF();EF(I(F(t),2),()=>({icon:Tl,label:`Budget`,state:n().budgetNodeClass,badge:n().budgetStatusLabel})),V(e,t)};U(f,e=>{n().showBudget&&e(p)});var m=I(f,2),h=e=>{var t=MF();EF(I(F(t),2),()=>({icon:gl,label:`Guardrails`,sub:n().guardrailLabel})),V(e,t)};U(m,e=>{n().showGuardrails&&e(h)});var g=I(m,2),_=I(g,2);EF(_,()=>({label:n().aiLabel,variant:`workflow-node-ai`,state:n().aiNodeClass,sub:n().aiSublabel}));var v=I(_,2),y=e=>{var t=jF(),r=F(t);EF(I(r,2),()=>({icon:Qc,label:`Failover`,state:n().failoverNodeClass,badge:n().failoverStatusLabel,sub:n().failoverTargetLabel})),L(()=>G(r,1,Ni([`workflow-conn`,n().failoverConnClass]),`svelte-nbptrg`)),V(e,t)};U(v,e=>{n().showFailover&&e(y)});var b=I(v,2);EF(I(b,2),()=>({icon:Ic,label:`Response`,variant:`workflow-node-endpoint`,state:n().responseNodeClass,sub:n().responseNodeSublabel})),D(s);var x=I(s,2),S=e=>{var t=PF(),r=P(t),i=P(r),a=e=>{EF(e,()=>({icon:Ac,label:`Usage`,variant:`workflow-node-feature workflow-node-async`,state:n().usageNodeClass}))};U(i,e=>{n().showUsage&&e(a)});var o=I(i,2),s=e=>{V(e,NF())};U(o,e=>{n().showUsage&&n().showAudit&&e(s)});var c=I(o,2),l=e=>{EF(e,()=>({icon:Uc,label:`Audit Log`,variant:`workflow-node-feature workflow-node-async`,state:n().auditNodeClass}))};U(c,e=>{n().showAudit&&e(l)}),D(r),Ve(4),D(t),V(e,t)};U(x,e=>{n().showAsync&&e(S)}),D(r),L(()=>{i=G(r,1,`workflow-pipeline svelte-nbptrg`,null,i,{"workflow-pipeline-has-meta":n().workflowID}),G(g,1,Ni([`workflow-conn`,n().aiConnClass]),`svelte-nbptrg`),G(b,1,Ni([`workflow-conn`,n().responseConnClass]),`svelte-nbptrg`)}),V(e,r),k()}function LF(e){let t=$P(e).length;return t===0?``:t===1?`1 step`:t+` steps`}function RF(e,t){return t&&t.provider?t.provider:tF(e&&e.scope)||`AI`}function zF(e,t){return t&&t.model?t.model:e&&e.scope&&e.scope.scope_model||null}function BF(e,t){let n=String(e&&e.id||``).trim();if(n&&n!==`draft-workflow-preview`)return n;let r=String(t&&t.workflow_version_id||``).trim();return r&&r!==`draft-workflow-preview`?r:null}function VF(e){let t=e&&e.data&&e.data.workflow_features;return!t||typeof t!=`object`||Array.isArray(t)?null:YP(t)}function HF(e){let t=e&&e.data&&e.data.failover;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=String(t.target_model||t.targetModel||``).trim()||null;return n?{targetModel:n}:null}function UF(e,t=0){if(t>4||e==null)return``;if(typeof e==`string`){let n=e.trim();if(!n||n[0]!==`{`&&n[0]!==`[`)return``;try{return UF(JSON.parse(n),t+1)}catch{return``}}if(Array.isArray(e)){for(let n of e){let e=UF(n,t+1);if(e)return e}return``}return typeof e==`object`?String(e.code||``).trim()||(e.error===void 0?``:UF(e.error,t+1)):``}function WF(e){let t=e&&e.data&&typeof e.data==`object`&&!Array.isArray(e.data)?e.data:{};return String(t.error_code||t.errorCode||``).trim()||UF(t.response_body)}function GF(e){let t=String(e||``).trim();if(!t)return null;let n=t.indexOf(`/`);return n<=0||n>=t.length-1?null:{provider:t.slice(0,n),model:t.slice(n+1)}}function KF(e,t){let n=String(e&&(e.requested_model||e.model)||``).trim(),r=HF(e);if(!(r&&r.targetModel))return{provider:String(e&&e.provider||``).trim()||null,model:n||null};let i=GF(n);if(i)return i;let a=tF(t&&t.scope),o=a?String(t&&t.scope&&t.scope.scope_model||``).trim():``;return a||o?{provider:a||null,model:o||n||null}:{provider:null,model:n||null}}function qF(e,t){if(!e)return null;let n=(()=>{let t=String(e.cache_type||``).trim().toLowerCase();return t===`exact`||t===`semantic`?t:null})(),r=(()=>{if(e.status_code===void 0||e.status_code===null)return null;let t=String(e.status_code).trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null})(),i=n?!0:e.cache_hit!==void 0&&e.cache_hit!==null&&!!e.cache_hit,a=HF(e),o=KF(e,t),s=Number.isFinite(r)&&r>=200&&r<300,c=String(e.error_type||``).trim().toLowerCase()===`authentication_error`,l=String(e.auth_method||``).trim().toLowerCase()||null,u=WF(e).toLowerCase()===`budget_exceeded`;return{cacheHit:i,cacheType:n||null,failoverTarget:a&&a.targetModel?a.targetModel:null,provider:o.provider,model:o.model,statusCode:r,responseSuccess:s,aiSuccess:s&&!i,authError:c,authMethod:l,budgetExceeded:u}}function JF(e){return!!(e&&e.cacheHit)}function YF(e){return!!(e&&e.failoverTarget)}function XF(e){return!!(e&&e.budgetExceeded)}function ZF(e,t){return t?`workflow-node-current`:e&&e.cacheHit?`workflow-node-success`:``}function QF(e){return e&&e.cacheHit?`workflow-conn-hit`:``}function $F(e){return!e||!e.cacheHit?null:e.cacheType===`semantic`?`Hit (Semantic)`:`Hit (Exact)`}function eI(e,t,n,r){return e?XF(t)?`workflow-node-error`:r?`workflow-node-current`:n?`workflow-node-success`:``:``}function tI(e){return XF(e)?`Exceeded`:null}function nI(e){return e&&e.cacheHit?`workflow-node-skipped`:e&&e.failoverTarget?`workflow-node-success`:``}function rI(e){return e&&e.cacheHit?`workflow-conn-dim`:e&&e.failoverTarget?`workflow-conn-hit`:``}function iI(e){return e&&e.failoverTarget?`Redirected`:null}function aI(e){return e&&e.failoverTarget?e.failoverTarget:null}function oI(e){return e&&e.cacheHit?`workflow-conn-dim`:``}function sI(e,t){return e?e.cacheHit?`workflow-node-skipped`:t?`workflow-node-current`:e.aiSuccess?`workflow-node-success`:``:``}function cI(e,t){if(!e)return``;let n=e.statusCode;return!Number.isFinite(n)&&t?`workflow-node-current`:Number.isFinite(n)?n>=500?`workflow-node-error`:n>=400?`workflow-node-warning`:n>=300?`workflow-node-neutral`:n>=200?`workflow-node-success`:``:``}function lI(e){return!e||!Number.isFinite(e.statusCode)?null:String(e.statusCode)}function uI(e,t){return e?e.authError?`workflow-node-error`:t?`workflow-node-current`:e.authMethod===`api_key`||e.authMethod===`master_key`?`workflow-node-success`:``:``}function dI(e){return!e||!e.authMethod?null:e.authMethod}function fI(e,t,n){return e?n?`workflow-node-current`:t?`workflow-node-success`:``:``}function pI(e,t){if(!e||!e._live)return!!t;let n=String(e._live_state||``).trim();return!!e._audit_flushed||n===`audit.flushed`||n===`audit.detail`}function mI(e,t){if(!e)return!!t;let n=e.usage||{},r=Number(n.entries||0)>0;if(!e._live)return r;let i=String(e._usage_live_state||``).trim();return e._usage_flushed||i===`usage.flushed`?!0:!e._usage_live_pending&&r&&!e._live_pending}function hI(e){return!!(e&&e._live&&e._usage_live_pending&&!e._usage_flushed)}function gI(e,t){return!e||!e._live||pI(e,!1)?!1:String(e._live_state||``).trim()===`audit.completed`||!!(t&&Number.isFinite(t.statusCode))}function _I(e,t,n){return!e||!e._live?``:hI(e)?`usage`:gI(e,t)?`audit`:pI(e,!1)&&!e._live_pending?``:t&&t.cacheHit?`cache`:t&&(t.provider||t.model)?`ai`:n&&n.budget&&(e.workflow_version_id||e.requested_model)?`budget`:t&&t.authMethod?``:`auth`}function vI(e,t,n,r){let i=n||{},a=i.features&&typeof i.features==`object`&&!Array.isArray(i.features)?YP(i.features):ZP(e,r),o=!!i.forceAudit,s=!!i.highlightAsyncPresent,c=!!a.budget||XF(t),l=!!a.guardrails,u=!!a.usage,d=o||!!a.audit,f=!!i.forceAsync||!!(u||d),p=!!a.failover||YF(t),m=BF(e,i.entry),h=_I(i.entry,t,a),g=hI(i.entry),_=gI(i.entry,t),v=pI(i.entry,s),y=mI(i.entry,s);return{showBudget:c,budgetNodeClass:eI(c,t,s,h===`budget`),budgetStatusLabel:tI(t),showGuardrails:l,guardrailLabel:l?LF(e):``,showCache:!!i.forceCache||!!a.cache||JF(t),cacheNodeClass:ZF(t,h===`cache`),cacheConnClass:QF(t),cacheStatusLabel:$F(t),showFailover:p,failoverNodeClass:p?nI(t):``,failoverConnClass:p?rI(t):``,failoverStatusLabel:p?iI(t):null,failoverTargetLabel:p?aI(t):null,aiLabel:RF(e,t),aiSublabel:zF(e,t),aiConnClass:oI(t),aiNodeClass:sI(t,h===`ai`),responseConnClass:oI(t),responseNodeClass:cI(t,h===`response`),responseNodeSublabel:lI(t),authNodeClass:uI(t,h===`auth`),authNodeSublabel:dI(t),usageNodeClass:fI(u,y,g),auditNodeClass:fI(d,v,_),showAsync:f,showUsage:u,showAudit:d,workflowID:m}}function yI(e,t){return vI(e,null,{forceCache:!1},t)}function bI(e,t,n){return vI(t,qF(e,t),{entry:e,features:VF(e)||(t?ZP(t,n):{cache:!1,audit:!1,usage:!1,budget:!1,guardrails:!1,failover:!1}),forceAudit:!0,forceAsync:!0,highlightAsyncPresent:!0},n)}var xI=B(`
`),SI=B(`
`),CI=B(`
`),wI=B(`
`),TI=B(`No guardrails configured for this workflow.
`),EI=B(``),DI=B(``),OI=B(` `);function kI(e,t){O(t,!0);let n=q(t,`preview`,3,!1),r=A(()=>xF.featureCaps()),i=A(()=>sF(t.workflow)),a=A(()=>eF(t.workflow,R(r))),o=A(()=>yI(t.workflow,R(r))),s=A(()=>n()?`draft-workflow-preview-guardrail-`:t.workflow.id+`-guardrail-`);var c=OI();let l;var u=P(c),d=P(u),f=P(d),p=P(f,!0);D(f);var m=I(f,2),h=P(m,!0);D(m),D(d);var g=I(d,2),_=P(g),v=P(_,!0);D(_),D(g),D(u);var y=I(u,2),b=e=>{var n=xI(),r=P(n,!0);D(n),L(()=>H(r,t.workflow.description)),V(e,n)};U(y,e=>{t.workflow.description&&e(b)});var x=I(y,2),S=e=>{var n=SI(),i=P(n);D(n),L(e=>H(i,`Failover: ${e??``}`),[()=>QP(t.workflow,R(r))]),V(e,n)},C=A(()=>xF.failoverVisible());U(x,e=>{R(C)&&e(S)});var w=I(x,2);IF(w,{get chart(){return R(o)}});var T=I(w,2),E=e=>{var t=EI(),n=P(t),r=I(P(n),2),i=P(r,!0);D(r),D(n);var o=I(n,2),c=e=>{var t=wI();W(t,23,()=>R(a),(e,t)=>R(s)+t,(e,t)=>{var n=CI(),r=P(n),i=P(r,!0);D(r);var a=I(r,2),o=P(a);D(a),D(n),L(()=>{H(i,R(t).ref),H(o,`step ${R(t).step??``}`)}),V(e,n)}),D(t),V(e,t)},l=e=>{V(e,TI())};U(o,e=>{R(a).length>0?e(c):e(l,-1)}),D(t),L(()=>H(i,R(a).length?R(a).length+` steps`:`None`)),V(e,t)},ee=A(()=>bu.guardrailsVisible());U(T,e=>{R(ee)&&e(E)});var te=I(T,2),ne=e=>{var n=DI(),r=P(n),a=P(r),o=P(a,!0);D(a);var s=I(a,2);{let e=A(()=>`Edit workflow `+R(i));yO(s,{get label(){return R(e)},class:`table-icon-btn`,onclick:()=>xF.openCreate(t.workflow),children:(e,t)=>{J(e,{get icon(){return nl},class:`table-icon-svg`})},$$slots:{default:!0}})}D(r);var c=I(r,2),l=P(c),u=P(l);D(l);var d=I(l,2),f=P(d);D(d);var p=I(d,2),m=P(p);D(p),D(c),D(n),L((e,n,r,s)=>{a.disabled=e,K(a,`aria-label`,`Deactivate workflow `+R(i)),K(a,`title`,n),H(o,xF.deactivatingID===t.workflow.id?`Deactivating...`:`Deactivate`),H(u,`version: v${t.workflow.version??``}`),H(f,`created: ${r??``}`),H(m,`hash: ${s??``}`)},[()=>xF.deactivatingID===t.workflow.id||!hF(t.workflow),()=>hF(t.workflow)?`Deactivate active workflow`:`The global workflow cannot be deactivated.`,()=>lu.formatTimestamp(t.workflow.created_at),()=>gF(t.workflow.workflow_hash)]),z(`click`,a,()=>xF.deactivate(t.workflow)),V(e,n)};U(te,e=>{n()||e(ne)}),D(c),L((e,t)=>{l=G(c,1,`workflow-card svelte-1fo9fvq`,null,l,{"workflow-preview-card":n()}),H(p,e),H(h,R(i)),H(v,t)},[()=>aF(t.workflow),()=>oF(t.workflow)]),V(e,c),k()}Br([`click`]);var AI=B(` `),jI=B(` `),MI=B(`All providers and models `),NI=B(`All models for provider `),PI=B(` `),FI=B(` `),II=B(``),LI=B(` Cache `),RI=B(` Audit Logs `),zI=B(` Usage `),BI=B(` Budget `),VI=B(` Guardrails `),HI=B(` Failover `),UI=B(`No named guardrails are currently registered on this deployment. You can still draft a workflow, but guardrail-backed creation may be rejected. Open Guardrails
`),WI=B(``),GI=B(`
`),KI=B(`No guardrail steps configured yet.
`),qI=B(`Guardrail Steps Guardrails in the same numeric step run together. Later steps wait for earlier ones to finish.
Add Step `),JI=B(`
Leave provider name empty to target all providers and models. Select a provider name without a model to target all models for that configured provider.
Add a path to scope the workflow to that subtree. Leading slashes are optional and will be normalized; you can enter "team/alpha" or "/team/alpha". Matching checks the deepest user path first, then falls back toward the root.
If you leave the name empty, the workflow will display as the matched provider/model scope or “All models”.
`,1);function YI(e,t){O(t,!0);{let t=e=>{YT(e,{copyId:`workflow-help-copy`,label:`workflow help`,text:`Create immutable version. Submitting activates it for the selected scope.`,title:e=>{var t=AI(),n=P(t,!0);D(t),L(e=>H(n,e),[()=>xF.submitMode()===`save`?`Edit Workflow`:`Create Workflow`]),V(e,t)},$$slots:{title:!0}})},n=A(()=>xF.submitLabel()),r=A(()=>xF.submittingLabel()),i=A(()=>xF.submitMode()===`create`?il:cl);Ck(e,{get open(){return xF.formOpen},ariaLabel:`Workflow editor`,get error(){return xF.formError},get submitting(){return xF.submitting},get submitLabel(){return R(n)},get submittingLabel(){return R(r)},get submitIcon(){return R(i)},dialogClass:`workflow-editor`,onclose:()=>xF.closeForm(),onsubmit:()=>xF.submitForm(),header:t,children:(e,t)=>{var n=JI(),r=F(n),i=P(r);Tk(i,{id:`workflow-scope-provider`,label:`Provider Name`,children:(e,t)=>{var n=MI(),r=P(n);r.value=r.__value=``,W(I(r),16,()=>xF.providerOptions(),e=>e,(e,t)=>{var n=jI(),r=P(n,!0);D(n);var i={};L(()=>{H(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(n),z(`change`,n,e=>xF.setProvider(e.currentTarget.value)),Ui(n,()=>xF.form.scope_provider,e=>xF.form.scope_provider=e),V(e,n)},$$slots:{default:!0}});var a=I(i,2),o=e=>{Tk(e,{id:`workflow-scope-model`,label:`Model`,children:(e,t)=>{var n=NI(),r=P(n);r.value=r.__value=``,W(I(r),17,()=>xF.modelOptions(xF.form.scope_provider),e=>xF.form.scope_provider+`-`+e,(e,t)=>{var n=jI(),r=P(n,!0);D(n);var i={};L(()=>{H(r,R(t)),i!==(i=R(t))&&(n.value=(n.__value=R(t))??``)}),V(e,n)}),D(n),Ui(n,()=>xF.form.scope_model,e=>xF.form.scope_model=e),V(e,n)},$$slots:{default:!0}})};U(a,e=>{xF.form.scope_provider&&e(o)});var s=I(a,2);Tk(s,{id:`workflow-name`,label:`Name`,children:(e,t)=>{var n=PI();ea(n),la(n,()=>xF.form.name,e=>xF.form.name=e),V(e,n)},$$slots:{default:!0}}),Tk(I(s,2),{id:`workflow-user-path`,label:`User Path`,children:(e,t)=>{var n=FI();ea(n),la(n,()=>xF.form.scope_user_path,e=>xF.form.scope_user_path=e),V(e,n)},$$slots:{default:!0}}),D(r);var c=I(r,8);Tk(c,{id:`workflow-description`,label:`Description`,children:(e,t)=>{var n=II();ut(n),la(n,()=>xF.form.description,e=>xF.form.description=e),V(e,n)},$$slots:{default:!0}});var l=I(c,2),u=P(l),d=e=>{var t=LI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.cache,e=>xF.form.features.cache=e),V(e,t)},f=A(()=>bu.cacheVisible());U(u,e=>{R(f)&&e(d)});var p=I(u,2),m=e=>{var t=RI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.audit,e=>xF.form.features.audit=e),V(e,t)},h=A(()=>bu.auditVisible());U(p,e=>{R(h)&&e(m)});var g=I(p,2),_=e=>{var t=zI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.usage,e=>xF.form.features.usage=e),V(e,t)},v=A(()=>bu.usageVisible());U(g,e=>{R(v)&&e(_)});var y=I(g,2),b=e=>{var t=BI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.budget,e=>xF.form.features.budget=e),V(e,t)},x=A(()=>bu.budgetsVisible());U(y,e=>{R(x)&&e(b)});var S=I(y,2),C=e=>{var t=VI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.guardrails,e=>xF.form.features.guardrails=e),V(e,t)},w=A(()=>bu.guardrailsVisible());U(S,e=>{R(w)&&e(C)});var T=I(S,2),E=e=>{var t=HI(),n=P(t);ea(n),Ve(2),D(t),ua(n,()=>xF.form.features.failover,e=>xF.form.features.failover=e),V(e,t)},ee=A(()=>xF.failoverVisible());U(T,e=>{R(ee)&&e(E)}),D(l);var te=I(l,2),ne=I(P(te),2);{let e=A(()=>xF.preview());kI(ne,{get workflow(){return R(e)},preview:!0})}D(te);var re=I(te,2),ie=e=>{var t=qI(),n=P(t),r=I(P(n),2);D(n);var i=I(n,2),a=e=>{var t=UI(),n=I(P(t),2);D(t),z(`click`,n,()=>Bl.navigate(`guardrails`)),V(e,t)};U(i,e=>{xF.guardrailRefs.length===0&&e(a)});var o=I(i,2),s=e=>{var t=GI();W(t,21,()=>xF.form.guardrails,ii,(e,t,n)=>{var r=WI(),i=P(r),a=P(i);K(a,`for`,`workflow-guardrail-ref-`+n);var o=I(a,2);ea(o),K(o,`id`,`workflow-guardrail-ref-`+n),K(o,`aria-label`,`Guardrail reference `+(n+1)),D(i);var s=I(i,2),c=P(s);K(c,`for`,`workflow-guardrail-step-`+n);var l=I(c,2);ea(l),K(l,`id`,`workflow-guardrail-step-`+n),K(l,`aria-label`,`Guardrail step `+(n+1)),D(s);var u=I(s,2);D(r),la(o,()=>R(t).ref,e=>R(t).ref=e),la(l,()=>R(t).step,e=>R(t).step=e),z(`click`,u,()=>xF.removeGuardrailStep(n)),V(e,r)}),D(t),V(e,t)},c=e=>{V(e,KI())};U(o,e=>{xF.form.guardrails.length>0?e(s):e(c,-1)}),D(t),z(`click`,r,()=>xF.addGuardrailStep()),V(e,t)},ae=A(()=>xF.form.features.guardrails&&bu.guardrailsVisible());U(re,e=>{R(ae)&&e(ie)}),V(e,n)},$$slots:{header:!0,default:!0}})}k()}Br([`change`,`click`]);var XI=B(` Loading workflows...
`),ZI=B(`
`),QI=B(`No active workflows found.
`),$I=B(`No workflows match your filter.
`),eL=B(``);function tL(e,t){O(t,!0);var n=eL(),r=P(n),i=e=>{var t=XI();wT(P(t),{size:16,label:`Loading workflows`}),Ve(),D(t),V(e,t)};U(r,e=>{xF.loading&&!Y.authError&&e(i)});var a=I(r,2),o=e=>{var t=ZI();W(t,21,()=>xF.filteredWorkflows,e=>e.id,(e,t)=>{kI(e,{get workflow(){return R(t)}})}),D(t),V(e,t)};U(a,e=>{xF.filteredWorkflows.length>0&&e(o)});var s=I(a,2),c=e=>{V(e,QI())};U(s,e=>{xF.workflows.length===0&&!xF.loading&&!Y.authError&&xF.available&&e(c)});var l=I(s,2),u=e=>{V(e,$I())};U(l,e=>{xF.workflows.length>0&&xF.filteredWorkflows.length===0&&!xF.loading&&e(u)}),D(n),V(e,n),k()}var nL=B(` New Workflow `),rL=B(`Workflows feature is unavailable.
`),iL=B(`
`),aL=B(``),oL=B(` `),sL=B(`
`);function cL(e,t){O(t,!0),On(()=>{Y.refreshTick,xF.fetchPage()});var n=sL(),r=P(n),i=I(P(r),2),a=P(i),o=e=>{var t=nL();J(P(t),{get icon(){return il},class:`form-action-icon`,"aria-hidden":`true`}),Ve(2),D(t),z(`click`,t,()=>xF.openCreate()),V(e,t)};U(a,e=>{xF.available&&e(o)}),D(i),D(r);var s=I(r,2),c=e=>{V(e,rL())};U(s,e=>{!xF.available&&!Y.authError&&e(c)});var l=I(s,2),u=e=>{var t=iL(),n=P(t,!0);D(t),L(()=>H(n,xF.error)),V(e,t)};U(l,e=>{xF.error&&!Y.authError&&e(u)});var d=I(l,2),f=e=>{var t=aL(),n=P(t);SD(P(n),{placeholder:`Filter by scope, name, hash, or guardrail...`,label:`Filter workflows by scope, name, hash, or guardrail`,get value(){return xF.filter},set value(e){xF.filter=e}}),D(n);var r=I(n,2),i=P(r),a=P(i,!0);D(i),D(r),D(t),L(()=>H(a,xF.filteredWorkflows.length+` active scopes`)),V(e,t)};U(d,e=>{xF.available&&e(f)});var p=I(d,2);YI(p,{});var m=I(p,2);tL(m,{});var h=I(m,2);W(h,20,()=>xF.guardrailRefs,e=>e,(e,t)=>{var n=oL(),r={};L(()=>{r!==(r=t)&&(n.value=(n.__value=t)??``)}),V(e,n)}),D(h),D(n),V(e,n),k()}Br([`click`]);function lL(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Zu}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=uL(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function uL(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var dL=null;function fL(){return dL===null&&(dL=typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`)),!!(dL&&dL.matches)}function pL(e){return fL()?0:e}function mL(e,t){return!t||!t.live?{duration:0}:Yu(e,{duration:pL(150)})}var hL=new class{#e=j(N({}));get workflowVersionsByID(){return R(this.#e)}set workflowVersionsByID(e){M(this.#e,e,!0)}workflowVersionRequests={};workflowFeatureCaps(){return{cache:bu.cacheVisible(),audit:bu.auditVisible(),usage:bu.usageVisible(),budget:bu.budgetsVisible(),guardrails:bu.guardrailsVisible(),failover:bu.booleanFlag(`FAILOVER_ENABLED`,!0)}}cacheWorkflowVersion(e){let t=String(e&&e.id||``).trim();return t?(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:e},e):null}cacheMissingWorkflowVersion(e){let t=String(e||``).trim();t&&(this.workflowVersionsByID={...this.workflowVersionsByID||{},[t]:null})}workflowVersionCacheHas(e){return Object.prototype.hasOwnProperty.call(this.workflowVersionsByID||{},String(e||``).trim())}workflowVersionByID(e){let t=String(e||``).trim();return t&&this.workflowVersionCacheHas(t)?this.workflowVersionsByID[t]:null}async fetchWorkflowVersion(e){let t=String(e||``).trim();if(!t)return null;if(this.workflowVersionCacheHas(t))return this.workflowVersionsByID[t];if(this.workflowVersionRequests[t])return this.workflowVersionRequests[t];let n=(async()=>{let e=typeof AbortController==`function`?new AbortController:null,n=e?setTimeout(()=>e.abort(),1e4):null;try{let n=await hu(`/admin/workflows/`+encodeURIComponent(t),{label:`workflow`,signal:e?e.signal:void 0});if(n.stale)return null;if(n.status===404)return this.cacheMissingWorkflowVersion(t),null;if(!n.ok)return null;let r=n.data;return!r||typeof r!=`object`||Array.isArray(r)?(this.cacheMissingWorkflowVersion(t),null):this.cacheWorkflowVersion(r)}catch(e){return e&&e.name===`AbortError`||console.error(`Failed to fetch workflow version:`,e),null}finally{n!==null&&clearTimeout(n),delete this.workflowVersionRequests[t]}})();return this.workflowVersionRequests[t]=n,n}async prefetchAuditWorkflows(e){let t=[...new Set((Array.isArray(e)?e:[]).map(e=>String(e&&e.workflow_version_id||``).trim()).filter(Boolean))];t.length!==0&&await Promise.all(t.map(e=>this.fetchWorkflowVersion(e)))}auditEntryWorkflow(e){let t=String(e&&e.workflow_version_id||``).trim();return t?this.workflowVersionByID(t):null}},gL=6;function _L(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function vL(e,t=0,n=null){let r=String(e||``).trim();if(!r)return``;if(t>gL)return r;let i=_L(r);return i==null?r:yL(i,t+1,n)||n&&n(i)||r}function yL(e,t=0,n=null,r=null){if(e==null||t>gL)return``;if(typeof e==`string`){let i=_L(e.trim());return i==null?``:yL(i,t+1,n,r)}if(typeof e!=`object`)return``;let i=r||new Set;if(i.has(e))return``;if(i.add(e),Array.isArray(e)){for(let r=0;r=400||SL(t&&t.response_body)}function wL(e){let t=e&&e.data?e.data:null;return t?bL(t.error_message)||(CL(e,t)?yL(t.response_body,0):``):``}function TL(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return!Number.isInteger(t)||t<0?null:t}function EL(e){let t=TL(e);return t===null?``:t===0?`Audit logs are retained indefinitely.`:t===1?`Audit logs are retained for 1 day.`:`Audit logs are retained for `+t+` days.`}function DL(e){let t=TL(e);return t===null?``:t===0?`Audit logs are retained `:`Audit logs are retained for `}function OL(e){let t=TL(e);return t===null?``:t===0?`indefinitely`:t===1?`1 day`:t+` days`}function kL({dateQuery:e,limit:t,offset:n,search:r,method:i,statusCode:a,stream:o}){let s=e;return s+=`&limit=`+t+`&offset=`+n,r&&(s+=`&search=`+encodeURIComponent(r)),i&&(s+=`&method=`+encodeURIComponent(i)),a&&(s+=`&status_code=`+encodeURIComponent(a)),o&&(s+=`&stream=`+encodeURIComponent(o)),s}function AL({sessionId:e,limit:t}){return`session_id=`+encodeURIComponent(e)+`&limit=`+(t||100)+`&offset=0`}function jL(e){return String(e&&e.session_id||``).trim()}function ML(e){let t=Number(e&&e.session_count);return Number.isFinite(t)&&t>1?t:1}function NL(e){return!!jL(e)&&ML(e)>1}function PL(e){return{entries:(Array.isArray(e&&e.sessions)?e.sessions:[]).filter(e=>e&&e.latest).map(e=>({...e.latest,session_count:Math.max(1,Number(e.request_count)||1)})),total:Number(e&&e.total||0),limit:Number(e&&e.limit||25),offset:Number(e&&e.offset||0)}}function FL(e,t,n){let r=new Set((Array.isArray(n)?n:[]).flatMap(e=>zL(e))),i=(Array.isArray(t)?t:[]).filter(e=>!zL(e).some(e=>r.has(e))),a=new Set([...r,...i.flatMap(e=>zL(e))]),o=(e&&Array.isArray(e.entries)?e.entries:[]).filter(e=>e&&e._live&&!zL(e).some(e=>a.has(e)));return{entries:[...o,...i],preservedCount:o.length}}function IL(e,t){let n=e||{};if(!t)return n;if(n[t]){let e={...n};return delete e[t],e}return{...n,[t]:!0}}function LL(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>jL(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=n[e];return}a=!0}),a?i:n}function RL(e){return String(e&&e.id||``).trim()}function zL(e){if(!e)return[];let t=[],n=String(e.id||``).trim(),r=String(e.request_id||``).trim();return n&&t.push(`id:`+n),r&&t.push(`request:`+r),t}function BL(e){return!!(e&&e._live&&e._live_pending&&!e._audit_flushed)}function VL(e){let t=e&&e.customStartDate,n=e&&e.customEndDate;if(!t&&!n)return!0;let r=new Date;if(t){let e=new Date(t);if(e.setHours(0,0,0,0),Number.isFinite(e.getTime())&&re)return!1}return!0}function HL(e,t){return e&&Number(e.offset||0)===0&&!(t&&t.search)&&!(t&&t.method)&&!(t&&t.statusCode)&&!(t&&t.stream)&&VL(t)}function UL(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!HL(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>BL(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>zL(e))),s=[];return a.forEach(e=>{let t=zL(e);t.length!==0&&(t.some(e=>o.has(e))||(t.forEach(e=>o.add(e)),s.push(e)))}),s.length===0?r:(r.entries=[...s,...i].slice(0,r.limit||25),r.total=Number(r.total||0)+s.length,r)}function WL(e,t,n){let r=e&&typeof e==`object`?{...e}:{entries:[],total:0,limit:25,offset:0},i=Array.isArray(r.entries)?r.entries:[];if(r.entries=i,!HL(r,n))return r;let a=(Array.isArray(t)?t:[]).filter(e=>BL(e));if(a.length===0)return r;let o=new Set(i.flatMap(e=>zL(e))),s=new Map;i.forEach((e,t)=>{let n=jL(e);n&&!s.has(n)&&s.set(n,t)});let c=[],l=i;return a.forEach(e=>{let t=zL(e);if(t.length===0||t.some(e=>o.has(e)))return;let n=jL(e);if(n&&s.has(n)){let r=s.get(n);l===i&&(l=[...i]);let a=ML(l[r]),c=Number(e&&e.session_count),u=Number.isFinite(c)&&c>1?c:null;l[r]={...e,session_count:u===null?a+1:Math.max(a,u)},t.forEach(e=>o.add(e));return}t.forEach(e=>o.add(e)),c.push(e)}),r.entries=[...c,...l].slice(0,r.limit||25),r.total=Number(r.total||0)+c.length,r}function GL(e,t){let n=RL(t),r=e||{};return n?r[n]?{}:{[n]:!0}:r}function KL(e,t){let n=e||{},r=new Set((Array.isArray(t)?t:[]).map(e=>RL(e)).filter(Boolean)),i={},a=!1;return Object.keys(n).forEach(e=>{if(r.has(e)){i[e]=!0;return}a=!0}),a?i:n}function qL(e){if(e==null)return`-`;let t=Number(e);return Number.isFinite(t)?t<=0?`pending`:t<1e6?Math.round(t/1e3)+` µs`:t<1e9?(t/1e6).toFixed(2)+` ms`:(t/1e9).toFixed(2)+` s`:`-`}function JL(e){if(e==null||e===``)return`status-unknown`;let t=Number(e);return Number.isFinite(t)?t>=500?`status-error`:t>=400?`status-warning`:t>=300?`status-neutral`:`status-success`:`status-unknown`}function YL(e){if(!e||!e._live||!e._live_pending)return!1;let t=String(e._live_state||``).trim();if(t===`audit.completed`||t===`audit.flushed`||t===`audit.detail`)return!1;if(e._response_partial)return!0;if(e.status_code!==null&&e.status_code!==void 0&&e.status_code!==``||Number(e.duration_ns||0)>0||e.error_type||e.error_message)return!1;let n=e.data||{};return!(n.response_headers||n.response_body||n.error_message)}function XL(e){let t=e&&e.data&&e.data.failover;return!t||typeof t!=`object`||Array.isArray(t)?null:String(t.target_model||t.targetModel||``).trim()||null}function ZL(e){return(e&&e.data&&Array.isArray(e.data.attempts)?e.data.attempts:[]).map((e,t)=>({...e,seq:Number(e&&e.seq||t+1)})).sort((e,t)=>e.seq-t.seq)}function QL(e){let t=ZL(e);return t.length>1||t.some(e=>!(e&&e.success))}function $L(e){if(!e)return`-`;let t=e.status_code||e.status;return t?String(t):e.success?`ok`:`error`}function eR(e){return String(e&&e.kind||``).trim()||`attempt`}function tR(e){if(!e)return`-`;let t=String(e.provider_name||``).trim(),n=String(e.provider_type||e.provider||``).trim();return t&&n&&t!==n?t+` (`+n+`)`:t||n||`-`}function nR(e){return String(e&&e.model||``).trim()||`-`}function rR(e){let t=ZL(e);return t.length>1||t.some(e=>!(e&&e.success))?t:[]}function iR(e){return ZL(e).length+`×`}function aR(e){let t=ZL(e),n=t.filter(e=>!(e&&e.success)).length,r=t.length===1?`attempt`:`attempts`,i=t.length+` provider `+r;return n>0?i+` · `+n+` failed`:i}function oR(e){if(!e)return``;let t=[`#`+Number(e.seq||0)],n=eR(e);n&&n!==`attempt`&&t.push(n),t.push($L(e));let r=tR(e);r&&r!==`-`&&t.push(r);let i=nR(e);return i&&i!==`-`&&t.push(i),t.push(e.success?`succeeded`:`failed`),t.join(` · `)}function sR(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t&&t.response_body!=null?t.response_body:null}return t.response_body!=null&&t.response_body!==``?t.response_body:null}function cR(e){if(!e||e.success)return``;let t=String(e.error_message||``).trim(),n=String(e.error_code||``).trim(),r=String(e.error_type||``).trim();return t&&n?n+`: `+t:t||n||r||`Provider attempt failed`}function lR(e,t){if(!t)return null;if(t.success){let t=e&&e.data?e.data:null;return t?t.response_headers:null}return t.response_headers||null}function uR(e){let t=Number(e&&e.status_code);return Number.isFinite(t)&&t>0?t:null}function dR(e,t){let n=!!(t&&t.success),r=e&&e.data?e.data:null,i=sR(e,t),a=lR(e,t),o=cR(t),s=i!=null&&i!==``,c=eR(t),l=ZL(e).length<=1;return{title:`Response`,direction:`response`,seq:l?0:Number(t&&t.seq||0),kind:l||c===`attempt`?``:c,statusCode:l?null:uR(t),layout:`split`,entry:e,copyHeaders:a,copyBody:i,showErrorMessage:!!o,errorMessage:o,showHeaders:!!a,headers:a,showBody:s,body:i,showEmpty:!o&&!s&&!a,emptyMessage:`No response was captured for this attempt.`,showTooLarge:!!(n&&r&&r.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function fR(e){return e&&e.data&&Array.isArray(e.data.request_revisions)?e.data.request_revisions:[]}function pR(e){return fR(e).filter(e=>!(e&&e.no_change))}function mR(e){return fR(e).filter(e=>e&&e.no_change).map(e=>{let t=String(e.rewriter||`rewriter`);return{id:`step-`+Number(e.seq||0),rewriter:t,label:t+`: no change`,title:t+` ran and forwarded the request unchanged`}})}function hR(e){let t=Number(e&&e.bytes_before),n=Number(e&&e.bytes_after);if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n>=t)return``;let r=(1-n/t)*100;return`-`+(r>=10?String(Math.round(r)):r.toFixed(1))+`%`}function gR(e,t){let n=t&&t.body,r=n!=null&&n!==``,i=pR(e).length<=1,a={rewriter:t&&t.rewriter||``,bytes:Number(t&&t.bytes_before||0)+` → `+Number(t&&t.bytes_after||0)};return t&&t.detail!=null&&(a.detail=t.detail),{title:`Rewritten`,direction:`request`,seq:i?0:Number(t&&t.seq||0),kind:t&&t.rewriter?String(t.rewriter):``,savingsLabel:hR(t),layout:`split`,entry:e,copyHeaders:a,copyBody:n,showErrorMessage:!1,errorMessage:null,showHeaders:!0,headers:a,headersTitle:`What changed`,showBody:r,body:n,showEmpty:!1,emptyMessage:``,showTooLarge:!r,tooLargeMessage:`Rewritten body not captured (body logging disabled or body too large).`}}function _R(e){let t=e&&e.usage;return!t||typeof t!=`object`?null:t}function vR(e){let t=_R(e);return Number(t&&t.cached_input_tokens||0)>0}function yR(e){let t=_R(e),n=Number(t&&t.input_tokens||0),r=Number(t&&t.cached_input_tokens||0);return!Number.isFinite(n)||n<=0||!Number.isFinite(r)||r<=0?0:Math.max(0,Math.min(100,r/n*100))}function bR(e){let t=_R(e);if(!t)return``;let n=Number(t.input_tokens||0),r=Number(t.cached_input_tokens||0);return n<=0?cd(r)+` cached`:yR(e).toFixed(1)+`% cached`}function xR(e){return vR(e)?bR(e):``}function SR(e,t){let n=_R(e);if(!n||!e||!e.data||!e.data.request_body)return null;let r=Number(n.estimated_cached_characters||0);if(!Number.isFinite(r)||r<=0||typeof t!=`function`)return null;let i=t(e.data.request_body);return!Array.isArray(i)||i.length===0?null:{characters:r,segments:i}}function CR(e,t){let n=e&&e.data?e.data:null,r=!n||!n.request_headers&&!n.request_body,i=r&&YL(e);return{title:`Request`,direction:`request`,layout:`split`,entry:e,copyHeaders:n&&n.request_headers,copyBody:n&&n.request_body,showErrorMessage:!1,errorMessage:null,showHeaders:!!(n&&n.request_headers),headers:n&&n.request_headers,showBody:!!(n&&n.request_body),body:n&&n.request_body,bodyCacheRatioLabel:xR(e),promptCacheHighlight:SR(e,t),noChangeSteps:mR(e),showEmpty:r&&!i,emptyMessage:`Request details were not captured.`,showPending:i,pendingMessage:`Waiting for request data…`,showTooLarge:!!(n&&n.request_body_too_big_to_handle),tooLargeMessage:`Request body was too large to capture.`}}function wR(e){let t=e&&e.data?e.data:null,n=wL(e),r=!t||!n&&!t.response_headers&&!t.response_body,i=r&&YL(e);return{title:`Response`,direction:`response`,layout:`split`,entry:e,copyHeaders:t&&t.response_headers,copyBody:t&&t.response_body,showErrorMessage:!!n,errorMessage:n,showHeaders:!!(t&&t.response_headers),headers:t&&t.response_headers,showBody:!!(t&&t.response_body),body:t&&t.response_body,streaming:!!(e&&e._response_partial&&t&&t.response_body)&&YL(e),showEmpty:r&&!i,emptyMessage:`Response details were not captured.`,showPending:i,pendingMessage:`Response in progress…`,showTooLarge:!!(t&&t.response_body_too_big_to_handle),tooLargeMessage:`Response body was too large to capture.`}}function TR(e,t){let n=[{id:`request`,pane:CR(e,t)}];return pR(e).forEach(t=>{n.push({id:`revision-`+Number(t&&t.seq||0),pane:gR(e,t)})}),QL(e)?ZL(e).forEach(t=>{n.push({id:`response-`+Number(t&&t.seq||0),pane:dR(e,t)})}):n.push({id:`response`,pane:wR(e)}),n}function ER(e){if(!QL(e))return`response`;let t=ZL(e),n=null;return t.forEach(e=>{e&&e.success&&(n=e)}),n||=t[t.length-1],n?`response-`+Number(n.seq||0):`request`}function DR(e,t,n){return e&&(Array.isArray(n)?n:TR(t)).some(t=>t.id===e)?e:ER(t)}function OR(e,t,n){if(!t||!t.length)return null;let r=t.indexOf(n);r<0&&(r=0);let i;switch(e){case`ArrowRight`:case`ArrowDown`:i=(r+1)%t.length;break;case`ArrowLeft`:case`ArrowUp`:i=(r-1+t.length)%t.length;break;case`Home`:i=0;break;case`End`:i=t.length-1;break;default:return null}return t[i]}var kR=100;function AR(){return{entries:[],total:0,limit:25,offset:0}}var jR=new class{#e=j(N({}));get auditExpandedEntries(){return R(this.#e)}set auditExpandedEntries(e){M(this.#e,e,!0)}#t=j(N({}));get auditExpandedThreads(){return R(this.#t)}set auditExpandedThreads(e){M(this.#t,e,!0)}#n=j(!1);get loading(){return R(this.#n)}set loading(e){M(this.#n,e,!0)}auditFetchToken=0;get auditLog(){return PE.auditLog}set auditLog(e){PE.auditLog=e}get auditSearch(){return PE.auditSearch}set auditSearch(e){PE.auditSearch=e}get auditMethod(){return PE.auditMethod}set auditMethod(e){PE.auditMethod=e}get auditStatusCode(){return PE.auditStatusCode}set auditStatusCode(e){PE.auditStatusCode=e}get auditStream(){return PE.auditStream}set auditStream(e){PE.auditStream=e}get auditGroupSessions(){return PE.auditGroupSessions}liveFilters(){return{search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream,customStartDate:Fd.customStartDate,customEndDate:Fd.customEndDate}}toggleAuditGroupSessions(){PE.auditGroupSessions=!PE.auditGroupSessions,Ya(`gomodel_audit_group_sessions`,PE.auditGroupSessions),this.auditExpandedThreads={},PE.auditThreadChildren={},this.fetchAuditLog(!0)}async fetchAuditLog(e){let t=++this.auditFetchToken;this.loading=!0;try{e&&(this.auditLog.offset=0);let n=this.auditGroupSessions,r=kL({dateQuery:Fd.queryStr(),limit:this.auditLog.limit,offset:this.auditLog.offset,search:this.auditSearch,method:this.auditMethod,statusCode:this.auditStatusCode,stream:this.auditStream}),i=await hu((n?`/admin/audit/sessions?`:`/admin/audit/log?`)+r,{label:`audit log`});if(i.stale||t!==this.auditFetchToken)return;if(!i.ok){this.auditLog=AR();return}let a=n?PL(i.data):i.data,o=(n?WL:UL)(a,this.auditLog&&this.auditLog.entries,this.liveFilters());Array.isArray(o.entries)||(o.entries=[]),o.entries=PE.upsertAuditRecords(o.entries,`audit.list`),this.auditLog=o,this.auditExpandedThreads=LL(this.auditExpandedThreads,o.entries),PE.auditThreadChildren=LL(PE.auditThreadChildren,o.entries);let s=[...o.entries,...this.loadedThreadChildren()];this.auditExpandedEntries=KL(this.auditExpandedEntries,s);try{await hL.prefetchAuditWorkflows(s)}catch(e){console.error(`Failed to prefetch audit workflows:`,e)}}catch(e){if(console.error(`Failed to fetch audit log:`,e),t!==this.auditFetchToken)return;this.auditLog=AR()}finally{t===this.auditFetchToken&&(this.loading=!1)}}loadedThreadChildren(){let e=PE.auditThreadChildren||{};return Object.keys(e).flatMap(t=>Array.isArray(e[t]&&e[t].entries)?e[t].entries:[])}isThreadExpanded(e){return!!(e&&this.auditExpandedThreads[e])}threadChildren(e){return e&&PE.auditThreadChildren[e]||null}async toggleThread(e){let t=jL(e);if(!t)return;let n=!this.isThreadExpanded(t);this.auditExpandedThreads=IL(this.auditExpandedThreads,t);let r=PE.auditThreadChildren[t];n&&!(r&&(r.loaded||r.loading))&&await this.fetchThreadEntries(e)}async fetchThreadEntries(e){let t=jL(e);if(!t)return;let n=PE.auditThreadChildren[t];PE.auditThreadChildren={...PE.auditThreadChildren,[t]:{loading:!0,loaded:!1,entries:n&&Array.isArray(n.entries)?n.entries:[],total:Number(n&&n.total||0)}};let r=()=>{let e={...PE.auditThreadChildren},n=e[t],r=n&&Array.isArray(n.entries)?n.entries:[];r.length>0?e[t]={loading:!1,loaded:!1,entries:r,total:r.length}:(delete e[t],this.auditExpandedThreads[t]&&(this.auditExpandedThreads=IL(this.auditExpandedThreads,t))),PE.auditThreadChildren=e};try{let n=await hu(`/admin/audit/log?`+AL({sessionId:t,limit:kR}),{label:`audit session`});if(n.stale){r();return}if(!n.ok)throw Error(`audit session fetch failed`);let i=PE.auditThreadChildren[t],a=this.auditLog.entries.find(e=>jL(e)===t),o=FL(i,n.data.entries,a?[a]:[e]);o.entries=PE.upsertAuditRecords(o.entries,`audit.thread`),PE.auditThreadChildren={...PE.auditThreadChildren,[t]:{loading:!1,loaded:!0,entries:o.entries,total:Number(n.data.total||0)+o.preservedCount}}}catch(e){console.error(`Failed to fetch audit session entries:`,e),r()}}clearAuditFilters(){this.auditSearch=``,this.auditMethod=``,this.auditStatusCode=``,this.auditStream=``,this.fetchAuditLog(!0)}auditLogNextPage(){this.auditLog.offset+this.auditLog.limit0&&(this.auditLog.offset=Math.max(0,this.auditLog.offset-this.auditLog.limit),this.fetchAuditLog(!1))}isAuditEntryExpanded(e){let t=RL(e);return t?!!(this.auditExpandedEntries&&this.auditExpandedEntries[t]):!1}toggleAuditEntryExpanded(e){this.auditExpandedEntries=GL(this.auditExpandedEntries,e);let t=this.isAuditEntryExpanded(e);return t&&typeof PE.fetchAuditEntryDetail==`function`&&PE.fetchAuditEntryDetail(e),t}expandAuditEntry(e){this.isAuditEntryExpanded(e)||this.toggleAuditEntryExpanded(e)}};PE.fetchAuditLog=e=>jR.fetchAuditLog(e),PE.isAuditEntryExpanded=e=>jR.isAuditEntryExpanded(e);var MR=B(``);function NR(e,t){O(t,!0);let n=CD(()=>jR.fetchAuditLog(!0));On(()=>n.cancel);var r=MR(),i=P(r);SD(P(i),{id:`audit-filter-search`,placeholder:`Search by request ID, model, provider, path, user path, or error...`,label:`Search by request ID, model, provider, path, user path, or error`,get oninput(){return n},get value(){return jR.auditSearch},set value(e){jR.auditSearch=e}}),D(i);var a=I(i,2),o=P(a),s=P(o);s.value=s.__value=``;var c=I(s);c.value=c.__value=`GET`;var l=I(c);l.value=l.__value=`POST`;var u=I(l);u.value=u.__value=`PUT`;var d=I(u);d.value=d.__value=`PATCH`;var f=I(d);f.value=f.__value=`DELETE`,D(o);var p=I(o,2),m=P(p);m.value=m.__value=``;var h=I(m);h.value=h.__value=`200`;var g=I(h);g.value=g.__value=`201`;var _=I(g);_.value=_.__value=`400`;var v=I(_);v.value=v.__value=`401`;var y=I(v);y.value=y.__value=`403`;var b=I(y);b.value=b.__value=`404`;var x=I(b);x.value=x.__value=`429`;var S=I(x);S.value=S.__value=`500`;var C=I(S);C.value=C.__value=`502`;var w=I(C);w.value=w.__value=`503`;var T=I(w);T.value=T.__value=`504`,D(p);var E=I(p,2),ee=P(E);ee.value=ee.__value=``;var te=I(ee);te.value=te.__value=`true`;var ne=I(te);ne.value=ne.__value=`false`,D(E);var re=I(E,2);J(P(re),{get icon(){return Ol},class:`table-icon-svg`}),Ve(2),D(re),D(a),D(r),z(`change`,o,()=>jR.fetchAuditLog(!0)),Ui(o,()=>jR.auditMethod,e=>jR.auditMethod=e),z(`change`,p,()=>jR.fetchAuditLog(!0)),Ui(p,()=>jR.auditStatusCode,e=>jR.auditStatusCode=e),z(`change`,E,()=>jR.fetchAuditLog(!0)),Ui(E,()=>jR.auditStream,e=>jR.auditStream=e),z(`click`,re,()=>jR.clearAuditFilters()),V(e,r),k()}Br([`change`,`click`]);var PR=B(`Live stream connecting… `),FR=B(` `),IR=B(`Live `),LR=B(` `);function RR(e,t){O(t,!0);let n=A(()=>PE.auditLivePauseReason()),r=A(()=>PE.liveLogsStreaming&&!R(n));var i=Xr(),a=F(i),o=e=>{var t=LR(),i=P(t);let a;var o=I(i,2),s=e=>{V(e,PR())},c=e=>{var t=FR(),r=P(t,!0);D(t),L(e=>H(r,e),[()=>SE(R(n))]),V(e,t)},l=e=>{V(e,IR())};U(o,e=>{PE.liveLogsStreaming?R(n)?e(c,1):e(l,-1):e(s)}),D(t),L(()=>a=G(i,1,`live-dot svelte-tve6yv`,null,a,{"is-streaming":R(r)})),V(e,t)},s=A(()=>bu.liveLogsVisible());U(a,e=>{R(s)&&e(o)}),V(e,i),k()}var zR=B(` `),BR=B(``);function VR(e,t){O(t,!0);let n=A(()=>[{key:`provider`,text:vd(t.entry)||`-`},{key:`model`,text:t.entry.requested_model||t.entry.model||`-`,mono:!0},{key:`user_path`,text:t.entry.user_path,mono:!0},{key:`request_id`,text:`request_id: `+(t.entry.request_id||`-`),mono:!0},{key:`ip`,text:t.entry.client_ip&&`ip: `+t.entry.client_ip,mono:!0},{key:`auth_key_id`,text:t.entry.auth_key_id&&`auth_key_id: `+t.entry.auth_key_id,mono:!0},{key:`alias`,text:t.entry.alias_used&&`alias`,class:`audit-alias-badge`},{key:`resolved`,text:t.entry.alias_used&&t.entry.resolved_model&&`resolved: `+xd(t.entry),mono:!0},{key:`failover`,text:XL(t.entry)&&`failover: `+XL(t.entry),mono:!0},{key:`stream`,text:t.entry.stream&&`stream`},{key:`error_type`,text:t.entry.error_type}].filter(e=>!!e.text));var r=BR(),i=I(P(r),2);W(i,21,()=>R(n),e=>e.key,(e,t)=>{var n=zR(),r=P(n,!0);D(n),L(()=>{G(n,1,Ni([`provider-badge`,R(t).class,{mono:R(t).mono}]),`svelte-hyopt0`),H(r,R(t).text)}),V(e,n)}),D(i),D(r),V(e,r),k()}var HR=B(` `),UR=B(` `);function WR(e,t){O(t,!0);let n=A(()=>rR(t.entry)),r=A(()=>R(n).length>0?aR(t.entry):``),i=A(()=>R(n).length>0?iR(t.entry):``);var a=Xr(),o=F(a),s=e=>{var a=UR(),o=P(a);W(o,21,()=>R(n),e=>t.entry.id+`-pip-`+e.seq,(e,t)=>{var n=HR();let r;L(e=>{r=G(n,1,`audit-attempt-pip svelte-1eu22xn`,null,r,{"audit-attempt-success":!!(R(t)&&R(t).success),"audit-attempt-error":!(R(t)&&R(t).success)}),K(n,`title`,e)},[()=>oR(R(t))]),V(e,n)}),D(o);var s=I(o,2),c=P(s,!0);D(s),D(a),L(()=>{K(a,`title`,R(r)),K(a,`aria-label`,R(r)),H(c,R(i))}),V(e,a)};U(o,e=>{R(n).length>0&&e(s)}),V(e,a),k()}var GR=new Set([`instructions`,`messages`,`input`,`previous_response_id`,`choices`,`output`]);function KR(e){if(!e||typeof e!=`object`)return``;let t=String(e.type||``).toLowerCase();if(t===`image`||t===`image_url`||t===`input_image`||t===`output_image`)return`[Image]`;if(t===`audio`||t===`input_audio`||t===`output_audio`)return`[Audio]`;if(t===`file`||t===`input_file`||t===`output_file`){let t=String(e.filename||e.name||``).trim();return t?`[File: `+t+`]`:`[File]`}return typeof e.refusal==`string`?e.refusal:``}function qR(e){if(e==null)return``;if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>typeof e==`string`?e:!e||typeof e!=`object`?``:typeof e.text==`string`?e.text:typeof e.output_text==`string`?e.output_text:KR(e)).filter(Boolean).join(`
`).trim();if(typeof e==`object`){if(typeof e.text==`string`)return e.text.trim();try{return JSON.stringify(e,null,2)}catch{return``}}return String(e).trim()}function JR(e){return!e||typeof e!=`object`?``:qR(e.content)||(typeof e.refusal==`string`?e.refusal.trim():``)}function YR(e){if(e==null)return[];if(typeof e==`string`)return e?[e]:[];if(Array.isArray(e))return e.flatMap(e=>typeof e==`string`?e?[e]:[]:!e||typeof e!=`object`?[]:typeof e.text==`string`?e.text?[e.text]:[]:typeof e.output_text==`string`&&e.output_text?[e.output_text]:[]);if(typeof e==`object`)return typeof e.text==`string`&&e.text?[e.text]:[];let t=String(e);return t?[t]:[]}function XR(e){if(e==null)return[];if(Array.isArray(e))return e.flatMap(XR);if(typeof e==`object`)return Object.entries(e).flatMap(([e,t])=>[e,...XR(t)]);let t=String(e);return t?[t]:[]}function ZR(e){return qz(e).flatMap(e=>[...e.name?[String(e.name)]:[],...XR(e.arguments)])}function QR(e){return Array.isArray(e)?e.flatMap(e=>e&&typeof e==`object`&&e.type===`tool_use`?ZR([e]):YR(e)):YR(e)}function $R(e){let t=e&&e.usage?e.usage.estimated_cached_characters:null;if(t==null)return null;let n=Number(t);return Number.isFinite(n)&&n>0?Math.floor(n):0}function ez(e,t){if(!e)return null;let n=(Array.isArray(t)?t:[]).reduce((e,t)=>e+String(t||``).length,0),r=Math.min(String(e).length,n);return r>0?{total:r}:null}function tz(e){let t=e&&e.arguments!==void 0?e.arguments:``,n=``;if(typeof t==`string`)n=t;else try{n=JSON.stringify(t)}catch{n=String(t)}return(String(e&&e.name||``)+`(`+n+`)`).length}function nz(e){return{characters:(Array.isArray(e)?e:[]).map(tz)}}function rz(e,t){let n=Math.max(0,Number(t||0));return e.map(e=>{if(!e||e.role===`error`)return e;let t=Math.max(0,Number(e._promptTextCharacters||0)),r=Math.min(n,t);n-=r;let i=0;(Array.isArray(e._toolPromptCharacters)?e._toolPromptCharacters:[]).forEach(e=>{let t=Math.max(0,Number(e||0)),r=Math.min(n,t);n-=r,i+=r});let a=t+(e._toolPromptCharacters||[]).reduce((e,t)=>e+Math.max(0,Number(t||0)),0);return{...e,promptCacheRatio:a>0?(r+i)/a:0}})}function iz(e){if(e==null)return[];if(typeof e==`string`){let t=e.trim();return t?[{role:`user`,text:t}]:[]}if(!Array.isArray(e)){let t=qR(e);return t?[{role:`user`,text:t}]:[]}return e.map(e=>{if(!e||typeof e!=`object`)return null;let t=String(e.role||`user`).toLowerCase(),n=qR(e.content);return n?{role:t,text:n}:null}).filter(Boolean)}function az(e){return JR(e)}function oz(e){if(!e||typeof e!=`object`)return[];let t=[];return t.push(...YR(e.instructions)),Array.isArray(e.messages)&&e.messages.forEach(e=>{!e||typeof e!=`object`||(t.push(...QR(e.content)),t.push(...ZR(e.tool_calls)))}),typeof e.input==`string`?t.push(e.input):Array.isArray(e.input)?e.input.forEach(e=>{if(!(!e||typeof e!=`object`)){if(e.type===`function_call`||e.type===`tool_use`){t.push(...ZR([e]));return}t.push(...QR(e.content)),typeof e.text==`string`&&t.push(e.text)}}):e.input&&typeof e.input==`object`&&(t.push(...YR(e.input.content)),typeof e.input.text==`string`&&t.push(e.input.text)),t.map(e=>String(e||``)).filter(e=>e.length>0)}var sz=e=>qR(e);function cz(e){if(!e||!e.data)return``;let t=yL(e.data.response_body,0,sz);if(t)return t;let n=e.data.error_message;if(n==null)return``;if(typeof n==`string`){let e=n.trim();return e?yL(_L(e),0,sz)||e:``}return yL(n,0,sz)||qR(n)}function lz(e){return Array.isArray(e)?e.some(e=>!e||typeof e!=`object`?!1:e.type===`message`||e.role===`assistant`||e.role===`user`||e.role===`system`?!0:Array.isArray(e.content)?e.content.some(e=>!e||typeof e!=`object`?!1:typeof e.text==`string`||e.type===`output_text`||e.type===`input_text`):!1):!1}function uz(e){if(!e)return!1;let t=String(e).toLowerCase();return t===`/v1/embeddings`||t===`/v1/embeddings/`||t.startsWith(`/v1/embeddings?`)||t.startsWith(`/v1/embeddings/`)}function dz(e){return e?!!pz(e):!1}function fz(e){let t=String(e||``).trim().split(`?`)[0].replace(/\/+$/,``).toLowerCase();return t.startsWith(`/v1/`)?t.slice(3):t}function pz(e){switch(fz(e)){case`/chat/completions`:return`chat`;case`/responses`:return`responses`;case`/messages`:return`messages`;default:return``}}function mz(e){if(!e||typeof e!=`object`)return null;try{return JSON.parse(JSON.stringify(e))}catch{return null}}function hz(e,t){if(!t||typeof t!=`object`)return;let n=e[e.length-1];try{if(n&&JSON.stringify(n)===JSON.stringify(t))return}catch{}e.push(t)}function gz(e){let t=pz(e&&e.path),n=e&&e.data&&e.data.request_body;return!t||!n||typeof n!=`object`?!1:t!==`responses`||(e.data&&e.data.response_body&&typeof e.data.response_body.id==`string`?e.data.response_body.id.trim():``)!==``||eB(n)!==``}function _z(e,t){let n=String(t||``).trim(),r=pz(e&&e.path),i=mz(e&&e.data&&e.data.request_body);if(!n||!r||!i)return null;let a=e&&e.data?e.data.response_body:null;if(r===`responses`){let e=a&&typeof a.id==`string`?a.id.trim():``,t=eB(i);return!e&&!t?null:(i.input=n,e&&!t?i.previous_response_id=e:delete i.previous_response_id,i)}let o=Array.isArray(i.messages)?i.messages:[];if(r===`chat`){let e=a&&Array.isArray(a.choices)?a.choices[0]:null;e&&e.message&&hz(o,mz(e.message)),o.push({role:`user`,content:n})}else a&&a.content!==void 0&&hz(o,{role:String(a.role||`assistant`),content:mz(a.content)||a.content}),o.push({role:`user`,content:n});return i.messages=o,i}var vz=new Set(`authorization.proxy-authorization.cookie.content-type.content-length.host.accept.connection.accept-encoding.content-encoding.transfer-encoding.user-agent.date.expect.upgrade.via.te.trailer.keep-alive.origin.referer.forwarded.x-real-ip.traceparent.tracestate.x-request-id.idempotency-key.x-idempotency-key.x-gomodel-timezone.x-gomodel-interaction-parent`.split(`.`));function yz(e,t,n=``){let r=e&&e.data&&e.data.request_headers,i={};return r&&typeof r==`object`&&Object.keys(r).forEach(e=>{let t=String(e).toLowerCase(),n=String(r[e]==null?``:r[e]);!e||!n||n===`[REDACTED]`||vz.has(t)||t.startsWith(`sec-`)||t.startsWith(`cf-`)||t.startsWith(`x-forwarded-`)||(i[e]=n)}),i[`X-GoModel-Interaction-Parent`]=String(t||e&&e.id||``).trim(),String(n||``).trim()&&(i[`X-Request-ID`]=String(n).trim()),i}function bz(e,t){let n=String(t||``).trim();return!n||!Array.isArray(e)?null:e.find(e=>String(e&&e.request_id||``).trim()===n)||null}function xz(e,t,n,r,i){let a=Array.isArray(e)?e:[],o=String(i&&i.id||``).trim(),s=String(i&&i.request_id||``).trim(),c=String(i&&i.session_id||``).trim(),l=String(r||``).trim(),u=Sz(i),d=a.some(e=>o&&String(e&&e.id||``).trim()===o||s&&String(e&&e.request_id||``).trim()===s),f=!!l&&s===l,p=!!n&&c===String(n).trim(),m=!!u&&(u===String(t||``).trim()||a.some(e=>String(e&&e.id||``).trim()===u)),h=d||f||!l&&(p||m);return{accepted:h,submittedChild:f,followUpRequestID:h&&f&&o?``:l}}function Sz(e){let t=e&&e.data&&e.data.request_headers;if(!t||typeof t!=`object`)return``;let n=Object.keys(t).find(e=>e.toLowerCase()===`x-gomodel-interaction-parent`);return n?String(t[n]||``).trim():``}function Cz(e,t){return!Array.isArray(e)||!t?null:e.find(e=>String(e&&e.id||``)===String(t))||null}function wz(e){return!Array.isArray(e)||e.length===0?null:e.reduce((e,t)=>e?tB(t,e)>=0?t:e:t,null)}function Tz(e,t){let n=new Set(Array.isArray(t)?t.map(String):[]);return wz((Array.isArray(e)?e:[]).filter(e=>{let t=String(e&&e.id||``);return n.has(t)&&e&&e.data&&e.data.request_body!=null}))}function Ez(e,t){let n=wz(e);return!!n&&String(n.id||``)===String(t||``)}function Dz(e,t,n){return String(e||``).trim()===`audit.flushed`&&String(t||``).trim()!==``&&String(t||``).trim()===String(n||``).trim()}function Oz(e,t){let n=Array.isArray(e)?e.filter(Boolean).map(String):[];return(Array.isArray(t)?t:[]).forEach(e=>{let t=String(e&&(e.id||e.request_id)||``).trim();t&&!n.includes(t)&&n.push(t)}),n}function kz(e){if(e&&e.conversation_payload)return!0;let t=e&&e.data?e.data.request_body:null,n=e&&e.data?e.data.response_body:null,r=t&&(Array.isArray(t.messages)||t.input!==void 0||typeof t.instructions==`string`||typeof t.previous_response_id==`string`),i=n&&(Array.isArray(n.choices)||lz(n.output));return!!(r||i)}function Az(e){return!e||uz(e.path)?!1:dz(e.path)||kz(e)}function jz(e){let t=0,n=!1,r=!1,i=String(e||``);for(let e=0;e0&&a+1`,`>`).replaceAll(`"`,`"`).replaceAll(`'`,`'`)}function Fz(e){return!!(e&&typeof e==`object`&&e.__audio__===!0)}function Iz(e){let t=Number(e||0);if(!Number.isFinite(t)||t<=0)return`0 B`;let n=[`B`,`KB`,`MB`,`GB`],r=0,i=t;for(;i>=1024&&r``+Pz(t)+` `+Pz(Rz(e[t]))+`
`);return t.length?``+t.join(``)+`
`:``}function Bz(e){let t=Lz(e.content_type),n=Pz(t+` · `+Iz(e.bytes)),r=zz(e.meta);if(e.stored&&e.encoding===`base64`&&e.data){let i=String(e.data).replace(/[^A-Za-z0-9+/=]/g,``);return``}let i=e.too_large?`Audio too large to store.`:`Audio not logged. Set LOGGING_LOG_AUDIO_BODIES=true to capture playable audio.`;return``}function Vz(e){try{return JSON.stringify(String(e)).slice(1,-1)}catch{return``}}function Hz(e){if(!e||typeof e!=`object`)return null;let t=Number(e.characters||0);if(!Number.isFinite(t)||t<=0)return null;let n=Array.isArray(e.segments)?e.segments.map(e=>String(e||``)).filter(Boolean):[];return n.length===0?null:{remaining:Math.floor(t),segments:n,segmentIndex:0}}function Uz(e,t){if(!t||t.remaining<=0||t.segmentIndex>=t.segments.length)return Pz(e);let n=``,r=0,i=0;for(;t.remaining>0&&t.segmentIndex`+Pz(l)+``,r=s+l.length,i=s+o.length,t.remaining-=c,c>=a.length){t.segmentIndex++;continue}break}return n?n+Pz(e.slice(r)):Pz(e)}function Wz(e,t,n){let r=n&&typeof n.formatJSON==`function`?n.formatJSON:e=>String(e),i=n&&typeof n.canShowConversation==`function`?n.canShowConversation:()=>!1,a=Hz(n&&n.promptCacheHighlight),o=r(t);if(!o||o===`Not captured`)return Pz(o);if(!i(e))return o.split(`
`).map(e=>Uz(e,a)).join(`
`);let s=o.split(`
@@ -47,7 +47,7 @@
`):e.text||``}function iB(e){return e?[String(e.text||``),Array.isArray(e.toolCalls)&&e.toolCalls.length>0?rB({role:`function_call`,toolCalls:e.toolCalls}):``].filter(Boolean).join(`
-`):``}function aB(e){let t=e&&e.arguments!==void 0?e.arguments:``;if(typeof t!=`string`)try{return JSON.stringify(t,null,2)}catch{return String(t)}try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}var oB=600*1e3,sB=15*1e3,cB=250,lB=class{#e=j(!1);get conversationOpen(){return R(this.#e)}set conversationOpen(e){M(this.#e,e,!0)}#t=j(!1);get conversationLoading(){return R(this.#t)}set conversationLoading(e){M(this.#t,e,!0)}#n=j(``);get conversationError(){return R(this.#n)}set conversationError(e){M(this.#n,e,!0)}#r=j(``);get conversationAnchorID(){return R(this.#r)}set conversationAnchorID(e){M(this.#r,e,!0)}#i=j(N([]));get conversationEntryIDs(){return R(this.#i)}set conversationEntryIDs(e){M(this.#i,e,!0)}#a=j(``);get conversationSessionID(){return R(this.#a)}set conversationSessionID(e){M(this.#a,e,!0)}#o=j(!1);get conversationTruncated(){return R(this.#o)}set conversationTruncated(e){M(this.#o,e,!0)}#s=j(!1);get conversationFollowLatest(){return R(this.#s)}set conversationFollowLatest(e){M(this.#s,e,!0)}#c=j(``);get conversationOpenedFromID(){return R(this.#c)}set conversationOpenedFromID(e){M(this.#c,e,!0)}#l=j(``);get followUpText(){return R(this.#l)}set followUpText(e){M(this.#l,e,!0)}#u=j(!1);get followUpSending(){return R(this.#u)}set followUpSending(e){M(this.#u,e,!0)}#d=j(``);get followUpError(){return R(this.#d)}set followUpError(e){M(this.#d,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#f=j(null);get conversationDialogEl(){return R(this.#f)}set conversationDialogEl(e){M(this.#f,e,!0)}#p=j(null);get conversationCloseBtnEl(){return R(this.#p)}set conversationCloseBtnEl(e){M(this.#p,e,!0)}#m=j(null);get conversationThreadEl(){return R(this.#m)}set conversationThreadEl(e){M(this.#m,e,!0)}get conversationEntries(){return(this.conversationEntryIDs||[]).map(e=>PE.auditRecord(e)).filter(Boolean)}#h=A(()=>nB(this.conversationEntries,this.conversationAnchorID));get conversationView(){return R(this.#h)}set conversationView(e){M(this.#h,e)}get conversationMessages(){return this.conversationView.messages}get conversationBranchEntryIDs(){return this.conversationView.entryIDs}_setConversationEntryIDs(e){this.conversationEntryIDs=[...new Set((Array.isArray(e)?e:[]).filter(Boolean))],PE.pinAuditRecords(this.conversationEntryIDs)}canShowConversation(e){return Az(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return sd(e)}renderBodyWithConversationHighlights(e,t,n){return Wz(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this._setConversationEntryIDs([]),this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this._addConversationRecord(PE.upsertAuditRecord(e,`conversation.live`));return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof PE.auditEntryLiveDetailPending==`function`&&PE.auditEntryLiveDetailPending(e)}_applyConversationView(){let e=this.conversationEntries,t=nB(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=Tz(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id))}}handleAuditRecordChange(e,t){if(!this.conversationOpen||!e)return;let n=String(e.id||``).trim(),r=xz(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(r.accepted&&(this.followUpRequestID=r.followUpRequestID,n&&r.submittedChild&&(this.conversationAnchorID=n,this.conversationFollowLatest=!0),this._addConversationRecord(e),Dz(String(t||e._live_state||``).trim(),n,this.conversationAnchorID))){this.conversationMessages.length===0&&(this.conversationLoading=!0);let e=++this.conversationRequestToken;this.fetchConversation(n,e,!1)}}_addConversationRecord(e){let t=DE(e);t&&!this.conversationEntryIDs.includes(t)&&this._setConversationEntryIDs([...this.conversationEntryIDs,t]),!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(),this.conversationFollowLatest&&this._scheduleLatestScroll()}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof PE.liveAuditStateSettled!=`function`||!PE.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this._setConversationEntryIDs([]),this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1;let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await hu(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`;return}let a=i.data||{},o=a.anchor_id||e,s=Array.isArray(a.entries)?a.entries:[],c=PE.upsertAuditRecords(s,`conversation.hydrated`),l=Oz(this.conversationEntryIDs,c);l.length>this.conversationEntryIDs.length&&this._setConversationEntryIDs(l),r&&(this.conversationFollowLatest=Ez(c,o)),this.conversationAnchorID=o;let u=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);u&&u.session_id&&(this.conversationSessionID=String(u.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return Cz(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return gz(e)?pz(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=_z(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=dB(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},oB);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=yz(e,n,r),o=await pu(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await uB(o),!PE.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){_u(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+sB;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function uB(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function dB(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function fB(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var pB=new lB,mB=0;An(()=>{On(()=>{let e=kE(PE.auditRecordChanges,mB);e.length!==0&&(mB=Number(e[e.length-1].version||0),wr(()=>{e.forEach(e=>{if(!AE(e))return;let t=PE.auditRecord(e.key);pB.handleAuditRecordChange(t,e.eventType)})}))})});var hB=B(` `),gB=B(` `),_B=B(` `),vB=B(` `),yB=B(`
`);function bB(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`expanded`,3,!1),i=q(t,`onactivate`,3,null),a=q(t,`hidePath`,3,!1),o=A(()=>lu.formatTimestamp(t.entry.timestamp)),s=A(()=>R(o)===`-`?R(o):R(o).slice(R(o).lastIndexOf(` `)+1)),c=A(()=>pB.conversationOpen&&String(pB.conversationAnchorID||``)===String(t.entry.id||``));function l(e){e.preventDefault(),i()&&i()()}function u(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function d(e){if(e.stopPropagation(),e.preventDefault(),R(c)){pB.closeConversation();return}pB.openConversation(t.entry,e.currentTarget)}var f=yB();let p;var m=P(f),h=P(m),g=e=>{var t=hB(),r=P(t);{let e=A(()=>n().expanded?Nc:Fc);J(r,{get icon(){return R(e)},class:`audit-thread-expander-svg`})}var i=I(r,2),a=P(i,!0);D(i),D(t),L(()=>{K(t,`aria-expanded`,n().expanded),K(t,`title`,`Session with `+n().count+` requests`),K(t,`aria-label`,`Session with `+n().count+` requests, `+(n().expanded?`collapse`:`expand`)),H(a,n().count)}),z(`click`,t,u),V(e,t)};U(h,e=>{n()&&e(g)});var _=I(h,2),v=P(_),y=P(v,!0);D(v);var b=I(v,2),x=P(b,!0);D(b),D(_);var S=I(_,2),C=e=>{var n=gB(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>Sd(t.entry)]),V(e,n)};U(S,e=>{(t.entry.requested_model||t.entry.model)&&e(C)});var w=I(S,2),T=e=>{var n=_B(),r=P(n,!0);D(n),L(()=>H(r,t.entry.path||`-`)),V(e,n)};U(w,e=>{a()||e(T)}),D(m);var E=I(m,2),ee=P(E);WR(ee,{get entry(){return t.entry}});var te=I(ee,2),ne=P(te),re=P(ne,!0);D(ne);var ie=I(ne,2),ae=P(ie,!0);D(ie),D(te);var oe=I(te,2),se=P(oe,!0);D(oe);var ce=I(oe,2),le=e=>{var t=vB();let n;var r=P(t);{let e=A(()=>R(c)?Pc:Fc);J(r,{get icon(){return R(e)},class:`audit-conversation-trigger-svg`})}D(t),L(()=>{n=G(t,1,`audit-conversation-trigger svelte-17mysgz`,null,n,{"audit-conversation-trigger-active":R(c)}),K(t,`title`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-label`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-pressed`,R(c))}),z(`click`,t,d),V(e,t)},ue=A(()=>pB.canShowConversation(t.entry));U(ce,e=>{R(ue)&&e(le)}),D(E),D(f),L((e,n,i,a)=>{p=G(f,1,`audit-entry-summary svelte-17mysgz`,null,p,e),K(f,`aria-expanded`,r()),G(_,1,`audit-status-badge audit-request-badge ${n??``}`,`svelte-17mysgz`),K(_,`title`,`Status `+(t.entry.status_code||`-`)+` · `+(t.entry.method||`-`)),K(_,`aria-label`,(t.entry.status_code||`-`)+` `+(t.entry.method||`-`)),H(y,t.entry.status_code||`-`),H(x,t.entry.method||`-`),K(te,`title`,i),K(te,`aria-label`,R(o)),H(re,R(o)),H(ae,R(s)),H(se,a)},[()=>({"audit-entry-summary-live-in-progress":YL(t.entry),"audit-entry-summary-has-interactions":pB.canShowConversation(t.entry)}),()=>JL(t.entry.status_code),()=>gd(t.entry.timestamp),()=>qL(t.entry.duration_ns)]),z(`click`,f,l),V(e,f),k()}Br([`click`]);var xB=B(` `);function SB(e,t){O(t,!0);let n=q(t,`label`,3,`Copy`),r=q(t,`copiedLabel`,3,`Copied`),i=q(t,`errorLabel`,3,``),a=q(t,`class`,3,`btn`),o=A(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=xB();let c;var l=P(s),u=e=>{J(e,{get icon(){return Lc},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{J(e,{get icon(){return Bc},width:`14`,height:`14`})};U(l,e=>{t.state.copied?e(u):e(d,-1)});var f=I(l,2),p=P(f,!0);D(f),D(s),L(()=>{c=G(s,1,Ni([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),H(p,R(o))}),z(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),V(e,s),k()}Br([`click`]);var CB=B(``),wB=B(``),TB=B(` `),EB=B(` streaming `),DB=B(``),OB=B(`
`),kB=B(`
`),AB=B(`
`),jB=B(``);function MB(e,t){O(t,!0);let n=CF({logPrefix:`Failed to copy audit payload:`}),r=CF({logPrefix:`Failed to copy audit payload:`}),i=A(()=>t.pane&&t.pane.showHeaders?sd(t.pane.headers):``),a=A(()=>!t.pane||!t.pane.showBody?``:Fz(t.pane.body)?Bz(t.pane.body):pB.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=A(()=>!!(t.pane&&pB.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),pB.handleErrorConversationClick(e,t.pane.entry))}var c=jB();let l;var u=P(c),d=e=>{var n=CB(),r=I(P(n),2);let i;var a=P(r,!0);D(r),D(n),L(()=>{i=G(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":R(o)}),K(r,`role`,R(o)?`button`:null),K(r,`tabindex`,R(o)?0:null),H(a,t.pane.errorMessage)}),z(`mousedown`,r,e=>pB.startBodyInteraction(e)),z(`keydown`,r,s),z(`click`,r,e=>pB.handleErrorConversationClick(e,t.pane.entry)),V(e,n)};U(u,e=>{t.pane.showErrorMessage&&e(d)});var f=I(u,2),p=e=>{var n=wB(),a=P(n),o=P(a),s=P(o,!0);D(o),SB(I(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,sd)}),D(a);var c=I(a,2),l=P(c,!0);D(c),D(n),L(()=>{H(s,t.pane.headersTitle||`Headers`),H(l,R(i))}),V(e,n)};U(f,e=>{t.pane.showHeaders&&e(p)});var m=I(f,2),h=e=>{var r=DB(),i=P(r),o=P(i),s=I(P(o),2),c=e=>{var n=TB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.bodyCacheRatioLabel)),V(e,n)};U(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=I(s,2),u=e=>{V(e,EB())};U(l,e=>{t.pane.streaming&&e(u)}),D(o),SB(I(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,sd)}),D(i);var d=I(i,2);pi(d,()=>R(a),!0),D(d),D(r),z(`mousedown`,d,e=>pB.startBodyInteraction(e)),z(`click`,d,e=>pB.handleBodyConversationClick(e,t.pane.entry)),V(e,r)};U(m,e=>{t.pane.showBody&&e(h)});var g=I(m,2),_=e=>{var n=OB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.emptyMessage)),V(e,n)};U(g,e=>{t.pane.showEmpty&&e(_)});var v=I(g,2),y=e=>{var n=kB(),r=I(P(n),2),i=P(r,!0);D(r),D(n),L(()=>H(i,t.pane.pendingMessage)),V(e,n)};U(v,e=>{t.pane.showPending&&e(y)});var b=I(v,2),x=e=>{var n=AB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.tooLargeMessage)),V(e,n)};U(b,e=>{t.pane.showTooLarge&&e(x)}),D(c),L(()=>l=G(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),V(e,c),k()}Br([`mousedown`,`keydown`,`click`]);var NB=B(` `),PB=B(` `),FB=B(` `),IB=B(` `),LB=B(` `),RB=B(`
`),zB=B(``);function BB(e,t){O(t,!0);let n=q(t,`panes`,19,()=>[]),r=j(null),i=A(()=>DR(R(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=OR(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),M(r,a,!0))}var c=zB(),l=P(c);W(l,21,n,e=>e.id,(e,t)=>{var n=LB();let c;var l=P(n),u=P(l),d=e=>{J(e,{get icon(){return wc}})},f=e=>{J(e,{get icon(){return Cc}})};U(u,e=>{R(t).pane.direction===`request`?e(d):R(t).pane.direction===`response`&&e(f,1)}),D(l);var p=I(l,2),m=P(p,!0);D(p);var h=I(p,2),g=e=>{var n=NB(),r=P(n);D(n),L(()=>H(r,`#${R(t).pane.seq??``}`)),V(e,n)};U(h,e=>{R(t).pane.seq&&e(g)});var _=I(h,2),v=e=>{var n=PB(),r=P(n,!0);D(n),L(()=>{G(n,1,`provider-badge audit-pane-kind audit-pane-kind-${R(t).pane.kind??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.kind)}),V(e,n)};U(_,e=>{R(t).pane.kind&&e(v)});var y=I(_,2);W(y,17,()=>R(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=FB(),r=P(n,!0);D(n),L(()=>{K(n,`title`,R(t).title),H(r,R(t).label)}),V(e,n)});var b=I(y,2),x=e=>{var n=IB(),r=P(n,!0);D(n),L(()=>H(r,R(t).pane.savingsLabel)),V(e,n)};U(b,e=>{R(t).pane.savingsLabel&&e(x)});var S=I(b,2),C=e=>{var n=PB(),r=P(n,!0);D(n),L(e=>{G(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.statusCode)},[()=>JL(R(t).pane.statusCode)]),V(e,n)};U(S,e=>{R(t).pane.statusCode&&e(C)}),D(n),L((e,r)=>{c=G(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":R(i)===R(t).id}),K(n,`aria-selected`,R(i)===R(t).id),K(n,`id`,e),K(n,`aria-controls`,r),K(n,`tabindex`,R(i)===R(t).id?0:-1),G(l,1,Ni([`audit-pane-icon`,R(t).pane.direction&&`audit-pane-icon-${R(t).pane.direction}`]),`svelte-1bc5vi5`),H(m,R(t).pane.title)},[()=>a(R(t).id),()=>o(R(t).id)]),z(`keydown`,n,e=>s(e,R(t).id)),z(`click`,n,()=>M(r,R(t).id,!0)),V(e,n)}),D(l),W(I(l,2),17,n,e=>e.id,(e,t)=>{var n=RB();let r;MB(P(n),{get pane(){return R(t).pane}}),D(n),L((e,a)=>{K(n,`id`,e),K(n,`aria-labelledby`,a),r=Bi(n,``,r,{display:R(i)===R(t).id?null:`none`})},[()=>o(R(t).id),()=>a(R(t).id)]),V(e,n)}),D(c),V(e,c),k()}Br([`keydown`,`click`]);var VB=B(`
`),HB=B(` `);function UB(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`hidePath`,3,!1),i=A(()=>jR.isAuditEntryExpanded(t.entry)),a=A(()=>pB.conversationOpen&&String(pB.conversationAnchorID||``)===String(t.entry.id||``)),o=A(()=>R(i)?TR(t.entry,oz):[]),s=A(()=>R(i)?bI(t.entry,hL.auditEntryWorkflow(t.entry),hL.workflowFeatureCaps()):null);function c(){jR.toggleAuditEntryExpanded(t.entry)}var l=HB();let u;var d=P(l);bB(d,{get entry(){return t.entry},get thread(){return n()},get expanded(){return R(i)},get hidePath(){return r()},onactivate:c});var f=I(d,2),p=e=>{var n=VB(),r=P(n),i=e=>{IF(e,{get chart(){return R(s)}})};U(r,e=>{R(s)&&e(i)});var a=I(r,2);BB(a,{get entry(){return t.entry},get panes(){return R(o)}}),VR(I(a,2),{get entry(){return t.entry}}),D(n),Di(3,n,()=>Ju,()=>({y:-6,duration:pL(150)})),V(e,n)};U(f,e=>{R(i)&&e(p)}),D(l),L(()=>u=G(l,1,`audit-entry svelte-cmjgwr`,null,u,{"audit-entry-interactions-open":R(a)})),V(e,l),k()}var WB=B(`
`),GB=B(`
`),KB=B(`
`),qB=B(`
`),JB=B(`
`);function YB(e,t){O(t,!0);let n=A(()=>jL(t.entry)),r=A(()=>jR.isThreadExpanded(R(n))),i=A(()=>jR.threadChildren(R(n))),a=A(()=>R(i)&&!R(i).loading&&Number(R(i).total||0)>R(i).entries.length+1);var o=Xr(),s=F(o),c=e=>{UB(e,{get entry(){return t.entry}})},l=A(()=>!NL(t.entry)),u=e=>{var n=JB(),o=P(n);{let e=A(()=>({count:ML(t.entry),expanded:R(r),ontoggle:()=>jR.toggleThread(t.entry)}));UB(o,{get entry(){return t.entry},get thread(){return R(e)}})}var s=I(o,2),c=e=>{var n=qB(),r=P(n),o=e=>{var t=WB();wT(P(t),{size:14,label:`Loading session requests`}),D(t),V(e,t)};U(r,e=>{R(i)&&R(i).loading&&e(o)});var s=I(r,2);W(s,17,()=>R(i)&&R(i).entries||[],e=>e.id,(e,n)=>{var r=GB(),i=P(r);{let e=A(()=>R(n).path===t.entry.path);UB(i,{get entry(){return R(n)},get hidePath(){return R(e)}})}D(r),V(e,r)});var c=I(s,2),l=e=>{var t=KB(),n=P(t);D(t),L(()=>H(n,`Showing the latest ${R(i).entries.length+1} of ${R(i).total??``}
+`):``}function aB(e){let t=e&&e.arguments!==void 0?e.arguments:``;if(typeof t!=`string`)try{return JSON.stringify(t,null,2)}catch{return String(t)}try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}var oB=600*1e3,sB=15*1e3,cB=250,lB=class{#e=j(!1);get conversationOpen(){return R(this.#e)}set conversationOpen(e){M(this.#e,e,!0)}#t=j(!1);get conversationLoading(){return R(this.#t)}set conversationLoading(e){M(this.#t,e,!0)}#n=j(``);get conversationError(){return R(this.#n)}set conversationError(e){M(this.#n,e,!0)}#r=j(``);get conversationAnchorID(){return R(this.#r)}set conversationAnchorID(e){M(this.#r,e,!0)}#i=j(N([]));get conversationEntryIDs(){return R(this.#i)}set conversationEntryIDs(e){M(this.#i,e,!0)}#a=j(``);get conversationSessionID(){return R(this.#a)}set conversationSessionID(e){M(this.#a,e,!0)}#o=j(!1);get conversationTruncated(){return R(this.#o)}set conversationTruncated(e){M(this.#o,e,!0)}#s=j(!1);get conversationFollowLatest(){return R(this.#s)}set conversationFollowLatest(e){M(this.#s,e,!0)}#c=j(``);get conversationOpenedFromID(){return R(this.#c)}set conversationOpenedFromID(e){M(this.#c,e,!0)}#l=j(``);get followUpText(){return R(this.#l)}set followUpText(e){M(this.#l,e,!0)}#u=j(!1);get followUpSending(){return R(this.#u)}set followUpSending(e){M(this.#u,e,!0)}#d=j(``);get followUpError(){return R(this.#d)}set followUpError(e){M(this.#d,e,!0)}followUpRequestID=``;followUpAbort=null;conversationRequestToken=0;conversationReturnFocusEl=null;bodyPointerStart=null;#f=j(null);get conversationDialogEl(){return R(this.#f)}set conversationDialogEl(e){M(this.#f,e,!0)}#p=j(null);get conversationCloseBtnEl(){return R(this.#p)}set conversationCloseBtnEl(e){M(this.#p,e,!0)}#m=j(null);get conversationThreadEl(){return R(this.#m)}set conversationThreadEl(e){M(this.#m,e,!0)}get conversationEntries(){return(this.conversationEntryIDs||[]).map(e=>PE.auditRecord(e)).filter(Boolean)}#h=A(()=>nB(this.conversationEntries,this.conversationAnchorID));get conversationView(){return R(this.#h)}set conversationView(e){M(this.#h,e)}get conversationMessages(){return this.conversationView.messages}get conversationBranchEntryIDs(){return this.conversationView.entryIDs}_setConversationEntryIDs(e){this.conversationEntryIDs=[...new Set((Array.isArray(e)?e:[]).filter(Boolean))],PE.pinAuditRecords(this.conversationEntryIDs)}canShowConversation(e){return Az(e)}startBodyInteraction(e){this.bodyPointerStart={x:e.clientX,y:e.clientY}}_isBodyDrag(e){if(!this.bodyPointerStart)return!1;let t=Math.abs(e.clientX-this.bodyPointerStart.x),n=Math.abs(e.clientY-this.bodyPointerStart.y);return t>4||n>4}_hasActiveSelection(){let e=window.getSelection?window.getSelection():null;return!e||e.isCollapsed?!1:String(e.toString()||``).trim().length>0}handleBodyConversationClick(e,t){let n=this._isBodyDrag(e);if(this.bodyPointerStart=null,n||this._hasActiveSelection()||!this.canShowConversation(t))return;let r=e.target&&e.target.closest?e.target.closest(`[data-conversation-trigger="1"]`):null;r&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,r))}handleErrorConversationClick(e,t){let n=this._isBodyDrag(e);this.bodyPointerStart=null,!n&&(this._hasActiveSelection()||this.canShowConversation(t)&&(e.preventDefault(),e.stopPropagation(),this.openConversation(t,e.currentTarget)))}formatJSON(e){return sd(e)}renderBodyWithConversationHighlights(e,t,n){return Wz(e,t,{formatJSON:e=>this.formatJSON(e),canShowConversation:e=>this.canShowConversation(e),promptCacheHighlight:n&&n.promptCacheHighlight})}async openConversation(e,t){if(!e||!e.id||!this.canShowConversation(e))return;let n=document.activeElement instanceof HTMLElement?document.activeElement:null;t instanceof HTMLElement?this.conversationReturnFocusEl=t:n&&n!==document.body&&(this.conversationReturnFocusEl=n);let r=++this.conversationRequestToken;if(this.conversationOpen=!0,this.conversationError=``,this.conversationAnchorID=e.id,this.conversationOpenedFromID=e.id,this.conversationSessionID=String(e.session_id||``).trim(),this._setConversationEntryIDs([]),this.conversationTruncated=!1,this.conversationFollowLatest=!1,this.followUpText=``,this.followUpError=``,this.followUpRequestID=``,requestAnimationFrame(()=>this._focusConversationDrawer()),this._conversationEntryLivePending(e)){this.conversationFollowLatest=!0,this.conversationLoading=!1,this._addConversationRecord(PE.upsertAuditRecord(e,`conversation.live`));return}this.conversationLoading=!0,await this.fetchConversation(e.id,r,!0,!0)}_conversationEntryLivePending(e){return typeof PE.auditEntryLiveDetailPending==`function`&&PE.auditEntryLiveDetailPending(e)}_applyConversationView(){let e=this.conversationEntries,t=nB(e,this.conversationAnchorID);if(this.conversationFollowLatest){let n=Tz(e,t.entryIDs);n&&n.id&&String(n.id)!==this.conversationAnchorID&&(this.conversationAnchorID=String(n.id))}}handleAuditRecordChange(e,t){if(!this.conversationOpen||!e)return;let n=String(e.id||``).trim(),r=xz(this.conversationEntries,this.conversationAnchorID,this.conversationSessionID,this.followUpRequestID,e);if(r.accepted&&(this.followUpRequestID=r.followUpRequestID,n&&r.submittedChild&&(this.conversationAnchorID=n,this.conversationFollowLatest=!0),this._addConversationRecord(e),Dz(String(t||e._live_state||``).trim(),n,this.conversationAnchorID))){this.conversationMessages.length===0&&(this.conversationLoading=!0);let e=++this.conversationRequestToken;this.fetchConversation(n,e,!1)}}_addConversationRecord(e){let t=DE(e);t&&!this.conversationEntryIDs.includes(t)&&this._setConversationEntryIDs([...this.conversationEntryIDs,t]),!this.conversationSessionID&&e.session_id&&(this.conversationSessionID=String(e.session_id).trim()),this._applyConversationView(),this.conversationFollowLatest&&this._scheduleLatestScroll()}conversationLiveWaiting(){if(!this.conversationOpen)return!1;let e=new Set(this.conversationBranchEntryIDs||[]);return(this.conversationEntries||[]).some(t=>e.has(String(t&&t.id||``))&&t._live&&(typeof PE.liveAuditStateSettled!=`function`||!PE.liveAuditStateSettled(t._live_state)))}conversationLiveStatusText(){return(this.conversationMessages||[]).length>0?`Model is responding…`:`Waiting for request data…`}closeConversation(){this.followUpAbort&&this.followUpAbort.abort(),this.conversationOpen=!1,this.conversationRequestToken++,this.conversationSessionID=``,this._setConversationEntryIDs([]),this.conversationFollowLatest=!1,this.conversationOpenedFromID=``,this.followUpRequestID=``,this.followUpSending=!1;let e=this.conversationReturnFocusEl;this.conversationReturnFocusEl=null,e&&typeof e.focus==`function`&&document.contains(e)&&requestAnimationFrame(()=>e.focus())}_focusConversationDrawer(){if(!this.conversationOpen)return;let e=this.conversationCloseBtnEl;if(e&&typeof e.focus==`function`){e.focus();return}let t=this.conversationDialogEl;t&&typeof t.focus==`function`&&t.focus()}async fetchConversation(e,t,n=!0,r=!1){try{let i=await hu(`/admin/audit/conversation?`+(`log_id=`+encodeURIComponent(e)+`&limit=120`),{label:`audit conversation`});if(t!==this.conversationRequestToken||i.stale)return;if(!i.ok){this.conversationError=`Unable to load interactions.`;return}let a=i.data||{},o=a.anchor_id||e,s=Array.isArray(a.entries)?a.entries:[],c=PE.upsertAuditRecords(s,`conversation.hydrated`),l=Oz(this.conversationEntryIDs,c);l.length>this.conversationEntryIDs.length&&this._setConversationEntryIDs(l),r&&(this.conversationFollowLatest=Ez(c,o)),this.conversationAnchorID=o;let u=this.conversationEntries.find(e=>e.id===this.conversationAnchorID);u&&u.session_id&&(this.conversationSessionID=String(u.session_id).trim()),this.conversationTruncated=!!a.truncated,this._applyConversationView(),this.conversationFollowLatest?this._scheduleLatestScroll():n&&this._scheduleAnchorScroll()}catch(e){if(t!==this.conversationRequestToken)return;console.error(`Failed to fetch audit conversation:`,e),this.conversationError=`Failed to load interactions.`}finally{t===this.conversationRequestToken&&(this.conversationLoading=!1)}}selectedConversationEntry(){return Cz(this.conversationEntries,this.conversationAnchorID)}followUpKind(){let e=this.selectedConversationEntry();return gz(e)?pz(e.path):``}canSendFollowUp(){return!!this.followUpKind()&&!!String(this.followUpText||``).trim()&&!this.followUpSending&&!this.conversationLiveWaiting()}async sendFollowUp(){if(!this.canSendFollowUp())return;let e=this.selectedConversationEntry(),t=_z(e,this.followUpText);if(!e||!t)return;let n=this.conversationAnchorID,r=dB(),i=new AbortController,a=!1,o=setTimeout(()=>{a=!0,i.abort()},oB);this.followUpSending=!0,this.followUpError=``,this.followUpRequestID=r,this.followUpAbort=i;try{let a=yz(e,n,r),o=await pu(e.path,{method:`POST`,headers:a,body:JSON.stringify(t),signal:i.signal}),s=String(o.headers.get(`X-Request-ID`)||``).trim();if(s&&this.followUpRequestID&&(this.followUpRequestID=s),!o.ok){let e=`Unable to send message.`;try{let t=await o.json();e=t&&t.error&&t.error.message||e}catch{}this.followUpError=e,(this.followUpRequestID===r||this.followUpRequestID===s)&&(this.followUpRequestID=``);return}if(this.followUpText=``,await uB(o),!PE.liveLogsStreaming&&this.conversationOpen){let e=++this.conversationRequestToken;await this._selectPersistedFollowUp(n,this.followUpRequestID,e,i.signal)}}catch(e){_u(e)||i.signal.aborted?a&&this.conversationOpen&&(this.followUpError=`The request timed out.`):(console.error(`Failed to send interaction follow-up:`,e),this.followUpError=`Failed to send message.`)}finally{clearTimeout(o),this.followUpAbort===i&&(this.followUpAbort=null,this.followUpSending=!1)}}async _selectPersistedFollowUp(e,t,n,r){let i=Date.now()+sB;for(;this.conversationOpen&&n===this.conversationRequestToken&&Date.now(){let e=this.conversationThreadEl;if(!e)return;let t=e.querySelectorAll(`[data-conversation-anchor="true"]`),n=t[t.length-1];n&&typeof n.scrollIntoView==`function`&&n.scrollIntoView({block:`center`})})}_scheduleLatestScroll(){requestAnimationFrame(()=>{let e=this.conversationThreadEl;if(!e)return;let t=e.lastElementChild;t&&typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`end`})})}};async function uB(e){let t=e&&e.body&&typeof e.body.getReader==`function`?e.body.getReader():null;if(!t){await e.text();return}for(;!(await t.read()).done;);}function dB(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`?globalThis.crypto.randomUUID():`dashboard-`+Date.now().toString(36)+`-`+Math.random().toString(36).slice(2)}function fB(e,t){return new Promise((n,r)=>{let i,a=()=>{clearTimeout(i),r(new DOMException(`Aborted`,`AbortError`))};if(i=setTimeout(()=>{t&&t.removeEventListener(`abort`,a),n()},e),t){if(t.aborted){a();return}t.addEventListener(`abort`,a,{once:!0})}})}var pB=new lB,mB=0;An(()=>{On(()=>{let e=kE(PE.auditRecordChanges,mB);e.length!==0&&(mB=Number(e[e.length-1].version||0),wr(()=>{e.forEach(e=>{if(!AE(e))return;let t=PE.auditRecord(e.key);pB.handleAuditRecordChange(t,e.eventType)})}))})});var hB=B(` `),gB=B(` `),_B=B(` `),vB=B(` `),yB=B(`
`);function bB(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`expanded`,3,!1),i=q(t,`onactivate`,3,null),a=q(t,`hidePath`,3,!1),o=A(()=>lu.formatTimestamp(t.entry.timestamp)),s=A(()=>R(o)===`-`?R(o):R(o).slice(R(o).lastIndexOf(` `)+1)),c=A(()=>pB.conversationOpen&&String(pB.conversationAnchorID||``)===String(t.entry.id||``));function l(e){e.preventDefault(),i()&&i()()}function u(e){e.stopPropagation(),e.preventDefault(),n().ontoggle()}function d(){return`Session with `+Number(n().count||1)+` requests`}function f(e){if(e.stopPropagation(),e.preventDefault(),R(c)){pB.closeConversation();return}pB.openConversation(t.entry,e.currentTarget)}var p=yB();let m;var h=P(p),g=P(h),_=e=>{var t=hB(),r=P(t);{let e=A(()=>n().expanded?Nc:Fc);J(r,{get icon(){return R(e)},class:`audit-thread-expander-svg`})}var i=I(r,2),a=P(i,!0);D(i),D(t),L((e,r)=>{K(t,`aria-expanded`,n().expanded),K(t,`title`,e),K(t,`aria-label`,r),H(a,n().count)},[()=>d(),()=>d()+`, `+(n().expanded?`collapse`:`expand`)]),z(`click`,t,u),V(e,t)};U(g,e=>{n()&&e(_)});var v=I(g,2),y=P(v),b=P(y,!0);D(y);var x=I(y,2),S=P(x,!0);D(x),D(v);var C=I(v,2),w=e=>{var n=gB(),r=P(n,!0);D(n),L(e=>H(r,e),[()=>Sd(t.entry)]),V(e,n)};U(C,e=>{(t.entry.requested_model||t.entry.model)&&e(w)});var T=I(C,2),E=e=>{var n=_B(),r=P(n,!0);D(n),L(()=>H(r,t.entry.path||`-`)),V(e,n)};U(T,e=>{a()||e(E)}),D(h);var ee=I(h,2),te=P(ee);WR(te,{get entry(){return t.entry}});var ne=I(te,2),re=P(ne),ie=P(re,!0);D(re);var ae=I(re,2),oe=P(ae,!0);D(ae),D(ne);var se=I(ne,2),ce=P(se,!0);D(se);var le=I(se,2),ue=e=>{var t=vB();let n;var r=P(t);{let e=A(()=>R(c)?Pc:Fc);J(r,{get icon(){return R(e)},class:`audit-conversation-trigger-svg`})}D(t),L(()=>{n=G(t,1,`audit-conversation-trigger svelte-17mysgz`,null,n,{"audit-conversation-trigger-active":R(c)}),K(t,`title`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-label`,R(c)?`Close interactions`:`Open interactions`),K(t,`aria-pressed`,R(c))}),z(`click`,t,f),V(e,t)},de=A(()=>pB.canShowConversation(t.entry));U(le,e=>{R(de)&&e(ue)}),D(ee),D(p),L((e,n,i,a)=>{m=G(p,1,`audit-entry-summary svelte-17mysgz`,null,m,e),K(p,`aria-expanded`,r()),G(v,1,`audit-status-badge audit-request-badge ${n??``}`,`svelte-17mysgz`),K(v,`title`,`Status `+(t.entry.status_code||`-`)+` · `+(t.entry.method||`-`)),K(v,`aria-label`,(t.entry.status_code||`-`)+` `+(t.entry.method||`-`)),H(b,t.entry.status_code||`-`),H(S,t.entry.method||`-`),K(ne,`title`,i),K(ne,`aria-label`,R(o)),H(ie,R(o)),H(oe,R(s)),H(ce,a)},[()=>({"audit-entry-summary-live-in-progress":YL(t.entry),"audit-entry-summary-has-interactions":pB.canShowConversation(t.entry)}),()=>JL(t.entry.status_code),()=>gd(t.entry.timestamp),()=>qL(t.entry.duration_ns)]),z(`click`,p,l),V(e,p),k()}Br([`click`]);var xB=B(` `);function SB(e,t){O(t,!0);let n=q(t,`label`,3,`Copy`),r=q(t,`copiedLabel`,3,`Copied`),i=q(t,`errorLabel`,3,``),a=q(t,`class`,3,`btn`),o=A(()=>t.state.error&&i()?i():t.state.copied?r():n());var s=xB();let c;var l=P(s),u=e=>{J(e,{get icon(){return Lc},width:`14`,height:`14`,"stroke-width":`2.5`})},d=e=>{J(e,{get icon(){return Bc},width:`14`,height:`14`})};U(l,e=>{t.state.copied?e(u):e(d,-1)});var f=I(l,2),p=P(f,!0);D(f),D(s),L(()=>{c=G(s,1,Ni([`copy-feedback-btn`,a()]),null,c,{"copy-feedback-btn-copied":t.state.copied}),H(p,R(o))}),z(`click`,s,e=>{e.preventDefault(),t.onclick?.(e)}),V(e,s),k()}Br([`click`]);var CB=B(``),wB=B(``),TB=B(` `),EB=B(` streaming `),DB=B(``),OB=B(`
`),kB=B(`
`),AB=B(`
`),jB=B(``);function MB(e,t){O(t,!0);let n=CF({logPrefix:`Failed to copy audit payload:`}),r=CF({logPrefix:`Failed to copy audit payload:`}),i=A(()=>t.pane&&t.pane.showHeaders?sd(t.pane.headers):``),a=A(()=>!t.pane||!t.pane.showBody?``:Fz(t.pane.body)?Bz(t.pane.body):pB.renderBodyWithConversationHighlights(t.pane.entry,t.pane.body,{promptCacheHighlight:t.pane.promptCacheHighlight})),o=A(()=>!!(t.pane&&pB.canShowConversation(t.pane.entry)));function s(e){e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),pB.handleErrorConversationClick(e,t.pane.entry))}var c=jB();let l;var u=P(c),d=e=>{var n=CB(),r=I(P(n),2);let i;var a=P(r,!0);D(r),D(n),L(()=>{i=G(r,1,`audit-json audit-pane-error-message svelte-1h5puht`,null,i,{"audit-pane-clickable-preview":R(o)}),K(r,`role`,R(o)?`button`:null),K(r,`tabindex`,R(o)?0:null),H(a,t.pane.errorMessage)}),z(`mousedown`,r,e=>pB.startBodyInteraction(e)),z(`keydown`,r,s),z(`click`,r,e=>pB.handleErrorConversationClick(e,t.pane.entry)),V(e,n)};U(u,e=>{t.pane.showErrorMessage&&e(d)});var f=I(u,2),p=e=>{var n=wB(),a=P(n),o=P(a),s=P(o,!0);D(o),SB(I(o,2),{get state(){return r},label:`Copy Headers`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>r.copy(t.pane.copyHeaders,sd)}),D(a);var c=I(a,2),l=P(c,!0);D(c),D(n),L(()=>{H(s,t.pane.headersTitle||`Headers`),H(l,R(i))}),V(e,n)};U(f,e=>{t.pane.showHeaders&&e(p)});var m=I(f,2),h=e=>{var r=DB(),i=P(r),o=P(i),s=I(P(o),2),c=e=>{var n=TB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.bodyCacheRatioLabel)),V(e,n)};U(s,e=>{t.pane.bodyCacheRatioLabel&&e(c)});var l=I(s,2),u=e=>{V(e,EB())};U(l,e=>{t.pane.streaming&&e(u)}),D(o),SB(I(o,2),{get state(){return n},label:`Copy Body`,errorLabel:`Copy failed`,class:`audit-copy-btn`,onclick:()=>n.copy(t.pane.copyBody,sd)}),D(i);var d=I(i,2);pi(d,()=>R(a),!0),D(d),D(r),z(`mousedown`,d,e=>pB.startBodyInteraction(e)),z(`click`,d,e=>pB.handleBodyConversationClick(e,t.pane.entry)),V(e,r)};U(m,e=>{t.pane.showBody&&e(h)});var g=I(m,2),_=e=>{var n=OB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.emptyMessage)),V(e,n)};U(g,e=>{t.pane.showEmpty&&e(_)});var v=I(g,2),y=e=>{var n=kB(),r=I(P(n),2),i=P(r,!0);D(r),D(n),L(()=>H(i,t.pane.pendingMessage)),V(e,n)};U(v,e=>{t.pane.showPending&&e(y)});var b=I(v,2),x=e=>{var n=AB(),r=P(n,!0);D(n),L(()=>H(r,t.pane.tooLargeMessage)),V(e,n)};U(b,e=>{t.pane.showTooLarge&&e(x)}),D(c),L(()=>l=G(c,1,`audit-pane svelte-1h5puht`,null,l,{"audit-pane-split":t.pane&&t.pane.layout===`split`,"audit-pane-split-single":t.pane&&t.pane.layout===`split`&&!(t.pane.showHeaders&&t.pane.showBody)})),V(e,c),k()}Br([`mousedown`,`keydown`,`click`]);var NB=B(` `),PB=B(` `),FB=B(` `),IB=B(` `),LB=B(` `),RB=B(`
`),zB=B(``);function BB(e,t){O(t,!0);let n=q(t,`panes`,19,()=>[]),r=j(null),i=A(()=>DR(R(r),t.entry,n())),a=e=>`audit-tab-`+t.entry.id+`-`+e,o=e=>`audit-tabpanel-`+t.entry.id+`-`+e;function s(e,t){let i=n().map(e=>e.id),a=OR(e.key,i,t);a!=null&&(e.preventDefault(),((e.currentTarget?.closest?.(`.audit-pane-tablist`))?.querySelectorAll(`.audit-pane-tab`)[i.indexOf(a)])?.focus?.(),M(r,a,!0))}var c=zB(),l=P(c);W(l,21,n,e=>e.id,(e,t)=>{var n=LB();let c;var l=P(n),u=P(l),d=e=>{J(e,{get icon(){return wc}})},f=e=>{J(e,{get icon(){return Cc}})};U(u,e=>{R(t).pane.direction===`request`?e(d):R(t).pane.direction===`response`&&e(f,1)}),D(l);var p=I(l,2),m=P(p,!0);D(p);var h=I(p,2),g=e=>{var n=NB(),r=P(n);D(n),L(()=>H(r,`#${R(t).pane.seq??``}`)),V(e,n)};U(h,e=>{R(t).pane.seq&&e(g)});var _=I(h,2),v=e=>{var n=PB(),r=P(n,!0);D(n),L(()=>{G(n,1,`provider-badge audit-pane-kind audit-pane-kind-${R(t).pane.kind??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.kind)}),V(e,n)};U(_,e=>{R(t).pane.kind&&e(v)});var y=I(_,2);W(y,17,()=>R(t).pane.noChangeSteps||[],e=>e.id,(e,t)=>{var n=FB(),r=P(n,!0);D(n),L(()=>{K(n,`title`,R(t).title),H(r,R(t).label)}),V(e,n)});var b=I(y,2),x=e=>{var n=IB(),r=P(n,!0);D(n),L(()=>H(r,R(t).pane.savingsLabel)),V(e,n)};U(b,e=>{R(t).pane.savingsLabel&&e(x)});var S=I(b,2),C=e=>{var n=PB(),r=P(n,!0);D(n),L(e=>{G(n,1,`audit-status-badge ${e??``}`,`svelte-1bc5vi5`),H(r,R(t).pane.statusCode)},[()=>JL(R(t).pane.statusCode)]),V(e,n)};U(S,e=>{R(t).pane.statusCode&&e(C)}),D(n),L((e,r)=>{c=G(n,1,`audit-pane-tab svelte-1bc5vi5`,null,c,{"audit-pane-tab-active":R(i)===R(t).id}),K(n,`aria-selected`,R(i)===R(t).id),K(n,`id`,e),K(n,`aria-controls`,r),K(n,`tabindex`,R(i)===R(t).id?0:-1),G(l,1,Ni([`audit-pane-icon`,R(t).pane.direction&&`audit-pane-icon-${R(t).pane.direction}`]),`svelte-1bc5vi5`),H(m,R(t).pane.title)},[()=>a(R(t).id),()=>o(R(t).id)]),z(`keydown`,n,e=>s(e,R(t).id)),z(`click`,n,()=>M(r,R(t).id,!0)),V(e,n)}),D(l),W(I(l,2),17,n,e=>e.id,(e,t)=>{var n=RB();let r;MB(P(n),{get pane(){return R(t).pane}}),D(n),L((e,a)=>{K(n,`id`,e),K(n,`aria-labelledby`,a),r=Bi(n,``,r,{display:R(i)===R(t).id?null:`none`})},[()=>o(R(t).id),()=>a(R(t).id)]),V(e,n)}),D(c),V(e,c),k()}Br([`keydown`,`click`]);var VB=B(`
`),HB=B(` `);function UB(e,t){O(t,!0);let n=q(t,`thread`,3,null),r=q(t,`hidePath`,3,!1),i=A(()=>jR.isAuditEntryExpanded(t.entry)),a=A(()=>pB.conversationOpen&&String(pB.conversationAnchorID||``)===String(t.entry.id||``)),o=A(()=>R(i)?TR(t.entry,oz):[]),s=A(()=>R(i)?bI(t.entry,hL.auditEntryWorkflow(t.entry),hL.workflowFeatureCaps()):null);function c(){jR.toggleAuditEntryExpanded(t.entry)}var l=HB();let u;var d=P(l);bB(d,{get entry(){return t.entry},get thread(){return n()},get expanded(){return R(i)},get hidePath(){return r()},onactivate:c});var f=I(d,2),p=e=>{var n=VB(),r=P(n),i=e=>{IF(e,{get chart(){return R(s)}})};U(r,e=>{R(s)&&e(i)});var a=I(r,2);BB(a,{get entry(){return t.entry},get panes(){return R(o)}}),VR(I(a,2),{get entry(){return t.entry}}),D(n),Di(3,n,()=>Ju,()=>({y:-6,duration:pL(150)})),V(e,n)};U(f,e=>{R(i)&&e(p)}),D(l),L(()=>u=G(l,1,`audit-entry svelte-cmjgwr`,null,u,{"audit-entry-interactions-open":R(a)})),V(e,l),k()}var WB=B(`
`),GB=B(`
`),KB=B(`
`),qB=B(`
`),JB=B(`
`);function YB(e,t){O(t,!0);let n=A(()=>jL(t.entry)),r=A(()=>jR.isThreadExpanded(R(n))),i=A(()=>jR.threadChildren(R(n))),a=A(()=>R(i)&&!R(i).loading&&Number(R(i).total||0)>R(i).entries.length+1);var o=Xr(),s=F(o),c=e=>{UB(e,{get entry(){return t.entry}})},l=A(()=>!NL(t.entry)),u=e=>{var n=JB(),o=P(n);{let e=A(()=>({count:ML(t.entry),expanded:R(r),ontoggle:()=>jR.toggleThread(t.entry)}));UB(o,{get entry(){return t.entry},get thread(){return R(e)}})}var s=I(o,2),c=e=>{var n=qB(),r=P(n),o=e=>{var t=WB();wT(P(t),{size:14,label:`Loading session requests`}),D(t),V(e,t)};U(r,e=>{R(i)&&R(i).loading&&e(o)});var s=I(r,2);W(s,17,()=>R(i)&&R(i).entries||[],e=>e.id,(e,n)=>{var r=GB(),i=P(r);{let e=A(()=>R(n).path===t.entry.path);UB(i,{get entry(){return R(n)},get hidePath(){return R(e)}})}D(r),V(e,r)});var c=I(s,2),l=e=>{var t=KB(),n=P(t);D(t),L(()=>H(n,`Showing the latest ${R(i).entries.length+1} of ${R(i).total??``}
requests in this session.`)),V(e,t)};U(c,e=>{R(a)&&e(l)}),D(n),Di(3,n,()=>Yu,()=>({duration:pL(150)})),V(e,n)};U(s,e=>{R(r)&&e(c)}),D(n),V(e,n)};U(s,e=>{R(l)?e(c):e(u,-1)}),V(e,o),k()}var XB=B(` .
`),ZB=B(`Audit logging is off. Live entries are temporary and disappear after
refresh. Set LOGGING_ENABLED=true to persist them.
`),QB=B(`
`),$B=B(`
`),eV=B(`
`),tV=B(`
`),nV=B(`
`),rV=B(``);function iV(e,t){O(t,!0);let n=A(()=>bu.config&&bu.config.LOGGING_RETENTION_DAYS);On(()=>{if(Y.refreshTick,Bl.page===`audit-logs`)return wr(()=>r())});function r(){let e=!1;return(async()=>{try{await bu.ensureLoaded()}finally{await jR.fetchAuditLog(!0),!e&&bu.liveLogsVisible()&&PE.ensureLiveLogs()}})(),()=>{e=!0,PE.stopLiveLogs()}}var i=rV(),a=P(i),o=P(a),s=I(P(o),2),c=e=>{YT(e,{copyId:`audit-retention-help-copy`,label:`retention help`,text:`If you want to change the retention period, set LOGGING_RETENTION_DAYS (env var) or logging.retention_days (config.yaml) and restart the gateway. Default is 30 days; 0 keeps audit logs forever.`,title:e=>{var t=XB(),r=P(t,!0),i=I(r),a=P(i,!0);D(i),Ve(),D(t),L((e,t)=>{H(r,e),H(a,t)},[()=>DL(R(n)),()=>OL(R(n))]),V(e,t)},$$slots:{title:!0}})},l=A(()=>EL(R(n)));U(s,e=>{R(l)&&e(c)}),D(o),D(a);var u=I(a,2);rf(P(u),{onchange:()=>jR.fetchAuditLog(!0)}),D(u);var d=I(u,2);Rd(d,{});var f=I(d,2),p=e=>{V(e,ZB())},m=A(()=>bu.loaded&&!bu.auditVisible()&&!Y.needsAuth);U(f,e=>{R(m)&&e(p)});var h=I(f,2),g=P(h);NR(g,{});var _=I(g,2),v=P(_),y=P(v),b=e=>{var t=QB(),n=P(t);D(t),L(e=>H(n,`Showing ${jR.auditLog.offset+1}-${e??``} of ${jR.auditLog.total??``}
${jR.auditGroupSessions?`sessions`:`logs`}`),[()=>Math.min(jR.auditLog.offset+jR.auditLog.limit,jR.auditLog.total)]),V(e,t)};U(y,e=>{jR.auditLog.total>0&&e(b)});var x=I(y,2),S=P(x);ea(S),Ve(2),D(x),D(v),RR(I(v,2),{}),D(_);var C=I(_,2),w=e=>{var t=$B();wT(P(t),{size:18,label:`Loading audit logs`}),D(t),V(e,t)},T=e=>{var t=tV();W(t,29,()=>jR.auditLog.entries,e=>e.id,(e,t)=>{var n=eV(),r=P(n),i=e=>{YB(e,{get entry(){return R(t)}})},a=e=>{UB(e,{get entry(){return R(t)}})};U(r,e=>{jR.auditGroupSessions?e(i):e(a,-1)}),D(n),Ei(n,()=>lL,()=>({duration:pL(150)})),Di(1,n,()=>mL,()=>({live:R(t)._live})),V(e,n)}),D(t),V(e,t)};U(C,e=>{jR.loading&&jR.auditLog.entries.length===0?e(w):jR.auditLog.entries.length>0&&e(T,1)});var E=I(C,2),ee=e=>{var t=nV();DT(P(t),{}),D(t),V(e,t)};U(E,e=>{jR.auditLog.entries.length===0&&!jR.loading&&!Y.needsAuth&&e(ee)}),ZD(I(E,2),{get total(){return jR.auditLog.total},get offset(){return jR.auditLog.offset},get limit(){return jR.auditLog.limit},onprev:()=>jR.auditLogPrevPage(),onnext:()=>jR.auditLogNextPage()}),D(h),D(i),L(()=>na(S,jR.auditGroupSessions)),z(`change`,S,()=>jR.toggleAuditGroupSessions()),V(e,i),k()}Br([`change`]);function aV(e){try{let t=JSON.parse(JSON.stringify(e||{}));return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function oV(e){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(e=>e):e==null?[]:String(e).split(`,`).map(e=>e.trim()).filter(e=>e)}function sV(e,t){let n=String(t||``).trim();return(e||[]).find(e=>String(e&&e.type||``).trim()===n)||null}function cV(e){return Array.isArray(e)&&e.length>0&&String(e[0].type||``).trim()||`system_prompt`}function lV(e,t){let n=String(t||``).trim();return n&&sV(e,n)?n:cV(e)}function uV(e,t){let n=sV(e,t);return!n||!n.defaults?{}:aV(n.defaults)}function dV(e,t,n){return{...uV(e,n),...aV(t)}}function fV(e,t){let n=lV(e,t);return{name:``,type:n,description:``,user_path:``,config:uV(e,n)}}function pV(e,t){if(!t)return e||[];let n=String(t).toLowerCase();return(e||[]).filter(e=>[e.name,e.type,e.user_path,e.description,e.summary].some(e=>String(e||``).toLowerCase().includes(n)))}function mV(e,t){let n=sV(e,t);return n&&n.label?n.label:t||`Unknown`}function hV(e,t){let n=sV(e,t);return Array.isArray(n&&n.fields)?n.fields:[]}function gV(e,t){if(!t||!e)return t&&t.input===`checkboxes`?[]:``;let n=e[t.key];return n==null?t.input===`checkboxes`?[]:``:t.input===`checkboxes`?oV(n):n}function _V(e,t,n){if(!t)return e;let r=aV(e);if(t.input===`number`){let e=String(n||``).trim();if(e===``)delete r[t.key];else{let n=Number(e);r[t.key]=Number.isFinite(n)?n:e}}else t.input===`checkboxes`?r[t.key]=oV(n):r[t.key]=n;return r}function vV(e,t,n){return gV(e,t).includes(String(n||``).trim())}function yV(e,t,n,r){let i=oV(gV(e,t)),a=String(n||``).trim();return a?_V(e,t,r?Array.from(new Set([...i,a])):i.filter(e=>e!==a)):e}function bV(e){return{name:String(e&&e.name||``).trim(),type:String(e&&e.type||``).trim(),description:String(e&&e.description||``).trim()||void 0,user_path:String(e&&e.user_path||``).trim()||void 0,config:aV(e&&e.config)}}var xV=new class{#e=j(N([]));get guardrails(){return R(this.#e)}set guardrails(e){M(this.#e,e,!0)}#t=j(N([]));get types(){return R(this.#t)}set types(e){M(this.#t,e,!0)}#n=j(!0);get available(){return R(this.#n)}set available(e){M(this.#n,e,!0)}#r=j(!1);get loading(){return R(this.#r)}set loading(e){M(this.#r,e,!0)}#i=j(!1);get typesLoading(){return R(this.#i)}set typesLoading(e){M(this.#i,e,!0)}#a=j(``);get error(){return R(this.#a)}set error(e){M(this.#a,e,!0)}#o=j(``);get filter(){return R(this.#o)}set filter(e){M(this.#o,e,!0)}#s=j(!1);get formOpen(){return R(this.#s)}set formOpen(e){M(this.#s,e,!0)}#c=j(!1);get formSubmitting(){return R(this.#c)}set formSubmitting(e){M(this.#c,e,!0)}#l=j(``);get deletingName(){return R(this.#l)}set deletingName(e){M(this.#l,e,!0)}#u=j(`create`);get formMode(){return R(this.#u)}set formMode(e){M(this.#u,e,!0)}#d=j(``);get formOriginalName(){return R(this.#d)}set formOriginalName(e){M(this.#d,e,!0)}#f=j(N({name:``,type:``,description:``,user_path:``,config:{}}));get form(){return R(this.#f)}set form(e){M(this.#f,e,!0)}get filtered(){return pV(this.guardrails,this.filter)}typeLabel(e){return mV(this.types,e)}typeFields(e){return hV(this.types,e)}fieldValue(e){return gV(this.form&&this.form.config,e)}setFieldValue(e,t){this.form={...this.form,config:_V(this.form.config,e,t)}}arrayFieldSelected(e,t){return vV(this.form&&this.form.config,e,t)}toggleArrayFieldValue(e,t,n){this.form={...this.form,config:yV(this.form.config,e,t,n)}}openCreate(){this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=fV(this.types,cV(this.types)),this.formOpen=!0}openEdit(e){let t=lV(this.types,e&&e.type);this.formMode=`edit`,this.formOriginalName=String(e&&e.name||``).trim(),this.error=``,this.form={name:this.formOriginalName,type:t,description:String(e&&e.description||``).trim(),user_path:String(e&&e.user_path||``).trim(),config:dV(this.types,e&&e.config,t)},this.formOpen=!0}closeForm(){this.formOpen=!1,this.formMode=`create`,this.formOriginalName=``,this.error=``,this.form=fV(this.types,cV(this.types))}changeType(e){let t=lV(this.types,e);this.form={...this.form,type:t,config:uV(this.types,t)}}async fetchTypes(){this.typesLoading=!0;try{let e=await bO(`/admin/guardrails/types`,{label:`guardrail types`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.types=[];return}if(e.result&&(this.available=!0),this.types=e.items,e.status===`error`){this.error=e.error;return}let t=lV(this.types,this.form.type);this.form={...this.form,type:t,config:dV(this.types,this.form.config,t)}}finally{this.typesLoading=!1}}async fetchGuardrails(){this.loading=!0,this.error=``;try{let e=await bO(`/admin/guardrails`,{label:`guardrails`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,this.guardrails=[];return}e.result&&(this.available=!0),this.guardrails=e.items,this.error=e.error}finally{this.loading=!1}}async fetchPage(){await Promise.all([this.fetchTypes(),this.fetchGuardrails()])}async submitForm(){let e=String(this.form.name||``).trim(),t=String(this.form.type||``).trim();if(!e){this.error=`Name is required.`;return}if(!t){this.error=`Type is required.`;return}this.error=``,this.formSubmitting=!0;let n=bV(this.form);try{let t=await xO(`/admin/guardrails`,`PUT`,n,{label:`save guardrail`,errorFallback:`Failed to save guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(t.status===`stale`)return;if(t.status===`unavailable`){this.available=!1,this.error=t.error;return}if(t.status===`error`){this.error=t.error;return}ed.success(`Guardrail "`+e+`" saved.`),this.closeForm(),this.fetchGuardrails()}finally{this.formSubmitting=!1}}async deleteGuardrail(e){let t=String(e&&e.name||``).trim();if(!(!t||this.deletingName)&&window.confirm(`Delete guardrail "`+t+`"? Workflows that still reference it must be updated first.`)){this.deletingName=t;try{let e=await xO(`/admin/guardrails`,`DELETE`,{name:t},{label:`delete guardrail`,errorFallback:`Failed to delete guardrail.`,unavailableMessage:`Guardrails feature is unavailable.`});if(e.status===`stale`)return;if(e.status===`unavailable`){this.available=!1,ed.error(e.error);return}if(e.status===`error`){ed.error(e.error);return}ed.success(`Guardrail "`+t+`" deleted.`),this.formOpen&&this.formOriginalName===t&&this.closeForm(),this.fetchGuardrails()}finally{this.deletingName=``}}}},SV=B(``),CV=B(` Loading guardrails...
`),wV=B(`
`),TV=B(`
`),EV=B(`Name Type User Path Summary Actions
`),DV=B(`No guardrails defined yet.
`),OV=B(`