@rizom/brain 0.2.0-alpha.104 → 0.2.0-alpha.105

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.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- function t(i){return i}var e={name:"@rizom/brain",version:"0.2.0-alpha.104",description:"Brain runtime + CLI \u2014 scaffold, run, and manage AI brain instances",type:"module",bin:{brain:"./dist/brain.js"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./cli":"./dist/brain.js","./plugins":{types:"./dist/plugins.d.ts",import:"./dist/plugins.js"},"./entities":{types:"./dist/entities.d.ts",import:"./dist/entities.js"},"./services":{types:"./dist/services.d.ts",import:"./dist/services.js"},"./interfaces":{types:"./dist/interfaces.d.ts",import:"./dist/interfaces.js"},"./templates":{types:"./dist/templates.d.ts",import:"./dist/templates.js"},"./site":{types:"./dist/site.d.ts",import:"./dist/site.js"},"./themes":{types:"./dist/themes.d.ts",import:"./dist/themes.js"},"./deploy":{types:"./dist/deploy.d.ts",import:"./dist/deploy.js"},"./tsconfig.instance.json":"./tsconfig.instance.json"},files:["dist","templates","tsconfig.instance.json"],scripts:{build:"bun scripts/build.ts",prepublishOnly:"bun scripts/build.ts","dev:start":"bun scripts/build.ts && bun dist/brain.js start",typecheck:"tsc --noEmit",test:"bun test",lint:"eslint . --ext .ts"},dependencies:{"@clack/prompts":"^0.11.0","@modelcontextprotocol/sdk":"^1.24.0","@tailwindcss/postcss":"^4.1.13","@tailwindcss/typography":"^0.5.19",postcss:"^8.5.6",preact:"^10.27.2","preact-render-to-string":"^6.3.1",tailwindcss:"^4.1.11"},optionalDependencies:{"@bitwarden/sdk-napi":"^1.0.0","@libsql/client":"^0.15.7","@tailwindcss/oxide":"^4.1.4","better-sqlite3":"^11.8.1",lightningcss:"^1.29.2","playwright-core":"^1.56.0","react-devtools-core":"^6.1.1",sharp:"^0.34.5"},devDependencies:{"@brains/app":"workspace:*","@brains/content-formatters":"workspace:*","@brains/deploy-support":"workspace:*","@brains/eslint-config":"workspace:*","@brains/mcp-service":"workspace:*","@brains/plugins":"workspace:*","@brains/ranger":"workspace:*","@brains/relay":"workspace:*","@brains/rover":"workspace:*","@brains/site-composition":"workspace:*","@brains/site-default":"workspace:*","@brains/site-personal":"workspace:*","@brains/site-professional":"workspace:*","@brains/theme-default":"workspace:*","@brains/theme-rizom":"workspace:*","@brains/typescript-config":"workspace:*","@brains/utils":"workspace:*","@types/bun":"latest",rollup:"^4.60.2","rollup-plugin-dts":"^6.4.1",typescript:"^5.3.3"},publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/rizom-ai/brains.git",directory:"packages/brain-cli"},license:"Apache-2.0",author:"Yeehaa <yeehaa@rizom.ai> (https://rizom.ai)",homepage:"https://github.com/rizom-ai/brains/tree/main/packages/brain-cli#readme",bugs:"https://github.com/rizom-ai/brains/issues",engines:{bun:">=1.3.3"},keywords:["brain","ai","cli","mcp","agent","personal-ai","knowledge-management"]};var n=e.version;export{t as defineBrain,n as PLUGIN_API_VERSION};
2
+ function t(i){return i}var e={name:"@rizom/brain",version:"0.2.0-alpha.105",description:"Brain runtime + CLI \u2014 scaffold, run, and manage AI brain instances",type:"module",bin:{brain:"./dist/brain.js"},exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./cli":"./dist/brain.js","./plugins":{types:"./dist/plugins.d.ts",import:"./dist/plugins.js"},"./entities":{types:"./dist/entities.d.ts",import:"./dist/entities.js"},"./services":{types:"./dist/services.d.ts",import:"./dist/services.js"},"./interfaces":{types:"./dist/interfaces.d.ts",import:"./dist/interfaces.js"},"./templates":{types:"./dist/templates.d.ts",import:"./dist/templates.js"},"./site":{types:"./dist/site.d.ts",import:"./dist/site.js"},"./themes":{types:"./dist/themes.d.ts",import:"./dist/themes.js"},"./deploy":{types:"./dist/deploy.d.ts",import:"./dist/deploy.js"},"./tsconfig.instance.json":"./tsconfig.instance.json"},files:["dist","templates","tsconfig.instance.json"],scripts:{build:"bun scripts/build.ts",prepublishOnly:"bun scripts/build.ts","dev:start":"bun scripts/build.ts && bun dist/brain.js start",typecheck:"tsc --noEmit",test:"bun test",lint:"eslint . --ext .ts"},dependencies:{"@clack/prompts":"^0.11.0","@modelcontextprotocol/sdk":"^1.24.0","@tailwindcss/postcss":"^4.1.13","@tailwindcss/typography":"^0.5.19",postcss:"^8.5.6",preact:"^10.27.2","preact-render-to-string":"^6.3.1",tailwindcss:"^4.1.11"},optionalDependencies:{"@bitwarden/sdk-napi":"^1.0.0","@libsql/client":"^0.15.7","@tailwindcss/oxide":"^4.1.4","better-sqlite3":"^11.8.1",lightningcss:"^1.29.2","playwright-core":"^1.56.0","react-devtools-core":"^6.1.1",sharp:"^0.34.5"},devDependencies:{"@brains/app":"workspace:*","@brains/content-formatters":"workspace:*","@brains/deploy-support":"workspace:*","@brains/eslint-config":"workspace:*","@brains/mcp-service":"workspace:*","@brains/plugins":"workspace:*","@brains/ranger":"workspace:*","@brains/relay":"workspace:*","@brains/rover":"workspace:*","@brains/site-composition":"workspace:*","@brains/site-default":"workspace:*","@brains/site-personal":"workspace:*","@brains/site-professional":"workspace:*","@brains/theme-default":"workspace:*","@brains/theme-rizom":"workspace:*","@brains/typescript-config":"workspace:*","@brains/utils":"workspace:*","@types/bun":"latest",rollup:"^4.60.2","rollup-plugin-dts":"^6.4.1",typescript:"^5.3.3"},publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/rizom-ai/brains.git",directory:"packages/brain-cli"},license:"Apache-2.0",author:"Yeehaa <yeehaa@rizom.ai> (https://rizom.ai)",homepage:"https://github.com/rizom-ai/brains/tree/main/packages/brain-cli#readme",bugs:"https://github.com/rizom-ai/brains/issues",engines:{bun:">=1.3.3"},keywords:["brain","ai","cli","mcp","agent","personal-ai","knowledge-management"]};var n=e.version;export{t as defineBrain,n as PLUGIN_API_VERSION};
3
3
 
4
- //# debugId=0E54CBAB182483C264756E2164756E21
4
+ //# debugId=AD339DB590FADCAD64756E2164756E21
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -6,6 +6,6 @@
6
6
  "import packageJson from \"../package.json\" with { type: \"json\" };\n\n/**\n * Pre-v1 external plugin API marker.\n *\n * During alpha, the external plugin API compatibility marker tracks the\n * published @rizom/brain package version. Once the plugin API is declared\n * stable, this can move to an independent semver contract such as 1.0.0.\n */\nexport const PLUGIN_API_VERSION = packageJson.version;\n"
7
7
  ],
8
8
  "mappings": ";AAkEO,SAAS,CAAW,CAAC,EAA8C,CACxE,OAAO,iuFC1DF,IAAM,EAAqB,EAAY",
9
- "debugId": "0E54CBAB182483C264756E2164756E21",
9
+ "debugId": "AD339DB590FADCAD64756E2164756E21",
10
10
  "names": []
11
11
  }
package/dist/site.js CHANGED
@@ -1346,7 +1346,7 @@ ${$.join(`
1346
1346
  letter-spacing: 0.02em;
1347
1347
  }
1348
1348
  .printable-footer a { color: inherit; text-decoration: none; overflow-wrap: anywhere; }
1349
- `}},void 0,!1,void 0,this),T2("header",{className:"printable-hero",children:[T2("div",{className:"printable-masthead",children:$.brandLabel&&T2("p",{className:"printable-kicker",children:$.brandLabel},void 0,!1,void 0,this)},void 0,!1,void 0,this),T2("div",{children:[T2("h1",{className:"printable-title",children:$.title},void 0,!1,void 0,this),$.excerpt&&T2("p",{className:"printable-excerpt",children:$.excerpt},void 0,!1,void 0,this),T2("div",{className:"printable-meta",children:[$.author&&T2("span",{children:["By ",$.author]},void 0,!0,void 0,this),X&&T2("span",{children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$.coverImageUrl&&T2("figure",{className:"printable-cover-wrap",children:T2("img",{className:"printable-cover",src:$.coverImageUrl,alt:""},void 0,!1,void 0,this)},void 0,!1,void 0,this),T2(H6,{markdown:$.body,className:"printable-body"},void 0,!1,void 0,this),($.canonicalUrl||$.brandLabel)&&T2("footer",{className:"printable-footer",children:[T2("span",{children:$.brandLabel??"Printable PDF"},void 0,!1,void 0,this),$.canonicalUrl&&T2("a",{href:$.canonicalUrl,children:$.canonicalUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var CU0=26214400,yU0=60000;class cO{context;renderPdf;constructor(w,$={}){this.context=w;this.renderPdf=$.renderPdf??P$}async resolve(w){if(w.sourceEntityType!=="post"||w.attachmentType!==SJ)return;let $=await this.context.entityService.getEntity({entityType:"post",id:w.sourceEntityId});if(!$)return;let X=xU0($,{brandLabel:this.resolveBrandLabel(),coverImageUrl:await this.resolveCoverImageUrl($)}),W=await jU0(SU0(bU0(),"brain-blog-printable-"));try{let Y=await UX({outputDir:W,mediaPath:`/_media/printable/post/${$.id}`,template:Wg,format:"pdf",content:X,siteConfig:{title:X.title,themeMode:"light"},themeCSS:this.context.themeCSS}),G=await AX({rootDir:W});try{return{type:"document",data:await this.renderPdf(G.urlFor(Y.urlPath),{maxBytes:CU0,timeoutMs:yU0,printBackground:!0,preferCSSPageSize:!0}),mimeType:"application/pdf",filename:`${uU0($)}-printable.pdf`}}finally{await G.close()}}finally{await IU0(W,{recursive:!0,force:!0})}}resolveBrandLabel(){let w=this.context.domain?.trim();if(w&&w.length>0)return w;let $=this.context.identity.getProfile().name.trim();return $.length>0?$:void 0}async resolveCoverImageUrl(w){let{frontmatter:$}=Q3(w.content),X=p1.parse($);if(!X.coverImageId)return;let W=await this.context.entityService.getEntity({entityType:"image",id:X.coverImageId});return W?.content.startsWith("data:image/")?W.content:void 0}}function xU0(w,$={}){let{frontmatter:X,content:W}=Q3(w.content),Y=p1.parse(X);return{title:Y.title,body:W,...Y.excerpt?{excerpt:Y.excerpt}:{},...Y.author?{author:Y.author}:{},...Y.publishedAt?{publishedAt:Y.publishedAt}:{},...Y.canonicalUrl?{canonicalUrl:Y.canonicalUrl}:{},...$.coverImageUrl?{coverImageUrl:$.coverImageUrl}:{},...$.brandLabel?{brandLabel:$.brandLabel}:{}}}function uU0(w){let $=w.metadata.slug;return $.length>0?$:y2(w.metadata.title)}var Yg={name:"@brains/blog",private:!0,version:"0.2.0-alpha.104",description:"AI-powered blog post generation from existing brain content",type:"module",exports:{".":"./src/index.ts"},scripts:{typecheck:"tsc --noEmit",test:"bun test",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix",eval:"cd evals && bun run brain-eval"},dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/contracts":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/media-renderer":"workspace:*","@brains/plugins":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};class Kg extends o6{entityType=s3.entityType;schema=r8;adapter=s3;unregisterAtprotoProjection;unregisterPrintableAttachmentProvider;constructor(w={}){super("blog",Yg,w,WA)}getEntityTypeConfig(){return{weight:2,publish:{publishStatuses:["queued","published"]}}}createGenerationHandler(w){return new YA(this.logger.child("BlogGenerationJobHandler"),w)}getTemplates(){return oj()}getDataSources(){return[new JA(this.logger.child("BlogDataSource"))]}async onRegister(w){let{RSSDataSource:$}=await Promise.resolve().then(() => (fg(),Jg));w.entities.registerDataSource(new $(this.logger.child("RSSDataSource"))),await aj(w,this.logger),sj(w,this.logger),ej(w,this.logger),wI(w),this.unregisterPrintableAttachmentProvider=w.attachments.register("post",SJ,new cO(w)),this.unregisterAtprotoProjection=G9.getInstance().register(HF()),this.logger.info("Blog plugin registered (routes auto-generated at /posts/)")}async onShutdown(){this.unregisterPrintableAttachmentProvider?.(),this.unregisterPrintableAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}}I5();d8();K1();w9();f0();K1();w9();var Hg=Z.object({}),CJ=m2.extend({id:Z.literal("site-info"),entityType:Z.literal("site-info"),metadata:Hg}),QX=rW,Pw=cW.omit({url:!0,analyticsScript:!0});K1();class M6 extends w5{constructor(){super({entityType:"site-info",schema:CJ,frontmatterSchema:Pw,isSingleton:!0,hasBody:!1})}createSiteInfoContent(w){let $=Pw.parse(w);return this.buildMarkdown("",$)}parseSiteInfoBody(w){return this.parseFrontmatter(w)}fromMarkdown(w){return{content:w,entityType:"site-info"}}extractMetadata(w){return{}}generateFrontMatter(w){let $=this.parseFrontmatter(w.content);return this.buildMarkdown("",$)}}var ys0=new M6;var os0=new M6;var rU0=new M6;async function S9(w){let X=(await w.listEntities({entityType:"site-info",options:{limit:1}}))[0];if(!X)throw Error("Site info not found \u2014 create a site-info entity");return rU0.parseSiteInfoBody(X.content)}f0();var dU0=Pw.extend({navigation:Z.object({primary:Z.array(Z.object({label:Z.string(),href:Z.string(),priority:Z.number()})),secondary:Z.array(Z.object({label:Z.string(),href:Z.string(),priority:Z.number()}))}),copyright:Z.string(),socialLinks:Z.array(Z.object({platform:Z.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:Z.string().describe("Profile or contact URL"),label:Z.string().optional().describe("Optional display label")})).optional().describe("Social media links from profile entity")});K1();var yJ=l8,N4=R3.extend(yJ.shape);K1();Y9();f0();var cU0=new j5;class xJ{postsListUrl;id="personal:homepage";name="Personal Homepage DataSource";description="Fetches profile and blog posts for a personal homepage";constructor(w){this.postsListUrl=w}async fetch(w,$,X){let W=X.entityService,[Y,G,J]=await Promise.all([h3(W),W.listEntities({entityType:"post",options:{limit:20}}),S9(W)]),f=cU0.parseProfileBody(Y,N4),K=G.sort(z8).slice(0,6).map(J9);if(!J.cta)throw Error("CTA not configured in site-info");let U={profile:f,posts:K,postsListUrl:this.postsListUrl,cta:J.cta};return $.parse(U)}}K1();Y9();var iU0=new j5;class uJ{id="personal:about";name="About Page DataSource";description="Fetches full profile data for the about page";async fetch(w,$,X){let W=await h3(X.entityService),G={profile:iU0.parseProfileBody(W,N4)};return $.parse(G)}}import{jsxDEV as Y1,Fragment as Ug}from"preact/jsx-dev-runtime";function nU0(w){return new Date(w).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}function oU0(w){return w.split(/(\*[^*]+\*)/).map(($,X)=>{if($.startsWith("*")&&$.endsWith("*")&&$.length>2)return Y1("em",{className:"font-sans italic font-medium text-theme-inverse tracking-[-0.015em] [font-variation-settings:'opsz'_72]",children:$.slice(1,-1)},X,!1,void 0,this);return $})}var iO=({profile:w,posts:$,postsListUrl:X,cta:W})=>{let Y=w.tagline??w.description,G=w.name.split(" ")[0];return Y1(Ug,{children:[Y1(V2,{title:w.name,description:w.description??Y??"Personal site",ogType:"website"},void 0,!1,void 0,this),Y1("header",{className:"hero-decor bg-brand text-theme-inverse relative flex flex-col items-center justify-center px-6 md:px-12 pt-32 pb-24 gap-7",children:Y1("div",{className:"w-full max-w-[1100px] mx-auto text-center flex flex-col items-center gap-7",children:[Y&&Y1("h1",{className:"font-heading font-bold text-[clamp(2.5rem,6vw,5rem)] leading-[1.05] tracking-[-0.035em] text-theme-inverse text-balance m-0 [font-variation-settings:'wdth'_90,'opsz'_96]",children:oU0(Y)},void 0,!1,void 0,this),w.description&&Y1("p",{className:"text-[clamp(1.0625rem,1.4vw,1.3125rem)] leading-[1.5] text-theme-inverse opacity-95 max-w-[600px] mx-auto m-0",children:w.description},void 0,!1,void 0,this),Y1("div",{className:"flex flex-wrap justify-center gap-3.5 mt-2",children:[Y1("a",{href:X,className:"inline-flex items-center gap-2 rounded-full py-3.5 px-7 bg-theme text-brand border-2 border-theme font-heading font-semibold text-[15px] hover:bg-theme-subtle hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:["Read the Blog ",Y1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("a",{href:"/about",className:"rounded-full py-3.5 px-7 border-2 border-theme-light text-theme-inverse font-heading font-semibold text-[15px] hover:bg-brand-dark hover:border-theme hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:["About ",G]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$.length>0&&Y1("section",{className:"flex flex-col py-24 px-6 md:px-12 gap-11 bg-theme-subtle",children:[Y1("div",{className:"flex justify-between items-end max-w-layout mx-auto w-full gap-6 flex-wrap",children:[Y1("div",{children:[Y1("span",{className:"block font-heading font-semibold text-[13px] uppercase tracking-[0.22em] text-brand mb-3 [font-variation-settings:'wdth'_85,'opsz'_12]",children:"The Archive"},void 0,!1,void 0,this),Y1("h2",{className:"font-heading font-bold text-[clamp(2.25rem,5vw,3.75rem)] leading-none tracking-[-0.03em] text-heading m-0 [font-variation-settings:'wdth'_92,'opsz'_64]",children:["Recent"," ",Y1("em",{className:"font-sans italic font-medium text-brand [font-variation-settings:'opsz'_60]",children:"posts"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y1("a",{href:X,className:"font-heading font-semibold text-[15px] text-brand inline-flex items-center gap-1.5 pb-1.5 border-b-2 border-current hover:text-brand-dark transition-colors [font-variation-settings:'wdth'_88,'opsz'_16]",children:["View the whole archive ",Y1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y1("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(min(100%,320px),1fr))] gap-8 max-w-layout mx-auto w-full",children:$.map((J)=>Y1("a",{href:J.url,className:"group flex flex-col bg-theme border border-theme rounded-md overflow-hidden hover:-translate-y-1 hover:border-brand/50 transition-all no-underline shadow-sm hover:shadow-lg",children:[J.coverImageUrl?Y1("img",{src:J.coverImageUrl,alt:J.metadata.title,className:"w-full aspect-[16/10] object-cover bg-theme-muted"},void 0,!1,void 0,this):Y1("div",{className:"w-full aspect-[16/10] bg-gradient-to-br from-brand to-accent","aria-hidden":"true"},void 0,!1,void 0,this),Y1("div",{className:"flex flex-col gap-4 p-7 flex-1",children:[Y1("div",{className:"flex flex-wrap items-center gap-3.5 font-heading text-[11px] font-semibold uppercase tracking-[0.18em] text-theme-muted [font-variation-settings:'wdth'_85,'opsz'_11]",children:[J.frontmatter.seriesName&&Y1(Ug,{children:[Y1("span",{className:"text-brand",children:J.frontmatter.seriesName},void 0,!1,void 0,this),Y1("span",{className:"w-[3px] h-[3px] rounded-full bg-current opacity-50","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("time",{children:nU0(J.metadata.publishedAt??J.created)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("h3",{className:"font-sans font-semibold text-[clamp(1.375rem,1.8vw,1.625rem)] leading-[1.18] tracking-[-0.012em] text-heading m-0 text-balance",children:J.metadata.title},void 0,!1,void 0,this),J.frontmatter.excerpt&&Y1("p",{className:"text-base leading-[1.55] text-theme-muted m-0 flex-1",children:J.frontmatter.excerpt},void 0,!1,void 0,this),Y1("span",{className:"inline-flex items-center gap-1.5 font-heading font-semibold text-[13px] uppercase tracking-[0.14em] text-brand mt-1 [font-variation-settings:'wdth'_88,'opsz'_14]",children:["Read the post"," ",Y1("span",{"aria-hidden":"true",className:"transition-transform group-hover:translate-x-1",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("section",{className:"cta-decor bg-theme-dark text-theme-on-dark flex-grow flex flex-col items-center justify-center py-24 px-6 md:px-12 gap-5",children:[Y1("span",{className:"font-heading font-medium text-xs uppercase tracking-[0.24em] text-accent [font-variation-settings:'wdth'_85,'opsz'_12]",children:"Get in touch"},void 0,!1,void 0,this),Y1("h2",{className:"text-center font-heading font-bold text-[clamp(2rem,4vw,3rem)] leading-none tracking-[-0.03em] text-theme-on-dark m-0 [font-variation-settings:'wdth'_90,'opsz'_64]",children:W.heading},void 0,!1,void 0,this),W.subtitle&&Y1("p",{className:"text-center text-base leading-[1.55] text-theme-on-dark opacity-80 max-w-[480px] m-0",children:W.subtitle},void 0,!1,void 0,this),Y1("a",{href:W.buttonLink,className:"inline-flex items-center gap-2 rounded-full py-3.5 px-7 bg-brand text-theme-inverse border-2 border-brand font-heading font-semibold text-[15px] hover:bg-brand-dark hover:-translate-y-0.5 transition-all mt-2 [font-variation-settings:'wdth'_92,'opsz'_18]",children:[W.buttonText," ",Y1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};import{jsxDEV as E2,Fragment as aU0}from"preact/jsx-dev-runtime";var nO=({profile:w})=>{let $=`About ${w.name}`,X=w.description??w.intro??"About page",W=Boolean(w.email??w.website);return E2(aU0,{children:[E2(V2,{title:$,description:X,ogType:"profile"},void 0,!1,void 0,this),E2("section",{className:"hero-decor bg-brand text-theme-inverse relative flex flex-col px-6 md:px-12 pt-32 pb-24",children:E2("div",{className:"w-full max-w-3xl mx-auto flex flex-col gap-6",children:[E2("h1",{className:"font-heading font-bold text-[clamp(2.5rem,6vw,4.5rem)] leading-[1.05] tracking-[-0.035em] text-theme-inverse text-balance m-0 [font-variation-settings:'wdth'_90,'opsz'_96]",children:w.name},void 0,!1,void 0,this),w.description&&E2("p",{className:"text-[clamp(1.0625rem,1.4vw,1.25rem)] leading-[1.55] text-theme-inverse opacity-95 max-w-2xl m-0",children:w.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),w.story&&E2("section",{className:`py-24 px-6 md:px-12 bg-theme-subtle${W?"":" flex-grow"}`,children:E2("div",{className:"max-w-3xl mx-auto",children:E2(H6,{markdown:w.story},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),W&&E2("section",{className:"cta-decor bg-theme-dark text-theme-on-dark flex-grow flex flex-col items-center justify-center py-24 px-6 md:px-12 gap-5",children:[E2("span",{className:"font-heading font-medium text-xs uppercase tracking-[0.24em] text-accent [font-variation-settings:'wdth'_85,'opsz'_12]",children:"Get in touch"},void 0,!1,void 0,this),E2("h2",{className:"text-center font-heading font-bold text-[clamp(2rem,4vw,3rem)] leading-none tracking-[-0.03em] text-theme-on-dark m-0 [font-variation-settings:'wdth'_90,'opsz'_64]",children:["Say"," ",E2("em",{className:"font-sans italic font-medium text-accent [font-variation-settings:'opsz'_72]",children:"hi."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),E2("div",{className:"flex flex-wrap justify-center gap-3.5 mt-2",children:[w.email&&E2("a",{href:`mailto:${w.email}`,className:"inline-flex items-center gap-2 rounded-full py-3.5 px-7 bg-brand text-theme-inverse border-2 border-brand font-heading font-semibold text-[15px] hover:bg-brand-dark hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:["Get in Touch ",E2("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.website&&E2("a",{href:w.website,className:"rounded-full py-3.5 px-7 border-2 border-theme-light text-theme-on-dark font-heading font-semibold text-[15px] hover:bg-brand-dark hover:border-theme hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:"Website"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};var Ag={name:"@brains/site-personal",private:!0,version:"0.2.0-alpha.104",description:"Personal site composition package",type:"module",exports:{".":"./src/index.ts"},files:["src"],scripts:{typecheck:"tsc --noEmit",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix"},dependencies:{"@brains/blog":"workspace:*","@brains/identity-service":"workspace:*","@brains/plugins":"workspace:*","@brains/site-composition":"workspace:*","@brains/site-engine":"workspace:*","@brains/site-info":"workspace:*","@brains/templates":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*",preact:"^10.27.2"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};var tU0=Z.object({entityDisplay:Z.object({post:Z.object({label:Z.string().default("Post"),pluralName:Z.string().optional()}).default({})}).default({})});class oO extends u8{dependencies=["blog"];constructor(w={}){super("personal-site",Ag,w,tU0)}async onRegister(w){w.entities.extendFrontmatterSchema("anchor-profile",yJ);let $=this.config.entityDisplay.post,X=`/${$.pluralName??$.label.toLowerCase()+"s"}`,W=new xJ(X);w.entities.registerDataSource(W);let Y=new uJ;w.entities.registerDataSource(Y);let G=Z.object({profile:N4,posts:Z.array(i5),postsListUrl:Z.string(),cta:QX}),J=Z.object({profile:N4});w.templates.register({homepage:E1({name:"homepage",description:"Personal homepage with recent blog posts",schema:G,dataSourceId:"personal:homepage",requiredPermission:"public",layout:{component:iO}}),about:E1({name:"about",description:"About page with profile",schema:J,dataSourceId:"personal:about",requiredPermission:"public",layout:{component:nO}})}),this.logger.info("Personal site plugin registered successfully")}async getTools(){return[]}async getResources(){return[]}}function aO(w){return new oO(w??{})}var sO=[{id:"home",path:"/",title:"Home",description:"Personal site homepage",layout:"default",navigation:{show:!0,label:"Home",slot:"secondary",priority:10},sections:[{id:"homepage",template:"personal-site:homepage",dataQuery:{}}]},{id:"about",path:"/about",title:"About",description:"About page",layout:"default",navigation:{show:!0,label:"About",slot:"primary",priority:90},sections:[{id:"about",template:"personal-site:about",dataQuery:{}}]}];import{jsxDEV as D5}from"preact/jsx-dev-runtime";function tO({sections:w,siteInfo:$}){let X=[...$.navigation.primary,...$.navigation.secondary].filter((W)=>W.label!=="Home");return D5("div",{className:"flex flex-col min-h-screen bg-theme overflow-x-clip",children:[D5(M$,{title:$.title,titleClassName:"font-heading font-bold text-2xl",navigation:$.navigation.primary,showThemeToggle:!0,themeToggleClassName:"bg-theme-toggle text-theme-toggle-icon hover:bg-theme-toggle-hover rounded-[10px]",...$.logo!==void 0?{logo:$.logo}:{}},void 0,!1,void 0,this),D5("main",{className:"flex-grow flex flex-col",children:w},void 0,!1,void 0,this),D5("footer",{className:"bg-footer text-footer border-t border-theme",children:D5("div",{className:"max-w-layout mx-auto flex flex-col md:flex-row justify-between items-center py-8 px-6 md:px-8",children:[D5("div",{className:"flex flex-col gap-1 mb-4 md:mb-0",children:[D5("span",{className:"text-brand font-heading font-bold text-lg",children:$.title},void 0,!1,void 0,this),$.description&&D5("span",{className:"text-theme-muted text-xs",children:$.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this),D5("nav",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 mb-4 md:mb-0",children:X.map((W)=>D5("a",{href:W.href,className:"text-theme-muted text-[13px] hover:text-brand transition-colors",children:W.label},W.href,!1,void 0,this))},void 0,!1,void 0,this),D5("div",{className:"flex items-center gap-4",children:[$.copyright&&D5("span",{className:"text-theme-light text-[11px]",children:$.copyright},void 0,!1,void 0,this),D5(w4,{variant:"footer",size:"sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}K1();f0();k5();K1();f0();K1();f0();f0();K1();var eU0=Z.enum(["generating","draft","queued","published","failed"]),Qg="publishedAt is required when deck status is published",Fg=(w)=>w.status==="published"&&!w.publishedAt,eO=(w)=>{if(Fg(w))throw Error(Qg)},I3=Z.object({title:Z.string(),slug:Z.string().optional(),description:Z.string().optional(),author:Z.string().optional(),status:eU0,publishedAt:Z.string().datetime().optional(),event:Z.string().optional(),coverImageId:Z.string().optional()}),wA0=I3.pick({title:!0,description:!0,status:!0,publishedAt:!0,coverImageId:!0}).extend({slug:Z.string(),error:Z.string().optional()}).superRefine((w,$)=>{if(!Fg(w))return;$.addIssue({code:Z.ZodIssueCode.custom,path:["publishedAt"],message:Qg})}),Lw=m2.extend({entityType:Z.literal("deck"),metadata:wA0}),gJ=Lw.extend({frontmatter:I3,body:Z.string()}),FX=gJ.extend({url:Z.string().optional(),typeLabel:Z.string().optional(),listUrl:Z.string().optional(),listLabel:Z.string().optional(),coverImageUrl:Z.string().optional(),coverImageWidth:Z.number().optional(),coverImageHeight:Z.number().optional()});class wZ extends w5{constructor(){super({entityType:"deck",schema:Lw,frontmatterSchema:I3,supportsCoverImage:!0})}validateSlideStructure(w){if(!/^---$/gm.test(w))throw Error("Invalid deck: markdown must contain slide separators (---) to be a valid presentation")}toMarkdown(w){let $=this.extractBody(w.content);this.validateSlideStructure($);let X=this.parseFrontMatter(w.content,I3);eO(X);let W={...X,slug:X.slug??w.metadata.slug};return this.buildMarkdown($,W)}fromMarkdown(w){let $=this.parseFrontmatter(w),X=this.extractBody(w);eO($),this.validateSlideStructure(X);let W=$.slug??y2($.title),Y=$.status;return{entityType:"deck",content:w,metadata:{slug:W,title:$.title,description:$.description,status:Y,publishedAt:$.publishedAt,coverImageId:$.coverImageId}}}generateTitle(w){return w.metadata.title}generateSummary(w){if(w.metadata.description)return w.metadata.description;return`Presentation: ${w.metadata.title}`}generateFrontMatter(w){return this.toMarkdown(w)}buildStub(w){let $={title:w.title,slug:w.id,status:"generating"};return{content:this.buildMarkdown(`---
1349
+ `}},void 0,!1,void 0,this),T2("header",{className:"printable-hero",children:[T2("div",{className:"printable-masthead",children:$.brandLabel&&T2("p",{className:"printable-kicker",children:$.brandLabel},void 0,!1,void 0,this)},void 0,!1,void 0,this),T2("div",{children:[T2("h1",{className:"printable-title",children:$.title},void 0,!1,void 0,this),$.excerpt&&T2("p",{className:"printable-excerpt",children:$.excerpt},void 0,!1,void 0,this),T2("div",{className:"printable-meta",children:[$.author&&T2("span",{children:["By ",$.author]},void 0,!0,void 0,this),X&&T2("span",{children:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),$.coverImageUrl&&T2("figure",{className:"printable-cover-wrap",children:T2("img",{className:"printable-cover",src:$.coverImageUrl,alt:""},void 0,!1,void 0,this)},void 0,!1,void 0,this),T2(H6,{markdown:$.body,className:"printable-body"},void 0,!1,void 0,this),($.canonicalUrl||$.brandLabel)&&T2("footer",{className:"printable-footer",children:[T2("span",{children:$.brandLabel??"Printable PDF"},void 0,!1,void 0,this),$.canonicalUrl&&T2("a",{href:$.canonicalUrl,children:$.canonicalUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var CU0=26214400,yU0=60000;class cO{context;renderPdf;constructor(w,$={}){this.context=w;this.renderPdf=$.renderPdf??P$}async resolve(w){if(w.sourceEntityType!=="post"||w.attachmentType!==SJ)return;let $=await this.context.entityService.getEntity({entityType:"post",id:w.sourceEntityId});if(!$)return;let X=xU0($,{brandLabel:this.resolveBrandLabel(),coverImageUrl:await this.resolveCoverImageUrl($)}),W=await jU0(SU0(bU0(),"brain-blog-printable-"));try{let Y=await UX({outputDir:W,mediaPath:`/_media/printable/post/${$.id}`,template:Wg,format:"pdf",content:X,siteConfig:{title:X.title,themeMode:"light"},themeCSS:this.context.themeCSS}),G=await AX({rootDir:W});try{return{type:"document",data:await this.renderPdf(G.urlFor(Y.urlPath),{maxBytes:CU0,timeoutMs:yU0,printBackground:!0,preferCSSPageSize:!0}),mimeType:"application/pdf",filename:`${uU0($)}-printable.pdf`}}finally{await G.close()}}finally{await IU0(W,{recursive:!0,force:!0})}}resolveBrandLabel(){let w=this.context.domain?.trim();if(w&&w.length>0)return w;let $=this.context.identity.getProfile().name.trim();return $.length>0?$:void 0}async resolveCoverImageUrl(w){let{frontmatter:$}=Q3(w.content),X=p1.parse($);if(!X.coverImageId)return;let W=await this.context.entityService.getEntity({entityType:"image",id:X.coverImageId});return W?.content.startsWith("data:image/")?W.content:void 0}}function xU0(w,$={}){let{frontmatter:X,content:W}=Q3(w.content),Y=p1.parse(X);return{title:Y.title,body:W,...Y.excerpt?{excerpt:Y.excerpt}:{},...Y.author?{author:Y.author}:{},...Y.publishedAt?{publishedAt:Y.publishedAt}:{},...Y.canonicalUrl?{canonicalUrl:Y.canonicalUrl}:{},...$.coverImageUrl?{coverImageUrl:$.coverImageUrl}:{},...$.brandLabel?{brandLabel:$.brandLabel}:{}}}function uU0(w){let $=w.metadata.slug;return $.length>0?$:y2(w.metadata.title)}var Yg={name:"@brains/blog",private:!0,version:"0.2.0-alpha.105",description:"AI-powered blog post generation from existing brain content",type:"module",exports:{".":"./src/index.ts"},scripts:{typecheck:"tsc --noEmit",test:"bun test",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix",eval:"cd evals && bun run brain-eval"},dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/contracts":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/media-renderer":"workspace:*","@brains/plugins":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};class Kg extends o6{entityType=s3.entityType;schema=r8;adapter=s3;unregisterAtprotoProjection;unregisterPrintableAttachmentProvider;constructor(w={}){super("blog",Yg,w,WA)}getEntityTypeConfig(){return{weight:2,publish:{publishStatuses:["queued","published"]}}}createGenerationHandler(w){return new YA(this.logger.child("BlogGenerationJobHandler"),w)}getTemplates(){return oj()}getDataSources(){return[new JA(this.logger.child("BlogDataSource"))]}async onRegister(w){let{RSSDataSource:$}=await Promise.resolve().then(() => (fg(),Jg));w.entities.registerDataSource(new $(this.logger.child("RSSDataSource"))),await aj(w,this.logger),sj(w,this.logger),ej(w,this.logger),wI(w),this.unregisterPrintableAttachmentProvider=w.attachments.register("post",SJ,new cO(w)),this.unregisterAtprotoProjection=G9.getInstance().register(HF()),this.logger.info("Blog plugin registered (routes auto-generated at /posts/)")}async onShutdown(){this.unregisterPrintableAttachmentProvider?.(),this.unregisterPrintableAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}}I5();d8();K1();w9();f0();K1();w9();var Hg=Z.object({}),CJ=m2.extend({id:Z.literal("site-info"),entityType:Z.literal("site-info"),metadata:Hg}),QX=rW,Pw=cW.omit({url:!0,analyticsScript:!0});K1();class M6 extends w5{constructor(){super({entityType:"site-info",schema:CJ,frontmatterSchema:Pw,isSingleton:!0,hasBody:!1})}createSiteInfoContent(w){let $=Pw.parse(w);return this.buildMarkdown("",$)}parseSiteInfoBody(w){return this.parseFrontmatter(w)}fromMarkdown(w){return{content:w,entityType:"site-info"}}extractMetadata(w){return{}}generateFrontMatter(w){let $=this.parseFrontmatter(w.content);return this.buildMarkdown("",$)}}var ys0=new M6;var os0=new M6;var rU0=new M6;async function S9(w){let X=(await w.listEntities({entityType:"site-info",options:{limit:1}}))[0];if(!X)throw Error("Site info not found \u2014 create a site-info entity");return rU0.parseSiteInfoBody(X.content)}f0();var dU0=Pw.extend({navigation:Z.object({primary:Z.array(Z.object({label:Z.string(),href:Z.string(),priority:Z.number()})),secondary:Z.array(Z.object({label:Z.string(),href:Z.string(),priority:Z.number()}))}),copyright:Z.string(),socialLinks:Z.array(Z.object({platform:Z.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:Z.string().describe("Profile or contact URL"),label:Z.string().optional().describe("Optional display label")})).optional().describe("Social media links from profile entity")});K1();var yJ=l8,N4=R3.extend(yJ.shape);K1();Y9();f0();var cU0=new j5;class xJ{postsListUrl;id="personal:homepage";name="Personal Homepage DataSource";description="Fetches profile and blog posts for a personal homepage";constructor(w){this.postsListUrl=w}async fetch(w,$,X){let W=X.entityService,[Y,G,J]=await Promise.all([h3(W),W.listEntities({entityType:"post",options:{limit:20}}),S9(W)]),f=cU0.parseProfileBody(Y,N4),K=G.sort(z8).slice(0,6).map(J9);if(!J.cta)throw Error("CTA not configured in site-info");let U={profile:f,posts:K,postsListUrl:this.postsListUrl,cta:J.cta};return $.parse(U)}}K1();Y9();var iU0=new j5;class uJ{id="personal:about";name="About Page DataSource";description="Fetches full profile data for the about page";async fetch(w,$,X){let W=await h3(X.entityService),G={profile:iU0.parseProfileBody(W,N4)};return $.parse(G)}}import{jsxDEV as Y1,Fragment as Ug}from"preact/jsx-dev-runtime";function nU0(w){return new Date(w).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}function oU0(w){return w.split(/(\*[^*]+\*)/).map(($,X)=>{if($.startsWith("*")&&$.endsWith("*")&&$.length>2)return Y1("em",{className:"font-sans italic font-medium text-theme-inverse tracking-[-0.015em] [font-variation-settings:'opsz'_72]",children:$.slice(1,-1)},X,!1,void 0,this);return $})}var iO=({profile:w,posts:$,postsListUrl:X,cta:W})=>{let Y=w.tagline??w.description,G=w.name.split(" ")[0];return Y1(Ug,{children:[Y1(V2,{title:w.name,description:w.description??Y??"Personal site",ogType:"website"},void 0,!1,void 0,this),Y1("header",{className:"hero-decor bg-brand text-theme-inverse relative flex flex-col items-center justify-center px-6 md:px-12 pt-32 pb-24 gap-7",children:Y1("div",{className:"w-full max-w-[1100px] mx-auto text-center flex flex-col items-center gap-7",children:[Y&&Y1("h1",{className:"font-heading font-bold text-[clamp(2.5rem,6vw,5rem)] leading-[1.05] tracking-[-0.035em] text-theme-inverse text-balance m-0 [font-variation-settings:'wdth'_90,'opsz'_96]",children:oU0(Y)},void 0,!1,void 0,this),w.description&&Y1("p",{className:"text-[clamp(1.0625rem,1.4vw,1.3125rem)] leading-[1.5] text-theme-inverse opacity-95 max-w-[600px] mx-auto m-0",children:w.description},void 0,!1,void 0,this),Y1("div",{className:"flex flex-wrap justify-center gap-3.5 mt-2",children:[Y1("a",{href:X,className:"inline-flex items-center gap-2 rounded-full py-3.5 px-7 bg-theme text-brand border-2 border-theme font-heading font-semibold text-[15px] hover:bg-theme-subtle hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:["Read the Blog ",Y1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("a",{href:"/about",className:"rounded-full py-3.5 px-7 border-2 border-theme-light text-theme-inverse font-heading font-semibold text-[15px] hover:bg-brand-dark hover:border-theme hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:["About ",G]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$.length>0&&Y1("section",{className:"flex flex-col py-24 px-6 md:px-12 gap-11 bg-theme-subtle",children:[Y1("div",{className:"flex justify-between items-end max-w-layout mx-auto w-full gap-6 flex-wrap",children:[Y1("div",{children:[Y1("span",{className:"block font-heading font-semibold text-[13px] uppercase tracking-[0.22em] text-brand mb-3 [font-variation-settings:'wdth'_85,'opsz'_12]",children:"The Archive"},void 0,!1,void 0,this),Y1("h2",{className:"font-heading font-bold text-[clamp(2.25rem,5vw,3.75rem)] leading-none tracking-[-0.03em] text-heading m-0 [font-variation-settings:'wdth'_92,'opsz'_64]",children:["Recent"," ",Y1("em",{className:"font-sans italic font-medium text-brand [font-variation-settings:'opsz'_60]",children:"posts"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y1("a",{href:X,className:"font-heading font-semibold text-[15px] text-brand inline-flex items-center gap-1.5 pb-1.5 border-b-2 border-current hover:text-brand-dark transition-colors [font-variation-settings:'wdth'_88,'opsz'_16]",children:["View the whole archive ",Y1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y1("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(min(100%,320px),1fr))] gap-8 max-w-layout mx-auto w-full",children:$.map((J)=>Y1("a",{href:J.url,className:"group flex flex-col bg-theme border border-theme rounded-md overflow-hidden hover:-translate-y-1 hover:border-brand/50 transition-all no-underline shadow-sm hover:shadow-lg",children:[J.coverImageUrl?Y1("img",{src:J.coverImageUrl,alt:J.metadata.title,className:"w-full aspect-[16/10] object-cover bg-theme-muted"},void 0,!1,void 0,this):Y1("div",{className:"w-full aspect-[16/10] bg-gradient-to-br from-brand to-accent","aria-hidden":"true"},void 0,!1,void 0,this),Y1("div",{className:"flex flex-col gap-4 p-7 flex-1",children:[Y1("div",{className:"flex flex-wrap items-center gap-3.5 font-heading text-[11px] font-semibold uppercase tracking-[0.18em] text-theme-muted [font-variation-settings:'wdth'_85,'opsz'_11]",children:[J.frontmatter.seriesName&&Y1(Ug,{children:[Y1("span",{className:"text-brand",children:J.frontmatter.seriesName},void 0,!1,void 0,this),Y1("span",{className:"w-[3px] h-[3px] rounded-full bg-current opacity-50","aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("time",{children:nU0(J.metadata.publishedAt??J.created)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("h3",{className:"font-sans font-semibold text-[clamp(1.375rem,1.8vw,1.625rem)] leading-[1.18] tracking-[-0.012em] text-heading m-0 text-balance",children:J.metadata.title},void 0,!1,void 0,this),J.frontmatter.excerpt&&Y1("p",{className:"text-base leading-[1.55] text-theme-muted m-0 flex-1",children:J.frontmatter.excerpt},void 0,!1,void 0,this),Y1("span",{className:"inline-flex items-center gap-1.5 font-heading font-semibold text-[13px] uppercase tracking-[0.14em] text-brand mt-1 [font-variation-settings:'wdth'_88,'opsz'_14]",children:["Read the post"," ",Y1("span",{"aria-hidden":"true",className:"transition-transform group-hover:translate-x-1",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y1("section",{className:"cta-decor bg-theme-dark text-theme-on-dark flex-grow flex flex-col items-center justify-center py-24 px-6 md:px-12 gap-5",children:[Y1("span",{className:"font-heading font-medium text-xs uppercase tracking-[0.24em] text-accent [font-variation-settings:'wdth'_85,'opsz'_12]",children:"Get in touch"},void 0,!1,void 0,this),Y1("h2",{className:"text-center font-heading font-bold text-[clamp(2rem,4vw,3rem)] leading-none tracking-[-0.03em] text-theme-on-dark m-0 [font-variation-settings:'wdth'_90,'opsz'_64]",children:W.heading},void 0,!1,void 0,this),W.subtitle&&Y1("p",{className:"text-center text-base leading-[1.55] text-theme-on-dark opacity-80 max-w-[480px] m-0",children:W.subtitle},void 0,!1,void 0,this),Y1("a",{href:W.buttonLink,className:"inline-flex items-center gap-2 rounded-full py-3.5 px-7 bg-brand text-theme-inverse border-2 border-brand font-heading font-semibold text-[15px] hover:bg-brand-dark hover:-translate-y-0.5 transition-all mt-2 [font-variation-settings:'wdth'_92,'opsz'_18]",children:[W.buttonText," ",Y1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};import{jsxDEV as E2,Fragment as aU0}from"preact/jsx-dev-runtime";var nO=({profile:w})=>{let $=`About ${w.name}`,X=w.description??w.intro??"About page",W=Boolean(w.email??w.website);return E2(aU0,{children:[E2(V2,{title:$,description:X,ogType:"profile"},void 0,!1,void 0,this),E2("section",{className:"hero-decor bg-brand text-theme-inverse relative flex flex-col px-6 md:px-12 pt-32 pb-24",children:E2("div",{className:"w-full max-w-3xl mx-auto flex flex-col gap-6",children:[E2("h1",{className:"font-heading font-bold text-[clamp(2.5rem,6vw,4.5rem)] leading-[1.05] tracking-[-0.035em] text-theme-inverse text-balance m-0 [font-variation-settings:'wdth'_90,'opsz'_96]",children:w.name},void 0,!1,void 0,this),w.description&&E2("p",{className:"text-[clamp(1.0625rem,1.4vw,1.25rem)] leading-[1.55] text-theme-inverse opacity-95 max-w-2xl m-0",children:w.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),w.story&&E2("section",{className:`py-24 px-6 md:px-12 bg-theme-subtle${W?"":" flex-grow"}`,children:E2("div",{className:"max-w-3xl mx-auto",children:E2(H6,{markdown:w.story},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),W&&E2("section",{className:"cta-decor bg-theme-dark text-theme-on-dark flex-grow flex flex-col items-center justify-center py-24 px-6 md:px-12 gap-5",children:[E2("span",{className:"font-heading font-medium text-xs uppercase tracking-[0.24em] text-accent [font-variation-settings:'wdth'_85,'opsz'_12]",children:"Get in touch"},void 0,!1,void 0,this),E2("h2",{className:"text-center font-heading font-bold text-[clamp(2rem,4vw,3rem)] leading-none tracking-[-0.03em] text-theme-on-dark m-0 [font-variation-settings:'wdth'_90,'opsz'_64]",children:["Say"," ",E2("em",{className:"font-sans italic font-medium text-accent [font-variation-settings:'opsz'_72]",children:"hi."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),E2("div",{className:"flex flex-wrap justify-center gap-3.5 mt-2",children:[w.email&&E2("a",{href:`mailto:${w.email}`,className:"inline-flex items-center gap-2 rounded-full py-3.5 px-7 bg-brand text-theme-inverse border-2 border-brand font-heading font-semibold text-[15px] hover:bg-brand-dark hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:["Get in Touch ",E2("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.website&&E2("a",{href:w.website,className:"rounded-full py-3.5 px-7 border-2 border-theme-light text-theme-on-dark font-heading font-semibold text-[15px] hover:bg-brand-dark hover:border-theme hover:-translate-y-0.5 transition-all [font-variation-settings:'wdth'_92,'opsz'_18]",children:"Website"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};var Ag={name:"@brains/site-personal",private:!0,version:"0.2.0-alpha.105",description:"Personal site composition package",type:"module",exports:{".":"./src/index.ts"},files:["src"],scripts:{typecheck:"tsc --noEmit",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix"},dependencies:{"@brains/blog":"workspace:*","@brains/identity-service":"workspace:*","@brains/plugins":"workspace:*","@brains/site-composition":"workspace:*","@brains/site-engine":"workspace:*","@brains/site-info":"workspace:*","@brains/templates":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*",preact:"^10.27.2"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};var tU0=Z.object({entityDisplay:Z.object({post:Z.object({label:Z.string().default("Post"),pluralName:Z.string().optional()}).default({})}).default({})});class oO extends u8{dependencies=["blog"];constructor(w={}){super("personal-site",Ag,w,tU0)}async onRegister(w){w.entities.extendFrontmatterSchema("anchor-profile",yJ);let $=this.config.entityDisplay.post,X=`/${$.pluralName??$.label.toLowerCase()+"s"}`,W=new xJ(X);w.entities.registerDataSource(W);let Y=new uJ;w.entities.registerDataSource(Y);let G=Z.object({profile:N4,posts:Z.array(i5),postsListUrl:Z.string(),cta:QX}),J=Z.object({profile:N4});w.templates.register({homepage:E1({name:"homepage",description:"Personal homepage with recent blog posts",schema:G,dataSourceId:"personal:homepage",requiredPermission:"public",layout:{component:iO}}),about:E1({name:"about",description:"About page with profile",schema:J,dataSourceId:"personal:about",requiredPermission:"public",layout:{component:nO}})}),this.logger.info("Personal site plugin registered successfully")}async getTools(){return[]}async getResources(){return[]}}function aO(w){return new oO(w??{})}var sO=[{id:"home",path:"/",title:"Home",description:"Personal site homepage",layout:"default",navigation:{show:!0,label:"Home",slot:"secondary",priority:10},sections:[{id:"homepage",template:"personal-site:homepage",dataQuery:{}}]},{id:"about",path:"/about",title:"About",description:"About page",layout:"default",navigation:{show:!0,label:"About",slot:"primary",priority:90},sections:[{id:"about",template:"personal-site:about",dataQuery:{}}]}];import{jsxDEV as D5}from"preact/jsx-dev-runtime";function tO({sections:w,siteInfo:$}){let X=[...$.navigation.primary,...$.navigation.secondary].filter((W)=>W.label!=="Home");return D5("div",{className:"flex flex-col min-h-screen bg-theme overflow-x-clip",children:[D5(M$,{title:$.title,titleClassName:"font-heading font-bold text-2xl",navigation:$.navigation.primary,showThemeToggle:!0,themeToggleClassName:"bg-theme-toggle text-theme-toggle-icon hover:bg-theme-toggle-hover rounded-[10px]",...$.logo!==void 0?{logo:$.logo}:{}},void 0,!1,void 0,this),D5("main",{className:"flex-grow flex flex-col",children:w},void 0,!1,void 0,this),D5("footer",{className:"bg-footer text-footer border-t border-theme",children:D5("div",{className:"max-w-layout mx-auto flex flex-col md:flex-row justify-between items-center py-8 px-6 md:px-8",children:[D5("div",{className:"flex flex-col gap-1 mb-4 md:mb-0",children:[D5("span",{className:"text-brand font-heading font-bold text-lg",children:$.title},void 0,!1,void 0,this),$.description&&D5("span",{className:"text-theme-muted text-xs",children:$.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this),D5("nav",{className:"flex flex-wrap justify-center gap-x-6 gap-y-2 mb-4 md:mb-0",children:X.map((W)=>D5("a",{href:W.href,className:"text-theme-muted text-[13px] hover:text-brand transition-colors",children:W.label},W.href,!1,void 0,this))},void 0,!1,void 0,this),D5("div",{className:"flex items-center gap-4",children:[$.copyright&&D5("span",{className:"text-theme-light text-[11px]",children:$.copyright},void 0,!1,void 0,this),D5(w4,{variant:"footer",size:"sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}K1();f0();k5();K1();f0();K1();f0();f0();K1();var eU0=Z.enum(["generating","draft","queued","published","failed"]),Qg="publishedAt is required when deck status is published",Fg=(w)=>w.status==="published"&&!w.publishedAt,eO=(w)=>{if(Fg(w))throw Error(Qg)},I3=Z.object({title:Z.string(),slug:Z.string().optional(),description:Z.string().optional(),author:Z.string().optional(),status:eU0,publishedAt:Z.string().datetime().optional(),event:Z.string().optional(),coverImageId:Z.string().optional()}),wA0=I3.pick({title:!0,description:!0,status:!0,publishedAt:!0,coverImageId:!0}).extend({slug:Z.string(),error:Z.string().optional()}).superRefine((w,$)=>{if(!Fg(w))return;$.addIssue({code:Z.ZodIssueCode.custom,path:["publishedAt"],message:Qg})}),Lw=m2.extend({entityType:Z.literal("deck"),metadata:wA0}),gJ=Lw.extend({frontmatter:I3,body:Z.string()}),FX=gJ.extend({url:Z.string().optional(),typeLabel:Z.string().optional(),listUrl:Z.string().optional(),listLabel:Z.string().optional(),coverImageUrl:Z.string().optional(),coverImageWidth:Z.number().optional(),coverImageHeight:Z.number().optional()});class wZ extends w5{constructor(){super({entityType:"deck",schema:Lw,frontmatterSchema:I3,supportsCoverImage:!0})}validateSlideStructure(w){if(!/^---$/gm.test(w))throw Error("Invalid deck: markdown must contain slide separators (---) to be a valid presentation")}toMarkdown(w){let $=this.extractBody(w.content);this.validateSlideStructure($);let X=this.parseFrontMatter(w.content,I3);eO(X);let W={...X,slug:X.slug??w.metadata.slug};return this.buildMarkdown($,W)}fromMarkdown(w){let $=this.parseFrontmatter(w),X=this.extractBody(w);eO($),this.validateSlideStructure(X);let W=$.slug??y2($.title),Y=$.status;return{entityType:"deck",content:w,metadata:{slug:W,title:$.title,description:$.description,status:Y,publishedAt:$.publishedAt,coverImageId:$.coverImageId}}}generateTitle(w){return w.metadata.title}generateSummary(w){if(w.metadata.description)return w.metadata.description;return`Presentation: ${w.metadata.title}`}generateFrontMatter(w){return this.toMarkdown(w)}buildStub(w){let $={title:w.title,slug:w.id,status:"generating"};return{content:this.buildMarkdown(`---
1350
1350
  `,$),metadata:{title:w.title,slug:w.id,status:"generating"}}}}var OX=new wZ;f0();k5();var $A0=Z.object({markdown:Z.string().describe("Markdown content with slide separators (---)")}),$Z=E1({name:"deck-detail",description:"Render a presentation deck as Reveal.js slides",schema:$A0,dataSourceId:"decks:entities",requiredPermission:"public",layout:{component:pQ,fullscreen:!0}});k5();f0();var XZ=Z.object({decks:Z.array(gJ)}),WZ=Z.object({decks:Z.array(FX),pageTitle:Z.string().optional(),pageLabel:Z.string().optional()});import{jsxDEV as YZ}from"preact/jsx-dev-runtime";var XA0="Presentations",GZ=({decks:w,pageLabel:$})=>{let X=w.map((Y)=>({id:Y.id,url:Y.url,title:Y.frontmatter.title,date:Y.frontmatter.publishedAt??Y.created,description:Y.frontmatter.description}));return YZ("div",{className:"deck-list bg-theme",children:YZ("div",{className:"container mx-auto max-w-[1100px] px-6 py-16 md:px-12 md:py-24",children:YZ(N$,{label:$&&$!=="Decks"?$:XA0,items:X},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)};g2();var _e0=Z.object({message:Z.string()});r3();r3();g2();hW();class mJ{schema;config;processor=H8();constructor(w,$){this.schema=w;this.config=$}getLabels(){let w={};for(let $ of this.config.mappings)w[$.key]=$.label;return w}generateBodyTemplate(){if(this.config.mappings.length===0)return"";let w=[];for(let $ of this.config.mappings)w.push(`## ${$.label}`,"",`<!-- Write your ${$.label.toLowerCase()} here -->`,"");return w.join(`
1351
1351
  `).trimEnd()+`
1352
1352
  `}format(w){try{let $=[`# ${this.config.title}`,""];for(let X of this.config.mappings)this.formatField(w,X,$,2);return $.join(`
@@ -1659,12 +1659,12 @@ ${f}`,templateName:"decks:description"})).description,await this.reportProgress(
1659
1659
  color: var(--carousel-accent);
1660
1660
  font-weight: 600;
1661
1661
  }
1662
- `}},void 0,!1,void 0,this),Y.map((U,A)=>d2("section",{className:`deck-carousel-slide${A===0?" is-cover":""}`,children:[d2("header",{className:"deck-carousel-header",children:d2("span",{className:"deck-carousel-wordmark","aria-label":X??$,children:[d2("span",{className:"wm-primary",children:G.primary},void 0,!1,void 0,this),G.secondary!==void 0&&d2(OA0,{children:[d2("span",{className:"wm-dot",children:"."},void 0,!1,void 0,this),d2("span",{className:"wm-secondary",children:G.secondary},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),d2("div",{className:"deck-carousel-body",children:d2("div",{className:"deck-carousel-content",dangerouslySetInnerHTML:{__html:K(U.markdown)}},void 0,!1,void 0,this)},void 0,!1,void 0,this),d2("footer",{className:"deck-carousel-footer",children:[d2("span",{className:"deck-carousel-footer-meta",children:W??$},void 0,!1,void 0,this),d2("span",{className:"deck-carousel-counter","aria-label":`Slide ${A+1} of ${J}`,children:[d2("span",{className:"deck-carousel-counter-current",children:String(A+1).padStart(2,"0")},void 0,!1,void 0,this)," / ",d2("span",{children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},A,!0,void 0,this))]},void 0,!0,void 0,this)}import{mkdtemp as ZA0,rm as zA0}from"fs/promises";import{tmpdir as BA0}from"os";import{join as VA0}from"path";f0();var MA0=26214400,NA0=60000,qg=20;class OZ{context;renderPdf;getThemeMode;constructor(w,$={}){this.context=w;this.renderPdf=$.renderPdf??P$,this.getThemeMode=$.getThemeMode??(async()=>"dark")}async resolve(w){if(w.sourceEntityType!=="deck")return;let $=await this.context.entityService.getEntity({entityType:"deck",id:w.sourceEntityId});if(!$)return;let X=hA0($,{brandLabel:this.resolveBrandLabel()});if(X.slides.length>qg)throw Error(`Refusing to render carousel with ${X.slides.length} slides; maxSlides=${qg}`);let W=await this.getThemeMode(),Y=await ZA0(VA0(BA0(),"brain-deck-carousel-"));try{let G=await UX({outputDir:Y,mediaPath:`/_media/carousel/${$.id}`,template:Rg,format:"pdf",content:X,siteConfig:{title:X.title,themeMode:W},themeCSS:this.context.themeCSS}),J=await AX({rootDir:Y});try{return{type:"document",data:await this.renderPdf(J.urlFor(G.urlPath),{maxBytes:MA0,timeoutMs:NA0,printBackground:!0,preferCSSPageSize:!0}),mimeType:"application/pdf",filename:`${RA0($)}-carousel.pdf`}}finally{await J.close()}}finally{await zA0(Y,{recursive:!0,force:!0})}}resolveBrandLabel(){let w=this.context.domain?.trim();if(w&&w.length>0)return w;let $=this.context.identity.getProfile().name;return $.length>0?$:void 0}}function hA0(w,$={}){let{frontmatter:X,content:W}=Q3(w.content),Y=typeof X.title==="string"?X.title:w.metadata.title,G=typeof X.event==="string"&&X.event.length>0?X.event:void 0,J=W.split(/^---$/gm).map((f)=>f.trim()).filter((f)=>f.length>0).map((f)=>({markdown:f}));return{title:Y,slides:J,...$.brandLabel?{brandLabel:$.brandLabel}:{},...G?{eyebrow:G}:{}}}function RA0(w){let $=w.metadata.slug;return $.length>0?$:y2(w.metadata.title)}K1();async function Dg({entity:w,config:$}){let X=Lw.parse(w),W=P1(X.content,I3),Y=W.metadata;return{$type:"ai.rizom.brain.deck",title:Y.title,...Y.slug&&{slug:Y.slug},...Y.description&&{description:Y.description},body:W.content,format:"text/markdown",...Y.author&&{author:Y.author},...Y.event&&{event:Y.event},...Y.publishedAt&&{publishedAt:Y.publishedAt},...$.brainDid&&{brainDid:$.brainDid},...$.anchorDid&&{anchorDid:$.anchorDid},sourceEntityType:"deck",sourceEntityId:X.id,createdAt:X.created,...X.updated&&{updatedAt:X.updated}}}function ZZ(){return{entityType:"deck",collection:"ai.rizom.brain.deck",lexicon:z5["ai.rizom.brain.deck"],validate:!1,buildRecord:Dg}}var vg={name:"@brains/decks",private:!0,version:"0.2.0-alpha.104",description:"Presentation decks plugin for creating and viewing slide presentations",type:"module",exports:{".":"./src/index.ts"},scripts:{typecheck:"tsc --noEmit",test:"bun test",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix",eval:"cd evals && bun run brain-eval"},dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/content-formatters":"workspace:*","@brains/contracts":"workspace:*","@brains/image":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/media-renderer":"workspace:*","@brains/plugins":"workspace:*","@brains/site-info":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};class Pg extends o6{deps;entityType=OX.entityType;schema=OX.schema;adapter=OX;unregisterCarouselAttachmentProvider;unregisterAtprotoProjection;constructor(w={}){super("decks",vg);this.deps=w}createGenerationHandler(w){return new FZ(this.logger.child("DeckGenerationJobHandler"),w)}getTemplates(){return{"deck-detail":$Z,"deck-list":fZ,generation:Og,description:Zg}}getDataSources(){return[new QZ(this.logger)]}getEntityTypeConfig(){return{weight:1.5}}async onRegister(w){await this.registerWithPublishPipeline(w),this.subscribeToPublishExecute(w),this.registerCarouselAttachmentProvider(w),this.registerEvalHandlers(w),this.unregisterAtprotoProjection=G9.getInstance().register(ZZ()),this.logger.info("Decks plugin registered")}async onShutdown(){this.unregisterCarouselAttachmentProvider?.(),this.unregisterCarouselAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}async registerWithPublishPipeline(w){await w.messaging.send({type:"publish:register",payload:{entityType:"deck",provider:{name:"internal",publish:async()=>({id:"internal"})}}})}subscribeToPublishExecute(w){w.messaging.subscribe("publish:execute",async($)=>{let{entityType:X,entityId:W}=$.payload;if(X!=="deck")return{success:!0};try{let Y=await w.entityService.getEntity({entityType:"deck",id:W});if(!Y)return await w.messaging.send({type:"publish:report:failure",payload:{entityType:X,entityId:W,error:`Deck not found: ${W}`}}),{success:!0};if(Y.metadata.status==="published")return{success:!0};let G=new Date().toISOString(),J={...Y,metadata:{...Y.metadata,status:"published",publishedAt:G}};await w.entityService.updateEntity({entity:{...J,content:this.adapter.toMarkdown(J)}}),await w.messaging.send({type:"publish:report:success",payload:{entityType:X,entityId:W,result:{id:W}}})}catch(Y){await w.messaging.send({type:"publish:report:failure",payload:{entityType:X,entityId:W,error:s1(Y)}})}return{success:!0}})}registerCarouselAttachmentProvider(w){let $={...this.deps,getThemeMode:this.deps.getThemeMode??(async()=>{try{return(await S9(w.entityService)).themeMode??"dark"}catch{return"dark"}})};this.unregisterCarouselAttachmentProvider=w.attachments.register("deck",Ng,new OZ(w,$))}registerEvalHandlers(w){w.eval.registerHandler("generateDeck",async($)=>{let X=Z.object({prompt:Z.string(),event:Z.string().optional()}).parse($);return w.ai.generate({prompt:`${X.prompt}${X.event?`
1662
+ `}},void 0,!1,void 0,this),Y.map((U,A)=>d2("section",{className:`deck-carousel-slide${A===0?" is-cover":""}`,children:[d2("header",{className:"deck-carousel-header",children:d2("span",{className:"deck-carousel-wordmark","aria-label":X??$,children:[d2("span",{className:"wm-primary",children:G.primary},void 0,!1,void 0,this),G.secondary!==void 0&&d2(OA0,{children:[d2("span",{className:"wm-dot",children:"."},void 0,!1,void 0,this),d2("span",{className:"wm-secondary",children:G.secondary},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),d2("div",{className:"deck-carousel-body",children:d2("div",{className:"deck-carousel-content",dangerouslySetInnerHTML:{__html:K(U.markdown)}},void 0,!1,void 0,this)},void 0,!1,void 0,this),d2("footer",{className:"deck-carousel-footer",children:[d2("span",{className:"deck-carousel-footer-meta",children:W??$},void 0,!1,void 0,this),d2("span",{className:"deck-carousel-counter","aria-label":`Slide ${A+1} of ${J}`,children:[d2("span",{className:"deck-carousel-counter-current",children:String(A+1).padStart(2,"0")},void 0,!1,void 0,this)," / ",d2("span",{children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},A,!0,void 0,this))]},void 0,!0,void 0,this)}import{mkdtemp as ZA0,rm as zA0}from"fs/promises";import{tmpdir as BA0}from"os";import{join as VA0}from"path";f0();var MA0=26214400,NA0=60000,qg=20;class OZ{context;renderPdf;getThemeMode;constructor(w,$={}){this.context=w;this.renderPdf=$.renderPdf??P$,this.getThemeMode=$.getThemeMode??(async()=>"dark")}async resolve(w){if(w.sourceEntityType!=="deck")return;let $=await this.context.entityService.getEntity({entityType:"deck",id:w.sourceEntityId});if(!$)return;let X=hA0($,{brandLabel:this.resolveBrandLabel()});if(X.slides.length>qg)throw Error(`Refusing to render carousel with ${X.slides.length} slides; maxSlides=${qg}`);let W=await this.getThemeMode(),Y=await ZA0(VA0(BA0(),"brain-deck-carousel-"));try{let G=await UX({outputDir:Y,mediaPath:`/_media/carousel/${$.id}`,template:Rg,format:"pdf",content:X,siteConfig:{title:X.title,themeMode:W},themeCSS:this.context.themeCSS}),J=await AX({rootDir:Y});try{return{type:"document",data:await this.renderPdf(J.urlFor(G.urlPath),{maxBytes:MA0,timeoutMs:NA0,printBackground:!0,preferCSSPageSize:!0}),mimeType:"application/pdf",filename:`${RA0($)}-carousel.pdf`}}finally{await J.close()}}finally{await zA0(Y,{recursive:!0,force:!0})}}resolveBrandLabel(){let w=this.context.domain?.trim();if(w&&w.length>0)return w;let $=this.context.identity.getProfile().name;return $.length>0?$:void 0}}function hA0(w,$={}){let{frontmatter:X,content:W}=Q3(w.content),Y=typeof X.title==="string"?X.title:w.metadata.title,G=typeof X.event==="string"&&X.event.length>0?X.event:void 0,J=W.split(/^---$/gm).map((f)=>f.trim()).filter((f)=>f.length>0).map((f)=>({markdown:f}));return{title:Y,slides:J,...$.brandLabel?{brandLabel:$.brandLabel}:{},...G?{eyebrow:G}:{}}}function RA0(w){let $=w.metadata.slug;return $.length>0?$:y2(w.metadata.title)}K1();async function Dg({entity:w,config:$}){let X=Lw.parse(w),W=P1(X.content,I3),Y=W.metadata;return{$type:"ai.rizom.brain.deck",title:Y.title,...Y.slug&&{slug:Y.slug},...Y.description&&{description:Y.description},body:W.content,format:"text/markdown",...Y.author&&{author:Y.author},...Y.event&&{event:Y.event},...Y.publishedAt&&{publishedAt:Y.publishedAt},...$.brainDid&&{brainDid:$.brainDid},...$.anchorDid&&{anchorDid:$.anchorDid},sourceEntityType:"deck",sourceEntityId:X.id,createdAt:X.created,...X.updated&&{updatedAt:X.updated}}}function ZZ(){return{entityType:"deck",collection:"ai.rizom.brain.deck",lexicon:z5["ai.rizom.brain.deck"],validate:!1,buildRecord:Dg}}var vg={name:"@brains/decks",private:!0,version:"0.2.0-alpha.105",description:"Presentation decks plugin for creating and viewing slide presentations",type:"module",exports:{".":"./src/index.ts"},scripts:{typecheck:"tsc --noEmit",test:"bun test",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix",eval:"cd evals && bun run brain-eval"},dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/content-formatters":"workspace:*","@brains/contracts":"workspace:*","@brains/image":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/media-renderer":"workspace:*","@brains/plugins":"workspace:*","@brains/site-info":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};class Pg extends o6{deps;entityType=OX.entityType;schema=OX.schema;adapter=OX;unregisterCarouselAttachmentProvider;unregisterAtprotoProjection;constructor(w={}){super("decks",vg);this.deps=w}createGenerationHandler(w){return new FZ(this.logger.child("DeckGenerationJobHandler"),w)}getTemplates(){return{"deck-detail":$Z,"deck-list":fZ,generation:Og,description:Zg}}getDataSources(){return[new QZ(this.logger)]}getEntityTypeConfig(){return{weight:1.5}}async onRegister(w){await this.registerWithPublishPipeline(w),this.subscribeToPublishExecute(w),this.registerCarouselAttachmentProvider(w),this.registerEvalHandlers(w),this.unregisterAtprotoProjection=G9.getInstance().register(ZZ()),this.logger.info("Decks plugin registered")}async onShutdown(){this.unregisterCarouselAttachmentProvider?.(),this.unregisterCarouselAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}async registerWithPublishPipeline(w){await w.messaging.send({type:"publish:register",payload:{entityType:"deck",provider:{name:"internal",publish:async()=>({id:"internal"})}}})}subscribeToPublishExecute(w){w.messaging.subscribe("publish:execute",async($)=>{let{entityType:X,entityId:W}=$.payload;if(X!=="deck")return{success:!0};try{let Y=await w.entityService.getEntity({entityType:"deck",id:W});if(!Y)return await w.messaging.send({type:"publish:report:failure",payload:{entityType:X,entityId:W,error:`Deck not found: ${W}`}}),{success:!0};if(Y.metadata.status==="published")return{success:!0};let G=new Date().toISOString(),J={...Y,metadata:{...Y.metadata,status:"published",publishedAt:G}};await w.entityService.updateEntity({entity:{...J,content:this.adapter.toMarkdown(J)}}),await w.messaging.send({type:"publish:report:success",payload:{entityType:X,entityId:W,result:{id:W}}})}catch(Y){await w.messaging.send({type:"publish:report:failure",payload:{entityType:X,entityId:W,error:s1(Y)}})}return{success:!0}})}registerCarouselAttachmentProvider(w){let $={...this.deps,getThemeMode:this.deps.getThemeMode??(async()=>{try{return(await S9(w.entityService)).themeMode??"dark"}catch{return"dark"}})};this.unregisterCarouselAttachmentProvider=w.attachments.register("deck",Ng,new OZ(w,$))}registerEvalHandlers(w){w.eval.registerHandler("generateDeck",async($)=>{let X=Z.object({prompt:Z.string(),event:Z.string().optional()}).parse($);return w.ai.generate({prompt:`${X.prompt}${X.event?`
1663
1663
 
1664
1664
  Note: This presentation is for "${X.event}".`:""}`,templateName:"decks:generation"})}),w.eval.registerHandler("generateDescription",async($)=>{let X=Z.object({title:Z.string(),content:Z.string()}).parse($);return w.ai.generate({prompt:`Title: ${X.title}
1665
1665
 
1666
1666
  Content:
1667
- ${X.content}`,templateName:"decks:description"})})}}w9();f0();K1();var dJ=l8.extend({expertise:Z.array(Z.string()).optional().describe("Skills, domains, areas of focus"),currentFocus:Z.string().optional().describe("What you're currently working on"),availability:Z.string().optional().describe("What you're open to (consulting, speaking, etc.)")}),h4=R3.extend(dJ.shape);K1();Y9();f0();var DA0=new j5;class cJ{postsListUrl;decksListUrl;id="professional:homepage-list";name="Homepage List DataSource";description="Fetches profile, blog posts, and presentation decks for homepage";constructor(w,$){this.postsListUrl=w;this.decksListUrl=$}async fetch(w,$,X){let W=X.entityService,[Y,G,J,f]=await Promise.all([h3(W),W.listEntities({entityType:"post",options:{limit:20}}),W.listEntities({entityType:"deck",options:{limit:20}}),S9(W)]),K=DA0.parseProfileBody(Y,h4),U=G.sort(z8).slice(0,3).map(J9),A=J.sort(z8).slice(0,3).map(ZX);if(!f.cta)throw Error("CTA not configured in site-info");let Q={profile:K,posts:U,decks:A,postsListUrl:this.postsListUrl,decksListUrl:this.decksListUrl,cta:f.cta,sections:f.sections??{}};return $.parse(Q)}}K1();Y9();var vA0=new j5;class iJ{id="professional:about";name="About Page DataSource";description="Fetches full profile data for the about page";async fetch(w,$,X){let W=await h3(X.entityService),G={profile:vA0.parseProfileBody(W,h4)};return $.parse(G)}}import{jsxDEV as j1,Fragment as _A0}from"preact/jsx-dev-runtime";var PA0="grid md:grid-cols-[14rem_1px_1fr] gap-y-2 gap-x-0 md:gap-16 items-start",LA0="border-t md:border-t-0 md:border-l border-rule-strong md:self-stretch",zZ=({number:w,title:$,blurb:X,children:W})=>j1("section",{className:"py-20 border-b border-rule px-6 md:px-12",children:j1("div",{className:"max-w-6xl mx-auto",children:j1("div",{className:PA0,children:[j1($F,{title:$,number:w,blurb:X},void 0,!1,void 0,this),j1("div",{className:LA0,"aria-hidden":"true"},void 0,!1,void 0,this),j1("div",{className:"mt-6 md:mt-0",children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),BZ=({profile:w,posts:$,decks:X,postsListUrl:W,decksListUrl:Y,cta:G,sections:J})=>{let f=w.tagline||w.description,K=$.map((z)=>({id:z.id,url:z.url,title:z.metadata.title,date:z.metadata.publishedAt||z.created,description:z.frontmatter.excerpt,series:z.frontmatter.seriesName&&z.frontmatter.seriesIndex?{name:z.frontmatter.seriesName,index:z.frontmatter.seriesIndex}:void 0})),U=X.map((z)=>({id:z.id,url:z.url,title:z.frontmatter.title||z.id,date:z.frontmatter.publishedAt??z.created,description:z.frontmatter.description})),A=w.name||"Home",Q=w.intro||w.description||f||"Professional site",F=Boolean(w.description)||w.expertise!==void 0&&w.expertise.length>0;return j1(_A0,{children:[j1(V2,{title:A,description:Q,ogType:"website"},void 0,!1,void 0,this),j1("div",{className:"homepage-list bg-theme",children:[j1("header",{className:"hero-bg-pattern relative w-full px-6 md:px-12 pt-28 pb-24 md:pt-28 md:pb-24 overflow-hidden border-b border-rule",children:j1("div",{className:"relative z-10 max-w-6xl mx-auto w-full",children:[w.name&&j1("div",{className:"flex items-center gap-[0.6rem] mb-6 font-mono text-[0.7rem] font-medium uppercase tracking-[0.22em] text-accent",children:[j1("span",{className:"w-[18px] h-px bg-accent","aria-hidden":"true"},void 0,!1,void 0,this),j1("span",{children:w.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f&&j1("h1",{className:"font-heading text-[clamp(2.75rem,6.5vw,5.5rem)] font-normal text-heading leading-[1.02] tracking-[-0.025em] max-w-[18ch] [font-variation-settings:'opsz'_144,'SOFT'_30]",children:MG(f,"italic font-normal text-accent [font-variation-settings:'opsz'_144,'SOFT'_80]")},void 0,!1,void 0,this),w.intro&&j1("p",{className:"font-heading font-light text-[clamp(1.1rem,1.8vw,1.4rem)] leading-[1.5] text-theme-muted max-w-[42ch] mt-8 [font-variation-settings:'opsz'_24]",children:MG(w.intro,"italic text-accent")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),j1(zZ,{number:"01",title:"Essays",blurb:J.essays?.blurb,children:j1(VG,{items:K,viewAllUrl:W,viewAllLabel:"View all essays"},void 0,!1,void 0,this)},void 0,!1,void 0,this),U.length>0&&j1(zZ,{number:"02",title:"Presentations",blurb:J.presentations?.blurb,children:j1(VG,{items:U,viewAllUrl:Y,viewAllLabel:"View all presentations"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&j1(zZ,{number:"03",title:"About",blurb:J.about?.blurb,children:j1("div",{className:"flex flex-col gap-8",children:[w.description&&j1("p",{className:"font-heading font-light text-[1.25rem] leading-[1.55] text-theme max-w-[55ch] [font-variation-settings:'opsz'_24,'SOFT'_50]",children:w.description},void 0,!1,void 0,this),w.expertise&&w.expertise.length>0&&j1(XF,{subjects:w.expertise},void 0,!1,void 0,this),j1("a",{href:"/about",className:"mt-6 inline-flex items-center gap-2 font-mono text-[0.7rem] font-medium uppercase tracking-[0.18em] text-accent pb-1 relative before:content-[''] before:absolute before:left-0 before:right-full before:bottom-0 before:h-px before:bg-accent before:transition-[right] before:duration-300 hover:before:right-0",children:["Learn more",j1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),j1(dQ,{cta:G,variant:"editorial",socialLinks:w.socialLinks},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};import{jsxDEV as h1,Fragment as kA0}from"preact/jsx-dev-runtime";var VZ=({profile:w})=>{let $=`About ${w.name||"Me"}`,X=w.description||w.intro||"About page",W=w.expertise&&w.expertise.length>0||w.currentFocus||w.availability||w.email||w.website||w.socialLinks&&w.socialLinks.length>0;return h1(kA0,{children:[h1(V2,{title:$,description:X,ogType:"profile"},void 0,!1,void 0,this),h1("div",{className:"about-page bg-theme",children:[h1("header",{className:"hero-bg-pattern relative w-full py-16 md:py-24 px-6 md:px-12 bg-theme overflow-hidden",children:h1("div",{className:"relative z-10 max-w-4xl mx-auto",children:[h1("h1",{className:"text-5xl md:text-6xl font-semibold mb-6 text-heading",children:["About ",w.name||"Me"]},void 0,!0,void 0,this),w.description&&h1("p",{className:"text-xl md:text-2xl text-theme-muted leading-relaxed",children:w.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),h1("div",{className:"container mx-auto px-6 md:px-12 max-w-4xl py-12 md:py-16",children:[w.story&&h1("section",{className:"content-section-reveal mb-20 md:mb-28",children:h1(H6,{markdown:w.story},void 0,!1,void 0,this)},void 0,!1,void 0,this),W&&h1("div",{className:"content-section-reveal grid md:grid-cols-2 gap-x-16 gap-y-12",children:[w.expertise&&w.expertise.length>0&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Expertise"},void 0,!1,void 0,this),h1("ul",{className:"flex flex-wrap gap-3",children:w.expertise.map((Y,G)=>h1("li",{className:sQ({variant:"accent",size:"lg"}),children:Y},G,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.currentFocus&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Current Focus"},void 0,!1,void 0,this),h1("p",{className:"text-lg text-theme leading-relaxed",children:w.currentFocus},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.availability&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Availability"},void 0,!1,void 0,this),h1("p",{className:"text-lg text-theme leading-relaxed",children:w.availability},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(w.email||w.website||w.socialLinks&&w.socialLinks.length>0)&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Contact"},void 0,!1,void 0,this),h1("div",{className:"space-y-4",children:[w.email&&h1("p",{className:"text-lg",children:h1("a",{href:`mailto:${w.email}`,className:"text-brand hover:text-brand-dark transition-colors",children:w.email},void 0,!1,void 0,this)},void 0,!1,void 0,this),w.website&&h1("p",{className:"text-lg",children:h1("a",{href:w.website,target:"_blank",rel:"noopener noreferrer",className:"text-brand hover:text-brand-dark transition-colors",children:w.website},void 0,!1,void 0,this)},void 0,!1,void 0,this),w.socialLinks&&w.socialLinks.length>0&&h1("div",{className:"flex flex-wrap gap-4 mt-4",children:w.socialLinks.map((Y,G)=>h1(n5,{href:Y.url,external:!0,variant:"secondary",size:"md",children:Y.label||Y.platform},G,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};import{jsxDEV as c2,Fragment as Lg}from"preact/jsx-dev-runtime";var MZ=()=>{return c2(Lg,{children:[c2(V2,{title:"Thanks for subscribing!",description:"You've successfully subscribed to the newsletter."},void 0,!1,void 0,this),c2("div",{className:"min-h-[60vh] flex items-center justify-center px-6",children:c2("div",{className:"text-center max-w-md",children:[c2("div",{className:"text-6xl mb-6",children:"\uD83C\uDF89"},void 0,!1,void 0,this),c2("h1",{className:"text-3xl font-semibold mb-4 text-heading",children:"Thanks for subscribing!"},void 0,!1,void 0,this),c2("p",{className:"text-lg text-theme-muted mb-8",children:"You'll receive a confirmation email shortly. Check your inbox to confirm your subscription."},void 0,!1,void 0,this),c2(n5,{href:"/",variant:"primary",children:"Back to Home"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},NZ=()=>{return c2(Lg,{children:[c2(V2,{title:"Subscription failed",description:"There was a problem with your subscription."},void 0,!1,void 0,this),c2("div",{className:"min-h-[60vh] flex items-center justify-center px-6",children:c2("div",{className:"text-center max-w-md",children:[c2("div",{className:"text-6xl mb-6",children:"\uD83D\uDE22"},void 0,!1,void 0,this),c2("h1",{className:"text-3xl font-semibold mb-4 text-heading",children:"Something went wrong"},void 0,!1,void 0,this),c2("p",{className:"text-lg text-theme-muted mb-8",children:"We couldn't process your subscription. Please try again or contact us if the problem persists."},void 0,!1,void 0,this),c2(n5,{href:"/",variant:"primary",children:"Back to Home"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)};f0();var _g=Z.object({label:Z.string().describe("Display label for entity type (e.g., 'Essay')"),pluralName:Z.string().optional().describe("URL path segment (defaults to label.toLowerCase() + 's')")}),kg=Z.object({entityDisplay:Z.object({post:_g,deck:_g}).describe("Display metadata for post and deck entity types (required for homepage)")});var Tg={name:"@brains/site-professional",private:!0,version:"0.2.0-alpha.104",description:"Professional site composition package",type:"module",exports:{".":"./src/index.ts"},files:["src"],scripts:{typecheck:"tsc --noEmit",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix"},dependencies:{"@brains/blog":"workspace:*","@brains/decks":"workspace:*","@brains/identity-service":"workspace:*","@brains/plugins":"workspace:*","@brains/site-composition":"workspace:*","@brains/site-engine":"workspace:*","@brains/site-info":"workspace:*","@brains/templates":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*",preact:"^10.27.2"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};class hZ extends u8{dependencies=["blog","decks"];constructor(w){super("professional-site",Tg,w,kg)}async onRegister(w){w.entities.extendFrontmatterSchema("anchor-profile",dJ);let $=this.config.entityDisplay.post,X=this.config.entityDisplay.deck,W=`/${$.pluralName??$.label.toLowerCase()+"s"}`,Y=`/${X.pluralName??X.label.toLowerCase()+"s"}`,G=new cJ(W,Y);w.entities.registerDataSource(G);let J=new iJ;w.entities.registerDataSource(J);let f=Z.object({profile:h4,posts:Z.array(i5),decks:Z.array(FX),postsListUrl:Z.string(),decksListUrl:Z.string(),cta:QX,sections:Z.record(Z.string(),dW)}),K=Z.object({profile:h4}),U=Z.object({});w.templates.register({"homepage-list":E1({name:"homepage-list",description:"Professional homepage with essays and presentations",schema:f,dataSourceId:"professional:homepage-list",requiredPermission:"public",layout:{component:BZ}}),about:E1({name:"about",description:"About page with full profile information",schema:K,dataSourceId:"professional:about",requiredPermission:"public",layout:{component:VZ}}),"subscribe-thanks":E1({name:"subscribe-thanks",description:"Newsletter subscription success page",schema:U,requiredPermission:"public",layout:{component:MZ}}),"subscribe-error":E1({name:"subscribe-error",description:"Newsletter subscription error page",schema:U,requiredPermission:"public",layout:{component:NZ}})}),this.logger.info("Professional site plugin registered successfully")}async getTools(){return[]}async getResources(){return[]}}function RZ(w){return new hZ(w??{})}var qZ=[{id:"home",path:"/",title:"Home",description:"Professional site homepage",layout:"default",navigation:{show:!0,label:"Home",slot:"secondary",priority:10},sections:[{id:"homepage",template:"professional-site:homepage-list",dataQuery:{}}]},{id:"about",path:"/about",title:"About",description:"About page",layout:"default",navigation:{show:!0,label:"About",slot:"primary",priority:90},sections:[{id:"about",template:"professional-site:about",dataQuery:{}}]},{id:"subscribe-thanks",path:"/subscribe/thanks",title:"Thanks for subscribing",description:"Newsletter subscription confirmation",layout:"default",navigation:{show:!1},sections:[{id:"subscribe-thanks",template:"professional-site:subscribe-thanks",dataQuery:{},content:{}}]},{id:"subscribe-error",path:"/subscribe/error",title:"Subscription failed",description:"Newsletter subscription error",layout:"default",navigation:{show:!1},sections:[{id:"subscribe-error",template:"professional-site:subscribe-error",dataQuery:{},content:{}}]}];import{jsxDEV as nJ}from"preact/jsx-dev-runtime";function DZ({sections:w,siteInfo:$,slots:X,wordmark:W}){return nJ("div",{className:"flex flex-col min-h-screen bg-theme overflow-x-clip",children:[nJ(M$,{title:$.title,navigation:$.navigation.primary,showThemeToggle:!0,...$.logo!==void 0?{logo:$.logo}:{},...W!==void 0?{wordmark:W}:{}},void 0,!1,void 0,this),nJ("main",{className:"flex-grow flex flex-col bg-theme",children:w},void 0,!1,void 0,this),nJ(iQ,{primaryNavigation:$.navigation.primary,secondaryNavigation:$.navigation.secondary,copyright:$.copyright,socialLinks:$.socialLinks,title:$.title,tagline:$.description,children:X?.getSlot("footer-top").map((Y)=>Y.render())},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Eg(w){return{id:w.id,version:w.version,type:w.type,packageName:w.packageName}}var H51=tO;function U51(w){return Eg(aO(w))}var EA0=sO,A51=EA0,Q51=DZ;function F51(w){return Eg(RZ(w))}var O51=qZ;export{EA0 as routes,F51 as professionalSitePlugin,O51 as professionalRoutes,U51 as personalSitePlugin,A51 as personalRoutes,Q51 as ProfessionalLayout,H51 as PersonalLayout};
1667
+ ${X.content}`,templateName:"decks:description"})})}}w9();f0();K1();var dJ=l8.extend({expertise:Z.array(Z.string()).optional().describe("Skills, domains, areas of focus"),currentFocus:Z.string().optional().describe("What you're currently working on"),availability:Z.string().optional().describe("What you're open to (consulting, speaking, etc.)")}),h4=R3.extend(dJ.shape);K1();Y9();f0();var DA0=new j5;class cJ{postsListUrl;decksListUrl;id="professional:homepage-list";name="Homepage List DataSource";description="Fetches profile, blog posts, and presentation decks for homepage";constructor(w,$){this.postsListUrl=w;this.decksListUrl=$}async fetch(w,$,X){let W=X.entityService,[Y,G,J,f]=await Promise.all([h3(W),W.listEntities({entityType:"post",options:{limit:20}}),W.listEntities({entityType:"deck",options:{limit:20}}),S9(W)]),K=DA0.parseProfileBody(Y,h4),U=G.sort(z8).slice(0,3).map(J9),A=J.sort(z8).slice(0,3).map(ZX);if(!f.cta)throw Error("CTA not configured in site-info");let Q={profile:K,posts:U,decks:A,postsListUrl:this.postsListUrl,decksListUrl:this.decksListUrl,cta:f.cta,sections:f.sections??{}};return $.parse(Q)}}K1();Y9();var vA0=new j5;class iJ{id="professional:about";name="About Page DataSource";description="Fetches full profile data for the about page";async fetch(w,$,X){let W=await h3(X.entityService),G={profile:vA0.parseProfileBody(W,h4)};return $.parse(G)}}import{jsxDEV as j1,Fragment as _A0}from"preact/jsx-dev-runtime";var PA0="grid md:grid-cols-[14rem_1px_1fr] gap-y-2 gap-x-0 md:gap-16 items-start",LA0="border-t md:border-t-0 md:border-l border-rule-strong md:self-stretch",zZ=({number:w,title:$,blurb:X,children:W})=>j1("section",{className:"py-20 border-b border-rule px-6 md:px-12",children:j1("div",{className:"max-w-6xl mx-auto",children:j1("div",{className:PA0,children:[j1($F,{title:$,number:w,blurb:X},void 0,!1,void 0,this),j1("div",{className:LA0,"aria-hidden":"true"},void 0,!1,void 0,this),j1("div",{className:"mt-6 md:mt-0",children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),BZ=({profile:w,posts:$,decks:X,postsListUrl:W,decksListUrl:Y,cta:G,sections:J})=>{let f=w.tagline||w.description,K=$.map((z)=>({id:z.id,url:z.url,title:z.metadata.title,date:z.metadata.publishedAt||z.created,description:z.frontmatter.excerpt,series:z.frontmatter.seriesName&&z.frontmatter.seriesIndex?{name:z.frontmatter.seriesName,index:z.frontmatter.seriesIndex}:void 0})),U=X.map((z)=>({id:z.id,url:z.url,title:z.frontmatter.title||z.id,date:z.frontmatter.publishedAt??z.created,description:z.frontmatter.description})),A=w.name||"Home",Q=w.intro||w.description||f||"Professional site",F=Boolean(w.description)||w.expertise!==void 0&&w.expertise.length>0;return j1(_A0,{children:[j1(V2,{title:A,description:Q,ogType:"website"},void 0,!1,void 0,this),j1("div",{className:"homepage-list bg-theme",children:[j1("header",{className:"hero-bg-pattern relative w-full px-6 md:px-12 pt-28 pb-24 md:pt-28 md:pb-24 overflow-hidden border-b border-rule",children:j1("div",{className:"relative z-10 max-w-6xl mx-auto w-full",children:[w.name&&j1("div",{className:"flex items-center gap-[0.6rem] mb-6 font-mono text-[0.7rem] font-medium uppercase tracking-[0.22em] text-accent",children:[j1("span",{className:"w-[18px] h-px bg-accent","aria-hidden":"true"},void 0,!1,void 0,this),j1("span",{children:w.name},void 0,!1,void 0,this)]},void 0,!0,void 0,this),f&&j1("h1",{className:"font-heading text-[clamp(2.75rem,6.5vw,5.5rem)] font-normal text-heading leading-[1.02] tracking-[-0.025em] max-w-[18ch] [font-variation-settings:'opsz'_144,'SOFT'_30]",children:MG(f,"italic font-normal text-accent [font-variation-settings:'opsz'_144,'SOFT'_80]")},void 0,!1,void 0,this),w.intro&&j1("p",{className:"font-heading font-light text-[clamp(1.1rem,1.8vw,1.4rem)] leading-[1.5] text-theme-muted max-w-[42ch] mt-8 [font-variation-settings:'opsz'_24]",children:MG(w.intro,"italic text-accent")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),j1(zZ,{number:"01",title:"Essays",blurb:J.essays?.blurb,children:j1(VG,{items:K,viewAllUrl:W,viewAllLabel:"View all essays"},void 0,!1,void 0,this)},void 0,!1,void 0,this),U.length>0&&j1(zZ,{number:"02",title:"Presentations",blurb:J.presentations?.blurb,children:j1(VG,{items:U,viewAllUrl:Y,viewAllLabel:"View all presentations"},void 0,!1,void 0,this)},void 0,!1,void 0,this),F&&j1(zZ,{number:"03",title:"About",blurb:J.about?.blurb,children:j1("div",{className:"flex flex-col gap-8",children:[w.description&&j1("p",{className:"font-heading font-light text-[1.25rem] leading-[1.55] text-theme max-w-[55ch] [font-variation-settings:'opsz'_24,'SOFT'_50]",children:w.description},void 0,!1,void 0,this),w.expertise&&w.expertise.length>0&&j1(XF,{subjects:w.expertise},void 0,!1,void 0,this),j1("a",{href:"/about",className:"mt-6 inline-flex items-center gap-2 font-mono text-[0.7rem] font-medium uppercase tracking-[0.18em] text-accent pb-1 relative before:content-[''] before:absolute before:left-0 before:right-full before:bottom-0 before:h-px before:bg-accent before:transition-[right] before:duration-300 hover:before:right-0",children:["Learn more",j1("span",{"aria-hidden":"true",children:"\u2192"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),j1(dQ,{cta:G,variant:"editorial",socialLinks:w.socialLinks},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};import{jsxDEV as h1,Fragment as kA0}from"preact/jsx-dev-runtime";var VZ=({profile:w})=>{let $=`About ${w.name||"Me"}`,X=w.description||w.intro||"About page",W=w.expertise&&w.expertise.length>0||w.currentFocus||w.availability||w.email||w.website||w.socialLinks&&w.socialLinks.length>0;return h1(kA0,{children:[h1(V2,{title:$,description:X,ogType:"profile"},void 0,!1,void 0,this),h1("div",{className:"about-page bg-theme",children:[h1("header",{className:"hero-bg-pattern relative w-full py-16 md:py-24 px-6 md:px-12 bg-theme overflow-hidden",children:h1("div",{className:"relative z-10 max-w-4xl mx-auto",children:[h1("h1",{className:"text-5xl md:text-6xl font-semibold mb-6 text-heading",children:["About ",w.name||"Me"]},void 0,!0,void 0,this),w.description&&h1("p",{className:"text-xl md:text-2xl text-theme-muted leading-relaxed",children:w.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),h1("div",{className:"container mx-auto px-6 md:px-12 max-w-4xl py-12 md:py-16",children:[w.story&&h1("section",{className:"content-section-reveal mb-20 md:mb-28",children:h1(H6,{markdown:w.story},void 0,!1,void 0,this)},void 0,!1,void 0,this),W&&h1("div",{className:"content-section-reveal grid md:grid-cols-2 gap-x-16 gap-y-12",children:[w.expertise&&w.expertise.length>0&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Expertise"},void 0,!1,void 0,this),h1("ul",{className:"flex flex-wrap gap-3",children:w.expertise.map((Y,G)=>h1("li",{className:sQ({variant:"accent",size:"lg"}),children:Y},G,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.currentFocus&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Current Focus"},void 0,!1,void 0,this),h1("p",{className:"text-lg text-theme leading-relaxed",children:w.currentFocus},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.availability&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Availability"},void 0,!1,void 0,this),h1("p",{className:"text-lg text-theme leading-relaxed",children:w.availability},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(w.email||w.website||w.socialLinks&&w.socialLinks.length>0)&&h1("section",{children:[h1("h2",{className:"text-sm tracking-widest uppercase text-theme-muted mb-6",children:"Contact"},void 0,!1,void 0,this),h1("div",{className:"space-y-4",children:[w.email&&h1("p",{className:"text-lg",children:h1("a",{href:`mailto:${w.email}`,className:"text-brand hover:text-brand-dark transition-colors",children:w.email},void 0,!1,void 0,this)},void 0,!1,void 0,this),w.website&&h1("p",{className:"text-lg",children:h1("a",{href:w.website,target:"_blank",rel:"noopener noreferrer",className:"text-brand hover:text-brand-dark transition-colors",children:w.website},void 0,!1,void 0,this)},void 0,!1,void 0,this),w.socialLinks&&w.socialLinks.length>0&&h1("div",{className:"flex flex-wrap gap-4 mt-4",children:w.socialLinks.map((Y,G)=>h1(n5,{href:Y.url,external:!0,variant:"secondary",size:"md",children:Y.label||Y.platform},G,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};import{jsxDEV as c2,Fragment as Lg}from"preact/jsx-dev-runtime";var MZ=()=>{return c2(Lg,{children:[c2(V2,{title:"Thanks for subscribing!",description:"You've successfully subscribed to the newsletter."},void 0,!1,void 0,this),c2("div",{className:"min-h-[60vh] flex items-center justify-center px-6",children:c2("div",{className:"text-center max-w-md",children:[c2("div",{className:"text-6xl mb-6",children:"\uD83C\uDF89"},void 0,!1,void 0,this),c2("h1",{className:"text-3xl font-semibold mb-4 text-heading",children:"Thanks for subscribing!"},void 0,!1,void 0,this),c2("p",{className:"text-lg text-theme-muted mb-8",children:"You'll receive a confirmation email shortly. Check your inbox to confirm your subscription."},void 0,!1,void 0,this),c2(n5,{href:"/",variant:"primary",children:"Back to Home"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},NZ=()=>{return c2(Lg,{children:[c2(V2,{title:"Subscription failed",description:"There was a problem with your subscription."},void 0,!1,void 0,this),c2("div",{className:"min-h-[60vh] flex items-center justify-center px-6",children:c2("div",{className:"text-center max-w-md",children:[c2("div",{className:"text-6xl mb-6",children:"\uD83D\uDE22"},void 0,!1,void 0,this),c2("h1",{className:"text-3xl font-semibold mb-4 text-heading",children:"Something went wrong"},void 0,!1,void 0,this),c2("p",{className:"text-lg text-theme-muted mb-8",children:"We couldn't process your subscription. Please try again or contact us if the problem persists."},void 0,!1,void 0,this),c2(n5,{href:"/",variant:"primary",children:"Back to Home"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)};f0();var _g=Z.object({label:Z.string().describe("Display label for entity type (e.g., 'Essay')"),pluralName:Z.string().optional().describe("URL path segment (defaults to label.toLowerCase() + 's')")}),kg=Z.object({entityDisplay:Z.object({post:_g,deck:_g}).describe("Display metadata for post and deck entity types (required for homepage)")});var Tg={name:"@brains/site-professional",private:!0,version:"0.2.0-alpha.105",description:"Professional site composition package",type:"module",exports:{".":"./src/index.ts"},files:["src"],scripts:{typecheck:"tsc --noEmit",lint:"eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix"},dependencies:{"@brains/blog":"workspace:*","@brains/decks":"workspace:*","@brains/identity-service":"workspace:*","@brains/plugins":"workspace:*","@brains/site-composition":"workspace:*","@brains/site-engine":"workspace:*","@brains/site-info":"workspace:*","@brains/templates":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*",preact:"^10.27.2"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"latest","bun-types":"latest",eslint:"^8.56.0",typescript:"^5.3.3"}};class hZ extends u8{dependencies=["blog","decks"];constructor(w){super("professional-site",Tg,w,kg)}async onRegister(w){w.entities.extendFrontmatterSchema("anchor-profile",dJ);let $=this.config.entityDisplay.post,X=this.config.entityDisplay.deck,W=`/${$.pluralName??$.label.toLowerCase()+"s"}`,Y=`/${X.pluralName??X.label.toLowerCase()+"s"}`,G=new cJ(W,Y);w.entities.registerDataSource(G);let J=new iJ;w.entities.registerDataSource(J);let f=Z.object({profile:h4,posts:Z.array(i5),decks:Z.array(FX),postsListUrl:Z.string(),decksListUrl:Z.string(),cta:QX,sections:Z.record(Z.string(),dW)}),K=Z.object({profile:h4}),U=Z.object({});w.templates.register({"homepage-list":E1({name:"homepage-list",description:"Professional homepage with essays and presentations",schema:f,dataSourceId:"professional:homepage-list",requiredPermission:"public",layout:{component:BZ}}),about:E1({name:"about",description:"About page with full profile information",schema:K,dataSourceId:"professional:about",requiredPermission:"public",layout:{component:VZ}}),"subscribe-thanks":E1({name:"subscribe-thanks",description:"Newsletter subscription success page",schema:U,requiredPermission:"public",layout:{component:MZ}}),"subscribe-error":E1({name:"subscribe-error",description:"Newsletter subscription error page",schema:U,requiredPermission:"public",layout:{component:NZ}})}),this.logger.info("Professional site plugin registered successfully")}async getTools(){return[]}async getResources(){return[]}}function RZ(w){return new hZ(w??{})}var qZ=[{id:"home",path:"/",title:"Home",description:"Professional site homepage",layout:"default",navigation:{show:!0,label:"Home",slot:"secondary",priority:10},sections:[{id:"homepage",template:"professional-site:homepage-list",dataQuery:{}}]},{id:"about",path:"/about",title:"About",description:"About page",layout:"default",navigation:{show:!0,label:"About",slot:"primary",priority:90},sections:[{id:"about",template:"professional-site:about",dataQuery:{}}]},{id:"subscribe-thanks",path:"/subscribe/thanks",title:"Thanks for subscribing",description:"Newsletter subscription confirmation",layout:"default",navigation:{show:!1},sections:[{id:"subscribe-thanks",template:"professional-site:subscribe-thanks",dataQuery:{},content:{}}]},{id:"subscribe-error",path:"/subscribe/error",title:"Subscription failed",description:"Newsletter subscription error",layout:"default",navigation:{show:!1},sections:[{id:"subscribe-error",template:"professional-site:subscribe-error",dataQuery:{},content:{}}]}];import{jsxDEV as nJ}from"preact/jsx-dev-runtime";function DZ({sections:w,siteInfo:$,slots:X,wordmark:W}){return nJ("div",{className:"flex flex-col min-h-screen bg-theme overflow-x-clip",children:[nJ(M$,{title:$.title,navigation:$.navigation.primary,showThemeToggle:!0,...$.logo!==void 0?{logo:$.logo}:{},...W!==void 0?{wordmark:W}:{}},void 0,!1,void 0,this),nJ("main",{className:"flex-grow flex flex-col bg-theme",children:w},void 0,!1,void 0,this),nJ(iQ,{primaryNavigation:$.navigation.primary,secondaryNavigation:$.navigation.secondary,copyright:$.copyright,socialLinks:$.socialLinks,title:$.title,tagline:$.description,children:X?.getSlot("footer-top").map((Y)=>Y.render())},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Eg(w){return{id:w.id,version:w.version,type:w.type,packageName:w.packageName}}var H51=tO;function U51(w){return Eg(aO(w))}var EA0=sO,A51=EA0,Q51=DZ;function F51(w){return Eg(RZ(w))}var O51=qZ;export{EA0 as routes,F51 as professionalSitePlugin,O51 as professionalRoutes,U51 as personalSitePlugin,A51 as personalRoutes,Q51 as ProfessionalLayout,H51 as PersonalLayout};
1668
1668
 
1669
- //# debugId=31EE7CC1C4AC806A64756E2164756E21
1669
+ //# debugId=C499E1819A85809F64756E2164756E21
1670
1670
  //# sourceMappingURL=site.js.map