PageSourceSearch

https://app.invisible.work/build/assets/Show-DfIjxiBi.js

js invisible.work collected 2026-09-24 15:16:19 UTC 21,319 bytes, 133 lines download raw bytes

1import{E as N,d as V,y as A,a as n,p,s as l,b as i,u as r,h as D,e,A as I,f as u,t,n as x,c as d,g as b,w as F,m as M,F as y,r as T,b2 as W,aT as j,aX as G,aU as Y,aV as H,aW as X,k as L,D as k,j as P,i as J,b3 as Q}from"./app-DouIK4r8.js";import{E as f}from"./ExternalProviderController-BSMplxsc.js";import{_ as h}from"./index-SCwJZ_Z_.js";import{_ as K}from"./PageHeader.vue_vue_type_script_setup_true_lang-DVCyWnBa.js";import{C as $,_ as Z}from"./AppLayout.vue_vue_type_style_index_0_lang-CGvUlogM.js";import{A as ee}from"./eye-CHvNKZw4.js";import{F as te}from"./file-text-DDzXMVCK.js";import{P as se}from"./pencil-C3OLJ3zn.js";import{T as re}from"./triangle-alert-C7aEZBJ0.js";import{C as S}from"./check-BuZ2S_3d.js";import{C as oe}from"./circle-check-BSgs2Xtw.js";import{S as ne}from"./send-BU0809GR.js";import{P as ie}from"./pause-HdglcrSk.js";import{P as ae}from"./play-Fe6uC8_a.js";import{T as de}from"./trash-2-D9cweTBK.js";import"./useTierCapabilities-UFQqr9Nu.js";import"./DropdownMenuLabel.vue_vue_type_script_setup_true_lang-DkMkKG9a.js";import"./ProgramController-Ir7-xBr9.js";import"./DropdownMenuTrigger.vue_vue_type_script_setup_true_lang-C3gH7QOF.js";import"./useTypeahead-OFqFi-MQ.js";import"./PopperContent-cfY_sM_X.js";import"./useDirection-DnNzzwaO.js";import"./RovingFocusGroup-D_iuxA5l.js";import"./Collection-BQkqQ1fZ.js";import"./DropdownMenuSeparator.vue_vue_type_script_setup_true_lang-B22Ghtr2.js";import"./chevron-down-BNsrGZ4n.js";import"./search-DzPgIFhf.js";import"./bot-CFZH6gBK.js";import"./sparkles-LgDQ73HJ.js";import"./book-open-CyCz0YQX.js";import"./useFocusTrap-Dj5hQpDJ.js";import"./target-BcAbSk1E.js";import"./compass-DScxZlRx.js";import"./users-Cs9MnXhM.js";import"./FlashAnnouncer.vue_vue_type_script_setup_true_lang-8_kpUUf8.js";import"./FlashBanner.vue_vue_type_script_setup_true_lang-DXUsmsje.js";import"./SkipToContentLink.vue_vue_type_script_setup_true_lang-D3NQ9KMC.js";import"./markdown-CY_oho3I.js";import"./useAgentThread-Dct_Uh4e.js";import"./rotate-ccw-DtbmICL9.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const le=N("CircleXIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);const ce=N("RotateCwIcon",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]),me={class:"mx-auto max-w-4xl px-6 py-10 md:px-12"},ue={class:"mt-2 flex items-center gap-1.5"},pe={class:"font-body text-sm text-brand-subtle"},be={key:0,class:"mt-8 rounded-lg border border-brand-warning/40 bg-brand-warning/5 p-5"},he={class:"flex items-start gap-3"},ve={class:"flex-1"},_e={class:"font-mono text-sm tracking-[0.15em] text-brand-ink uppercase"},fe={class:"mt-1 font-body text-sm text-brand-muted"},xe={class:"mt-4"},ke={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},ge={class:"mt-2 flex items-center gap-2"},we={class:"flex-1 rounded-md border border-brand-line bg-brand-white px-3 py-2 font-mono text-sm break-all text-brand-ink"},ye={class:"mt-8 grid gap-x-8 gap-y-6 rounded-lg border border-brand-line bg-brand-white p-6 sm:grid-cols-2 md:p-8"},$e={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},Se={class:"mt-1 font-mono text-sm break-all text-brand-ink"},Re={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},Ce={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},Ie={class:"mt-1 font-body text-base text-brand-ink"},Te={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},Le={class:"mt-1 font-body text-base text-brand-ink"},Pe={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},Ne={class:"mt-8 rounded-lg border border-brand-line bg-brand-white p-6 md:p-8"},qe={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},Ee={class:"mt-1 max-w-xl font-body text-sm text-brand-muted"},ze={class:"flex items-start gap-3"},Ue={class:"font-body text-sm"},Oe={class:"text-brand-ink"},Be={key:0},Ve={key:1},Ae={key:0,class:"mt-0.5 text-brand-muted"},De={key:1,class:"mt-0.5 font-mono text-xs text-brand-faint"},Fe={key:0,class:"mt-4 border-t border-brand-line/60 pt-4"},Me={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},We={class:"mt-0.5 font-body text-sm text-brand-muted"},je={class:"mt-2 flex items-center gap-2"},Ge={class:"flex-1 rounded-md border border-brand-line bg-brand-white px-3 py-2 font-mono text-sm break-all text-brand-ink"},Ye={class:"min-w-64 flex-1"},He={for:"issue-user",class:"block font-body text-sm text-brand-muted"},Xe={value:"",disabled:""},Je=["value"],Qe={key:0,class:"mt-1 font-body text-sm text-brand-negative"},Ke={key:1,class:"mt-2 font-body text-sm text-brand-faint"},Ze={class:"mt-8 rounded-lg border border-brand-line bg-brand-white p-6 md:p-8"},et={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},tt={class:"mt-4 grid grid-cols-2 gap-x-8 gap-y-4 sm:grid-cols-4"},st={class:"font-serif text-2xl text-brand-ink tabular-nums"},rt={class:"mt-1 font-body text-sm text-brand-subtle"},ot={class:"font-serif text-2xl text-brand-ink tabular-nums"},nt={class:"mt-1 font-body text-sm text-brand-subtle"},it={class:"font-serif text-2xl text-brand-ink tabular-nums"},at={class:"mt-1 font-body text-sm text-brand-subtle"},dt={class:"mt-1 font-body text-sm text-brand-subtle"},lt={class:"mt-8 rounded-lg border border-brand-line bg-brand-white p-6 md:p-8"},ct={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},mt={key:0,class:"mt-2 font-body text-sm text-brand-faint"},ut={key:1,class:"mt-4 divide-y divide-brand-line border-y border-brand-line"},pt={class:"min-w-0 flex-1"},bt={class:"font-body text-base text-brand-ink"},ht={class:"mt-0.5 font-body text-sm text-brand-faint"},vt={class:"shrink-0 text-right"},_t={key:0,class:"font-body text-sm text-brand-positive"},ft={key:1,class:"font-body text-sm text-brand-warning"},xt={key:2,class:"font-body text-sm text-brand-muted"},kt={key:3,class:"font-body text-sm text-brand-faint"},gt={key:4,class:"mt-0.5 font-body text-sm text-brand-faint"},wt={class:"mt-8 rounded-lg border border-brand-line bg-brand-white p-6 md:p-8"},yt={class:"font-mono text-sm tracking-[0.15em] text-brand-subtle uppercase"},$t={class:"mt-4 flex flex-wrap items-center gap-3"},St={class:"relative mt-2"},Rt={class:"max-h-96 overflow-y-auto rounded-lg border border-brand-line bg-brand-tint/40 px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre-wrap text-brand-ink"},Ct={key:0,class:"mt-2 font-body text-sm text-brand-warning"},hs=V({__name:"Show",props:{provider:{},secrets:{},teamMembers:{},issuanceResult:{},issuances:{},stats:{}},setup(o){const m=o,{confirm:R}=Q(),v=A({user_id:""}),q=()=>{v.post(f.issue(m.provider.id).url,{preserveScroll:!0,onSuccess:()=>v.reset()})},_=L(null),g=async(s,c)=>{await navigator.clipboard.writeText(s),_.value=c,setTimeout(()=>{_.value===c&&(_.value=null)},2e3)},E=()=>{k.post(f.pause(m.provider.id).url)},z=()=>{k.post(f.resume(m.provider.id).url)},U=async()=>{await R({title:P("admin_external-providers.show.confirm_rotate"),variant:"destructive"})&&k.post(f.rotate(m.provider.id).url)},O=async()=>{await R({title:P("admin_external-providers.show.confirm_delete",{name:m.provider.name}),variant:"destructive"})&&k.delete(f.destroy(m.provider.id).url)},B=s=>({active:"bg-brand-positive",paused:"bg-brand-warning",failing:"bg-brand-negative"})[s]||"bg-brand-faint",w=L(!1),C=J(()=>{const s=m.secrets?.signing_secret?m.secrets.signing_secret:"<paste-your-signing-secret-here>",c=m.provider.webhook_url?`
2## Webhook (server-to-server notification)
3
4When Invisible issues an experience, it sends a signed POST to your webhook URL:
5
6    ${m.provider.webhook_url}
7
8The POST body is JSON:
9
10    {
11      "issuance_id": "uuid",
12      "user_token": "opaque-string",
13      "callback_url": "https://invisible.test/api/external/callback/...",
14      "context": { ... }
15    }
16
17You MUST verify the HMAC-SHA256 signature before trusting this payload.
18Store the callback_url — you'll POST results back to it when the experience completes.
19`:`
20## Webhook
21
22No webhook URL is configured. The user will arrive at your redirect URL with
23query parameters, and you'll need to fetch or construct the callback_url
24from the issuance_id. If you need server-to-server pre-notification, ask the
25Invisible admin to add a webhook URL.
26`;return`# Invisible Integration Setup for "${m.provider.name}"
27
28You are integrating with Invisible, a coaching platform that sends people to
29your app for learning experiences (quizzes, assessments, simulations, etc.).
30Your app runs the experience, then posts observations back to Invisible.
31
32---
33
34## Your registered URLs
35
36Redirect URL: ${m.provider.redirect_url}${m.provider.webhook_url?`
37Webhook URL:  `+m.provider.webhook_url:""}
38
39## Environment variable
40
41Store this signing secret in your environment:
42
43    INVISIBLE_SIGNING_SECRET=${s}
44
45---
46
47## How the flow works
48
491. Invisible sends the person's browser to your Redirect URL with query params:
50       ${m.provider.redirect_url}?issuance_id=xxx&user_token=yyy
51
522. Your app reads issuance_id and user_token from the URL
533. Your app runs the experience (quiz, assessment, etc.)
544. When complete, your app POSTs results server-side to the callback_url
55${c}
56---
57
58## Signature verification (for webhook, if configured)
59
60Every webhook POST includes two headers:
61
62    X-Invisible-Signature: v1=<hex-digest>
63    X-Invisible-Timestamp: <unix-epoch-seconds>
64
65Verify like this (Node.js / Edge Function):
66
67    const crypto = require('crypto');
68
69    const timestamp = req.headers['x-invisible-timestamp'];
70    const signature = req.headers['x-invisible-signature'];
71    const rawBody = await req.text();
72
73    const signedString = \`\${timestamp}:\${rawBody}\`;
74    const expected = crypto
75      .createHmac('sha256', process.env.INVISIBLE_SIGNING_SECRET)
76      .update(signedString)
77      .digest('hex');
78
79    const received = signature.replace('v1=', '');
80    const valid = crypto.timingSafeEqual(
81      Buffer.from(expected),
82      Buffer.from(received)
83    );
84
85    // Also reject if timestamp is older than 5 minutes (replay protection)
86
87---
88
89## Callback payload (POST to callback_url)
90
91When the experience completes, POST this JSON to the callback_url:
92
93    POST {callback_url}
94    Content-Type: application/json
95
96    {
97      "issuance_id": "the-issuance-id-from-redirect",
98      "user_token": "the-user-token-from-redirect",
99      "status": "completed",
100      "observations": [
101        {
102          "text": "Completed assessment: scored 8/10 on leadership scenarios",
103          "confidence": 0.8
104        }
105      ]
106    }
107
108### Field rules (strict — custom fields will be rejected)
109
110    issuance_id   — string, max 64 chars (from the redirect query param)
111    user_token    — string, max 128 chars (from the redirect query param)
112    status        — "completed" | "abandoned" | "in_progress"
113    observations  — array, max 20 items
114      .text       — string, required, max 10,000 chars
115      .confidence — number 0–1, optional (default 0.5)
116
117### Important
118
119- POST server-side only (edge function / API route), never from the browser
120- Do NOT invent custom field names (no "summary", "score", "type", etc.)
121- The callback_url is single-use — once a terminal status is received, it expires
122- user_token is opaque — do not try to decode or correlate it
123
124---
125
126## Quick checklist
127
128- [ ] Store INVISIBLE_SIGNING_SECRET in environment
129- [ ] Read issuance_id and user_token from redirect URL query params
130- [ ] Run your experience
131- [ ] POST results to callback_url with the exact schema above
132${m.provider.webhook_url?`- [ ] Verify webhook signature before trusting payload
133- [ ] Store callback_url from webhook for later use`:""}`});return(s,c)=>(n(),p(Z,null,{default:l(()=>[i(r(D),{title:o.provider.name},null,8,["title"]),e("div",me,[i(r(I),{href:r(f).index().url,class:"inline-flex items-center gap-1.5 font-body text-sm text-brand-muted transition-colors hover:text-brand-ink"},{default:l(()=>[i(r(ee),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("admin_external-providers.back_to_providers")),1)]),_:1},8,["href"]),i(r(K),{eyebrow:s.$t("admin_external-providers.eyebrow_external_provider"),title:o.provider.name,description:o.provider.description,class:"mt-6"},{actions:l(()=>[i(r(h),{variant:"outline",size:"sm",onClick:c[0]||(c[0]=a=>w.value=!0)},{default:l(()=>[i(r(te),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("admin_external-providers.buttons.copy_setup_prompt")),1)]),_:1}),i(r(h),{"as-child":"",variant:"outline",size:"sm"},{default:l(()=>[i(r(I),{href:r(f).edit(o.provider.id).url},{default:l(()=>[i(r(se),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("common.actions.edit")),1)]),_:1},8,["href"])]),_:1})]),_:1},8,["eyebrow","title","description"]),e("div",ue,[e("span",{class:x(["h-1.5 w-1.5 rounded-full",B(o.provider.status)])},null,2),e("span",pe,t(o.provider.status_label),1)]),o.secrets?(n(),d("div",be,[e("div",he,[i(r(re),{class:"mt-0.5 h-4 w-4 shrink-0 text-brand-warning"}),e("div",ve,[e("p",_e,t(s.$t("admin_external-providers.show.secret_copy_now")),1),e("p",fe,t(s.$t("admin_external-providers.show.secret_copy_now_body")),1),e("div",xe,[e("p",ke,t(s.$t("admin_external-providers.show.signing_secret")),1),e("div",ge,[e("code",we,t(o.secrets.signing_secret),1),i(r(h),{variant:"outline",size:"sm",onClick:c[1]||(c[1]=a=>g(o.secrets?.signing_secret??"","signing"))},{default:l(()=>[_.value==="signing"?(n(),p(r(S),{key:0,class:"h-3.5 w-3.5 text-brand-positive"})):(n(),p(r($),{key:1,class:"h-3.5 w-3.5"})),u(" "+t(_.value==="signing"?s.$t("admin_external-providers.buttons.copied"):s.$t("admin_external-providers.buttons.copy")),1)]),_:1})])])])])])):b("",!0),e("div",ye,[e("div",null,[e("p",$e,t(s.$t("admin_external-providers.fields.redirect_url")),1),e("p",Se,t(o.provider.redirect_url),1)]),e("div",null,[e("p",Re,t(s.$t("admin_external-providers.fields.webhook_url")),1),e("p",{class:x(["mt-1 font-mono text-sm break-all",o.provider.webhook_url?"text-brand-ink":"text-brand-faint italic"])},t(o.provider.webhook_url||s.$t("admin_external-providers.show.not_configured")),3)]),e("div",null,[e("p",Ce,t(s.$t("admin_external-providers.show.context_scope")),1),e("p",Ie,t(o.provider.context_scope_label),1)]),e("div",null,[e("p",Te,t(s.$t("admin_external-providers.show.last_issued")),1),e("p",Le,t(o.provider.last_issued_at?new Date(o.provider.last_issued_at).toLocaleString():s.$t("admin_external-providers.show.never")),1)]),e("div",null,[e("p",Pe,t(s.$t("admin_external-providers.show.consecutive_failures")),1),e("p",{class:x(["mt-1 font-body text-base",o.provider.failure_count>0?"text-brand-negative":"text-brand-ink"])},t(o.provider.failure_count),3)])]),e("div",Ne,[e("p",qe,t(s.$t("admin_external-providers.show.issue_title")),1),e("p",Ee,t(s.$t("admin_external-providers.show.issue_description")),1),o.issuanceResult?(n(),d("div",{key:0,class:x(["mt-4 rounded-md border p-4",o.issuanceResult.delivered?"border-brand-positive/40 bg-brand-positive/5":"border-brand-negative/40 bg-brand-negative/5"])},[e("div",ze,[o.issuanceResult.delivered?(n(),p(r(oe),{key:0,class:"mt-0.5 h-4 w-4 shrink-0 text-brand-positive"})):(n(),p(r(le),{key:1,class:"mt-0.5 h-4 w-4 shrink-0 text-brand-negative"})),e("div",Ue,[e("p",Oe,[o.issuanceResult.delivered?(n(),d("span",Be,t(s.$t("admin_external-providers.show.issue_delivered",{name:o.issuanceResult.recipient_name})),1)):(n(),d("span",Ve,t(s.$t("admin_external-providers.show.issue_failed",{name:o.issuanceResult.recipient_name})),1))]),o.issuanceResult.error?(n(),d("p",Ae,t(o.issuanceResult.error),1)):b("",!0),o.issuanceResult.status_code?(n(),d("p",De," HTTP "+t(o.issuanceResult.status_code),1)):b("",!0)])]),o.issuanceResult.experience_link_url?(n(),d("div",Fe,[e("p",Me,t(s.$t("admin_external-providers.show.user_facing_link")),1),e("p",We,t(s.$t("admin_external-providers.show.share_link",{name:o.issuanceResult.recipient_name})),1),e("div",je,[e("code",Ge,t(o.issuanceResult.experience_link_url),1),i(r(h),{variant:"outline",size:"sm",onClick:c[2]||(c[2]=a=>g(o.issuanceResult?.experience_link_url??"","experience-link"))},{default:l(()=>[_.value==="experience-link"?(n(),p(r(S),{key:0,class:"h-3.5 w-3.5 text-brand-positive"})):(n(),p(r($),{key:1,class:"h-3.5 w-3.5"})),u(" "+t(_.value==="experience-link"?s.$t("admin_external-providers.buttons.copied"):s.$t("admin_external-providers.buttons.copy")),1)]),_:1})])])):b("",!0)],2)):b("",!0),e("form",{class:"mt-4 flex flex-wrap items-end gap-3",onSubmit:F(q,["prevent"])},[e("div",Ye,[e("label",He,t(s.$t("admin_external-providers.show.person")),1),M(e("select",{id:"issue-user","onUpdate:modelValue":c[3]||(c[3]=a=>r(v).user_id=a),class:"mt-2 block w-full rounded-md border border-brand-line bg-brand-white px-3 py-2 font-body text-sm text-brand-ink transition-colors outline-none focus:border-brand-ink"},[e("option",Xe,t(s.$t("admin_external-providers.show.select_member")),1),(n(!0),d(y,null,T(o.teamMembers,a=>(n(),d("option",{key:a.id,value:a.id},t(a.name)+" ("+t(a.email)+") ",9,Je))),128))],512),[[W,r(v).user_id]]),r(v).errors.user_id?(n(),d("p",Qe,t(r(v).errors.user_id
133),1)):b("",!0)]),i(r(h),{type:"submit",disabled:!r(v).user_id||r(v).processing||o.provider.status!=="active"},{default:l(()=>[i(r(ne),{class:"h-3.5 w-3.5"}),u(" "+t(r(v).processing?s.$t("admin_external-providers.show.issuing"):s.$t("admin_external-providers.show.issue")),1)]),_:1},8,["disabled"])],32),o.provider.status!=="active"?(n(),d("p",Ke,t(s.$t("admin_external-providers.show.must_be_active")),1)):b("",!0)]),e("div",Ze,[e("p",et,t(s.$t("admin_external-providers.show.stats")),1),e("div",tt,[e("div",null,[e("p",st,t(o.stats.total_issuances),1),e("p",rt,t(s.$t("admin_external-providers.show.stat_issuances")),1)]),e("div",null,[e("p",ot,t(o.stats.completed_count),1),e("p",nt,t(s.$t("admin_external-providers.show.stat_completed")),1)]),e("div",null,[e("p",it,t(o.stats.observation_count),1),e("p",at,t(s.$t("admin_external-providers.show.stat_observations")),1)]),e("div",null,[e("p",{class:x(["font-serif text-2xl tabular-nums",o.stats.dispute_count>0?"text-brand-negative":"text-brand-ink"])},t(o.stats.dispute_count),3),e("p",dt,t(s.$t("admin_external-providers.show.stat_disputes")),1)])])]),e("div",lt,[e("p",ct,t(s.$t("admin_external-providers.show.recent_issuances")),1),o.issuances.length?(n(),d("div",ut,[(n(!0),d(y,null,T(o.issuances,a=>(n(),d("div",{key:a.issuance_id??"",class:"flex items-start justify-between gap-4 py-3"},[e("div",pt,[e("p",bt,t(a.recipient_name??s.$t("admin_external-providers.show.unknown_recipient")),1),e("p",ht,[u(t(s.$t("admin_external-providers.show.issued_at",{date:new Date(a.issued_at).toLocaleString()}))+" ",1),a.clicked_at?(n(),d(y,{key:0},[u(" · "+t(s.$t("admin_external-providers.show.clicked_at",{date:new Date(a.clicked_at).toLocaleString()})),1)],64)):b("",!0)])]),e("div",vt,[a.callback_status==="completed"?(n(),d("span",_t,t(s.$t("admin_external-providers.show.status_completed")),1)):a.callback_status==="abandoned"?(n(),d("span",ft,t(s.$t("admin_external-providers.show.status_abandoned")),1)):a.clicked_at?(n(),d("span",xt,t(s.$t("admin_external-providers.show.status_in_progress")),1)):(n(),d("span",kt,t(s.$t("admin_external-providers.show.status_not_clicked")),1)),a.completed_at?(n(),d("p",gt,t(new Date(a.completed_at).toLocaleString()),1)):b("",!0)])]))),128))])):(n(),d("p",mt,t(s.$t("admin_external-providers.show.no_issuances")),1))]),e("div",wt,[e("p",yt,t(s.$t("admin_external-providers.show.actions")),1),e("div",$t,[o.provider.status==="active"?(n(),p(r(h),{key:0,variant:"outline",size:"sm",onClick:E},{default:l(()=>[i(r(ie),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("admin_external-providers.show.pause")),1)]),_:1})):(n(),p(r(h),{key:1,variant:"outline",size:"sm",onClick:z},{default:l(()=>[i(r(ae),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("admin_external-providers.show.resume")),1)]),_:1})),i(r(h),{variant:"outline",size:"sm",onClick:U},{default:l(()=>[i(r(ce),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("admin_external-providers.show.rotate_secrets")),1)]),_:1}),i(r(h),{variant:"destructive",size:"sm",class:"ml-auto",onClick:O},{default:l(()=>[i(r(de),{class:"h-3.5 w-3.5"}),u(" "+t(s.$t("common.actions.delete")),1)]),_:1})])]),i(r(j),{open:w.value,"onUpdate:open":c[5]||(c[5]=a=>w.value=a)},{default:l(()=>[i(r(G),{class:"max-h-[85vh] overflow-y-auto sm:max-w-2xl"},{default:l(()=>[i(r(Y),null,{default:l(()=>
133[i(r(H),{class:"font-body text-2xl tracking-tight"},{default:l(()=>[u(t(s.$t("admin_external-providers.show.setup_prompt_title")),1)]),_:1}),i(r(X),{class:"font-body text-sm"},{default:l(()=>[u(t(s.$t("admin_external-providers.show.setup_prompt_description")),1)]),_:1})]),_:1}),e("div",St,[e("pre",Rt,t(C.value),1),i(r(h),{variant:"outline",size:"sm",class:"absolute top-3 right-3",onClick:c[4]||(c[4]=a=>g(C.value,"prompt"))},{default:l(()=>[_.value==="prompt"?(n(),p(r(S),{key:0,class:"h-3.5 w-3.5 text-brand-positive"})):(n(),p(r($),{key:1,class:"h-3.5 w-3.5"})),u(" "+t(_.value==="prompt"?s.$t("admin_external-providers.buttons.copied_bang"):s.$t("admin_external-providers.buttons.copy_all")),1)]),_:1})]),o.secrets?b("",!0):(n(),d("p",Ct,t(s.$t("admin_external-providers.show.setup_prompt_secret_warning")),1))]),_:1})]),_:1},8,["open"])])]),_:1}))}});export{hs as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.