1import"../chunks/DsnmJJEf.js";import{ap as H,aL as be,W as Xe,g as e,I as _,aM as te,p as Je,e as _e,t as I,a as b,s as n,b as Ze,u as d,c as r,f as x,r as t}from"../chunks/CYGRAPIB.js";import{d as et,s as m,b as re}from"../chunks/D9UuDnCi.js";import{i as C}from"../chunks/nU4rHKDQ.js";import{e as z}from"../chunks/DTvJC0Jp.js";import{t as tt,s as rt}from"../chunks/k_Ic6ss4.js";import{j as ot,s as U,r as at,a as st}from"../chunks/BEZvtooX.js";import{b as it}from"../chunks/CYiapCR7.js";import{a as nt}from"../chunks/D6jb07Cq.js";import{r as lt,a as ct,b as ut,c as dt,d as pt,e as ft,f as mt,g as gt,h as ht,i as wt,j as vt,s as xe,k as ke,l as yt,m as bt,n as _t,o as xt,p as kt,q as qt,t as It,u as At}from"../chunks/53EnPj_B.js";import{B as Pt,b as Ct}from"../chunks/CpWhE398.js";import{b as St}from"../chunks/8fNfs4Oe.js";import{S as Yt}from"../chunks/D0T9t0sD.js";import{W as Wt}from"../chunks/DaKR3ZoL.js";import{F as Ht}from"../chunks/DjNQZYjE.js";import{P as Ot}from"../chunks/CtgGnEb9.js";import{P as oe,h as ae}from"../chunks/T8_RqQZ_.js";import{r as Dt}from"../chunks/kaiQ09si.js";var Et=["forEach","isDisjointFrom","isSubsetOf","isSupersetOf"],Rt=["difference","intersection","symmetricDifference","union"],qe=!1;class F extends Set{#r=new Map;#e=H(0);#t=H(0);#o=be||-1;constructor(a){if(super(),a){for(var u of a)super.add(u);this.#t.v=super.size}qe||this.#s()}#a(a){return be===this.#o?H(a):Xe(a)}#s(){qe=!0;var a=F.prototype,u=Set.prototype;for(const h of Et)a[h]=function(...c){return e(this.#e),u[h].apply(this,c)};for(const h of Rt)a[h]=function(...c){e(this.#e);var k=u[h].apply(this,c);return new F(k)}}has(a){var u=super.has(a),h=this.#r,c=h.get(a);if(c===void 0){if(!u)return e(this.#e),!1;c=this.#a(!0),h.set(a,c)}return e(c),u}add(a){return super.has(a)||(super.add(a),_(this.#t,super.size),te(this.#e)),this}delete(a){var u=super.delete(a),h=this.#r,c=h.get(a);return c!==void 0&&(h.delete(a),_(c,!1)),u&&(_(this.#t,super.size),te(this.#e)),u}clear(){if(super.size!==0){super.clear();var a=this.#r;for(var u of a.values())_(u,!1);a.clear(),_(this.#t,0),te(this.#e)}}keys(){return this.values()}values(){return e(this.#e),super.values()}entries(){return e(this.#e),super.entries()}[Symbol.iterator](){return this.keys()}get size(){return e(this.#t)}}const Ie=[{category:"Getting Started",questions:[{question:"How do I create my first Agentic workflow?",answer:"To create your first workflow, navigate to the Agentic Workflows section and click 'Create New Workflow'. Our step-by-step wizard will guide you through connecting your apps and setting up automation rules. You can also use our pre-built templates for common use cases."},{question:"What integrations are available?",answer:"Yanok supports over 1000+ integrations including popular tools like Slack, Google Workspace, Microsoft 365, Salesforce, HubSpot, and many more. Check our Integrations page for the complete list and to request new integrations."},{question:"How long does setup take?",answer:"Most basic integrations can be set up in under 5 minutes. Complex workflows typically take 15-30 minutes to configure. Our team can assist with enterprise setups that may require additional customization."},{question:"Do I need coding experience to use Yanok?",answer:"No coding experience is required. Yanok is designed as a no-code platform with an intuitive visual interface. You can create powerful Agentic workflows using drag-and-drop components and pre-built templates."},{question:"What is the Model Context Protocol (MCP)?",answer:"MCP is a protocol that allows AI models to securely access external data sources and tools. Yanok supports MCP servers to extend AI capabilities with real-time data from various applications and services."},{question:"How do I connect my first app integration?",answer:"Go to the Integrations tab, search for your desired app, and click 'Connect'. You'll be guided through the authentication process. Most apps use OAuth for secure connection setup."},{question:"What's the difference between triggers and actions?",answer:"Triggers are events that start a workflow (like receiving an email), while actions are what happens next (like creating a task). Each workflow needs at least one trigger and one action."},{question:"Can I test workflows before activating them?",answer:"Yes, use our sandbox environment to test workflows with sample data. You can also run individual workflow steps to verify configurations before activating the complete automation."},{question:"How do I import data from my existing tools?",answer:"Most integrations supp
1ort bulk data import during initial setup. You can also use our CSV import feature or API endpoints to migrate data from legacy systems. Contact support for complex migration scenarios."},{question:"What happens if I exceed my plan limits?",answer:"When approaching limits, you'll receive notifications. If exceeded, workflows pause gracefully until your next billing cycle or you can upgrade your plan immediately to continue operations without data loss."},{question:"How do I schedule workflows to run at specific times?",answer:"Use our time-based triggers to schedule workflows. You can set up daily, weekly, monthly schedules, or create custom cron expressions for complex timing requirements."},{question:"What's the difference between public and private workflows?",answer:"Private workflows are accessible only to your account and team members. Public workflows can be shared with the Yanok community as templates, helping others discover useful automation patterns."},{question:"How do I handle conditional logic in workflows?",answer:"Use our conditional blocks to create if-then logic. You can set up multiple conditions based on data values, trigger sources, or previous action results to create sophisticated automation flows."}]},{category:"Account & Billing",questions:[{question:"How do I upgrade my plan?",answer:"You can upgrade your plan anytime from your account dashboard. Go to Settings > Billing and select your desired plan. Changes take effect immediately, and you'll only pay the prorated difference."},{question:"What payment methods do you accept?",answer:"We accept all major credit cards (Visa, MasterCard, American Express), PayPal, and bank transfers for enterprise customers. All payments are processed securely through our certified payment providers."},{question:"Can I cancel my subscription anytime?",answer:"Yes, you can cancel your subscription at any time. Your account will remain active until the end of your current billing period. No cancellation fees apply, and you can reactivate your account anytime."},{question:"Is there a free trial available?",answer:"Yes, we offer a 14-day free trial with full access to our platform features. No credit card is required to start your trial, and you can upgrade to a paid plan at any time."},{question:"What happens to my data if I cancel?",answer:"Your workflow configurations and data remain accessible for 30 days after cancellation. You can export your data or reactivate your account during this period. After 30 days, data is permanently deleted as per our data retention policy."},{question:"How does billing work for team accounts?",answer:"Team accounts are billed monthly based on the number of active users. You can add or remove team members anytime, and billing adjusts automatically for the next cycle."},{question:"Are there any setup fees?",answer:"No setup fees for any plan. You only pay the monthly or annual subscription fee. Enterprise customers may have optional professional services available for custom implementations."},{question:"Can I get a refund if I'm not satisfied?",answer:"We offer a 30-day money-back guarantee for all new subscriptions. If you're not completely satisfied, contact our support team for a full refund within the first 30 days."},{question:"How do I update my billing information?",answer:"Access your account dashboard, go to Settings > Billing, and click 'Update Payment Method'. You can change credit cards, billing addresses, and download invoices from this section."},{question:"Do you offer discounts for non-profits or educational institutions?",answer:"Yes, we provide special pricing for qualified non-profit organizations and educational institutions. Contact our sales team with your organization details to apply for discounted rates."},{question:"How do usage-based charges work?",answer:"Usage-based charges apply when you exceed your plan's included workflow executions or API calls. Overage rates are clearly displayed in your plan details, and you can set spending limits to control costs."},{question:"Can I switch between monthly and annual billing?",answer:"Yes, you can switch billing frequencies anytime. Annual billing offers a discount compared to monthly billing. Changes take effect at your next billing cycle unless you choose immediate upgrade."}]},{category:"Technical Support",questions:[{question:"Why is my workflow not triggering?",answer:"Common causes include: incorrect trigger conditions, authentication issues with connected apps, or rate limiting. Check your workflow logs in the dashboard for detailed error messages. Ensure all c
1onnected apps have proper permissions."},{question:"How do I troubleshoot API connection errors?",answer:"First, verify your API credentials are current and have the required permissions. Check if the external service is experiencing downtime. Review our integration documentation for specific setup requirements. Contact support if issues persist."},{question:"What are the API rate limits?",answer:"Rate limits vary by plan: Starter (1000 requests/hour), Professional (10,000 requests/hour), Enterprise (custom limits). These limits reset hourly and are monitored in real-time in your dashboard."},{question:"How do I monitor workflow performance?",answer:"Use the Analytics dashboard to track workflow execution times, success rates, and error frequencies. Set up alerts for failed workflows and monitor resource usage to optimize performance."},{question:"Can I test workflows before going live?",answer:"Yes, use our sandbox environment to test workflows with sample data. You can also run individual workflow steps to verify configurations before activating the complete automation."},{question:"How do I debug webhook failures?",answer:"Check the webhook logs in your workflow dashboard. Common issues include incorrect URL endpoints, authentication failures, or payload format mismatches. Use our webhook testing tool to verify configurations."},{question:"What happens during planned maintenance?",answer:"We schedule maintenance during low-traffic periods and provide 48-hour advance notice. Critical workflows can be configured with retry logic to handle brief service interruptions automatically."},{question:"How do I optimize slow workflows?",answer:"Review your workflow logic for unnecessary steps, reduce data processing loads, and use conditional logic to skip irrelevant actions. Our performance analytics help identify bottlenecks."},{question:"How can I set up custom error handling?",answer:"Use our error handling blocks to define custom responses for different failure scenarios. You can set up email alerts, retry logic, and fallback actions to ensure workflow reliability."},{question:"What should I do if my integration stops working suddenly?",answer:"First, check if the third-party service has updated their API or authentication requirements. Review the integration logs for specific error messages. Re-authenticate the connection if needed, or contact support for assistance."},{question:"How do I set up proper logging for debugging?",answer:"Enable detailed logging in your workflow settings. Use log blocks to capture intermediate data values and execution states. Logs are retained for 30 days and can be exported for analysis."},{question:"What's the best way to handle timeout errors?",answer:"Increase timeout values for slow external APIs, implement retry logic with exponential backoff, and use asynchronous processing for long-running operations. Monitor response times to identify optimal timeout settings."}]},{category:"Developer & API",questions:[{question:"How do I authenticate with the Yanok API?",answer:"All API requests require a Bearer token. Generate an API key from Settings > API Keys in your dashboard. Include it as 'Authorization: Bearer YOUR_TOKEN' in every request header. Tokens support granular scopes like pipelines:read and executions:write."},{question:"What programming languages are supported by the SDK?",answer:"Yanok provides official SDKs for JavaScript/TypeScript, Python, Go, Ruby, and PHP. All SDKs handle authentication, rate limiting, and retries automatically. Install via npm, pip, or your language's package manager."},{question:"What is the API rate limit?",answer:"Rate limits vary by plan: Starter (1,000 req/min), Professional (10,000 req/min), Enterprise (50,000+ req/min). Every response includes X-RateLimit-Remaining and X-RateLimit-Reset headers. Use exponential backoff on 429 responses."},{question:"Can I trigger pipelines programmatically?",answer:"Yes, use POST /v1/pipelines/{id}/execute with optional input data. Executions run asynchronously and return an execution_id for tracking. You can also register webhooks to receive real-time completion or failure notifications."},{question:"How do I configure AI agents in a pipeline?",answer:"Create an AI agent via POST /v1/agents with a model (GPT-4, Claude, Gemini, etc.), system prompt, tools, and fallback behavior. Reference the agent in pipeline steps by its ID. Configure temperature, max_tokens, and timeout per agent."},{question:"Does Yanok support webhooks for real-time events?",answer:"Yes, register webhooks via POST /v1/webhooks for events like pipeline.execution.completed, pipeline.execution.failed, and agent.decision.made. All payloads are signed with HMAC-SHA256 for verification."},{question:"How do I handle errors from the API?",answer:"All errors follow a consistent JSON format with error code, message, and optional details array. Common codes include VALIDATION_ERROR, AUTH_EXPIRED, RATE_LIMITED, and RESOURCE_NOT_FOUND. Always check the request_id for support inquiries."},{question:"Can I use the API to manage integrations?",answer:"Yes, the Integrations API lets you list available connectors, configure OAuth or API key credentials, test connections, and manage integration settings programmatically. Most integrations supp
1ort automatic credential refresh."},{question:"What is the Model Context Protocol (MCP) integration?",answer:"MCP is a standardized protocol for connecting AI models with external tools and data sources. Yanok natively supports MCP servers from the official registry, enabling your AI agents to access databases, web search, Slack, and 50+ other capabilities."},{question:"How do I monitor pipeline performance programmatically?",answer:"Use GET /v1/executions to query execution history with filters for status, date range, and pipeline. Each execution includes per-step duration, output data, and error details. Export metrics to Datadog, New Relic, or Splunk via OpenTelemetry."}]},{category:"Security & Compliance",questions:[{question:"Is my data secure with Yanok?",answer:"Yes, we employ enterprise-grade security including AES-256 encryption, SOC 2 compliance, regular security audits, and GDPR compliance. Your data is encrypted in transit and at rest, with access controls and monitoring in place."},{question:"Do you support HIPAA compliance?",answer:"Yes, our Enterprise plans include HIPAA compliance features with Business Associate Agreements (BAA) available. We provide additional security controls and audit logging required for healthcare data processing."},{question:"Where is my data stored?",answer:"Data is stored in secure, SOC 2 certified data centers primarily in Singapore and the US. Enterprise customers can choose specific regions for data residency requirements. We maintain 99.9% uptime with automated backups."},{question:"How do you handle data privacy?",answer:"We follow strict data privacy principles with GDPR and CCPA compliance. Data is processed only for your specific workflows, never shared with third parties, and you maintain full control over data access and deletion."},{question:"What certifications does Yanok have?",answer:"Yanok maintains SOC 2 Type II certification, GDPR compliance, and ISO 27001 security standards. We undergo regular third-party security audits and penetration testing to ensure the highest security standards."}]}],Mt=Ie.flatMap(O=>O.questions.map(a=>({...a,category:O.category}))),Tt=!0;function zt(){return{faqData:Ie,allFAQs:Mt}}const fr=Object.freeze(Object.defineProperty({__proto__:null,load:zt,prerender:Tt},Symbol.toStringTag,{value:"Module"}));var Ut=x('<a class="card-pixel p-6 hover:border-primary/20 transition-all duration-300 group"><div class="flex items-center justify-center w-12 h-12 bg-primary/10 rounded-lg mb-4"><!></div> <h3 class="font-pixel text-lg font-semibold text-foreground mb-2 group-hover:text-primary transition-colors"> </h3> <p class="text-sm text-muted-foreground"> </p></a>'),Ft=x("<option> </option>"),Gt=x('<button class="text-primary hover:underline ml-2"> </button>'),Lt=x('<div class="px-4 pb-4 text-sm text-muted-foreground leading-relaxed"> </div>'),Nt=x('<div class="card-pixel overflow-hidden"><button class="w-full flex items-center justify-between p-4 text-left text-foreground hover:bg-muted/30 transition-colors"><span class="font-medium pr-4"> </span> <div><!></div></button> <!></div>'),Bt=x('<div class="mb-8"><h3 class="font-pixel text-lg font-semibold text-foreground mb-4"> </h3> <div class="space-y-2"></div></div>'),Qt=x('<div class="text-center py-12"><p class="text-muted-foreground mb-4"> </p> <button class="btn-pixel text-sm px-3 py-1"> </button></div>'),$t=x('<section class="py-16 lg:py-24 bg-surface"><div class="container mx-auto px-6 text-center"><span class="inline-block px-3 py-1 text-xs font-medium font-pixel bg-primary/10 text-primary border-2 border-primary/20 mb-4"> </span> <h1 class="font-display font-pixel text-4xl sm:text-5xl font-bold text-foreground leading-tight mb-6"> </h1> <p class="text-xl text-muted-foreground max-w-3xl mx-auto leading-relaxed"> </p> <p class="text-sm text-muted-foreground mt-4"> </p></div></section> <section class="py-12"><div class="max-w-6xl mx-auto px-4 sm:px-6"><div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-6"></div></div></section> <section class="py-12 bg-surface"><div class="max-w-4xl mx-auto px-4 sm:px-6"><h2 class="font-display font-pixel text-2xl sm:text-3xl font-bold text-foreground text-center leading-tight mb-8"> </h2> <div class="flex flex-col sm:flex-row gap-4 mb-8"><div class="relative flex-1"><div class="absolute left-3 top-1/2 -translate-y-1/2"><!></div> <input type="search" class="w-full pl-10 pr-4 py-2.5 rounded-lg border border-border bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/50"/></div> <select class="px-4 py-2.5 rounded-lg border border-border bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary/50"></select></div> <p class="text-sm text-muted-foreground mb-6"> <!></p> <!> <!></div></section>',1),jt=x("<!> <!> <!> <!> <!>",1);function mr(O,a){Je(a,!0);const u=d(()=>a.data.faqData),h=d(()=>a.data.allFAQs);let c=H(""),k=H("All"),S=new F;const Ae=d(()=>["All",...Array.from(new Set(e(u).map(s=>s.category)))]),G=d(()=>{let s=e(u);return e(k)!=="All"&&(s=s.filter(p=>p.category===e(k))),e(c)&&(s=s.map(p=>({...p,questions:p.questions.filter(Y=>Y.question.toLowerCase().includes(e(c).toLowerCase())||Y.answer.toLowerCase().includes(e(c).toLowerCase()))})).filter(p=>p.questions.length>0)),s}),Pe=d(()=>e(G).reduce((s,p)=>s+p.questions.length,0)),se=d(()=>e(u).reduce((s,p)=>s+p.questions.length,0));function Ce(s){S.has(s)?S.delete(s):S.add(s)}function ie(){_(c,""),_(k,"All")}const Se=d(()=>[{icon:"BookOpen",title:bt(),description:yt(),href:"/docs"},{icon:"FileText",title:xt(),description:_t(),href:"/resources/research"},{icon:"Lightbulb",title:qt(),description:kt(),href:"/blog"},{icon:"HelpCircle",title:At(),description:It(),href:"/api"}]);var ne=jt(),le=_e(ne);{let s=d(()=>xe()),p=d(()=>
1ke());Yt(le,{get title(){return e(s)},get description(){return e(p)},ogImage:"https://www.yanok.ai/images/og/resources.png",keywords:"yanok resources, faq, help center, ai automation guides, workflow tutorials",canonicalPath:"/resources"})}var ce=n(le,2);{let s=d(()=>[{name:Ct(),url:"https://www.yanok.ai/"},{name:St(),url:"https://www.yanok.ai/resources"}]);Pt(ce,{get items(){return e(s)}})}var ue=n(ce,2);{let s=d(()=>xe()),p=d(()=>ke());Wt(ue,{get name(){return e(s)},get description(){return e(p)},type:"CollectionPage",url:"https://www.yanok.ai/resources"})}var de=n(ue,2);Ht(de,{get faqs(){return e(h)}});var Ye=n(de,2);Ot(Ye,{children:(s,p)=>{var Y=$t(),L=_e(Y),pe=r(L),N=r(pe),We=r(N,!0);t(N);var B=n(N,2),He=r(B,!0);t(B);var Q=n(B,2),Oe=r(Q,!0);t(Q);var fe=n(Q,2),De=r(fe,!0);t(fe),t(pe),t(L);var $=n(L,2),me=r($),ge=r(me);z(ge,21,()=>e(Se),o=>o.href,(o,i)=>{var l=Ut(),f=r(l),g=r(f);{var A=v=>{oe(v,{get icon(){return e(i).icon},size:"md",class:"text-primary"})},q=d(()=>ae(e(i).icon));C(g,v=>{e(q)&&v(A)})}t(f);var w=n(f,2),P=r(w,!0);t(w);var R=n(w,2),W=r(R,!0);t(R),t(l),I(v=>{U(l,"href",v),m(P,e(i).title),m(W,e(i).description)},[()=>Dt(e(i).href)]),b(o,l)}),t(ge),t(me),t($);var he=n($,2),we=r(he),j=r(we),Ee=r(j,!0);t(j);var K=n(j,2),V=r(K),X=r(V),Re=r(X);{var Me=o=>{oe(o,{icon:"Search",size:"xs",class:"text-muted-foreground"})},Te=d(()=>ae("Search"));C(Re,o=>{e(Te)&&o(Me)})}t(X);var D=n(X,2);at(D),t(V);var E=n(V,2);z(E,20,()=>e(Ae),o=>o,(o,i)=>{var l=Ft(),f=r(l,!0);t(l);var g={};I(()=>{m(f,i),g!==(g=i)&&(l.value=(l.__value=i)??"")}),b(o,l)}),t(E),t(K);var J=n(K,2),ve=r(J),ze=n(ve);{var Ue=o=>{var i=Gt(),l=r(i,!0);t(i),I(f=>m(l,f),[()=>ht()]),re("click",i,ie),b(o,i)};C(ze,o=>{(e(c)||e(k)!=="All")&&o(Ue)})}t(J);var ye=n(J,2);z(ye,19,()=>e(G),o=>o.category,(o,i,l)=>{var f=Bt(),g=r(f),A=r(g,!0);t(g);var q=n(g,2);z(q,23,()=>e(i).questions,w=>w.question,(w,P,R)=>{const W=d(()=>`${e(l)}-${e(R)}`);var v=Nt(),M=r(v),Z=r(M),Le=r(Z,!0);t(Z);var ee=n(Z,2),Ne=r(ee);{var Be=y=>{oe(y,{icon:"ChevronDown",size:"xs",class:"text-muted-foreground"})},Qe=d(()=>ae("ChevronDown"));C(Ne,y=>{e(Qe)&&y(Be)})}t(ee),t(M);var $e=n(M,2);{var je=y=>{var T=Lt(),Ve=r(T,!0);t(T),I(()=>m(Ve,e(P).answer)),tt(3,T,()=>rt,()=>({duration:200})),b(y,T)},Ke=d(()=>S.has(e(W)));C($e,y=>{e(Ke)&&y(je)})}t(v),I(y=>{m(Le,e(P).question),st(ee,1,`shrink-0 transition-transform duration-200 ${y??""}`)},[()=>S.has(e(W))?"rotate-180":""]),re("click",M,()=>Ce(e(W))),b(w,v)}),t(q),t(f),I(()=>m(A,e(i).category)),b(o,f)});var Fe=n(ye,2);{var Ge=o=>{var i=Qt(),l=r(i),f=r(l,!0);t(l);var g=n(l,2),A=r(g,!0);t(g),t(i),I((q,w)=>{m(f,q),m(A,w)},[()=>wt(),()=>vt()]),re("click",g,ie),b(o,i)};C(Fe,o=>{e(G).length===0&&o(Ge)})}t(we),t(he),I((o,i,l,f,g,A,q,w,P)=>{m(We,o),m(He,i),m(Oe,l),m(De,f),m(Ee,g),U(D,"placeholder",A),U(D,"aria-label",q),U(E,"aria-label",w),m(ve,`${P??""} `)},[()=>lt(),()=>ct(),()=>ut(),()=>dt({questions:String(e(se)),categories:String(e(u).length)}),()=>pt(),()=>ft(),()=>mt(),()=>nt(),()=>gt({shown:String(e(Pe)),total:String(e(se))})]),it(D,()=>e(c),o=>_(c,o)),ot(E,()=>e(k),o=>_(k,o)),b(s,Y)},$$slots:{default:!0}}),b(O,ne),Ze()}et(["click"]);export{mr as component,fr as universal};
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.