@chaibuilder/sdk 4.0.0-beta.48 → 4.0.0-beta.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/{2SSKDMRQ-DqwAKdGS.cjs → 2SSKDMRQ-CjvuNdPo.cjs} +1 -1
  2. package/dist/{2SSKDMRQ-CLLNh3td.js → 2SSKDMRQ-Dvf9zadl.js} +2 -2
  3. package/dist/{AP7HFJJL-BA2SSB20.cjs → AP7HFJJL-DYFttFoI.cjs} +1 -1
  4. package/dist/{AP7HFJJL-wgsmCJDJ.js → AP7HFJJL-q4dJdyFs.js} +1 -1
  5. package/dist/{IconPicker-DsT0ONLh.js → IconPicker-Bf163F7t.js} +1 -1
  6. package/dist/{IconPicker-BQy4V5jA.cjs → IconPicker-JWhYq2Gp.cjs} +1 -1
  7. package/dist/{WDYDFRGG-DyEYv-Y5.cjs → WDYDFRGG-BEksfGMC.cjs} +1 -1
  8. package/dist/{WDYDFRGG-EEb06kwn.js → WDYDFRGG-O9GIrtX0.js} +2 -2
  9. package/dist/{actions-registery-2natwC9b.cjs → actions-registery-BHbZHkE3.cjs} +10 -2
  10. package/dist/{actions-registery-wRY05tEE.js → actions-registery-gJb_wq2F.js} +24 -12
  11. package/dist/actions.cjs +1 -1
  12. package/dist/actions.d.ts +10 -3
  13. package/dist/actions.js +6 -4
  14. package/dist/{active-in-another-tab-DE2fn30l.js → active-in-another-tab-B4Ur0JP7.js} +2 -2
  15. package/dist/{active-in-another-tab-p0hkvIFc.cjs → active-in-another-tab-BPdx4lWh.cjs} +1 -1
  16. package/dist/{add-new-language-page-f2wam593.cjs → add-new-language-page-BfUp5Ua2.cjs} +1 -1
  17. package/dist/{add-new-language-page-CH7GtcqC.js → add-new-language-page-CRR93tLq.js} +3 -3
  18. package/dist/{add-new-page-CV7A1XJQ.cjs → add-new-page-B8NGK6WS.cjs} +1 -1
  19. package/dist/{add-new-page-8d0Nn-zI.js → add-new-page-Ppy5-y5j.js} +2 -2
  20. package/dist/{ai-panel-default-lang-Dcm4e1o8.js → ai-panel-default-lang-BXYQye3N.js} +6 -5
  21. package/dist/{ai-panel-default-lang-BJLeTdw3.cjs → ai-panel-default-lang-VhgmHFoQ.cjs} +3 -3
  22. package/dist/{ai-panel-other-lang-B48Y5C8z.js → ai-panel-other-lang-DaCf-cq4.js} +36 -35
  23. package/dist/ai-panel-other-lang-Ds0EXeUC.cjs +1 -0
  24. package/dist/{ai-prompt-input-DhVfzVhy.js → ai-prompt-input-7iWk72w5.js} +2 -2
  25. package/dist/{ai-prompt-input-C1yoNntS.cjs → ai-prompt-input-nZ5_Dm7X.cjs} +1 -1
  26. package/dist/{ai-translation-prompt-CUYVv2jG.js → ai-translation-prompt-1OUs1P7n.js} +1 -1
  27. package/dist/{ai-translation-prompt-mj26BpgQ.cjs → ai-translation-prompt-B16cK-1Q.cjs} +1 -1
  28. package/dist/{change-password-modal-DiEQWZez.js → change-password-modal-CdvJR1Ln.js} +2 -2
  29. package/dist/{change-password-modal-DFupkIGx.cjs → change-password-modal-D5eXjiYq.cjs} +1 -1
  30. package/dist/{code-editor-CazbxsDv.js → code-editor-CyLjDiEp.js} +1 -1
  31. package/dist/{code-editor-BiLiryYr.cjs → code-editor-SWbfFj1E.cjs} +1 -1
  32. package/dist/{continue-editing-in-this-client-CpKDDW6u.js → continue-editing-in-this-client-BrSvK-Ay.js} +2 -2
  33. package/dist/{continue-editing-in-this-client-C3NoncEN.cjs → continue-editing-in-this-client-Cmi-GkYZ.cjs} +1 -1
  34. package/dist/core.cjs +1 -1
  35. package/dist/core.js +1 -1
  36. package/dist/{css-import-modal-DFdZ471B.cjs → css-import-modal-Bdwgd05S.cjs} +1 -1
  37. package/dist/{css-import-modal-BOQr_e6S.js → css-import-modal-Be47CBJn.js} +1 -1
  38. package/dist/{delete-page-DIZhbU2t.js → delete-page-C99K2qzS.js} +2 -2
  39. package/dist/{delete-page-D8Vr-1aC.cjs → delete-page-DLohaU-U.cjs} +1 -1
  40. package/dist/{design-token-usage-Co5Lj1HN.js → design-token-usage-D1lWCJ3L.js} +1 -1
  41. package/dist/{design-token-usage-N5DLBdWf.cjs → design-token-usage-eY2wQ0l3.cjs} +1 -1
  42. package/dist/{digital-asset-manager-CObQa_0R.js → digital-asset-manager-BZMb6sC7.js} +3 -3
  43. package/dist/{digital-asset-manager-uXP27Dou.cjs → digital-asset-manager-Z5aJxkq0.cjs} +1 -1
  44. package/dist/{duplicate-page-xpV-pRVU.js → duplicate-page-CDc2X0eW.js} +3 -3
  45. package/dist/{duplicate-page-DomSAvnp.cjs → duplicate-page-D5Gtvqdv.cjs} +1 -1
  46. package/dist/{dynamic-page-selector-CYZv-SlK.cjs → dynamic-page-selector-DZHhX008.cjs} +1 -1
  47. package/dist/{dynamic-page-selector-Bl5kYPWG.js → dynamic-page-selector-DvNBXo6o.js} +2 -2
  48. package/dist/{image-editor-CDFnNWAz.js → image-editor-BBvvi9Vm.js} +1 -1
  49. package/dist/{image-editor-pOsT95KQ.cjs → image-editor-DwhTYkVR.cjs} +1 -1
  50. package/dist/{index-j-XsKW-V.cjs → index-BVwFJWDq.cjs} +3 -3
  51. package/dist/{index-DonDtb8f.cjs → index-DCJDQs1a.cjs} +8 -8
  52. package/dist/{index-Cyz_Iww4.js → index-LBTm1Jmk.js} +35 -26
  53. package/dist/{index-BbkBlCE2.js → index-OuHV9Ann.js} +7 -6
  54. package/dist/{json-diff-viewer-CoEViavL.cjs → json-diff-viewer-Cb1CmRqP.cjs} +1 -1
  55. package/dist/{json-diff-viewer-amjoEZ5K.js → json-diff-viewer-DG6qMOBS.js} +2 -2
  56. package/dist/{lang-panel-DPpIXFl4.js → lang-panel-B3USOxGq.js} +3 -3
  57. package/dist/{lang-panel-BzWstLZ-.cjs → lang-panel-DxoJ0v4y.cjs} +1 -1
  58. package/dist/{manage-design-tokens-BVfEFOrN.js → manage-design-tokens-6YGIctip.js} +2 -2
  59. package/dist/{manage-design-tokens-modal-m3D2luIa.cjs → manage-design-tokens-modal-BSSCXH8Y.cjs} +1 -1
  60. package/dist/{manage-design-tokens-modal-CBOw_Dg6.js → manage-design-tokens-modal-CzsnN49F.js} +2 -2
  61. package/dist/{manage-design-tokens-CIiwBv2v.cjs → manage-design-tokens-udLBvkHA.cjs} +1 -1
  62. package/dist/{mark-as-template-C2-S_aA2.cjs → mark-as-template-B9yLcasI.cjs} +1 -1
  63. package/dist/{mark-as-template-CQjchLk7.js → mark-as-template-CP_F9ZQ4.js} +2 -2
  64. package/dist/{nested-path-selector-content-BtsI3H0i.js → nested-path-selector-content-DmtCI3q9.js} +1 -1
  65. package/dist/{nested-path-selector-content-Dd3NzUE0.cjs → nested-path-selector-content-aTdu-o0e.cjs} +1 -1
  66. package/dist/{no-language-page-content-CggJC14_.cjs → no-language-page-content-C-MCdPXt.cjs} +1 -1
  67. package/dist/{no-language-page-content-BrDAjkdi.js → no-language-page-content-D8t5dfgh.js} +2 -2
  68. package/dist/{no-language-page-dialog-DSbcLM8f.js → no-language-page-dialog-C_fHI2zI.js} +2 -2
  69. package/dist/{no-language-page-dialog-Dkxdu99i.cjs → no-language-page-dialog-D4QIAHnE.cjs} +1 -1
  70. package/dist/{page-creator-DqKFL1sB.cjs → page-creator-Cz_ah-qE.cjs} +1 -1
  71. package/dist/{page-creator-CR-FbJ7C.js → page-creator-DKEkuGCO.js} +3 -3
  72. package/dist/{page-lock-CwzMBdD-.js → page-lock-CwZKJ4IE.js} +2 -2
  73. package/dist/{page-lock-D4Anxwpy.cjs → page-lock-DdCvtA-I.cjs} +1 -1
  74. package/dist/{page-locked-dialog-UrTgnXd6.cjs → page-locked-dialog-CrTDBoC4.cjs} +1 -1
  75. package/dist/{page-locked-dialog-Dv_unUwx.js → page-locked-dialog-DqLlooUz.js} +2 -2
  76. package/dist/{page-manager-new-DuqhyqMY.cjs → page-manager-new-ah6QYar2.cjs} +1 -1
  77. package/dist/{page-manager-new-DpCTazS0.js → page-manager-new-ttsrxdW9.js} +3 -3
  78. package/dist/{page-manager-search-and-filter-Yt0pjK_r.cjs → page-manager-search-and-filter-D7AupT6_.cjs} +1 -1
  79. package/dist/{page-manager-search-and-filter-B6F-ZvdQ.js → page-manager-search-and-filter-bsqZ6wnI.js} +2 -2
  80. package/dist/{page-revisions-content-C2VMkAt4.cjs → page-revisions-content-B6hsIla7.cjs} +1 -1
  81. package/dist/{page-revisions-content-CUPsMEVU.js → page-revisions-content-C5O8_Fms.js} +3 -3
  82. package/dist/pages.cjs +1 -1
  83. package/dist/pages.d.ts +16 -10
  84. package/dist/pages.js +1 -1
  85. package/dist/{publish-pages-content-BrjDksNY.cjs → publish-pages-content-BrajJUcP.cjs} +1 -1
  86. package/dist/{publish-pages-content-CK0ahL2t.js → publish-pages-content-KZVMHT6V.js} +3 -3
  87. package/dist/{rte-widget-modal-Dktetdg4.cjs → rte-widget-modal-CiTwsXTr.cjs} +1 -1
  88. package/dist/{rte-widget-modal-DgEF73WC.js → rte-widget-modal-IU8JzPuZ.js} +1 -1
  89. package/dist/{save-to-lib-Bs6-wr2u.js → save-to-lib-DMnv7ENo.js} +2 -2
  90. package/dist/{save-to-lib-CuVYPtm-.cjs → save-to-lib-Dc700Aop.cjs} +1 -1
  91. package/dist/{selected-block-display-BCcwnFzJ.cjs → selected-block-display-CAFEOrLV.cjs} +1 -1
  92. package/dist/{selected-block-display-D-lzXUfE.js → selected-block-display-CidmQ-wz.js} +2 -2
  93. package/dist/{seo-panel-By-TlhHK.js → seo-panel-Br8gxDxu.js} +155 -165
  94. package/dist/{seo-panel-DTqsu3I0.cjs → seo-panel-CMY-adM-.cjs} +2 -2
  95. package/dist/{shared-json-ld-C_vaAxgT.cjs → shared-json-ld-CMH-eRUq.cjs} +1 -1
  96. package/dist/{shared-json-ld-CMCwFEI0.js → shared-json-ld-uvMmwCYp.js} +2 -2
  97. package/dist/{slug-input-DCmvuN69.cjs → slug-input-CiHC5l3r.cjs} +1 -1
  98. package/dist/{slug-input-bhZSv9VS.js → slug-input-DLWTMTsO.js} +1 -1
  99. package/dist/supabase-actions.cjs +1 -1
  100. package/dist/supabase-actions.js +1 -1
  101. package/dist/{take-over-request-BGvKpN5m.cjs → take-over-request-IRLgF1dG.cjs} +1 -1
  102. package/dist/{take-over-request-f0dbfkLe.js → take-over-request-KdR1_h_K.js} +2 -2
  103. package/dist/{translation-warning-modal-_0YmCcU8.cjs → translation-warning-modal-CLZ9tC1F.cjs} +1 -1
  104. package/dist/{translation-warning-modal-D0-WNJnG.js → translation-warning-modal-CzNt6LDO.js} +1 -1
  105. package/dist/types.d.ts +6 -0
  106. package/dist/{unmark-as-template-WE3WJ-RJ.js → unmark-as-template-C5ovsEBP.js} +2 -2
  107. package/dist/{unmark-as-template-BE1BO8Z0.cjs → unmark-as-template-F7TdgWjI.cjs} +1 -1
  108. package/dist/{unpublish-page-B4A-GQEz.js → unpublish-page-0fR1o0b7.js} +2 -2
  109. package/dist/{unpublish-page-DrZnWLVM.cjs → unpublish-page-CUr8Xub6.cjs} +1 -1
  110. package/dist/{unpublished-partials-modal-CGK-4WJ3.js → unpublished-partials-modal-BhNAub_z.js} +1 -1
  111. package/dist/{unpublished-partials-modal-KFXm1fG4.cjs → unpublished-partials-modal-Cv5R9-hi.cjs} +1 -1
  112. package/dist/{web-preview-ClV1a6hl.cjs → web-preview-CuMYekVJ.cjs} +1 -1
  113. package/dist/{web-preview-BSmef-RL.js → web-preview-D9pXonAv.js} +1 -1
  114. package/package.json +1 -1
  115. package/dist/ai-panel-other-lang-Ch0RHXqZ.cjs +0 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./AP7HFJJL-BA2SSB20.cjs"),t=require("./index-j-XsKW-V.cjs");var s=o=>{const[r,n]=e.createLocalStorage({prefix:"TanstackQueryDevtools"}),a=t.getPreferredColorScheme(),l=t.createMemo(()=>{const c=o.theme||r.theme_preference||e.THEME_PREFERENCE;return c!=="system"?c:a()});return t.createComponent(e.QueryDevtoolsContext.Provider,{value:o,get children(){return t.createComponent(e.PiPProvider,{localStore:r,setLocalStore:n,get children(){return t.createComponent(e.ThemeContext.Provider,{value:l,get children(){return t.createComponent(e.Devtools,{localStore:r,setLocalStore:n})}})}})}})},u=s;exports.default=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./AP7HFJJL-DYFttFoI.cjs"),t=require("./index-BVwFJWDq.cjs");var s=o=>{const[r,n]=e.createLocalStorage({prefix:"TanstackQueryDevtools"}),a=t.getPreferredColorScheme(),l=t.createMemo(()=>{const c=o.theme||r.theme_preference||e.THEME_PREFERENCE;return c!=="system"?c:a()});return t.createComponent(e.QueryDevtoolsContext.Provider,{value:o,get children(){return t.createComponent(e.PiPProvider,{localStore:r,setLocalStore:n,get children(){return t.createComponent(e.ThemeContext.Provider,{value:l,get children(){return t.createComponent(e.Devtools,{localStore:r,setLocalStore:n})}})}})}})},u=s;exports.default=u;
@@ -1,5 +1,5 @@
1
- import { c, T as l, P as m, a as v, D as u, Q as i } from "./AP7HFJJL-wgsmCJDJ.js";
2
- import { v as d, w as f, x as e } from "./index-Cyz_Iww4.js";
1
+ import { c, T as l, P as m, a as v, D as u, Q as i } from "./AP7HFJJL-q4dJdyFs.js";
2
+ import { v as d, w as f, x as e } from "./index-LBTm1Jmk.js";
3
3
  var h = (t) => {
4
4
  const [r, o] = c({
5
5
  prefix: "TanstackQueryDevtools"
@@ -412,9 +412,17 @@ Format:
412
412
  - NEVER break the format.
413
413
  - NEVER place ANYTHING before '--START--'.
414
414
  - The output must always begin with '--START--' and end with '--END--'.
415
- `.trim();function ru(e=null){if(e)switch(e){case"TRANSLATE_CONTENT":return wv;case"UPDATE_CONTENT":return _v;default:return Qo}return Qo}const Tv="google/gemini-2.5-flash";class Ev{constructor(t){Ie(this,"model",Tv);Ie(this,"temperature",.7);this.options=t,this.model=(t==null?void 0:t.model)??this.model}async handleRequest(t,r){var p,w;const{messages:n,image:a,initiator:o=null,model:s}=t,i=s||this.model,l=n.filter(b=>b.role!=="system"),u=l[l.length-1],c=a?[...l.slice(0,-1),{role:"user",content:[{type:"text",text:u.content},{type:"image",image:a}]}]:n,d=mv({model:i,system:ru(o),messages:c,temperature:this.temperature,onFinish:((p=this.options)==null?void 0:p.onFinish)??j.noop,onError:((w=this.options)==null?void 0:w.onError)??j.noop});return r&&d.pipeTextStreamToResponse(r),d}isConfigured(){return!0}}var Qe={exports:{}};const bv="16.6.1",Iv={version:bv};var es;function nu(){if(es)return Qe.exports;es=1;const e=vu,t=wu,r=_u,n=is,o=Iv.version,s=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function i(y){const x={};let D=y.toString();D=D.replace(/\r\n?/mg,`
415
+ `.trim();function ru(e=null){if(e)switch(e){case"TRANSLATE_CONTENT":return wv;case"UPDATE_CONTENT":return _v;default:return Qo}return Qo}const Tv="google/gemini-2.5-flash";class Ev{constructor(t){Ie(this,"model",Tv);Ie(this,"temperature",.7);this.options=t,this.model=(t==null?void 0:t.model)??this.model}async handleRequest(t,r){var b,_;const{messages:n,image:a,initiator:o=null,model:s,context:i}=t,l=s||this.model,u=n.filter(I=>I.role!=="system"),c=u[u.length-1],d=a?[...u.slice(0,-1),{role:"user",content:[{type:"text",text:c.content},{type:"image",image:a}]}]:n;let p=ru(o);i&&(p+=`
416
+
417
+ ## Additional Information`,i!=null&&i.site&&(p+=`
418
+
419
+ ## Website Information
420
+ ${JSON.stringify(i.site)}`),i!=null&&i.page&&(p+=`
421
+
422
+ ## Page Information
423
+ ${JSON.stringify(i.page)}`));const w=mv({model:l,system:p,messages:d,temperature:this.temperature,onFinish:((b=this.options)==null?void 0:b.onFinish)??j.noop,onError:((_=this.options)==null?void 0:_.onError)??j.noop});return r&&w.pipeTextStreamToResponse(r),w}isConfigured(){return!0}}var Qe={exports:{}};const bv="16.6.1",Iv={version:bv};var es;function nu(){if(es)return Qe.exports;es=1;const e=vu,t=wu,r=_u,n=is,o=Iv.version,s=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function i(y){const x={};let D=y.toString();D=D.replace(/\r\n?/mg,`
416
424
  `);let F;for(;(F=s.exec(D))!=null;){const se=F[1];let L=F[2]||"";L=L.trim();const X=L[0];L=L.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),X==='"'&&(L=L.replace(/\\n/g,`
417
- `),L=L.replace(/\\r/g,"\r")),x[se]=L}return x}function l(y){y=y||{};const x=b(y);y.path=x;const D=O.configDotenv(y);if(!D.parsed){const X=new Error(`MISSING_DATA: Cannot parse ${x} for an unknown reason`);throw X.code="MISSING_DATA",X}const F=p(y).split(","),se=F.length;let L;for(let X=0;X<se;X++)try{const Q=F[X].trim(),le=w(D,Q);L=O.decrypt(le.ciphertext,le.key);break}catch(Q){if(X+1>=se)throw Q}return O.parse(L)}function u(y){console.log(`[dotenv@${o}][WARN] ${y}`)}function c(y){console.log(`[dotenv@${o}][DEBUG] ${y}`)}function d(y){console.log(`[dotenv@${o}] ${y}`)}function p(y){return y&&y.DOTENV_KEY&&y.DOTENV_KEY.length>0?y.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function w(y,x){let D;try{D=new URL(x)}catch(Q){if(Q.code==="ERR_INVALID_URL"){const le=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw le.code="INVALID_DOTENV_KEY",le}throw Q}const F=D.password;if(!F){const Q=new Error("INVALID_DOTENV_KEY: Missing key part");throw Q.code="INVALID_DOTENV_KEY",Q}const se=D.searchParams.get("environment");if(!se){const Q=new Error("INVALID_DOTENV_KEY: Missing environment part");throw Q.code="INVALID_DOTENV_KEY",Q}const L=`DOTENV_VAULT_${se.toUpperCase()}`,X=y.parsed[L];if(!X){const Q=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${L} in your .env.vault file.`);throw Q.code="NOT_FOUND_DOTENV_ENVIRONMENT",Q}return{ciphertext:X,key:F}}function b(y){let x=null;if(y&&y.path&&y.path.length>0)if(Array.isArray(y.path))for(const D of y.path)e.existsSync(D)&&(x=D.endsWith(".vault")?D:`${D}.vault`);else x=y.path.endsWith(".vault")?y.path:`${y.path}.vault`;else x=t.resolve(process.cwd(),".env.vault");return e.existsSync(x)?x:null}function _(y){return y[0]==="~"?t.join(r.homedir(),y.slice(1)):y}function I(y){const x=!!(y&&y.debug),D=y&&"quiet"in y?y.quiet:!0;(x||!D)&&d("Loading env from encrypted .env.vault");const F=O._parseVault(y);let se=process.env;return y&&y.processEnv!=null&&(se=y.processEnv),O.populate(se,F,y),{parsed:F}}function k(y){const x=t.resolve(process.cwd(),".env");let D="utf8";const F=!!(y&&y.debug),se=y&&"quiet"in y?y.quiet:!0;y&&y.encoding?D=y.encoding:F&&c("No encoding is specified. UTF-8 is used by default");let L=[x];if(y&&y.path)if(!Array.isArray(y.path))L=[_(y.path)];else{L=[];for(const xe of y.path)L.push(_(xe))}let X;const Q={};for(const xe of L)try{const Te=O.parse(e.readFileSync(xe,{encoding:D}));O.populate(Q,Te,y)}catch(Te){F&&c(`Failed to load ${xe} ${Te.message}`),X=Te}let le=process.env;if(y&&y.processEnv!=null&&(le=y.processEnv),O.populate(le,Q,y),F||!se){const xe=Object.keys(Q).length,Te=[];for(const ct of L)try{const Fe=t.relative(process.cwd(),ct);Te.push(Fe)}catch(Fe){F&&c(`Failed to load ${ct} ${Fe.message}`),X=Fe}d(`injecting env (${xe}) from ${Te.join(",")}`)}return X?{parsed:Q,error:X}:{parsed:Q}}function P(y){if(p(y).length===0)return O.configDotenv(y);const x=b(y);return x?O._configVault(y):(u(`You set DOTENV_KEY but you are missing a .env.vault file at ${x}. Did you forget to build it?`),O.configDotenv(y))}function m(y,x){const D=Buffer.from(x.slice(-64),"hex");let F=Buffer.from(y,"base64");const se=F.subarray(0,12),L=F.subarray(-16);F=F.subarray(12,-16);try{const X=n.createDecipheriv("aes-256-gcm",D,se);return X.setAuthTag(L),`${X.update(F)}${X.final()}`}catch(X){const Q=X instanceof RangeError,le=X.message==="Invalid key length",xe=X.message==="Unsupported state or unable to authenticate data";if(Q||le){const Te=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw Te.code="INVALID_DOTENV_KEY",Te}else if(xe){const Te=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw Te.code="DECRYPTION_FAILED",Te}else throw X}}function z(y,x,D={}){const F=!!(D&&D.debug),se=!!(D&&D.override);if(typeof x!="object"){const L=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw L.code="OBJECT_REQUIRED",L}for(const L of Object.keys(x))Object.prototype.hasOwnProperty.call(y,L)?(se===!0&&(y[L]=x[L]),F&&c(se===!0?`"${L}" is already defined and WAS overwritten`:`"${L}" is already defined and was NOT overwritten`)):y[L]=x[L]}const O={configDotenv:k,_configVault:I,_parseVault:l,config:P,decrypt:m,parse:i,populate:z};return Qe.exports.configDotenv=O.configDotenv,Qe.exports._configVault=O._configVault,Qe.exports._parseVault=O._parseVault,Qe.exports.config=O.config,Qe.exports.decrypt=O.decrypt,Qe.exports.parse=O.parse,Qe.exports.populate=O.populate,Qe.exports=O,Qe.exports}var Sv=nu();const Av=yu.getDefaultExportFromCjs(Sv),Nv=g.pgSequence("app_pages_metadata_id_seq",{startWith:"1",increment:"1",minValue:"1",maxValue:"9223372036854775807",cache:"1",cycle:!1}),xv=g.pgSequence("webhook_events_id_seq",{startWith:"1",increment:"1",minValue:"1",maxValue:"9223372036854775807",cache:"1",cycle:!1}),Ov=g.pgTable("app_assets",{id:g.uuid().defaultRandom().primaryKey().notNull(),app:g.uuid(),name:g.text(),description:g.text(),url:g.text(),size:g.text(),folderId:g.text(),thumbnailUrl:g.text(),duration:g.numeric(),format:g.text(),width:g.numeric(),height:g.numeric(),createdBy:g.text(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),type:g.text(),updatedAt:g.timestamp({withTimezone:!0,mode:"string"})},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_assets_app_fkey"})]),he=g.pgTable("app_pages_online",{createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),slug:g.text().notNull(),lang:g.text().default("").notNull(),seo:g.jsonb().default({}),app:g.uuid().notNull(),id:g.uuid().primaryKey().notNull(),name:g.text().notNull(),primaryPage:g.uuid(),blocks:g.jsonb().default([]),currentEditor:g.text(),changes:g.jsonb(),partialBlocks:g.text(),links:g.text(),online:g.boolean().default(!0),pageType:g.text(),parent:g.uuid(),lastSaved:g.timestamp({withTimezone:!0,mode:"string"}),dynamic:g.boolean().default(!1),libRefId:g.uuid(),dynamicSlugCustom:g.text().default(""),metadata:g.jsonb().default({}),jsonld:g.jsonb().default({}),globalJsonLds:g.jsonb().default([]),designTokens:g.jsonb()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_pages_online_app_fkey"})]),ge=g.pgTable("apps",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),name:g.text(),user:g.text(),settings:g.jsonb().default({}),theme:g.jsonb().default({}),fallbackLang:g.text().default("en"),languages:g.jsonb().default([]),changes:g.jsonb(),deletedAt:g.timestamp({withTimezone:!0,mode:"string"}),client:g.uuid(),designTokens:g.jsonb().default({})}),mt=g.pgTable("apps_online",{id:g.uuid().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),name:g.text(),user:g.text(),settings:g.jsonb().default({}),theme:g.jsonb().default({}),fallbackLang:g.text().default("en"),languages:g.jsonb().default([]),changes:g.jsonb(),apiKey:g.text(),deletedAt:g.timestamp({withTimezone:!0,mode:"string"}),client:g.uuid(),designTokens:g.jsonb().default({})}),W=g.pgTable("libraries",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),name:g.text(),app:g.uuid(),type:g.text(),status:g.text().default("active").notNull(),client:g.uuid()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"libraries_app_fkey"})]),Rv=g.pgTable("app_form_submissions",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),app:g.uuid(),formData:g.json(),additionalData:g.json(),formName:g.text().default(""),pageUrl:g.text()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_form_submissions_app_fkey"})]),f=g.pgTable("app_pages",{createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),slug:g.text().notNull(),lang:g.text().default("").notNull(),seo:g.jsonb().default({}),app:g.uuid().notNull(),id:g.uuid().defaultRandom().primaryKey().notNull(),name:g.text().notNull(),primaryPage:g.uuid(),blocks:g.jsonb().default([]),currentEditor:g.text(),changes:g.jsonb(),online:g.boolean().default(!1),parent:g.uuid(),pageType:g.text(),lastSaved:g.timestamp({withTimezone:!0,mode:"string"}),dynamic:g.boolean().default(!1),libRefId:g.uuid(),dynamicSlugCustom:g.text().default(""),metadata:g.jsonb().default({}),jsonld:g.jsonb().default({}),globalJsonLds:g.jsonb().default([]),links:g.text(),partialBlocks:g.text(),designTokens:g.jsonb()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_pages_app_fkey"}),g.foreignKey({columns:[e.parent],foreignColumns:[e.id],name:"app_pages_parent_fkey"})]),Se=g.pgTable("app_pages_revisions",{createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),slug:g.text().notNull(),lang:g.text().default("").notNull(),seo:g.jsonb().default({}),app:g.uuid().notNull(),id:g.uuid().notNull(),name:g.text().notNull(),primaryPage:g.uuid(),blocks:g.jsonb().default([]),currentEditor:g.text(),changes:g.jsonb(),partialBlocks:g.text(),links:g.text(),online:g.boolean().default(!0),pageType:g.text(),parent:g.uuid(),lastSaved:g.timestamp({withTimezone:!0,mode:"string"}),dynamic:g.boolean().default(!1),uid:g.uuid().defaultRandom().primaryKey().notNull(),type:g.text(),libRefId:g.uuid(),dynamicSlugCustom:g.text().default(""),metadata:g.jsonb().default({}),jsonld:g.jsonb().default({}),globalJsonLds:g.jsonb().default([]),designTokens:g.jsonb()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_pages_revisions_app_fkey"})]),dr=g.pgTable("app_users",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),user:g.text(),app:g.uuid(),role:g.text(),permissions:g.jsonb(),status:g.text().default("active").notNull()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_users_app_fkey"})]),te=g.pgTable("library_templates",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),user:g.text(),name:g.text(),description:g.text(),pageId:g.uuid(),pageType:g.text(),library:g.uuid(),preview:g.text()},e=>[g.foreignKey({columns:[e.library],foreignColumns:[W.id],name:"library_templates_library_fkey"})]),re=g.pgTable("library_items",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),library:g.uuid(),name:g.text(),description:g.text(),blocks:g.jsonb().default([]),preview:g.text(),group:g.text().default("general"),user:g.text(),html:g.text()},e=>[g.foreignKey({columns:[e.library],foreignColumns:[W.id],name:"library_items_library_fkey"})]),wa=g.pgTable("ai_logs",{id:g.bigint({mode:"number"}).primaryKey().generatedByDefaultAsIdentity({name:"ai_logs_id_seq",startWith:1,increment:1,minValue:1,maxValue:9223372036854776e3,cache:1}),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),model:g.text(),totalDuration:g.numeric(),error:g.text(),totalTokens:g.numeric(),tokenUsage:g.jsonb(),user:g.text(),client:g.uuid().defaultRandom(),cost:g.doublePrecision().default(h.sql`'0'`),prompt:g.text(),app:g.uuid()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"ai_logs_app_fkey"})]),au=Object.freeze(Object.defineProperty({__proto__:null,aiLogs:wa,appAssets:Ov,appFormSubmissions:Rv,appPages:f,appPagesMetadataIdSeq:Nv,appPagesOnline:he,appPagesRevisions:Se,appUsers:dr,apps:ge,appsOnline:mt,libraries:W,libraryItems:re,libraryTemplates:te,webhookEventsIdSeq:xv},Symbol.toStringTag,{value:"Module"}));Av.config();let Sr=process.env.CHAIBUILDER_DATABASE_URL;if(!Sr)throw new Error("Database not configured. Please set CHAIBUILDER_DATABASE_URL environment variable.");const Cv=e=>e.trim().replace(/^"|"$/g,"");Sr=Cv(Sr);const kv=e=>e.startsWith("postgresql://")||e.startsWith("postgres://");if(!kv(Sr))throw new Error("Database connection string is invalid. Please check your CHAIBUILDER_DATABASE_URL environment variable.");const Pv=Eu(Sr,{max:10}),S=Tu.drizzle(Pv,{schema:au});async function A(e){try{return{data:await e(),error:null}}catch(t){return{data:null,error:t}}}const Dv=e=>{var t;return((t=bu.AI_MODELS.find(r=>r.id===e))==null?void 0:t.multiplier)||1};async function zv({userId:e,startTime:t,error:r,model:n,prompt:a,appId:o}){var c;const s=String(r),i=t>0?new Date().getTime()-t:0,l={model:n,totalDuration:String(i),error:s,totalTokens:"0",tokenUsage:{},cost:0,prompt:a,user:e,client:((c=process==null?void 0:process.env)==null?void 0:c.CHAIBUILDER_CLIENT_ID)||null,app:o},{error:u}=await A(()=>S.insert(wa).values(l));u&&console.error("Error logging AI request error:",u)}async function $v({userId:e,startTime:t,arg:r,prompt:n,model:a,appId:o}){var p,w,b;const s=r==null?void 0:r.totalUsage,i=(w=(p=r==null?void 0:r.providerMetadata)==null?void 0:p.gateway)==null?void 0:w.cost,l=t>0?Math.floor(new Date().getTime()-t):0,u=n.indexOf("USER REQUEST");n=n.substring(u).trim();const c={model:a,totalDuration:String(l),error:null,totalTokens:String(Math.round(((s==null?void 0:s.totalTokens)??0)*Dv(a))),tokenUsage:s,cost:i,prompt:n,user:e,client:((b=process==null?void 0:process.env)==null?void 0:b.CHAIBUILDER_CLIENT_ID)||null,app:o},{error:d}=await A(()=>S.insert(wa).values(c));d&&console.error("Error logging AI request:",d)}class T extends Error{constructor(t,r="ACTION_ERROR",n=400,a){super(t),this.code=r,this.status=n,this.error=a,this.name="ActionError",a&&console.error(a)}}class Z{constructor(){Ie(this,"context",null)}validate(t){if(!t)return!0;try{return this.getValidationSchema().parse(t),!0}catch{return!1}}getValidationErrors(t){if(!t)return null;try{return this.getValidationSchema().parse(t),null}catch(r){return r instanceof v.z.ZodError?r.issues.map(a=>`${a.path.join(".")}: ${a.message}`).join(", "):null}}setContext(t){this.context=t}async verifyAccess(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET",500);const{getChaiAction:t}=await Promise.resolve().then(()=>Tw),r=t("CHECK_USER_ACCESS");if(!r)throw new T("CHECK_USER_ACCESS action not registered","ACCESS_CHECK_NOT_FOUND",500);r.setContext(this.context),await r.execute({})}handleError(t){if(t instanceof T)throw t;if(t instanceof v.z.ZodError){const r=t.issues.map(n=>`${n.path.join(".")}: ${n.message}`).join(", ");throw new T(`Validation failed: ${r}`,"VALIDATION_ERROR")}else{const r=t instanceof Error?t.message:"Unknown error";throw new T(r,"ACTION_ERROR")}}}class Mv extends Z{getValidationSchema(){return v.z.any()}async execute(t){if(!this.context)throw new Error("Context not set");const r=new Date().getTime(),{userId:n,appId:a}=this.context,o=new Ev({onFinish:l=>{var u,c;try{$v({arg:l,prompt:((c=(u=t.messages)==null?void 0:u[t.messages.length-1])==null?void 0:c.content)||"",userId:n,model:t.model||"",startTime:r,appId:a})}catch(d){console.error("Error logging AI request:",d)}},onError:l=>{var u,c;try{zv({error:l,userId:n,startTime:r,model:t.model||"",prompt:((c=(u=t.messages)==null?void 0:u[t.messages.length-1])==null?void 0:c.content)||"",appId:a})}catch(d){console.error("Error logging AI request error:",d)}}}),s={messages:t.messages||[],image:t.image,model:t.model,initiator:t.initiator||null};return{_streamingResponse:!0,_streamResult:await o.handleRequest(s)}}}async function Fv(e){const{appId:t,userId:r}=e;if(!r)throw new T("User ID not found in context","UNAUTHORIZED",401);const{data:n,error:a}=await A(()=>S.select().from(dr).where(h.and(h.eq(dr.app,t),h.eq(dr.user,r),h.eq(dr.status,"active"))));if(a)throw new T("Error checking user access","ERROR_CHECKING_USER_ACCESS",500,a);if(!n||n.length===0)throw new T("User does not have access to this app","UNAUTHORIZED",401);return n[0]}class Lv extends Z{getValidationSchema(){return v.z.any()}async execute(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET",500);const t=await Fv(this.context);return{access:!0,role:t.role||"user",permissions:t.permissions||null}}}class Uv extends Z{getValidationSchema(){return v.z.object({name:v.z.string().min(1),slug:v.z.string(),pageType:v.z.string(),parent:v.z.string().nullable().optional(),lang:v.z.string().optional(),primaryPage:v.z.string().nullable().optional(),dynamic:v.z.boolean().optional(),hasSlug:v.z.boolean().optional(),template:v.z.string().optional(),seo:v.z.record(v.z.string(),v.z.any()).optional(),jsonLD:v.z.record(v.z.string(),v.z.any()).optional(),dynamicSlugCustom:v.z.string().optional()}).refine(t=>t.lang&&t.lang!==""?!!t.primaryPage:!0,{message:"primaryPage is required when lang option is not empty",path:["primaryPage"]})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context;if((t.hasSlug??t.pageType!=="global")&&t.slug&&await this.doesSlugExist(t.slug,t.pageType))throw new T("Slug already exists","SLUG_ALREADY_USED");let a=[];t.template&&(a=await this.getTemplateBlocks(t.template,r));let o=t.dynamic??!1,s=t.dynamicSlugCustom??"";if(t.primaryPage){const{data:d}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.primaryPage),h.eq(f.app,r)),columns:{dynamic:!0,dynamicSlugCustom:!0}}));d&&(o=d.dynamic??!1,s=d.dynamicSlugCustom??"")}const i={app:r,name:t.name,slug:t.slug,pageType:t.pageType,parent:t.parent??null,lang:t.primaryPage?t.lang??"":"",primaryPage:t.primaryPage??null,dynamic:o,dynamicSlugCustom:s,blocks:a,seo:t.seo??{title:t.name,jsonLD:"",noIndex:!1,ogImage:"",ogTitle:"",noFollow:"",description:"",searchTitle:"",cononicalUrl:"",ogDescription:"",searchDescription:""},jsonld:{},online:!1,currentEditor:null,changes:null,libRefId:null,lastSaved:null},{data:l,error:u}=await A(()=>S.insert(f).values(i).returning({id:f.id,name:f.name,slug:f.slug,lang:f.lang,pageType:f.pageType,parent:f.parent,online:f.online,primaryPage:f.primaryPage}));if(u)throw new T("Failed to create page","ERROR_CREATING_PAGE",500,u);if(!l||l.length===0)throw new T("Failed to create page","INSERT_FAILED");const c=l[0];return{page:j.omit(c.primaryPage?{...c,id:c.primaryPage}:c,["primaryPage"])}}async doesSlugExist(t,r){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:n}=this.context,{data:a,error:o}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.slug,t),h.eq(f.pageType,r),h.eq(f.app,n)),columns:{id:!0}}));if(o)throw new T(`${o.message}`,"SLUG_CHECK_FAILED");return!!a}async getTemplateBlocks(t,r){const{data:n,error:a}=await A(()=>S.select({template:te,library:{id:W.id,app:W.app,name:W.name}}).from(te).leftJoin(W,h.eq(te.library,W.id)).where(h.eq(te.id,t)).limit(1).then(d=>d[0]));if(a)throw new T(`Failed to fetch template: ${a.message||"Unknown database error"}`,"ERROR_GETTING_TEMPLATE_BLOCKS",500,a);if(!n||!n.template||!n.library)throw new T(`Template not found with ID: ${t}`,"TEMPLATE_NOT_FOUND");const o=n.template,s=n.library,{data:i,error:l}=await A(()=>S.query.appPages.findFirst({where:h.eq(f.id,o.pageId),columns:{blocks:!0}}));if(l)throw new T(`Failed to fetch template blocks: ${l.message||"Unknown database error"}`,"ERROR_GETTING_TEMPLATE_BLOCKS",500,l);if(!i)throw new T(`Template page not found with ID: ${o.pageId}`,"TEMPLATE_PAGE_NOT_FOUND");let u=i.blocks||[];if(u=u.map(d=>d._type==="GlobalBlock"&&!j.isEmpty(d.globalBlock)?{...d,_type:"PartialBlock",partialBlockId:d.globalBlock}:d),!(s.app===r)){const d=s.name||"",p=u.filter(b=>b._type==="PartialBlock"&&!j.isEmpty(b.partialBlockId)),w=await Promise.all(p.map(({partialBlockId:b})=>this.copyPartialBlockFromTemplate(b,d,r)));u=u.map(b=>{const _=w.find(I=>(I==null?void 0:I.libRefId)===b.partialBlockId);return _&&(b._name=`${d} - ${b._name}`,b.partialBlockId=_.id),b})}return u}async copyPartialBlockFromTemplate(t,r,n){const{data:a,error:o}=await A(()=>S.query.appPages.findFirst({where:h.eq(f.id,t)}));if(o||!a)return console.error("Failed to fetch partial block:",o),null;const s={...a,id:void 0,app:n,libRefId:t,name:`${r} - ${a.name}`,createdAt:void 0,online:!1,currentEditor:null,changes:null,lastSaved:null},{data:i,error:l}=await A(()=>S.insert(f).values(s).returning({id:f.id,libRefId:f.libRefId}));if(l||!i||i.length===0)return console.error("Failed to create partial block copy:",l),null;const u=i[0];return{id:u.id,libRefId:u.libRefId||t}}}class jv extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{id:r}=t,{error:n}=await A(()=>S.delete(re).where(h.eq(re.id,r)));if(n)throw new T("Failed to delete library item","DELETE_LIBRARY_ITEM_FAILED",500,n);return{success:!0}}}const ie=(e,t)=>(console.error(t),new Error(e));class Ar{constructor(t,r=!1){Ie(this,"appId");Ie(this,"enableLogging");this.appId=t,this.enableLogging=r}async getPagesTree(){const{data:t,error:r}=await A(()=>S.select({id:f.id,name:f.name,slug:f.slug,pageType:f.pageType,primaryPage:f.primaryPage,parent:f.parent,lang:f.lang,dynamic:f.dynamic}).from(f).where(h.eq(f.app,this.appId)));if(r)throw ie("ERROR_GETTING_PAGES",r);const n=(t==null?void 0:t.filter(i=>i.primaryPage===null))||[],a=(t==null?void 0:t.filter(i=>i.primaryPage!==null))||[],o=this.buildPrimaryTree(n);this.enableLogging&&(console.log(`
425
+ `),L=L.replace(/\\r/g,"\r")),x[se]=L}return x}function l(y){y=y||{};const x=b(y);y.path=x;const D=O.configDotenv(y);if(!D.parsed){const X=new Error(`MISSING_DATA: Cannot parse ${x} for an unknown reason`);throw X.code="MISSING_DATA",X}const F=p(y).split(","),se=F.length;let L;for(let X=0;X<se;X++)try{const Q=F[X].trim(),le=w(D,Q);L=O.decrypt(le.ciphertext,le.key);break}catch(Q){if(X+1>=se)throw Q}return O.parse(L)}function u(y){console.log(`[dotenv@${o}][WARN] ${y}`)}function c(y){console.log(`[dotenv@${o}][DEBUG] ${y}`)}function d(y){console.log(`[dotenv@${o}] ${y}`)}function p(y){return y&&y.DOTENV_KEY&&y.DOTENV_KEY.length>0?y.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function w(y,x){let D;try{D=new URL(x)}catch(Q){if(Q.code==="ERR_INVALID_URL"){const le=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw le.code="INVALID_DOTENV_KEY",le}throw Q}const F=D.password;if(!F){const Q=new Error("INVALID_DOTENV_KEY: Missing key part");throw Q.code="INVALID_DOTENV_KEY",Q}const se=D.searchParams.get("environment");if(!se){const Q=new Error("INVALID_DOTENV_KEY: Missing environment part");throw Q.code="INVALID_DOTENV_KEY",Q}const L=`DOTENV_VAULT_${se.toUpperCase()}`,X=y.parsed[L];if(!X){const Q=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${L} in your .env.vault file.`);throw Q.code="NOT_FOUND_DOTENV_ENVIRONMENT",Q}return{ciphertext:X,key:F}}function b(y){let x=null;if(y&&y.path&&y.path.length>0)if(Array.isArray(y.path))for(const D of y.path)e.existsSync(D)&&(x=D.endsWith(".vault")?D:`${D}.vault`);else x=y.path.endsWith(".vault")?y.path:`${y.path}.vault`;else x=t.resolve(process.cwd(),".env.vault");return e.existsSync(x)?x:null}function _(y){return y[0]==="~"?t.join(r.homedir(),y.slice(1)):y}function I(y){const x=!!(y&&y.debug),D=y&&"quiet"in y?y.quiet:!0;(x||!D)&&d("Loading env from encrypted .env.vault");const F=O._parseVault(y);let se=process.env;return y&&y.processEnv!=null&&(se=y.processEnv),O.populate(se,F,y),{parsed:F}}function k(y){const x=t.resolve(process.cwd(),".env");let D="utf8";const F=!!(y&&y.debug),se=y&&"quiet"in y?y.quiet:!0;y&&y.encoding?D=y.encoding:F&&c("No encoding is specified. UTF-8 is used by default");let L=[x];if(y&&y.path)if(!Array.isArray(y.path))L=[_(y.path)];else{L=[];for(const xe of y.path)L.push(_(xe))}let X;const Q={};for(const xe of L)try{const Te=O.parse(e.readFileSync(xe,{encoding:D}));O.populate(Q,Te,y)}catch(Te){F&&c(`Failed to load ${xe} ${Te.message}`),X=Te}let le=process.env;if(y&&y.processEnv!=null&&(le=y.processEnv),O.populate(le,Q,y),F||!se){const xe=Object.keys(Q).length,Te=[];for(const ct of L)try{const Fe=t.relative(process.cwd(),ct);Te.push(Fe)}catch(Fe){F&&c(`Failed to load ${ct} ${Fe.message}`),X=Fe}d(`injecting env (${xe}) from ${Te.join(",")}`)}return X?{parsed:Q,error:X}:{parsed:Q}}function P(y){if(p(y).length===0)return O.configDotenv(y);const x=b(y);return x?O._configVault(y):(u(`You set DOTENV_KEY but you are missing a .env.vault file at ${x}. Did you forget to build it?`),O.configDotenv(y))}function m(y,x){const D=Buffer.from(x.slice(-64),"hex");let F=Buffer.from(y,"base64");const se=F.subarray(0,12),L=F.subarray(-16);F=F.subarray(12,-16);try{const X=n.createDecipheriv("aes-256-gcm",D,se);return X.setAuthTag(L),`${X.update(F)}${X.final()}`}catch(X){const Q=X instanceof RangeError,le=X.message==="Invalid key length",xe=X.message==="Unsupported state or unable to authenticate data";if(Q||le){const Te=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw Te.code="INVALID_DOTENV_KEY",Te}else if(xe){const Te=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw Te.code="DECRYPTION_FAILED",Te}else throw X}}function z(y,x,D={}){const F=!!(D&&D.debug),se=!!(D&&D.override);if(typeof x!="object"){const L=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw L.code="OBJECT_REQUIRED",L}for(const L of Object.keys(x))Object.prototype.hasOwnProperty.call(y,L)?(se===!0&&(y[L]=x[L]),F&&c(se===!0?`"${L}" is already defined and WAS overwritten`:`"${L}" is already defined and was NOT overwritten`)):y[L]=x[L]}const O={configDotenv:k,_configVault:I,_parseVault:l,config:P,decrypt:m,parse:i,populate:z};return Qe.exports.configDotenv=O.configDotenv,Qe.exports._configVault=O._configVault,Qe.exports._parseVault=O._parseVault,Qe.exports.config=O.config,Qe.exports.decrypt=O.decrypt,Qe.exports.parse=O.parse,Qe.exports.populate=O.populate,Qe.exports=O,Qe.exports}var Sv=nu();const Av=yu.getDefaultExportFromCjs(Sv),Nv=g.pgSequence("app_pages_metadata_id_seq",{startWith:"1",increment:"1",minValue:"1",maxValue:"9223372036854775807",cache:"1",cycle:!1}),xv=g.pgSequence("webhook_events_id_seq",{startWith:"1",increment:"1",minValue:"1",maxValue:"9223372036854775807",cache:"1",cycle:!1}),Ov=g.pgTable("app_assets",{id:g.uuid().defaultRandom().primaryKey().notNull(),app:g.uuid(),name:g.text(),description:g.text(),url:g.text(),size:g.text(),folderId:g.text(),thumbnailUrl:g.text(),duration:g.numeric(),format:g.text(),width:g.numeric(),height:g.numeric(),createdBy:g.text(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),type:g.text(),updatedAt:g.timestamp({withTimezone:!0,mode:"string"})},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_assets_app_fkey"})]),he=g.pgTable("app_pages_online",{createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),slug:g.text().notNull(),lang:g.text().default("").notNull(),seo:g.jsonb().default({}),app:g.uuid().notNull(),id:g.uuid().primaryKey().notNull(),name:g.text().notNull(),primaryPage:g.uuid(),blocks:g.jsonb().default([]),currentEditor:g.text(),changes:g.jsonb(),partialBlocks:g.text(),links:g.text(),online:g.boolean().default(!0),pageType:g.text(),parent:g.uuid(),lastSaved:g.timestamp({withTimezone:!0,mode:"string"}),dynamic:g.boolean().default(!1),libRefId:g.uuid(),dynamicSlugCustom:g.text().default(""),metadata:g.jsonb().default({}),jsonld:g.jsonb().default({}),globalJsonLds:g.jsonb().default([]),designTokens:g.jsonb()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_pages_online_app_fkey"})]),ge=g.pgTable("apps",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),name:g.text(),user:g.text(),settings:g.jsonb().default({}),theme:g.jsonb().default({}),fallbackLang:g.text().default("en"),languages:g.jsonb().default([]),changes:g.jsonb(),deletedAt:g.timestamp({withTimezone:!0,mode:"string"}),client:g.uuid(),designTokens:g.jsonb().default({})}),mt=g.pgTable("apps_online",{id:g.uuid().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),name:g.text(),user:g.text(),settings:g.jsonb().default({}),theme:g.jsonb().default({}),fallbackLang:g.text().default("en"),languages:g.jsonb().default([]),changes:g.jsonb(),apiKey:g.text(),deletedAt:g.timestamp({withTimezone:!0,mode:"string"}),client:g.uuid(),designTokens:g.jsonb().default({})}),W=g.pgTable("libraries",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),name:g.text(),app:g.uuid(),type:g.text(),status:g.text().default("active").notNull(),client:g.uuid()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"libraries_app_fkey"})]),Rv=g.pgTable("app_form_submissions",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),app:g.uuid(),formData:g.json(),additionalData:g.json(),formName:g.text().default(""),pageUrl:g.text()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_form_submissions_app_fkey"})]),f=g.pgTable("app_pages",{createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),slug:g.text().notNull(),lang:g.text().default("").notNull(),seo:g.jsonb().default({}),app:g.uuid().notNull(),id:g.uuid().defaultRandom().primaryKey().notNull(),name:g.text().notNull(),primaryPage:g.uuid(),blocks:g.jsonb().default([]),currentEditor:g.text(),changes:g.jsonb(),online:g.boolean().default(!1),parent:g.uuid(),pageType:g.text(),lastSaved:g.timestamp({withTimezone:!0,mode:"string"}),dynamic:g.boolean().default(!1),libRefId:g.uuid(),dynamicSlugCustom:g.text().default(""),metadata:g.jsonb().default({}),jsonld:g.jsonb().default({}),globalJsonLds:g.jsonb().default([]),links:g.text(),partialBlocks:g.text(),designTokens:g.jsonb()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_pages_app_fkey"}),g.foreignKey({columns:[e.parent],foreignColumns:[e.id],name:"app_pages_parent_fkey"})]),Se=g.pgTable("app_pages_revisions",{createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),slug:g.text().notNull(),lang:g.text().default("").notNull(),seo:g.jsonb().default({}),app:g.uuid().notNull(),id:g.uuid().notNull(),name:g.text().notNull(),primaryPage:g.uuid(),blocks:g.jsonb().default([]),currentEditor:g.text(),changes:g.jsonb(),partialBlocks:g.text(),links:g.text(),online:g.boolean().default(!0),pageType:g.text(),parent:g.uuid(),lastSaved:g.timestamp({withTimezone:!0,mode:"string"}),dynamic:g.boolean().default(!1),uid:g.uuid().defaultRandom().primaryKey().notNull(),type:g.text(),libRefId:g.uuid(),dynamicSlugCustom:g.text().default(""),metadata:g.jsonb().default({}),jsonld:g.jsonb().default({}),globalJsonLds:g.jsonb().default([]),designTokens:g.jsonb()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_pages_revisions_app_fkey"})]),dr=g.pgTable("app_users",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),user:g.text(),app:g.uuid(),role:g.text(),permissions:g.jsonb(),status:g.text().default("active").notNull()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"app_users_app_fkey"})]),te=g.pgTable("library_templates",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),user:g.text(),name:g.text(),description:g.text(),pageId:g.uuid(),pageType:g.text(),library:g.uuid(),preview:g.text()},e=>[g.foreignKey({columns:[e.library],foreignColumns:[W.id],name:"library_templates_library_fkey"})]),re=g.pgTable("library_items",{id:g.uuid().defaultRandom().primaryKey().notNull(),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),library:g.uuid(),name:g.text(),description:g.text(),blocks:g.jsonb().default([]),preview:g.text(),group:g.text().default("general"),user:g.text(),html:g.text()},e=>[g.foreignKey({columns:[e.library],foreignColumns:[W.id],name:"library_items_library_fkey"})]),wa=g.pgTable("ai_logs",{id:g.bigint({mode:"number"}).primaryKey().generatedByDefaultAsIdentity({name:"ai_logs_id_seq",startWith:1,increment:1,minValue:1,maxValue:9223372036854776e3,cache:1}),createdAt:g.timestamp({withTimezone:!0,mode:"string"}).defaultNow().notNull(),model:g.text(),totalDuration:g.numeric(),error:g.text(),totalTokens:g.numeric(),tokenUsage:g.jsonb(),user:g.text(),client:g.uuid().defaultRandom(),cost:g.doublePrecision().default(h.sql`'0'`),prompt:g.text(),app:g.uuid()},e=>[g.foreignKey({columns:[e.app],foreignColumns:[ge.id],name:"ai_logs_app_fkey"})]),au=Object.freeze(Object.defineProperty({__proto__:null,aiLogs:wa,appAssets:Ov,appFormSubmissions:Rv,appPages:f,appPagesMetadataIdSeq:Nv,appPagesOnline:he,appPagesRevisions:Se,appUsers:dr,apps:ge,appsOnline:mt,libraries:W,libraryItems:re,libraryTemplates:te,webhookEventsIdSeq:xv},Symbol.toStringTag,{value:"Module"}));Av.config();let Sr=process.env.CHAIBUILDER_DATABASE_URL;if(!Sr)throw new Error("Database not configured. Please set CHAIBUILDER_DATABASE_URL environment variable.");const Cv=e=>e.trim().replace(/^"|"$/g,"");Sr=Cv(Sr);const kv=e=>e.startsWith("postgresql://")||e.startsWith("postgres://");if(!kv(Sr))throw new Error("Database connection string is invalid. Please check your CHAIBUILDER_DATABASE_URL environment variable.");const Pv=Eu(Sr,{max:10}),S=Tu.drizzle(Pv,{schema:au});async function A(e){try{return{data:await e(),error:null}}catch(t){return{data:null,error:t}}}const Dv=e=>{var t;return((t=bu.AI_MODELS.find(r=>r.id===e))==null?void 0:t.multiplier)||1};async function zv({userId:e,startTime:t,error:r,model:n,prompt:a,appId:o}){var c;const s=String(r),i=t>0?new Date().getTime()-t:0,l={model:n,totalDuration:String(i),error:s,totalTokens:"0",tokenUsage:{},cost:0,prompt:a,user:e,client:((c=process==null?void 0:process.env)==null?void 0:c.CHAIBUILDER_CLIENT_ID)||null,app:o},{error:u}=await A(()=>S.insert(wa).values(l));u&&console.error("Error logging AI request error:",u)}async function $v({userId:e,startTime:t,arg:r,prompt:n,model:a,appId:o}){var p,w,b;const s=r==null?void 0:r.totalUsage,i=(w=(p=r==null?void 0:r.providerMetadata)==null?void 0:p.gateway)==null?void 0:w.cost,l=t>0?Math.floor(new Date().getTime()-t):0,u=n.indexOf("USER REQUEST");n=n.substring(u).trim();const c={model:a,totalDuration:String(l),error:null,totalTokens:String(Math.round(((s==null?void 0:s.totalTokens)??0)*Dv(a))),tokenUsage:s,cost:i,prompt:n,user:e,client:((b=process==null?void 0:process.env)==null?void 0:b.CHAIBUILDER_CLIENT_ID)||null,app:o},{error:d}=await A(()=>S.insert(wa).values(c));d&&console.error("Error logging AI request:",d)}class T extends Error{constructor(t,r="ACTION_ERROR",n=400,a){super(t),this.code=r,this.status=n,this.error=a,this.name="ActionError",a&&console.error(a)}}class Z{constructor(){Ie(this,"context",null)}validate(t){if(!t)return!0;try{return this.getValidationSchema().parse(t),!0}catch{return!1}}getValidationErrors(t){if(!t)return null;try{return this.getValidationSchema().parse(t),null}catch(r){return r instanceof v.z.ZodError?r.issues.map(a=>`${a.path.join(".")}: ${a.message}`).join(", "):null}}setContext(t){this.context=t}async verifyAccess(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET",500);const{getChaiAction:t}=await Promise.resolve().then(()=>Tw),r=t("CHECK_USER_ACCESS");if(!r)throw new T("CHECK_USER_ACCESS action not registered","ACCESS_CHECK_NOT_FOUND",500);r.setContext(this.context),await r.execute({})}handleError(t){if(t instanceof T)throw t;if(t instanceof v.z.ZodError){const r=t.issues.map(n=>`${n.path.join(".")}: ${n.message}`).join(", ");throw new T(`Validation failed: ${r}`,"VALIDATION_ERROR")}else{const r=t instanceof Error?t.message:"Unknown error";throw new T(r,"ACTION_ERROR")}}}class Mv extends Z{getValidationSchema(){return v.z.any()}async execute(t){if(!this.context)throw new Error("Context not set");const r=new Date().getTime(),{userId:n,appId:a}=this.context,o=new Ev({onFinish:l=>{var u,c;try{$v({arg:l,prompt:((c=(u=t.messages)==null?void 0:u[t.messages.length-1])==null?void 0:c.content)||"",userId:n,model:t.model||"",startTime:r,appId:a})}catch(d){console.error("Error logging AI request:",d)}},onError:l=>{var u,c;try{zv({error:l,userId:n,startTime:r,model:t.model||"",prompt:((c=(u=t.messages)==null?void 0:u[t.messages.length-1])==null?void 0:c.content)||"",appId:a})}catch(d){console.error("Error logging AI request error:",d)}}}),s={messages:t.messages||[],image:t.image,model:t.model,initiator:t.initiator||null,context:t.context};return{_streamingResponse:!0,_streamResult:await o.handleRequest(s)}}}async function Fv(e){const{appId:t,userId:r}=e;if(!r)throw new T("User ID not found in context","UNAUTHORIZED",401);const{data:n,error:a}=await A(()=>S.select().from(dr).where(h.and(h.eq(dr.app,t),h.eq(dr.user,r),h.eq(dr.status,"active"))));if(a)throw new T("Error checking user access","ERROR_CHECKING_USER_ACCESS",500,a);if(!n||n.length===0)throw new T("User does not have access to this app","UNAUTHORIZED",401);return n[0]}class Lv extends Z{getValidationSchema(){return v.z.any()}async execute(){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET",500);const t=await Fv(this.context);return{access:!0,role:t.role||"user",permissions:t.permissions||null}}}class Uv extends Z{getValidationSchema(){return v.z.object({name:v.z.string().min(1),slug:v.z.string(),pageType:v.z.string(),parent:v.z.string().nullable().optional(),lang:v.z.string().optional(),primaryPage:v.z.string().nullable().optional(),dynamic:v.z.boolean().optional(),hasSlug:v.z.boolean().optional(),template:v.z.string().optional(),seo:v.z.record(v.z.string(),v.z.any()).optional(),jsonLD:v.z.record(v.z.string(),v.z.any()).optional(),dynamicSlugCustom:v.z.string().optional()}).refine(t=>t.lang&&t.lang!==""?!!t.primaryPage:!0,{message:"primaryPage is required when lang option is not empty",path:["primaryPage"]})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context;if((t.hasSlug??t.pageType!=="global")&&t.slug&&await this.doesSlugExist(t.slug,t.pageType))throw new T("Slug already exists","SLUG_ALREADY_USED");let a=[];t.template&&(a=await this.getTemplateBlocks(t.template,r));let o=t.dynamic??!1,s=t.dynamicSlugCustom??"";if(t.primaryPage){const{data:d}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.primaryPage),h.eq(f.app,r)),columns:{dynamic:!0,dynamicSlugCustom:!0}}));d&&(o=d.dynamic??!1,s=d.dynamicSlugCustom??"")}const i={app:r,name:t.name,slug:t.slug,pageType:t.pageType,parent:t.parent??null,lang:t.primaryPage?t.lang??"":"",primaryPage:t.primaryPage??null,dynamic:o,dynamicSlugCustom:s,blocks:a,seo:t.seo??{title:t.name,jsonLD:"",noIndex:!1,ogImage:"",ogTitle:"",noFollow:"",description:"",searchTitle:"",cononicalUrl:"",ogDescription:"",searchDescription:""},jsonld:{},online:!1,currentEditor:null,changes:null,libRefId:null,lastSaved:null},{data:l,error:u}=await A(()=>S.insert(f).values(i).returning({id:f.id,name:f.name,slug:f.slug,lang:f.lang,pageType:f.pageType,parent:f.parent,online:f.online,primaryPage:f.primaryPage}));if(u)throw new T("Failed to create page","ERROR_CREATING_PAGE",500,u);if(!l||l.length===0)throw new T("Failed to create page","INSERT_FAILED");const c=l[0];return{page:j.omit(c.primaryPage?{...c,id:c.primaryPage}:c,["primaryPage"])}}async doesSlugExist(t,r){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:n}=this.context,{data:a,error:o}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.slug,t),h.eq(f.pageType,r),h.eq(f.app,n)),columns:{id:!0}}));if(o)throw new T(`${o.message}`,"SLUG_CHECK_FAILED");return!!a}async getTemplateBlocks(t,r){const{data:n,error:a}=await A(()=>S.select({template:te,library:{id:W.id,app:W.app,name:W.name}}).from(te).leftJoin(W,h.eq(te.library,W.id)).where(h.eq(te.id,t)).limit(1).then(d=>d[0]));if(a)throw new T(`Failed to fetch template: ${a.message||"Unknown database error"}`,"ERROR_GETTING_TEMPLATE_BLOCKS",500,a);if(!n||!n.template||!n.library)throw new T(`Template not found with ID: ${t}`,"TEMPLATE_NOT_FOUND");const o=n.template,s=n.library,{data:i,error:l}=await A(()=>S.query.appPages.findFirst({where:h.eq(f.id,o.pageId),columns:{blocks:!0}}));if(l)throw new T(`Failed to fetch template blocks: ${l.message||"Unknown database error"}`,"ERROR_GETTING_TEMPLATE_BLOCKS",500,l);if(!i)throw new T(`Template page not found with ID: ${o.pageId}`,"TEMPLATE_PAGE_NOT_FOUND");let u=i.blocks||[];if(u=u.map(d=>d._type==="GlobalBlock"&&!j.isEmpty(d.globalBlock)?{...d,_type:"PartialBlock",partialBlockId:d.globalBlock}:d),!(s.app===r)){const d=s.name||"",p=u.filter(b=>b._type==="PartialBlock"&&!j.isEmpty(b.partialBlockId)),w=await Promise.all(p.map(({partialBlockId:b})=>this.copyPartialBlockFromTemplate(b,d,r)));u=u.map(b=>{const _=w.find(I=>(I==null?void 0:I.libRefId)===b.partialBlockId);return _&&(b._name=`${d} - ${b._name}`,b.partialBlockId=_.id),b})}return u}async copyPartialBlockFromTemplate(t,r,n){const{data:a,error:o}=await A(()=>S.query.appPages.findFirst({where:h.eq(f.id,t)}));if(o||!a)return console.error("Failed to fetch partial block:",o),null;const s={...a,id:void 0,app:n,libRefId:t,name:`${r} - ${a.name}`,createdAt:void 0,online:!1,currentEditor:null,changes:null,lastSaved:null},{data:i,error:l}=await A(()=>S.insert(f).values(s).returning({id:f.id,libRefId:f.libRefId}));if(l||!i||i.length===0)return console.error("Failed to create partial block copy:",l),null;const u=i[0];return{id:u.id,libRefId:u.libRefId||t}}}class jv extends Z{getValidationSchema(){return v.z.object({id:v.z.string().min(1)})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{id:r}=t,{error:n}=await A(()=>S.delete(re).where(h.eq(re.id,r)));if(n)throw new T("Failed to delete library item","DELETE_LIBRARY_ITEM_FAILED",500,n);return{success:!0}}}const ie=(e,t)=>(console.error(t),new Error(e));class Ar{constructor(t,r=!1){Ie(this,"appId");Ie(this,"enableLogging");this.appId=t,this.enableLogging=r}async getPagesTree(){const{data:t,error:r}=await A(()=>S.select({id:f.id,name:f.name,slug:f.slug,pageType:f.pageType,primaryPage:f.primaryPage,parent:f.parent,lang:f.lang,dynamic:f.dynamic}).from(f).where(h.eq(f.app,this.appId)));if(r)throw ie("ERROR_GETTING_PAGES",r);const n=(t==null?void 0:t.filter(i=>i.primaryPage===null))||[],a=(t==null?void 0:t.filter(i=>i.primaryPage!==null))||[],o=this.buildPrimaryTree(n);this.enableLogging&&(console.log(`
418
426
  === PRIMARY LANGUAGE PAGES TREE ===`),console.log(JSON.stringify(o,null,2)));const s=this.buildLanguageTree(a,o);return this.enableLogging&&(console.log(`
419
427
  === OTHER LANGUAGE PAGES TREE ===`),console.log(JSON.stringify(s,null,2))),{primaryTree:o,languageTree:s,totalPrimaryPages:n.length,totalLanguagePages:a.length}}buildPrimaryTree(t){const r=new Map;t.forEach(a=>{r.set(a.id,{id:a.id,pageType:a.pageType,primaryPage:a.primaryPage,parent:a.parent,name:a.name,dynamic:a.dynamic,slug:a.slug,children:[]})});const n=[];return t.forEach(a=>{const o=r.get(a.id);if(o)if(a.parent===null)n.push(o);else{const s=r.get(a.parent);s?s.children.push(o):n.push(o)}}),n}buildLanguageTree(t,r){const n=new Map;t.forEach(i=>{const l=i.primaryPage;n.has(l)||n.set(l,[]),n.get(l).push(i)});const a=(i,l)=>{const c=(n.get(i.id)||[]).find(p=>p.lang===l);if(!c)return null;const d={id:c.id,pageType:c.pageType,primaryPage:c.primaryPage,parent:c.parent,lang:c.lang,name:c.name,slug:c.slug,dynamic:c.dynamic,children:[]};return i.children.forEach(p=>{const w=a(p,l);w&&d.children.push(w)}),d},o=[],s=new Set;return t.forEach(i=>{i.lang&&s.add(i.lang)}),s.forEach(i=>{r.forEach(l=>{const u=a(l,i);u&&o.push(u)})}),o}findPageInPrimaryTree(t,r){for(const n of r){if(n.id===t)return n;if(n.children&&n.children.length>0){const a=this.findPageInPrimaryTree(t,n.children);if(a)return a}}return null}findPageInLanguageTree(t,r){for(const n of r){if(n.id===t)return n;if(n.children&&n.children.length>0){const a=this.findPageInLanguageTree(t,n.children);if(a)return a}}return null}calculateSlugFromParent(t,r,n){if(!t){const l=r.split("/").filter(Boolean);return"/"+(l[l.length-1]||"")}let a=this.findPageInPrimaryTree(t,n);if(!a&&(a=this.findPageInLanguageTree(t,n),!a))throw new Error("Parent page not found in tree");const o=r.split("/").filter(Boolean),s=o[o.length-1]||"";return`${a.slug.endsWith("/")?a.slug.slice(0,-1):a.slug}/${s}`}collectNestedChildIds(t){const r=[];for(const n of t.children){r.push(n.id);const a=this.collectNestedChildIds(n);r.push(...a)}return r}findLanguagePagesForPrimary(t,r){const n=[],a=o=>{for(const s of o)s.primaryPage===t&&n.push(s),s.children&&s.children.length>0&&a(s.children)};return a(r),n}collectNestedChildSlugs(t,r,n){const a=[],o=(s,i,l)=>{for(const u of s){const c=this.generateNewChildSlug(u.slug,i,l);a.push({id:u.id,oldSlug:u.slug,newSlug:c}),u.children&&u.children.length>0&&o(u.children,u.slug,c)}};return o(t.children,r,n),a}generateNewChildSlug(t,r,n){return t===r?n:t.startsWith(r+"/")?t.replace(r+"/",n+"/"):t.startsWith(r)&&t!==r?t.replace(r,n):`${n}/${t.split("/").pop()}`}}class qv extends Z{constructor(){super(...arguments);Ie(this,"appId","");Ie(this,"userId","");Ie(this,"pageTreeBuilder")}getValidationSchema(){return v.z.object({id:v.z.string().min(1,"Page ID is required")})}async execute(r){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");this.appId=this.context.appId,this.userId=this.context.userId||"";try{return this.pageTreeBuilder=new Ar(this.appId),await this.deletePage(r.id)}catch(n){if(n instanceof T)throw n;const a=n instanceof Error?n.message:"Failed to delete page";throw new T(a,"DELETE_PAGE_ERROR")}}async deletePage(r){const n=await this.getCurrentEditor(r);if(n&&n!==this.userId)return{tags:[],code:"PAGE_LOCKED",editor:n};const a=await this.pageTreeBuilder.getPagesTree(),o=this.pageTreeBuilder.findPageInLanguageTree(r,a.languageTree),s=this.pageTreeBuilder.findPageInPrimaryTree(r,a.primaryTree);if(!o&&!s)throw ie("ERROR_DELETING_PAGE","Page not found");return o!==null?await this.deleteLanguagePageWithTree(r,o,a):await this.deletePrimaryPageWithTree(r,a)}async performDeletionWithIds(r){const n=[...r].reverse(),{error:a}=await A(()=>S.delete(te).where(h.inArray(te.pageId,n)));if(a)throw ie("DELETE_FAILED",a);const{error:o}=await A(()=>S.delete(Se).where(h.inArray(Se.id,n)));if(o)throw ie("DELETE_FAILED",o);const{error:s}=await A(()=>S.delete(f).where(h.inArray(f.id,n)));if(s)throw ie("DELETE_FAILED",s);const{error:i}=await A(()=>S.delete(he).where(h.inArray(he.id,n)));if(i)throw ie("DELETE_FAILED",i)}async deleteLanguagePageWithTree(r,n,a){const o=n.primaryPage;if(!this.pageTreeBuilder.findPageInPrimaryTree(o,a.primaryTree))throw ie("ERROR_DELETING_PAGE","Primary page not found");const i=this.pageTreeBuilder.collectNestedChildIds(n);return await this.performDeletionWithIds([r,...i]),{tags:[`page-${r}`,...i.map(l=>`page-${l}`)],totalDeleted:1+i.length}}async deletePrimaryPageWithTree(r,n){const a=this.pageTreeBuilder.findPageInPrimaryTree(r,n.primaryTree);if(!a)throw ie("ERROR_DELETING_PAGE","Primary page not found");const o=this.pageTreeBuilder.collectNestedChildIds(a),s=this.pageTreeBuilder.findLanguagePagesForPrimary(r,n.languageTree),i=[];s.forEach(u=>{i.push(u.id);const c=this.pageTreeBuilder.collectNestedChildIds(u);i.push(...c)});const l=[...new Set([...o,...i])];return await this.performDeletionWithIds([r,...l]),{tags:[`page-${r}`,...l.map(u=>`page-${u}`)],totalDeleted:1+l.length}}async getCurrentEditor(r){var o;const{data:n,error:a}=await A(()=>S.select({currentEditor:f.currentEditor}).from(f).where(h.and(h.eq(f.id,r),h.eq(f.app,this.appId))).limit(1));return a||!n||n.length===0?null:((o=n[0])==null?void 0:o.currentEditor)||null}}class Zv extends Z{getValidationSchema(){return v.z.object({revisionId:v.z.string().nonempty("Revision ID is required")})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{error:n}=await A(()=>S.delete(Se).where(h.and(h.eq(Se.uid,t.revisionId),h.eq(Se.app,r))));if(n)throw new T("Failed to delete page revision","DELETE_REVISION_ERROR");return{success:!0}}}class Gv extends Z{getValidationSchema(){return v.z.object({pageId:v.z.string().nonempty(),name:v.z.string().nonempty(),slug:v.z.string().optional()})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context;if(t.slug&&await this.doesSlugExist(t.slug))throw new T("Slug already exists","SLUG_EXISTS");const{data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.id,t.pageId),h.eq(f.app,r))}));if(a)throw a;if(!n)throw new T("Page not found","PAGE_NOT_FOUND");const o={...n,id:void 0,createdAt:void 0,name:t.name,currentEditor:null,changes:null,online:!1,libRefId:null,lastSaved:null,...t.slug&&{slug:t.slug}},[s]=await S.insert(f).values(o).returning({id:f.id});if(!s)throw new T("Failed to create duplicate page","INSERT_FAILED");return{id:s.id}}async doesSlugExist(t){if(!this.context)throw new T("Context not set","CONTEXT_NOT_SET");const{appId:r}=this.context,{data:n,error:a}=await A(()=>S.query.appPages.findFirst({where:h.and(h.eq(f.slug,t),h.eq(f.app,r)),columns:{id:!0}}));if(a)throw new T(`${a.message}`,"SLUG_CHECK_FAILED");return!!n}}var ts={},$n,rs;function Bv(){if(rs)return $n;rs=1;const e={};return process.env.DOTENV_CONFIG_ENCODING!=null&&(e.encoding=process.env.DOTENV_CONFIG_ENCODING),process.env.DOTENV_CONFIG_PATH!=null&&(e.path=process.env.DOTENV_CONFIG_PATH),process.env.DOTENV_CONFIG_QUIET!=null&&(e.quiet=process.env.DOTENV_CONFIG_QUIET),process.env.DOTENV_CONFIG_DEBUG!=null&&(e.debug=process.env.DOTENV_CONFIG_DEBUG),process.env.DOTENV_CONFIG_OVERRIDE!=null&&(e.override=process.env.DOTENV_CONFIG_OVERRIDE),process.env.DOTENV_CONFIG_DOTENV_KEY!=null&&(e.DOTENV_KEY=process.env.DOTENV_CONFIG_DOTENV_KEY),$n=e,$n}var Mn,ns;function Vv(){if(ns)return Mn;ns=1;const e=/^dotenv_config_(encoding|path|quiet|debug|override|DOTENV_KEY)=(.+)$/;return Mn=function(r){const n=r.reduce(function(a,o){const s=o.match(e);return s&&(a[s[1]]=s[2]),a},{});return"quiet"in n||(n.quiet="true"),n},Mn}var as;function Hv(){return as||(as=1,(function(){nu().config(Object.assign({},Bv(),Vv()(process.argv)))})()),ts}Hv();const os="anthropic/claude-haiku-4.5";class Jv extends Z{getValidationSchema(){return v.z.object({prompt:v.z.string().min(1,"Prompt is required"),context:v.z.string().optional(),image:v.z.string().optional()})}async execute(t){if(await this.verifyAccess(),!this.context)throw new T("Context not set","CONTEXT_NOT_SET");try{const r=`You are an expert HTML/CSS developer specializing in Tailwind CSS and shadcn/ui design patterns.
420
428
 
@@ -12088,15 +12088,15 @@ class sw {
12088
12088
  this.options = t, this.model = (t == null ? void 0 : t.model) ?? this.model;
12089
12089
  }
12090
12090
  async handleRequest(t, r) {
12091
- var p, y;
12092
- const { messages: n, image: a, initiator: o = null, model: s } = t, i = s || this.model, l = n.filter((E) => E.role !== "system"), u = l[l.length - 1], c = a ? [
12093
- ...l.slice(0, -1),
12091
+ var E, v;
12092
+ const { messages: n, image: a, initiator: o = null, model: s, context: i } = t, l = s || this.model, u = n.filter((b) => b.role !== "system"), c = u[u.length - 1], d = a ? [
12093
+ ...u.slice(0, -1),
12094
12094
  {
12095
12095
  role: "user",
12096
12096
  content: [
12097
12097
  {
12098
12098
  type: "text",
12099
- text: u.content
12099
+ text: c.content
12100
12100
  },
12101
12101
  {
12102
12102
  type: "image",
@@ -12104,15 +12104,26 @@ class sw {
12104
12104
  }
12105
12105
  ]
12106
12106
  }
12107
- ] : n, d = Qv({
12108
- model: i,
12109
- system: aw(o),
12110
- messages: c,
12107
+ ] : n;
12108
+ let p = aw(o);
12109
+ i && (p += `
12110
+
12111
+ ## Additional Information`, i != null && i.site && (p += `
12112
+
12113
+ ## Website Information
12114
+ ${JSON.stringify(i.site)}`), i != null && i.page && (p += `
12115
+
12116
+ ## Page Information
12117
+ ${JSON.stringify(i.page)}`));
12118
+ const y = Qv({
12119
+ model: l,
12120
+ system: p,
12121
+ messages: d,
12111
12122
  temperature: this.temperature,
12112
- onFinish: ((p = this.options) == null ? void 0 : p.onFinish) ?? La,
12113
- onError: ((y = this.options) == null ? void 0 : y.onError) ?? La
12123
+ onFinish: ((E = this.options) == null ? void 0 : E.onFinish) ?? La,
12124
+ onError: ((v = this.options) == null ? void 0 : v.onError) ?? La
12114
12125
  });
12115
- return r && d.pipeTextStreamToResponse(r), d;
12126
+ return r && y.pipeTextStreamToResponse(r), y;
12116
12127
  }
12117
12128
  isConfigured() {
12118
12129
  return !0;
@@ -12762,7 +12773,8 @@ class Ew extends G {
12762
12773
  messages: t.messages || [],
12763
12774
  image: t.image,
12764
12775
  model: t.model,
12765
- initiator: t.initiator || null
12776
+ initiator: t.initiator || null,
12777
+ context: t.context
12766
12778
  };
12767
12779
  return {
12768
12780
  _streamingResponse: !0,
package/dist/actions.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./actions-registery-2natwC9b.cjs"),h=s=>async o=>{const{apiKey:t,userId:u}=s;try{const i=o,{action:r,data:e}=i,n=a.getChaiAction(r);return n?n.validate(e)?(n.setContext({appId:t,userId:u}),await n.execute(e)):{error:`Validation failed: ${n.getValidationErrors(e)}`,code:"INVALID_REQUEST_DATA",status:400}:{error:`Action ${r} not found`,code:"ACTION_NOT_FOUND",status:404}}catch(i){return console.log("Error in builderApiHandler:",i),i instanceof a.ActionError?{error:i.message,code:i.code,status:i.status||400}:{error:"Something went wrong.",status:500}}},l={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"};exports.ChaiActionsRegistry=a.actionsRegistery;exports.PublishChangesAction=a.PublishChangesAction;exports.db=a.db;exports.getAskAiSystemPrompt=a.getAskAiSystemPrompt;exports.safeQuery=a.safeQuery;exports.schema=a.schema;exports.LANGUAGES=l;exports.initChaiBuilderActionHandler=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./actions-registery-BHbZHkE3.cjs"),h=s=>async o=>{const{apiKey:t,userId:u}=s;try{const i=o,{action:r,data:e}=i,n=a.getChaiAction(r);return n?n.validate(e)?(n.setContext({appId:t,userId:u}),await n.execute(e)):{error:`Validation failed: ${n.getValidationErrors(e)}`,code:"INVALID_REQUEST_DATA",status:400}:{error:`Action ${r} not found`,code:"ACTION_NOT_FOUND",status:404}}catch(i){return console.log("Error in builderApiHandler:",i),i instanceof a.ActionError?{error:i.message,code:i.code,status:i.status||400}:{error:"Something went wrong.",status:500}}},l={ab:"Abkhazian",aa:"Afar",af:"Afrikaans",ak:"Akan",sq:"Albanian",am:"Amharic",ar:"Arabic",an:"Aragonese",hy:"Armenian",as:"Assamese",av:"Avaric",ae:"Avestan",ay:"Aymara",az:"Azerbaijani",bm:"Bambara",ba:"Bashkir",eu:"Basque",be:"Belarusian",bn:"Bengali",bh:"Bihari",bi:"Bislama",bs:"Bosnian",br:"Breton",bg:"Bulgarian",my:"Burmese",ca:"Catalan",ch:"Chamorro",ce:"Chechen",ny:"Chichewa",zh:"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)",cv:"Chuvash",kw:"Cornish",co:"Corsican",cr:"Cree",hr:"Croatian",cs:"Czech",da:"Danish",dv:"Maldivian",nl:"Dutch",dz:"Dzongkha",en:"English",eo:"Esperanto",et:"Estonian",ee:"Ewe",fo:"Faroese",fj:"Fijian",fi:"Finnish",fr:"French",ff:"Fula, Pular",gl:"Galician",gd:"Gaelic (Scottish)",gv:"Manx",ka:"Georgian",de:"German",el:"Greek",kl:"Kalaallisut",gn:"Guarani",gu:"Gujarati",ht:"Haitian Creole",ha:"Hausa",he:"Hebrew",hz:"Herero",hi:"Hindi",ho:"Hiri Motu",hu:"Hungarian",is:"Icelandic",io:"Ido",ig:"Igbo",id:"Indonesian",ia:"Interlingua",ie:"Interlingue",iu:"Inuktitut",ik:"Inupiak",ga:"Irish",it:"Italian",ja:"Japanese",jv:"Javanese",kn:"Kannada",kr:"Kanuri",ks:"Kashmiri",kk:"Kazakh",km:"Khmer",ki:"Kikuyu",rw:"Kinyarwanda",rn:"Kirundi",ky:"Kyrgyz",kv:"Komi",kg:"Kongo",ko:"Korean",ku:"Kurdish",kj:"Kwanyama",lo:"Lao",la:"Latin",lv:"Latvian",li:"Limburgish",ln:"Lingala",lt:"Lithuanian",lu:"Luga-Katanga",lg:"Luganda, Ganda",lb:"Luxembourgish",mk:"Macedonian",mg:"Malagasy",ms:"Malay",ml:"Malayalam",mt:"Maltese",mi:"Maori",mr:"Marathi",mh:"Marshallese",mo:"Moldavian",mn:"Mongolian",na:"Nauru",nv:"Navajo",ng:"Ndonga",nd:"Northern Ndebele",ne:"Nepali",no:"Norwegian",nb:"Norwegian bokmål",nn:"Norwegian nynorsk",ii:"Sichuan Yi",oc:"Occitan",oj:"Ojibwe",cu:"Old Church Slavonic",or:"Oriya",om:"Oromo",os:"Ossetian",pi:"Pāli",ps:"Pashto, Pushto",fa:"Persian (Farsi)",pl:"Polish",pt:"Portuguese",pa:"Punjabi (Eastern)",qu:"Quechua",rm:"Romansh",ro:"Romanian",ru:"Russian",se:"Sami",sm:"Samoan",sg:"Sango",sa:"Sanskrit",sr:"Serbian",sh:"Serbo-Croatian",st:"Sesotho",tn:"Setswana",sn:"Shona",sd:"Sindhi",si:"Sinhalese",ss:"Swati",sk:"Slovak",sl:"Slovenian",so:"Somali",nr:"Southern Ndebele",es:"Spanish",su:"Sundanese",sw:"Swahili (Kiswahili)",sv:"Swedish",tl:"Tagalog",ty:"Tahitian",tg:"Tajik",ta:"Tamil",tt:"Tatar",te:"Telugu",th:"Thai",bo:"Tibetan",ti:"Tigrinya",to:"Tonga",ts:"Tsonga",tr:"Turkish",tk:"Turkmen",tw:"Twi",ug:"Uyghur",uk:"Ukrainian",ur:"Urdu",uz:"Uzbek",ve:"Venda",vi:"Vietnamese",vo:"Volapük",wa:"Wallon",cy:"Welsh",wo:"Wolof",fy:"Western Frisian",xh:"Xhosa",yi:"Yiddish",yo:"Yoruba",za:"Zhuang, Chuang",zu:"Zulu"};exports.ActionError=a.ActionError;exports.ChaiActionsRegistry=a.actionsRegistery;exports.ChaiBaseAction=a.ChaiBaseAction;exports.PublishChangesAction=a.PublishChangesAction;exports.db=a.db;exports.getAskAiSystemPrompt=a.getAskAiSystemPrompt;exports.safeQuery=a.safeQuery;exports.schema=a.schema;exports.LANGUAGES=l;exports.initChaiBuilderActionHandler=h;
package/dist/actions.d.ts CHANGED
@@ -4,6 +4,13 @@ import { PgTableWithColumns } from 'drizzle-orm/pg-core';
4
4
  import { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
5
5
  import { z } from 'zod';
6
6
 
7
+ export declare class ActionError extends Error {
8
+ code: string;
9
+ status: number;
10
+ error?: unknown | undefined;
11
+ constructor(message: string, code?: string, status?: number, error?: unknown | undefined);
12
+ }
13
+
7
14
  declare const aiLogs: PgTableWithColumns< {
8
15
  name: "ai_logs";
9
16
  schema: undefined;
@@ -2479,7 +2486,7 @@ dialect: "pg";
2479
2486
  * ChaiAction Interface
2480
2487
  * Defines the contract for all action handlers
2481
2488
  */
2482
- declare interface ChaiAction<T = any, K = any> {
2489
+ export declare interface ChaiAction<T = any, K = any> {
2483
2490
  validate(data: T): boolean;
2484
2491
  setContext(context: ChaiActionContext): void;
2485
2492
  execute(data: T): Promise<K>;
@@ -2489,7 +2496,7 @@ declare interface ChaiAction<T = any, K = any> {
2489
2496
  * Action Context
2490
2497
  * Contains information and repositories needed by actions
2491
2498
  */
2492
- declare interface ChaiActionContext {
2499
+ export declare interface ChaiActionContext {
2493
2500
  appId: string;
2494
2501
  userId?: string;
2495
2502
  }
@@ -2527,7 +2534,7 @@ declare class ChaiActionsRegistry_2 {
2527
2534
  * Base Action Class
2528
2535
  * Provides common functionality for all action handlers
2529
2536
  */
2530
- declare abstract class ChaiBaseAction<T = any, K = any> implements ChaiAction<T, K> {
2537
+ export declare abstract class ChaiBaseAction<T = any, K = any> implements ChaiAction<T, K> {
2531
2538
  protected context: ChaiActionContext | null;
2532
2539
  /**
2533
2540
  * Abstract method to get the validation schema for the action data
package/dist/actions.js CHANGED
@@ -1,5 +1,5 @@
1
- import { g as u, A as h } from "./actions-registery-wRY05tEE.js";
2
- import { a as b, P as y, d as A, b as S, s as v, c as w } from "./actions-registery-wRY05tEE.js";
1
+ import { g as u, A as h } from "./actions-registery-gJb_wq2F.js";
2
+ import { a as b, C as A, P as y, d as S, b as C, s as v, c as w } from "./actions-registery-gJb_wq2F.js";
3
3
  const c = (r) => async (s) => {
4
4
  const { apiKey: o, userId: t } = r;
5
5
  try {
@@ -206,11 +206,13 @@ const c = (r) => async (s) => {
206
206
  zu: "Zulu"
207
207
  };
208
208
  export {
209
+ h as ActionError,
209
210
  b as ChaiActionsRegistry,
211
+ A as ChaiBaseAction,
210
212
  d as LANGUAGES,
211
213
  y as PublishChangesAction,
212
- A as db,
213
- S as getAskAiSystemPrompt,
214
+ S as db,
215
+ C as getAskAiSystemPrompt,
214
216
  c as initChaiBuilderActionHandler,
215
217
  v as safeQuery,
216
218
  w as schema
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
2
  import { B as r } from "./register-chai-top-bar-D6GjnauV.js";
3
- import { J as i, K as o, M as l, O as c, Q as d } from "./index-BbkBlCE2.js";
4
- import { an as m, a as h, B as u, E as p, P as N } from "./index-Cyz_Iww4.js";
3
+ import { J as i, K as o, M as l, O as c, Q as d } from "./index-OuHV9Ann.js";
4
+ import { an as m, a as h, B as u, E as p, P as N } from "./index-LBTm1Jmk.js";
5
5
  import { TableIcon as f, Edit as T } from "lucide-react";
6
6
  import { useTranslation as E } from "react-i18next";
7
7
  const b = () => {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("./register-chai-top-bar-DyW9GPzV.cjs"),t=require("./index-DonDtb8f.cjs"),s=require("./index-j-XsKW-V.cjs"),n=require("lucide-react"),l=require("react-i18next"),o=()=>{const r=s.useSendRealtimeEvent(),{setPageStatus:i}=s.usePageLockStatus(),{t:a}=l.useTranslation();return e.jsx(s.BlurContainer,{children:e.jsxs(t.Card,{className:"mx-auto w-full max-w-md",children:[e.jsx(t.CardHeader,{className:"space-y-1",children:e.jsxs(t.CardTitle,{className:"flex items-center gap-2 text-xl font-medium",children:[e.jsx(n.TableIcon,{className:"h-6 w-6 text-green-500"}),e.jsx("span",{children:a("Active in Another Tab")})]})}),e.jsx(t.CardContent,{className:"space-y-4",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:a("This page is currently being edited in another tab. You can continue editing here, which will close the editor in the other tab.")})}),e.jsx(t.CardFooter,{className:"flex justify-end gap-2",children:e.jsxs(c.Button,{variant:"default",onClick:()=>{r(s.EVENT.CONTINUE_EDITING_IN_THIS_TAB_REQUEST),i(s.PAGE_STATUS.CHECKING)},className:"gap-2",children:[e.jsx(n.Edit,{className:"h-4 w-4"}),a("Continue Editing Here")]})})]})})};exports.default=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("./register-chai-top-bar-DyW9GPzV.cjs"),t=require("./index-DCJDQs1a.cjs"),s=require("./index-BVwFJWDq.cjs"),n=require("lucide-react"),l=require("react-i18next"),o=()=>{const r=s.useSendRealtimeEvent(),{setPageStatus:i}=s.usePageLockStatus(),{t:a}=l.useTranslation();return e.jsx(s.BlurContainer,{children:e.jsxs(t.Card,{className:"mx-auto w-full max-w-md",children:[e.jsx(t.CardHeader,{className:"space-y-1",children:e.jsxs(t.CardTitle,{className:"flex items-center gap-2 text-xl font-medium",children:[e.jsx(n.TableIcon,{className:"h-6 w-6 text-green-500"}),e.jsx("span",{children:a("Active in Another Tab")})]})}),e.jsx(t.CardContent,{className:"space-y-4",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:a("This page is currently being edited in another tab. You can continue editing here, which will close the editor in the other tab.")})}),e.jsx(t.CardFooter,{className:"flex justify-end gap-2",children:e.jsxs(c.Button,{variant:"default",onClick:()=>{r(s.EVENT.CONTINUE_EDITING_IN_THIS_TAB_REQUEST),i(s.PAGE_STATUS.CHECKING)},className:"gap-2",children:[e.jsx(n.Edit,{className:"h-4 w-4"}),a("Continue Editing Here")]})})]})})};exports.default=o;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("./register-chai-top-bar-DyW9GPzV.cjs"),N=require("./index-DonDtb8f.cjs"),Y=require("./slug-input-DCmvuN69.cjs"),g=require("./index-j-XsKW-V.cjs"),j=require("lodash-es"),ds=require("lucide-react"),v=require("react"),U=require("react-i18next"),Z=({edit:c,lang:h,languages:a,name:u,setLang:t,setName:i,primaryPageObject:o})=>{const{t:s}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"lang",children:s("Language")}),e.jsxs("select",{value:c?"":h,disabled:c||!a.length,onChange:l=>{const x=l.target.value;t(x),!c&&(j.startsWith(u,o==null?void 0:o.name)||u.length===0)&&i(`${o==null?void 0:o.name} - ${g.LANGUAGES[x]}`)},className:"col-span-3 flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx("option",{value:"",disabled:!0,children:c?g.LANGUAGES[h]||h:a.length?s("Choose language"):s("All available language page is created.")}),a.map(l=>e.jsx("option",{value:l,children:g.LANGUAGES[l]||l},l))]})]})},_=({lang:c,name:h,setName:a,parentHasSelectedLanguagePage:u})=>{const{t}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"name",children:t("Page Name")}),e.jsx(k.Input,{id:"name",value:c?h:"",onChange:i=>a(i.target.value),required:!0,placeholder:t(c?"Enter page name":"Choose language to add slug"),disabled:!u||!c})]})},cs=({dynamic:c,isNonSlugPageType:h,isRootPage:a,lang:u,useLanguagePrefix:t,setUseLanguagePrefix:i,isHomePage:o,parentSlug:s,parentHasSelectedLanguagePage:l,slug:x,setSlug:d,setIsSlugValid:S,getSlug:f})=>{const{t:r}=U.useTranslation();return h?null:e.jsxs("div",{className:"space-y-1",children:[a&&u&&e.jsxs("div",{className:"flex items-center space-x-2 pb-1",children:[e.jsx("input",{type:"checkbox",id:"useLanguagePrefix",checked:t,onChange:A=>i(A.target.checked),className:"rounded border-gray-300"}),e.jsxs(N.Label,{htmlFor:"useLanguagePrefix",className:"text-sm font-normal leading-tight",children:["Add language code (",e.jsxs("span",{className:"font-mono text-gray-900",children:["/",u]}),") as slug prefix"]})]}),e.jsx(N.Label,{htmlFor:"slug",children:r("Slug")}),c?e.jsx(k.Alert,{variant:"default",className:"p-2 text-xs font-medium italic text-muted-foreground",children:r("This page will use dynamic slug as defined in primary page")}):e.jsx(Y.SlugInput,{disabled:!u||!l,value:x,onChange:d,placeholder:r(u?o&&t?"Leave empty for home page":"Enter page slug":"Choose language to add slug"),parentSlug:s,onValidationChange:S,fullSlug:f()})]})},H=({parentHasSelectedLanguagePage:c,name:h,lang:a,slug:u,edit:t,id:i,primaryPageObject:o,pages:s,isNonSlugPageType:l,isHomePage:x,useLanguagePrefix:d,isSlugValid:S,isPending:f})=>{const{t:r}=U.useTranslation(),A=f||!h||!a||s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)||!l&&!(x&&d)&&(!S||!u);return e.jsx(N.DialogFooter,{children:c?e.jsxs(e.Fragment,{children:[e.jsx(k.Button,{type:"submit",disabled:A&&!o.dynamic,children:f?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"loader mr-2"}),r(t?"Updating...":"Adding...")]}):r(t?"Update":"Add new language page")}),s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)&&e.jsx("p",{className:"mt-2 text-xs text-red-500",children:r("A page for this language already exists.")})]}):a&&e.jsx(k.Alert,{variant:"destructive",children:e.jsxs("p",{className:"mx-auto w-5/6 text-center",children:[r("You need to create the")," ",e.jsx("span",{className:"font-medium",children:g.LANGUAGES[a]})," ",r("page in the parent to add here.")]})})})},rs=({onSubmit:c,edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s,parentHasSelectedLanguagePage:l,id:x,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,slug:A,isSlugValid:m,isPending:p})=>e.jsxs("form",{onSubmit:c,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s}),e.jsx(_,{lang:a,name:t,setName:o,parentHasSelectedLanguagePage:l})]}),e.jsx(H,{parentHasSelectedLanguagePage:l,name:t,lang:a,slug:A,edit:h,id:x,primaryPageObject:s,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,isSlugValid:m,isPending:p})]}),hs=({loading:c,onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,isNonSlugPageType:d,isRootPage:S,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M,isPending:$,id:q,pages:L})=>c?e.jsx("div",{className:"flex h-80 items-center justify-center",children:e.jsx(ds.Loader,{className:"animate-spin"})}):d?e.jsx(rs,{onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,id:q,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,slug:p,isSlugValid:T,isPending:$}):e.jsxs("form",{onSubmit:h,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l}),e.jsx(_,{lang:u,name:i,setName:s,parentHasSelectedLanguagePage:x}),e.jsx(cs,{dynamic:l==null?void 0:l.dynamic,isNonSlugPageType:d,isRootPage:S,lang:u,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,parentHasSelectedLanguagePage:x,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M})]}),e.jsx(H,{parentHasSelectedLanguagePage:x,name:i,lang:u,slug:p,edit:a,id:q,primaryPageObject:l,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,isSlugValid:T,isPending:$})]}),xs=({id:c,isOpen:h,onClose:a,primaryPage:u,edit:t=!1,preselectedLang:i})=>{const{data:o=[]}=g.useWebsitePrimaryPages(),s=v.useMemo(()=>o.find(n=>n.id===u),[o,u]),[l,x]=v.useState(""),[d,S]=v.useState(""),[f,r]=v.useState(""),[A,m]=v.useState(!0),[p,C]=v.useState(!0),{mutate:T,isPending:I}=g.useCreatePage(),{mutate:M,isPending:$}=g.useUpdatePage(),q=I||$,{data:L,isFetching:b}=g.useWebsiteSetting(),z=g.useFallbackLang(),{data:w,isFetching:y}=g.useLanguagePages(u),{data:F=[],isFetching:P}=g.useLanguagePages(s==null?void 0:s.parent),{data:J=[],isFetching:O}=g.usePageTypes(),{setSelectedLang:ss}=N.useLanguages(),{t:B}=U.useTranslation(),[,es]=g.useSearchParams(),[,ns]=N.useSidebarActivePanel(),ts=b||y||P||O,G=v.useMemo(()=>j.filter(L==null?void 0:L.languages,n=>!j.find(w,{lang:n})),[L,w]),W=v.useMemo(()=>J.find(n=>n.key===(s==null?void 0:s.pageType)),[J,s==null?void 0:s.pageType]),K=!(W!=null&&W.hasSlug),V=(s==null?void 0:s.slug)==="/";v.useEffect(()=>{if(!t&&s&&i&&(S(i),x(`${s.name} - ${g.LANGUAGES[i]}`)),!t||!s)return;const n=w==null?void 0:w.find(is=>is.id===c);if(!n)return;x(n.name),S(n.lang);const E=n.slug||"",{initSlug:R,prefix:us}=Y.parseSlugForEdit(E,s);r(R),C(us)},[t,c,w,s,i]),v.useEffect(()=>{if(i)S(i);else if((G==null?void 0:G.length)===1&&!t){const n=G[0];if(!n||!g.LANGUAGES[n])return;S(n),(!l||l===(s==null?void 0:s.name))&&x(`${s==null?void 0:s.name} - ${g.LANGUAGES[n]}`)}},[i,G,t,l,s]);const{parentSlug:Q,isRootPage:D}=v.useMemo(()=>{if(V||!d)return{parentSlug:void 0,isRootPage:!(s!=null&&s.parent)};if(!(s!=null&&s.parent))return{parentSlug:p?`/${d}`:void 0,isRootPage:!0};const n=F==null?void 0:F.find(E=>E.lang===d);return{parentSlug:n==null?void 0:n.slug,isRootPage:!1}},[s==null?void 0:s.parent,F,p,d,V]),os=v.useMemo(()=>D?!0:!!(F!=null&&F.some(n=>(n==null?void 0:n.lang)===d)),[d,F,D]),X=()=>{let n="";return D?n=`/${p?[d,f].filter(Boolean).join("/"):f}`:n=`${Y.removeSlugExtension(Q)}/${f}`,n.replace(/\/{2,}/g,"/").replace(/\/$/,"")},ls=n=>{const E=new URLSearchParams(window.location.search);z&&n===z?E.delete("lang"):E.set("lang",n),es(E),window.dispatchEvent(new PopStateEvent("popstate"))},as=n=>{n.preventDefault();const E={name:l,lang:d,primaryPage:s==null?void 0:s.id,slug:K?"":X(),pageType:s==null?void 0:s.pageType,...t&&{id:c}},R=()=>{!t&&d&&(ss(d),ls(d)),ns("outline"),a()};t?M(E,{onSuccess:R}):T(E,{onSuccess:R})};return e.jsx(N.Dialog,{open:h,onOpenChange:a,children:h&&e.jsxs(N.DialogContent,{className:"text-slate-600 sm:max-w-[425px]",children:[e.jsxs(N.DialogHeader,{children:[e.jsx(N.DialogTitle,{children:B(t?"Edit language":"Add new language page")}),e.jsx(N.DialogDescription,{className:"font-light",children:B("Enter the details for the language")})]}),e.jsx(hs,{id:c,pages:o,loading:ts,onSubmit:as,edit:t,lang:d,languages:G,name:l,setLang:S,setName:x,primaryPageObject:s,parentHasSelectedLanguagePage:os,isNonSlugPageType:K,isRootPage:D,useLanguagePrefix:p,setUseLanguagePrefix:C,isHomePage:V,parentSlug:Q,slug:f,setSlug:r,isSlugValid:A,setIsSlugValid:m,getSlug:X,isPending:q})]})})};exports.default=xs;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("./register-chai-top-bar-DyW9GPzV.cjs"),N=require("./index-DCJDQs1a.cjs"),Y=require("./slug-input-CiHC5l3r.cjs"),g=require("./index-BVwFJWDq.cjs"),j=require("lodash-es"),ds=require("lucide-react"),v=require("react"),U=require("react-i18next"),Z=({edit:c,lang:h,languages:a,name:u,setLang:t,setName:i,primaryPageObject:o})=>{const{t:s}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"lang",children:s("Language")}),e.jsxs("select",{value:c?"":h,disabled:c||!a.length,onChange:l=>{const x=l.target.value;t(x),!c&&(j.startsWith(u,o==null?void 0:o.name)||u.length===0)&&i(`${o==null?void 0:o.name} - ${g.LANGUAGES[x]}`)},className:"col-span-3 flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx("option",{value:"",disabled:!0,children:c?g.LANGUAGES[h]||h:a.length?s("Choose language"):s("All available language page is created.")}),a.map(l=>e.jsx("option",{value:l,children:g.LANGUAGES[l]||l},l))]})]})},_=({lang:c,name:h,setName:a,parentHasSelectedLanguagePage:u})=>{const{t}=U.useTranslation();return e.jsxs("div",{className:"space-y-1",children:[e.jsx(N.Label,{htmlFor:"name",children:t("Page Name")}),e.jsx(k.Input,{id:"name",value:c?h:"",onChange:i=>a(i.target.value),required:!0,placeholder:t(c?"Enter page name":"Choose language to add slug"),disabled:!u||!c})]})},cs=({dynamic:c,isNonSlugPageType:h,isRootPage:a,lang:u,useLanguagePrefix:t,setUseLanguagePrefix:i,isHomePage:o,parentSlug:s,parentHasSelectedLanguagePage:l,slug:x,setSlug:d,setIsSlugValid:S,getSlug:f})=>{const{t:r}=U.useTranslation();return h?null:e.jsxs("div",{className:"space-y-1",children:[a&&u&&e.jsxs("div",{className:"flex items-center space-x-2 pb-1",children:[e.jsx("input",{type:"checkbox",id:"useLanguagePrefix",checked:t,onChange:A=>i(A.target.checked),className:"rounded border-gray-300"}),e.jsxs(N.Label,{htmlFor:"useLanguagePrefix",className:"text-sm font-normal leading-tight",children:["Add language code (",e.jsxs("span",{className:"font-mono text-gray-900",children:["/",u]}),") as slug prefix"]})]}),e.jsx(N.Label,{htmlFor:"slug",children:r("Slug")}),c?e.jsx(k.Alert,{variant:"default",className:"p-2 text-xs font-medium italic text-muted-foreground",children:r("This page will use dynamic slug as defined in primary page")}):e.jsx(Y.SlugInput,{disabled:!u||!l,value:x,onChange:d,placeholder:r(u?o&&t?"Leave empty for home page":"Enter page slug":"Choose language to add slug"),parentSlug:s,onValidationChange:S,fullSlug:f()})]})},H=({parentHasSelectedLanguagePage:c,name:h,lang:a,slug:u,edit:t,id:i,primaryPageObject:o,pages:s,isNonSlugPageType:l,isHomePage:x,useLanguagePrefix:d,isSlugValid:S,isPending:f})=>{const{t:r}=U.useTranslation(),A=f||!h||!a||s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)||!l&&!(x&&d)&&(!S||!u);return e.jsx(N.DialogFooter,{children:c?e.jsxs(e.Fragment,{children:[e.jsx(k.Button,{type:"submit",disabled:A&&!o.dynamic,children:f?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"loader mr-2"}),r(t?"Updating...":"Adding...")]}):r(t?"Update":"Add new language page")}),s.some(m=>(t?m.id!==i:!0)&&m.parent===(o==null?void 0:o.id)&&m.lang===a)&&e.jsx("p",{className:"mt-2 text-xs text-red-500",children:r("A page for this language already exists.")})]}):a&&e.jsx(k.Alert,{variant:"destructive",children:e.jsxs("p",{className:"mx-auto w-5/6 text-center",children:[r("You need to create the")," ",e.jsx("span",{className:"font-medium",children:g.LANGUAGES[a]})," ",r("page in the parent to add here.")]})})})},rs=({onSubmit:c,edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s,parentHasSelectedLanguagePage:l,id:x,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,slug:A,isSlugValid:m,isPending:p})=>e.jsxs("form",{onSubmit:c,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:h,lang:a,languages:u,name:t,setLang:i,setName:o,primaryPageObject:s}),e.jsx(_,{lang:a,name:t,setName:o,parentHasSelectedLanguagePage:l})]}),e.jsx(H,{parentHasSelectedLanguagePage:l,name:t,lang:a,slug:A,edit:h,id:x,primaryPageObject:s,pages:d,isNonSlugPageType:S,isHomePage:f,useLanguagePrefix:r,isSlugValid:m,isPending:p})]}),hs=({loading:c,onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,isNonSlugPageType:d,isRootPage:S,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M,isPending:$,id:q,pages:L})=>c?e.jsx("div",{className:"flex h-80 items-center justify-center",children:e.jsx(ds.Loader,{className:"animate-spin"})}):d?e.jsx(rs,{onSubmit:h,edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l,parentHasSelectedLanguagePage:x,id:q,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,slug:p,isSlugValid:T,isPending:$}):e.jsxs("form",{onSubmit:h,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(Z,{edit:a,lang:u,languages:t,name:i,setLang:o,setName:s,primaryPageObject:l}),e.jsx(_,{lang:u,name:i,setName:s,parentHasSelectedLanguagePage:x}),e.jsx(cs,{dynamic:l==null?void 0:l.dynamic,isNonSlugPageType:d,isRootPage:S,lang:u,useLanguagePrefix:f,setUseLanguagePrefix:r,isHomePage:A,parentSlug:m,parentHasSelectedLanguagePage:x,slug:p,setSlug:C,isSlugValid:T,setIsSlugValid:I,getSlug:M})]}),e.jsx(H,{parentHasSelectedLanguagePage:x,name:i,lang:u,slug:p,edit:a,id:q,primaryPageObject:l,pages:L,isNonSlugPageType:d,isHomePage:A,useLanguagePrefix:f,isSlugValid:T,isPending:$})]}),xs=({id:c,isOpen:h,onClose:a,primaryPage:u,edit:t=!1,preselectedLang:i})=>{const{data:o=[]}=g.useWebsitePrimaryPages(),s=v.useMemo(()=>o.find(n=>n.id===u),[o,u]),[l,x]=v.useState(""),[d,S]=v.useState(""),[f,r]=v.useState(""),[A,m]=v.useState(!0),[p,C]=v.useState(!0),{mutate:T,isPending:I}=g.useCreatePage(),{mutate:M,isPending:$}=g.useUpdatePage(),q=I||$,{data:L,isFetching:b}=g.useWebsiteSetting(),z=g.useFallbackLang(),{data:w,isFetching:y}=g.useLanguagePages(u),{data:F=[],isFetching:P}=g.useLanguagePages(s==null?void 0:s.parent),{data:J=[],isFetching:O}=g.usePageTypes(),{setSelectedLang:ss}=N.useLanguages(),{t:B}=U.useTranslation(),[,es]=g.useSearchParams(),[,ns]=N.useSidebarActivePanel(),ts=b||y||P||O,G=v.useMemo(()=>j.filter(L==null?void 0:L.languages,n=>!j.find(w,{lang:n})),[L,w]),W=v.useMemo(()=>J.find(n=>n.key===(s==null?void 0:s.pageType)),[J,s==null?void 0:s.pageType]),K=!(W!=null&&W.hasSlug),V=(s==null?void 0:s.slug)==="/";v.useEffect(()=>{if(!t&&s&&i&&(S(i),x(`${s.name} - ${g.LANGUAGES[i]}`)),!t||!s)return;const n=w==null?void 0:w.find(is=>is.id===c);if(!n)return;x(n.name),S(n.lang);const E=n.slug||"",{initSlug:R,prefix:us}=Y.parseSlugForEdit(E,s);r(R),C(us)},[t,c,w,s,i]),v.useEffect(()=>{if(i)S(i);else if((G==null?void 0:G.length)===1&&!t){const n=G[0];if(!n||!g.LANGUAGES[n])return;S(n),(!l||l===(s==null?void 0:s.name))&&x(`${s==null?void 0:s.name} - ${g.LANGUAGES[n]}`)}},[i,G,t,l,s]);const{parentSlug:Q,isRootPage:D}=v.useMemo(()=>{if(V||!d)return{parentSlug:void 0,isRootPage:!(s!=null&&s.parent)};if(!(s!=null&&s.parent))return{parentSlug:p?`/${d}`:void 0,isRootPage:!0};const n=F==null?void 0:F.find(E=>E.lang===d);return{parentSlug:n==null?void 0:n.slug,isRootPage:!1}},[s==null?void 0:s.parent,F,p,d,V]),os=v.useMemo(()=>D?!0:!!(F!=null&&F.some(n=>(n==null?void 0:n.lang)===d)),[d,F,D]),X=()=>{let n="";return D?n=`/${p?[d,f].filter(Boolean).join("/"):f}`:n=`${Y.removeSlugExtension(Q)}/${f}`,n.replace(/\/{2,}/g,"/").replace(/\/$/,"")},ls=n=>{const E=new URLSearchParams(window.location.search);z&&n===z?E.delete("lang"):E.set("lang",n),es(E),window.dispatchEvent(new PopStateEvent("popstate"))},as=n=>{n.preventDefault();const E={name:l,lang:d,primaryPage:s==null?void 0:s.id,slug:K?"":X(),pageType:s==null?void 0:s.pageType,...t&&{id:c}},R=()=>{!t&&d&&(ss(d),ls(d)),ns("outline"),a()};t?M(E,{onSuccess:R}):T(E,{onSuccess:R})};return e.jsx(N.Dialog,{open:h,onOpenChange:a,children:h&&e.jsxs(N.DialogContent,{className:"text-slate-600 sm:max-w-[425px]",children:[e.jsxs(N.DialogHeader,{children:[e.jsx(N.DialogTitle,{children:B(t?"Edit language":"Add new language page")}),e.jsx(N.DialogDescription,{className:"font-light",children:B("Enter the details for the language")})]}),e.jsx(hs,{id:c,pages:o,loading:ts,onSubmit:as,edit:t,lang:d,languages:G,name:l,setLang:S,setName:x,primaryPageObject:s,parentHasSelectedLanguagePage:os,isNonSlugPageType:K,isRootPage:D,useLanguagePrefix:p,setUseLanguagePrefix:C,isHomePage:V,parentSlug:Q,slug:f,setSlug:r,isSlugValid:A,setIsSlugValid:m,getSlug:X,isPending:q})]})})};exports.default=xs;
@@ -1,8 +1,8 @@
1
1
  import { jsx as t, jsxs as g, Fragment as hn } from "react/jsx-runtime";
2
2
  import { z as fn, D as H, B as gn } from "./register-chai-top-bar-D6GjnauV.js";
3
- import { d as mn, n as xn, D as vn, e as pn, f as Sn, g as Nn, o as Fn, p as I, q as wn } from "./index-BbkBlCE2.js";
4
- import { p as An, r as Cn, S as Dn } from "./slug-input-bhZSv9VS.js";
5
- import { e as En, f as $n, g as Ln, h as kn, i as Tn, j as Z, k as Un, c as Bn, L as A } from "./index-Cyz_Iww4.js";
3
+ import { d as mn, n as xn, D as vn, e as pn, f as Sn, g as Nn, o as Fn, p as I, q as wn } from "./index-OuHV9Ann.js";
4
+ import { p as An, r as Cn, S as Dn } from "./slug-input-DLWTMTsO.js";
5
+ import { e as En, f as $n, g as Ln, h as kn, i as Tn, j as Z, k as Un, c as Bn, L as A } from "./index-LBTm1Jmk.js";
6
6
  import { filter as Rn, find as Wn, startsWith as In } from "lodash-es";
7
7
  import { Loader as qn } from "lucide-react";
8
8
  import { useMemo as $, useState as L, useEffect as _ } from "react";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-DonDtb8f.cjs"),c=require("react"),a=require("react-i18next"),u=c.lazy(()=>Promise.resolve().then(()=>require("./page-creator-DqKFL1sB.cjs"))),x=({addEditPage:n,setAddEditPage:r,closePanel:l})=>{const{t:o}=a.useTranslation(),t=!!(n!=null&&n.id),i=!!n;return e.jsx(s.Dialog,{open:i,onOpenChange:()=>r(void 0),children:i&&e.jsxs(s.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(s.DialogHeader,{children:[e.jsxs(s.DialogTitle,{children:[o(t?"Edit":"Add New")," "]}),e.jsx(s.DialogDescription,{children:o(t?"Update your page name":"Enter details to create a new page")})]}),e.jsx(c.Suspense,{fallback:e.jsx("div",{className:"min-h-40"}),children:e.jsx(u,{closePanel:l,addEditPage:n,close:()=>r(void 0)})})]})})};exports.default=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./index-DCJDQs1a.cjs"),c=require("react"),a=require("react-i18next"),u=c.lazy(()=>Promise.resolve().then(()=>require("./page-creator-Cz_ah-qE.cjs"))),x=({addEditPage:n,setAddEditPage:r,closePanel:l})=>{const{t:o}=a.useTranslation(),t=!!(n!=null&&n.id),i=!!n;return e.jsx(s.Dialog,{open:i,onOpenChange:()=>r(void 0),children:i&&e.jsxs(s.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(s.DialogHeader,{children:[e.jsxs(s.DialogTitle,{children:[o(t?"Edit":"Add New")," "]}),e.jsx(s.DialogDescription,{children:o(t?"Update your page name":"Enter details to create a new page")})]}),e.jsx(c.Suspense,{fallback:e.jsx("div",{className:"min-h-40"}),children:e.jsx(u,{closePanel:l,addEditPage:n,close:()=>r(void 0)})})]})})};exports.default=x;
@@ -1,8 +1,8 @@
1
1
  import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
- import { D as t, e as c, f as m, g as p, o as h } from "./index-BbkBlCE2.js";
2
+ import { D as t, e as c, f as m, g as p, o as h } from "./index-OuHV9Ann.js";
3
3
  import { Suspense as f, lazy as D } from "react";
4
4
  import { useTranslation as u } from "react-i18next";
5
- const x = D(() => import("./page-creator-CR-FbJ7C.js")), C = ({
5
+ const x = D(() => import("./page-creator-DKEkuGCO.js")), C = ({
6
6
  addEditPage: o,
7
7
  setAddEditPage: s,
8
8
  closePanel: l
@@ -1,10 +1,10 @@
1
1
  import { jsxs as R, Fragment as X, jsx as m } from "react/jsx-runtime";
2
- import { ab as Y, ac as Z, ad as tt, r as et, a as nt, ae as rt } from "./index-BbkBlCE2.js";
3
- import { C as st, a as ot, b as at, R as it, c as ct, d as lt, T as ut, M as dt, e as mt, f as ft, h as pt, S as ht, i as gt } from "./selected-block-display-D-lzXUfE.js";
2
+ import { ab as Y, ac as Z, ad as tt, r as et, a as nt, ae as rt } from "./index-OuHV9Ann.js";
3
+ import { C as st, a as ot, b as at, R as it, c as ct, d as lt, T as ut, M as dt, e as mt, f as ft, h as pt, S as ht, i as gt } from "./selected-block-display-CidmQ-wz.js";
4
4
  import { Bot as At } from "lucide-react";
5
5
  import { useCallback as kt, Fragment as yt, Suspense as It, lazy as bt, startTransition as Q } from "react";
6
6
  import { toast as St } from "sonner";
7
- import { l as Ct, m as Et } from "./index-Cyz_Iww4.js";
7
+ import { l as Ct, m as Et } from "./index-LBTm1Jmk.js";
8
8
  import { g as U } from "./apply-binding-vAuN-TGV.js";
9
9
  import { useQueryClient as vt } from "@tanstack/react-query";
10
10
  const wt = () => {
@@ -199,7 +199,7 @@ const wt = () => {
199
199
  },
200
200
  [b]
201
201
  );
202
- }, Bt = bt(() => import("./ai-prompt-input-DhVfzVhy.js")), Ft = ({
202
+ }, Bt = bt(() => import("./ai-prompt-input-7iWk72w5.js")), Ft = ({
203
203
  t: I,
204
204
  fetch: F,
205
205
  input: b,
@@ -252,7 +252,8 @@ const wt = () => {
252
252
  role: k.role,
253
253
  content: k.content
254
254
  })),
255
- model: c || u
255
+ model: c || u,
256
+ context: e.context
256
257
  };
257
258
  i && (A.image = i);
258
259
  const W = await F({ body: { action: "ASK_AI", data: A }, streamResponse: !0 });
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),w=require("./index-DonDtb8f.cjs"),p=require("./selected-block-display-BCcwnFzJ.cjs"),Z=require("lucide-react"),T=require("react"),ee=require("sonner"),J=require("./index-j-XsKW-V.cjs"),X=require("./apply-binding-CBSjMYSk.cjs"),te=require("@tanstack/react-query"),ne=()=>{const{addPredefinedBlock:b}=w.useAddBlock(),W=w.useReplaceBlock(),S=w.useRemoveBlocks(),N=te.useQueryClient(),H=async(o,n)=>{if(!n)return;const t=X.getBlocksFromHTML(n);await b(t,o.parentId,o.position)},x=async(o,n)=>{if(!o.blockId||!n)return;const t=X.getBlocksFromHTML(n);await W(o.blockId,t)},B=async o=>{!o.ids||o.ids.length===0||await S(o.ids)};let m=null;const q=(o,n)=>{const t=document.getElementById("canvas-iframe");if(!t)return null;const u=t==null?void 0:t.contentDocument;if(!u)return null;u.querySelectorAll("[data-stream-canvas]").forEach(f=>f.remove());let s=null;if(o&&o!=="undefined"&&(s=u.querySelector(`[data-block-id="${o}"]`)),s||(s=u.body),!s)return null;if(m=u.createElement("div"),m.setAttribute("data-stream-canvas","true"),n!==void 0&&n>=0&&s.children){const f=Math.min(n,s.children.length);f<s.children.length?s.insertBefore(m,s.children[f]):s.appendChild(m)}else s.appendChild(m);return m},F=o=>{var s;const n=document.getElementById("canvas-iframe");if(!n)return null;const t=n==null?void 0:n.contentDocument;if(!t)return null;t.querySelectorAll("[data-stream-canvas]").forEach(f=>f.remove());const d=t.querySelector(`[data-block-id="${o}"]`);return d?(m=t.createElement("div"),m.setAttribute("data-stream-canvas","true"),(s=d.parentNode)==null||s.insertBefore(m,d.nextSibling),d.style.display="none",m):null},L=o=>{const n=document.getElementById("canvas-iframe");(n==null?void 0:n.contentWindow)&&o.scrollIntoView({behavior:"smooth",block:"end"})},M=(o,n,t)=>{const u=q(n,t);u&&(u.innerHTML=o,L(u))},D=(o,n)=>{const t=F(n);t&&(t.innerHTML=o,L(t))},O=o=>{const n=o.match(/^--ACTION=(.+)--$/);if(!n)return null;let u=n[1].replace(/--/g,"").split("|");const s={type:u[0]};return u.forEach(f=>{const e=f.trim();if(e.startsWith("PARENT=")){const A=e.substring(7);s.parentId=A==="undefined"?void 0:A}else e.startsWith("POS=")?s.position=parseInt(e.substring(4)):e.startsWith("ID=")?s.blockId=e.substring(3):e.startsWith("IDS=")&&(s.ids=e.substring(4).split(",").map(A=>A.trim()))}),s};return T.useCallback(async(o,n)=>{const t=new TextDecoder;let u="",d="",s=!1,f=null;const e={isInAction:!1,currentAction:null,htmlBuffer:"",isCapturingHtml:!1},A=async r=>{const i=r.trim();if(i==="--START--"){s=!0;return}if(s){if(i==="--END--"){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),m&&(m.remove(),m=null);return}if(i.startsWith("--THINKING=")){const a=i.substring(11);n(l=>{const h=[...l],g=h[h.length-1];if(g&&g.role==="assistant"&&g.isReasoning)g.content=a,g.isStreaming=!1;else{const $={id:Date.now().toString(),role:"assistant",content:a,isReasoning:!0,isStreaming:!1};h.push($)}return h});return}if(i.startsWith("--TASK=")){const a=i.substring(7),l=`task-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,h={id:l,role:"assistant",content:a.replace(/--$/,""),isTask:!0,isTaskLoading:!0,isTaskCompleted:!1};f=l,n(g=>[...g,h]);return}if(i.startsWith("--MSG=")){const a=i.substring(6),l={id:Date.now().toString(),role:"assistant",content:a.replace(/--$/g,""),isReasoning:!1,isStreaming:!1};n(h=>[...h,l]);return}if(i.startsWith("--ACTION=")){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),e.currentAction=O(i),e.htmlBuffer="",e.isInAction=!0;return}if(i==="--ENDACTION--"){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),f&&(n(a=>a.map(l=>l.isTask?{...l,isTaskCompleted:!0}:l)),f=null),e.currentAction=null,e.htmlBuffer="",e.isInAction=!1;return}if(i==="--HTML--"){e.isCapturingHtml=!0;return}if(i==="--ENDHTML--"){e.isCapturingHtml=!1;return}if(i.startsWith("--HTML--")&&i.includes("--ENDHTML--")){const a=i.match(/^--HTML--(.+?)--ENDHTML--$/);if(a&&e.currentAction){const l=a[1];e.htmlBuffer+=l,e.currentAction.type==="ADD"?M(e.htmlBuffer,e.currentAction.parentId,e.currentAction.position):e.currentAction.type==="EDIT"&&e.currentAction.blockId&&D(e.htmlBuffer,e.currentAction.blockId)}return}e.isCapturingHtml&&e.currentAction&&(e.htmlBuffer+=r+`
2
- `,e.currentAction.type==="ADD"?M(e.htmlBuffer,e.currentAction.parentId,e.currentAction.position):e.currentAction.type==="EDIT"&&e.currentAction.blockId&&D(e.htmlBuffer,e.currentAction.blockId))}},R=async(r,i)=>{try{switch(r.type){case"ADD":await H(r,i);break;case"EDIT":await x(r,i);break;case"REMOVE":await B(r);break}n(a=>a.filter(l=>!l.isTask))}catch(a){console.log(a)}};try{for(;;){const{done:r,value:i}=await o.read();if(r)break;const a=t.decode(i,{stream:!0});u+=a,d+=a;const l=d.split(`
3
- `);d=l.pop()||"";for(const h of l)await A(h)}d&&await A(d),N.invalidateQueries({queryKey:["AI_USAGE"]})}catch(r){console.log(r)}},[S])},re=T.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-C1yoNntS.cjs"))),se=({t:b,fetch:W,input:S,messages:N,setInput:H,isLoading:x,setMessages:B,handleStop:m,setIsLoading:q,currentBlock:F,fallbackLang:L,setCurrentBlock:M,setAbortController:D,selectedModel:O,onModelChange:o})=>{const{models:n}=J.useAIModels(),t=J.useAIConfig(),u=n.find(r=>r.id==="google/gemini-3-flash")||n[0],d=O||u.id,s=w.useSelectedBlock(),[,f]=w.useSelectedBlockIds(),e=w.useBlocksHtmlForAi(),A=ne(),R=async(r,i,a,l)=>{var _,K;if(!r||x)return;M(s);const h=e(s?{blockId:s._id,additionalCoreBlocks:["Icon"]}:{additionalCoreBlocks:["Icon"]});if(s&&!h){ee.toast.error(b("Something went wrong. Please try again."));return}const g={id:Date.now().toString(),role:"user",content:p.getUserPrompt({language:L,userInput:i||r,currentHtml:h}),userMessage:r},$={id:(Date.now()+1).toString(),role:"assistant",content:"",isReasoning:!0,isStreaming:!0};B(k=>[...k,g,$]),q(!0);const Y=new AbortController;D(Y);const v=l||d;(_=t.onAIEvent)==null||_.call(t,{type:"stream_start",model:v,timestamp:Date.now()});try{const k={messages:[g].map(y=>({role:y.role,content:y.content})),model:l||d};a&&(k.image=a);const P=await W({body:{action:"ASK_AI",data:k},streamResponse:!0});if(!P.ok)throw new Error(b("Failed to get AI response"));const I=(K=P.body)==null?void 0:K.getReader();if(!I)throw new Error(b("Response body is not readable"));await A(I,B),B(y=>(T.startTransition(()=>{var G,Q,z,U;const j=y.filter(V=>V.role==="assistant"&&!V.isReasoning&&!V.isTask),E=((G=j[j.length-1])==null?void 0:G.content)||"",C=Date.now();(Q=t.onSuccess)==null||Q.call(t,{content:E,model:v,timestamp:C}),(z=t.onComplete)==null||z.call(t,{success:!0,content:E,model:v,timestamp:C}),(U=t.onAIEvent)==null||U.call(t,{type:"completion",content:E,model:v,timestamp:C})}),y))}catch(k){if(k.name!=="AbortError"){const P={id:(Date.now()+1).toString(),role:"assistant",content:b("Sorry, I encountered an error. Please try again.")};B(I=>[...I,P]),T.startTransition(()=>{var j,E,C;const I=k instanceof Error?k.message:String(k),y=Date.now();(j=t.onError)==null||j.call(t,{error:I,model:v,timestamp:y}),(E=t.onComplete)==null||E.call(t,{success:!1,error:I,model:v,timestamp:y}),(C=t.onAIEvent)==null||C.call(t,{type:"error",error:I,model:v,timestamp:y})})}}finally{H(""),q(!1),M(null),D(null)}};return c.jsxs(c.Fragment,{children:[c.jsxs(p.Conversation,{className:"no-scrollbar",children:[c.jsxs(p.ConversationContent,{className:"gap-2 px-0",children:[N.length===0&&c.jsx(p.ConversationEmptyState,{icon:c.jsx(Z.Bot,{size:48,className:"text-gray-300"}),title:"Start a conversation",description:b("Start a conversation with the AI assistant to add/edit current page")}),N.map(r=>r.role!=="system"&&c.jsx(T.Fragment,{children:r.isReasoning?c.jsxs(p.Reasoning,{isStreaming:r.isStreaming,defaultOpen:!0,children:[c.jsx(p.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),c.jsx(p.ReasoningContent,{className:"p-0 text-xs",children:r.content})]}):r.isTask&&!r.isTaskCompleted?c.jsx(p.TaskMessage,{content:r.content,isLoading:r.isTaskLoading}):c.jsx(p.Message,{from:r.role,children:c.jsx(p.MessageContent,{className:"p-0",children:r.role==="assistant"?c.jsx(p.MessageResponse,{className:"p-0 text-xs",children:r.content}):c.jsx("div",{className:"p-0 text-xs",children:r.userMessage||r.content})})})},r.id))]}),c.jsx(p.ConversationScrollButton,{})]}),c.jsxs("div",{className:"border-gray-200 pb-2",children:[c.jsx(p.SelectedBlockDisplay,{onRemove:()=>f([]),isLoading:x}),c.jsx(T.Suspense,{fallback:c.jsx("div",{children:"Loading..."}),children:c.jsx(re,{input:S,setInput:H,onSend:R,onStop:m,isLoading:x,selectedLang:"",currentBlock:s||F,disabled:(S==null?void 0:S.length)===0,selectedModel:d,onModelChange:o})})]})]})};exports.default=se;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),T=require("./index-DCJDQs1a.cjs"),p=require("./selected-block-display-CAFEOrLV.cjs"),Z=require("lucide-react"),C=require("react"),ee=require("sonner"),J=require("./index-BVwFJWDq.cjs"),X=require("./apply-binding-CBSjMYSk.cjs"),te=require("@tanstack/react-query"),ne=()=>{const{addPredefinedBlock:b}=T.useAddBlock(),W=T.useReplaceBlock(),S=T.useRemoveBlocks(),N=te.useQueryClient(),H=async(o,n)=>{if(!n)return;const t=X.getBlocksFromHTML(n);await b(t,o.parentId,o.position)},w=async(o,n)=>{if(!o.blockId||!n)return;const t=X.getBlocksFromHTML(n);await W(o.blockId,t)},x=async o=>{!o.ids||o.ids.length===0||await S(o.ids)};let m=null;const q=(o,n)=>{const t=document.getElementById("canvas-iframe");if(!t)return null;const u=t==null?void 0:t.contentDocument;if(!u)return null;u.querySelectorAll("[data-stream-canvas]").forEach(f=>f.remove());let s=null;if(o&&o!=="undefined"&&(s=u.querySelector(`[data-block-id="${o}"]`)),s||(s=u.body),!s)return null;if(m=u.createElement("div"),m.setAttribute("data-stream-canvas","true"),n!==void 0&&n>=0&&s.children){const f=Math.min(n,s.children.length);f<s.children.length?s.insertBefore(m,s.children[f]):s.appendChild(m)}else s.appendChild(m);return m},F=o=>{var s;const n=document.getElementById("canvas-iframe");if(!n)return null;const t=n==null?void 0:n.contentDocument;if(!t)return null;t.querySelectorAll("[data-stream-canvas]").forEach(f=>f.remove());const d=t.querySelector(`[data-block-id="${o}"]`);return d?(m=t.createElement("div"),m.setAttribute("data-stream-canvas","true"),(s=d.parentNode)==null||s.insertBefore(m,d.nextSibling),d.style.display="none",m):null},L=o=>{const n=document.getElementById("canvas-iframe");(n==null?void 0:n.contentWindow)&&o.scrollIntoView({behavior:"smooth",block:"end"})},M=(o,n,t)=>{const u=q(n,t);u&&(u.innerHTML=o,L(u))},D=(o,n)=>{const t=F(n);t&&(t.innerHTML=o,L(t))},O=o=>{const n=o.match(/^--ACTION=(.+)--$/);if(!n)return null;let u=n[1].replace(/--/g,"").split("|");const s={type:u[0]};return u.forEach(f=>{const e=f.trim();if(e.startsWith("PARENT=")){const A=e.substring(7);s.parentId=A==="undefined"?void 0:A}else e.startsWith("POS=")?s.position=parseInt(e.substring(4)):e.startsWith("ID=")?s.blockId=e.substring(3):e.startsWith("IDS=")&&(s.ids=e.substring(4).split(",").map(A=>A.trim()))}),s};return C.useCallback(async(o,n)=>{const t=new TextDecoder;let u="",d="",s=!1,f=null;const e={isInAction:!1,currentAction:null,htmlBuffer:"",isCapturingHtml:!1},A=async r=>{const i=r.trim();if(i==="--START--"){s=!0;return}if(s){if(i==="--END--"){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),m&&(m.remove(),m=null);return}if(i.startsWith("--THINKING=")){const a=i.substring(11);n(l=>{const h=[...l],g=h[h.length-1];if(g&&g.role==="assistant"&&g.isReasoning)g.content=a,g.isStreaming=!1;else{const $={id:Date.now().toString(),role:"assistant",content:a,isReasoning:!0,isStreaming:!1};h.push($)}return h});return}if(i.startsWith("--TASK=")){const a=i.substring(7),l=`task-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,h={id:l,role:"assistant",content:a.replace(/--$/,""),isTask:!0,isTaskLoading:!0,isTaskCompleted:!1};f=l,n(g=>[...g,h]);return}if(i.startsWith("--MSG=")){const a=i.substring(6),l={id:Date.now().toString(),role:"assistant",content:a.replace(/--$/g,""),isReasoning:!1,isStreaming:!1};n(h=>[...h,l]);return}if(i.startsWith("--ACTION=")){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),e.currentAction=O(i),e.htmlBuffer="",e.isInAction=!0;return}if(i==="--ENDACTION--"){e.currentAction&&(e.htmlBuffer||e.currentAction.type==="REMOVE")&&await R(e.currentAction,e.htmlBuffer),f&&(n(a=>a.map(l=>l.isTask?{...l,isTaskCompleted:!0}:l)),f=null),e.currentAction=null,e.htmlBuffer="",e.isInAction=!1;return}if(i==="--HTML--"){e.isCapturingHtml=!0;return}if(i==="--ENDHTML--"){e.isCapturingHtml=!1;return}if(i.startsWith("--HTML--")&&i.includes("--ENDHTML--")){const a=i.match(/^--HTML--(.+?)--ENDHTML--$/);if(a&&e.currentAction){const l=a[1];e.htmlBuffer+=l,e.currentAction.type==="ADD"?M(e.htmlBuffer,e.currentAction.parentId,e.currentAction.position):e.currentAction.type==="EDIT"&&e.currentAction.blockId&&D(e.htmlBuffer,e.currentAction.blockId)}return}e.isCapturingHtml&&e.currentAction&&(e.htmlBuffer+=r+`
2
+ `,e.currentAction.type==="ADD"?M(e.htmlBuffer,e.currentAction.parentId,e.currentAction.position):e.currentAction.type==="EDIT"&&e.currentAction.blockId&&D(e.htmlBuffer,e.currentAction.blockId))}},R=async(r,i)=>{try{switch(r.type){case"ADD":await H(r,i);break;case"EDIT":await w(r,i);break;case"REMOVE":await x(r);break}n(a=>a.filter(l=>!l.isTask))}catch(a){console.log(a)}};try{for(;;){const{done:r,value:i}=await o.read();if(r)break;const a=t.decode(i,{stream:!0});u+=a,d+=a;const l=d.split(`
3
+ `);d=l.pop()||"";for(const h of l)await A(h)}d&&await A(d),N.invalidateQueries({queryKey:["AI_USAGE"]})}catch(r){console.log(r)}},[S])},re=C.lazy(()=>Promise.resolve().then(()=>require("./ai-prompt-input-nZ5_Dm7X.cjs"))),se=({t:b,fetch:W,input:S,messages:N,setInput:H,isLoading:w,setMessages:x,handleStop:m,setIsLoading:q,currentBlock:F,fallbackLang:L,setCurrentBlock:M,setAbortController:D,selectedModel:O,onModelChange:o})=>{const{models:n}=J.useAIModels(),t=J.useAIConfig(),u=n.find(r=>r.id==="google/gemini-3-flash")||n[0],d=O||u.id,s=T.useSelectedBlock(),[,f]=T.useSelectedBlockIds(),e=T.useBlocksHtmlForAi(),A=ne(),R=async(r,i,a,l)=>{var _,K;if(!r||w)return;M(s);const h=e(s?{blockId:s._id,additionalCoreBlocks:["Icon"]}:{additionalCoreBlocks:["Icon"]});if(s&&!h){ee.toast.error(b("Something went wrong. Please try again."));return}const g={id:Date.now().toString(),role:"user",content:p.getUserPrompt({language:L,userInput:i||r,currentHtml:h}),userMessage:r},$={id:(Date.now()+1).toString(),role:"assistant",content:"",isReasoning:!0,isStreaming:!0};x(k=>[...k,g,$]),q(!0);const Y=new AbortController;D(Y);const v=l||d;(_=t.onAIEvent)==null||_.call(t,{type:"stream_start",model:v,timestamp:Date.now()});try{const k={messages:[g].map(y=>({role:y.role,content:y.content})),model:l||d,context:t.context};a&&(k.image=a);const P=await W({body:{action:"ASK_AI",data:k},streamResponse:!0});if(!P.ok)throw new Error(b("Failed to get AI response"));const I=(K=P.body)==null?void 0:K.getReader();if(!I)throw new Error(b("Response body is not readable"));await A(I,x),x(y=>(C.startTransition(()=>{var G,Q,z,U;const j=y.filter(V=>V.role==="assistant"&&!V.isReasoning&&!V.isTask),B=((G=j[j.length-1])==null?void 0:G.content)||"",E=Date.now();(Q=t.onSuccess)==null||Q.call(t,{content:B,model:v,timestamp:E}),(z=t.onComplete)==null||z.call(t,{success:!0,content:B,model:v,timestamp:E}),(U=t.onAIEvent)==null||U.call(t,{type:"completion",content:B,model:v,timestamp:E})}),y))}catch(k){if(k.name!=="AbortError"){const P={id:(Date.now()+1).toString(),role:"assistant",content:b("Sorry, I encountered an error. Please try again.")};x(I=>[...I,P]),C.startTransition(()=>{var j,B,E;const I=k instanceof Error?k.message:String(k),y=Date.now();(j=t.onError)==null||j.call(t,{error:I,model:v,timestamp:y}),(B=t.onComplete)==null||B.call(t,{success:!1,error:I,model:v,timestamp:y}),(E=t.onAIEvent)==null||E.call(t,{type:"error",error:I,model:v,timestamp:y})})}}finally{H(""),q(!1),M(null),D(null)}};return c.jsxs(c.Fragment,{children:[c.jsxs(p.Conversation,{className:"no-scrollbar",children:[c.jsxs(p.ConversationContent,{className:"gap-2 px-0",children:[N.length===0&&c.jsx(p.ConversationEmptyState,{icon:c.jsx(Z.Bot,{size:48,className:"text-gray-300"}),title:"Start a conversation",description:b("Start a conversation with the AI assistant to add/edit current page")}),N.map(r=>r.role!=="system"&&c.jsx(C.Fragment,{children:r.isReasoning?c.jsxs(p.Reasoning,{isStreaming:r.isStreaming,defaultOpen:!0,children:[c.jsx(p.ReasoningTrigger,{className:"text-xs [&_p]:text-muted-foreground"}),c.jsx(p.ReasoningContent,{className:"p-0 text-xs",children:r.content})]}):r.isTask&&!r.isTaskCompleted?c.jsx(p.TaskMessage,{content:r.content,isLoading:r.isTaskLoading}):c.jsx(p.Message,{from:r.role,children:c.jsx(p.MessageContent,{className:"p-0",children:r.role==="assistant"?c.jsx(p.MessageResponse,{className:"p-0 text-xs",children:r.content}):c.jsx("div",{className:"p-0 text-xs",children:r.userMessage||r.content})})})},r.id))]}),c.jsx(p.ConversationScrollButton,{})]}),c.jsxs("div",{className:"border-gray-200 pb-2",children:[c.jsx(p.SelectedBlockDisplay,{onRemove:()=>f([]),isLoading:w}),c.jsx(C.Suspense,{fallback:c.jsx("div",{children:"Loading..."}),children:c.jsx(re,{input:S,setInput:H,onSend:R,onStop:m,isLoading:w,selectedLang:"",currentBlock:s||F,disabled:(S==null?void 0:S.length)===0,selectedModel:d,onModelChange:o})})]})]})};exports.default=se;