@rizom/brain 0.2.0-alpha.247 → 0.2.0-alpha.248
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/brain.js +917 -917
- package/dist/chunks/{app-cjwxrsay.js → app-5f8xhs6s.js} +2 -2
- package/dist/chunks/{index-bpvej3jz.js → index-4zsgs8gw.js} +3 -3
- package/dist/chunks/{index-bpvej3jz.js.map → index-4zsgs8gw.js.map} +1 -1
- package/dist/chunks/{index-decwn4ne.js → index-67b6py9k.js} +4 -4
- package/dist/chunks/{index-decwn4ne.js.map → index-67b6py9k.js.map} +2 -2
- package/dist/chunks/{index-2y7fbe2e.js → index-n8fzpy3v.js} +6 -6
- package/dist/chunks/{index-2y7fbe2e.js.map → index-n8fzpy3v.js.map} +1 -1
- package/dist/chunks/{index-7hzbjwbe.js → index-wnkz9tp7.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/model.js +34 -34
- package/dist/model.js.map +1 -1
- package/dist/site.js +2 -2
- package/dist/site.js.map +1 -1
- package/package.json +1 -1
- /package/dist/chunks/{app-cjwxrsay.js.map → app-5f8xhs6s.js.map} +0 -0
- /package/dist/chunks/{index-7hzbjwbe.js.map → index-wnkz9tp7.js.map} +0 -0
|
@@ -954,7 +954,7 @@ Default "index" lookups for the main are deprecated for ES modules.`,"Deprecatio
|
|
|
954
954
|
});
|
|
955
955
|
});
|
|
956
956
|
})();
|
|
957
|
-
`;if(l==="inline")return Wl("div",{className:W0(z2({variant:l}),"max-w-full sm:max-w-xs",u),children:[Wl("form",{action:n,method:"POST",className:"newsletter-signup-form",children:[Wl("span",{className:"text-[10px] font-mono font-bold uppercase tracking-[0.16em] text-brand opacity-60 block mb-5",children:w},void 0,!1,void 0,this),Wl("div",{className:"flex w-full min-w-0",children:[Wl("input",{type:"email",name:"email",placeholder:"your@email.com",required:!0,className:"flex-1 min-w-0 px-3 py-2 font-mono text-[13px] bg-transparent border border-theme text-theme placeholder-theme-muted focus:outline-none focus:border-brand"},void 0,!1,void 0,this),Wl(Ff,{type:"submit",className:"shrink-0 whitespace-nowrap font-mono text-xs font-bold uppercase tracking-[0.08em] border border-l-0 border-brand bg-brand text-theme-inverse hover:bg-transparent hover:text-brand px-4",children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Wl("script",{dangerouslySetInnerHTML:{__html:$}},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(l==="section")return Wl("div",{className:W0(z2({variant:l}),u),children:[Wl("div",{className:"max-w-xl mx-auto px-6",children:[w&&Wl("h2",{className:"text-3xl font-bold text-heading mb-3",children:w},void 0,!1,void 0,this),v&&Wl("p",{className:"text-theme-muted text-lg mb-8",children:v},void 0,!1,void 0,this),Wl("form",{action:n,method:"POST",className:"newsletter-signup-form flex flex-col sm:flex-row gap-3 justify-center",children:[t&&Wl("input",{type:"text",name:"name",placeholder:"Your name",className:"px-4 py-3 text-base rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl("input",{type:"email",name:"email",placeholder:"your@email.com",required:!0,className:"flex-1 max-w-sm px-4 py-3 text-base rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl(Ff,{type:"submit",size:"lg",children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Wl("script",{dangerouslySetInnerHTML:{__html:$}},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return Wl("div",{className:W0(z2({variant:l}),u),children:[w&&Wl("h3",{className:"text-lg font-semibold text-heading mb-2",children:w},void 0,!1,void 0,this),v&&Wl("p",{className:"text-theme-muted text-sm mb-4",children:v},void 0,!1,void 0,this),Wl("form",{action:n,method:"POST",className:"newsletter-signup-form flex flex-col gap-3",children:[t&&Wl("input",{type:"text",name:"name",placeholder:"Your name",className:"px-3 py-2 text-sm rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl("input",{type:"email",name:"email",placeholder:"your@email.com",required:!0,className:"px-3 py-2 text-sm rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl(Ff,{type:"submit",children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Wl("script",{dangerouslySetInnerHTML:{__html:$}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as fE}from"preact/jsx-dev-runtime";import{useState as nE}from"preact/hooks";import{jsxDEV as kE}from"preact/jsx-dev-runtime";var oE=W.record(W.string(),W.unknown()),wE=W.record(W.string(),W.unknown());import{jsxDEV as dE}from"preact/jsx-dev-runtime";var Aw=W.object({id:W.string(),type:W.string().optional(),name:W.string().optional(),count:W.number().optional(),priority:W.string().optional(),status:W.string().optional()}),yE=W.object({jobs:W.array(Aw).optional(),batches:W.array(Aw).optional(),items:W.array(Aw).optional()});import{jsxDEV as WE}from"preact/jsx-dev-runtime";var KE=W.record(W.string(),W.unknown());import{useState as OE}from"preact/hooks";import{jsxDEV as HE}from"preact/jsx-dev-runtime";var dB=W.object({id:W.string(),title:W.string(),type:W.string(),status:W.enum(["draft","queued","published","failed"]),scheduledFor:W.string().optional(),retryInfo:W.string().optional()}),JE=W.object({summary:W.object({draft:W.number(),queued:W.number(),published:W.number(),failed:W.number()}),items:W.array(dB)});import{jsxDEV as LE}from"preact/jsx-dev-runtime";var FE=W.object({name:W.string(),role:W.string(),purpose:W.string(),values:W.array(W.string())});import{jsxDEV as ME}from"preact/jsx-dev-runtime";var TE=W.object({name:W.string(),description:W.string().optional(),links:W.array(W.object({label:W.string(),url:W.string()})).optional()});import{jsxDEV as SE}from"preact/jsx-dev-runtime";var DE=W.object({version:W.string(),plugins:W.string(),rendered:W.string(),links:W.array(W.object({label:W.string(),url:W.string()})).optional()});var Km={name:"@brains/style-guide",license:"AGPL-3.0-only",version:"0.2.0-alpha.
|
|
957
|
+
`;if(l==="inline")return Wl("div",{className:W0(z2({variant:l}),"max-w-full sm:max-w-xs",u),children:[Wl("form",{action:n,method:"POST",className:"newsletter-signup-form",children:[Wl("span",{className:"text-[10px] font-mono font-bold uppercase tracking-[0.16em] text-brand opacity-60 block mb-5",children:w},void 0,!1,void 0,this),Wl("div",{className:"flex w-full min-w-0",children:[Wl("input",{type:"email",name:"email",placeholder:"your@email.com",required:!0,className:"flex-1 min-w-0 px-3 py-2 font-mono text-[13px] bg-transparent border border-theme text-theme placeholder-theme-muted focus:outline-none focus:border-brand"},void 0,!1,void 0,this),Wl(Ff,{type:"submit",className:"shrink-0 whitespace-nowrap font-mono text-xs font-bold uppercase tracking-[0.08em] border border-l-0 border-brand bg-brand text-theme-inverse hover:bg-transparent hover:text-brand px-4",children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Wl("script",{dangerouslySetInnerHTML:{__html:$}},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(l==="section")return Wl("div",{className:W0(z2({variant:l}),u),children:[Wl("div",{className:"max-w-xl mx-auto px-6",children:[w&&Wl("h2",{className:"text-3xl font-bold text-heading mb-3",children:w},void 0,!1,void 0,this),v&&Wl("p",{className:"text-theme-muted text-lg mb-8",children:v},void 0,!1,void 0,this),Wl("form",{action:n,method:"POST",className:"newsletter-signup-form flex flex-col sm:flex-row gap-3 justify-center",children:[t&&Wl("input",{type:"text",name:"name",placeholder:"Your name",className:"px-4 py-3 text-base rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl("input",{type:"email",name:"email",placeholder:"your@email.com",required:!0,className:"flex-1 max-w-sm px-4 py-3 text-base rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl(Ff,{type:"submit",size:"lg",children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Wl("script",{dangerouslySetInnerHTML:{__html:$}},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return Wl("div",{className:W0(z2({variant:l}),u),children:[w&&Wl("h3",{className:"text-lg font-semibold text-heading mb-2",children:w},void 0,!1,void 0,this),v&&Wl("p",{className:"text-theme-muted text-sm mb-4",children:v},void 0,!1,void 0,this),Wl("form",{action:n,method:"POST",className:"newsletter-signup-form flex flex-col gap-3",children:[t&&Wl("input",{type:"text",name:"name",placeholder:"Your name",className:"px-3 py-2 text-sm rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl("input",{type:"email",name:"email",placeholder:"your@email.com",required:!0,className:"px-3 py-2 text-sm rounded-lg border border-theme bg-theme text-theme placeholder:text-theme-muted focus:outline-none focus:ring-2 focus:ring-brand"},void 0,!1,void 0,this),Wl(Ff,{type:"submit",children:i},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Wl("script",{dangerouslySetInnerHTML:{__html:$}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as fE}from"preact/jsx-dev-runtime";import{useState as nE}from"preact/hooks";import{jsxDEV as kE}from"preact/jsx-dev-runtime";var oE=W.record(W.string(),W.unknown()),wE=W.record(W.string(),W.unknown());import{jsxDEV as dE}from"preact/jsx-dev-runtime";var Aw=W.object({id:W.string(),type:W.string().optional(),name:W.string().optional(),count:W.number().optional(),priority:W.string().optional(),status:W.string().optional()}),yE=W.object({jobs:W.array(Aw).optional(),batches:W.array(Aw).optional(),items:W.array(Aw).optional()});import{jsxDEV as WE}from"preact/jsx-dev-runtime";var KE=W.record(W.string(),W.unknown());import{useState as OE}from"preact/hooks";import{jsxDEV as HE}from"preact/jsx-dev-runtime";var dB=W.object({id:W.string(),title:W.string(),type:W.string(),status:W.enum(["draft","queued","published","failed"]),scheduledFor:W.string().optional(),retryInfo:W.string().optional()}),JE=W.object({summary:W.object({draft:W.number(),queued:W.number(),published:W.number(),failed:W.number()}),items:W.array(dB)});import{jsxDEV as LE}from"preact/jsx-dev-runtime";var FE=W.object({name:W.string(),role:W.string(),purpose:W.string(),values:W.array(W.string())});import{jsxDEV as ME}from"preact/jsx-dev-runtime";var TE=W.object({name:W.string(),description:W.string().optional(),links:W.array(W.object({label:W.string(),url:W.string()})).optional()});import{jsxDEV as SE}from"preact/jsx-dev-runtime";var DE=W.object({version:W.string(),plugins:W.string(),rendered:W.string(),links:W.array(W.object({label:W.string(),url:W.string()})).optional()});var Km={name:"@brains/style-guide",license:"AGPL-3.0-only",version:"0.2.0-alpha.248",description:"Singleton style guide for content and image generation",dependencies:{"@brains/contracts":"workspace:*","@brains/plugins":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/test-utils":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};var zm=W.object({audiences:W.array(W.string()).optional(),positioning:W.string().optional()}),Wm=W.object({summary:W.string().optional(),traits:W.array(W.string()).optional(),principles:W.array(W.string()).optional(),preferredTerms:W.array(W.string()).optional(),avoid:W.array(W.string()).optional()}),Zm=W.object({artDirection:W.string().optional(),palette:W.array(W.string()).optional(),composition:W.string().optional(),mood:W.string().optional(),preferred:W.array(W.string()).optional(),avoid:W.array(W.string()).optional()}),fn=W.object({name:W.string().describe("Style guide name"),messaging:zm.optional(),voice:Wm.optional(),visual:Zm.optional()}),XB=W.object({}),tn=Ii.extend({id:W.literal("style-guide"),entityType:W.literal("style-guide"),metadata:XB});class Kw extends qi{constructor(){super({entityType:"style-guide",purpose:"Singleton messaging, voice, and visual guidance for generated artifacts.",schema:tn,frontmatterSchema:fn,isSingleton:!0,hasBody:!0})}createStyleGuideContent(l,r=""){return this.buildMarkdown(r,fn.parse(l))}parseStyleGuide(l){let r=Zl(l,fn);return{...r.metadata,guidance:r.content}}fromMarkdown(l){return{content:l,entityType:"style-guide"}}extractMetadata(l){return{}}}var _i=new Kw;class zw extends nf{entityType="style-guide";schema=tn;adapter=_i;constructor(){super("style-guide",Km,{},Di)}getEntityTypeConfig(){return{embeddable:!1}}async onRegister(l){l.messaging.subscribe(W2.initialCompleted,async()=>{if(await l.entityService.getEntity({entityType:"style-guide",id:"style-guide"}))return{success:!0};return await l.entityService.createEntity({entity:{id:"style-guide",entityType:"style-guide",content:_i.createStyleGuideContent({name:"Default style guide"}),metadata:{}}}),{success:!0}})}}function YB(){return new zw}var Om={name:"Default style guide",guidance:""};async function B1(l){let r=await l.getEntity({entityType:"style-guide",id:"style-guide"});return r?.id==="style-guide"?_i.parseStyleGuide(r.content):Om}function uf(l,r,f){if(f&&f.length>0)l.push(`${r}: ${f.join(", ")}`)}function JB(l){let r=[],{messaging:f,voice:i}=l;if(uf(r,"Audiences",f?.audiences),f?.positioning)r.push(`Positioning: ${f.positioning}`);if(i?.summary)r.push(`Voice: ${i.summary}`);return uf(r,"Voice traits",i?.traits),uf(r,"Voice principles",i?.principles),uf(r,"Preferred terms",i?.preferredTerms),uf(r,"Avoid",i?.avoid),r.join(`
|
|
958
958
|
`)}function QB(l){let r=[],{visual:f}=l;if(f?.artDirection)r.push(`Art direction: ${f.artDirection}`);if(uf(r,"Palette",f?.palette),f?.composition)r.push(`Composition: ${f.composition}`);if(f?.mood)r.push(`Mood: ${f.mood}`);return uf(r,"Prefer",f?.preferred),uf(r,"Avoid",f?.avoid),r.join(`
|
|
959
959
|
`)}function am(l,r){return[l,r].filter(Boolean).join(`
|
|
960
960
|
`)}function Ww(l,r){let f=r==="voice"||r==="both"?JB(l):"",i=r==="visual"||r==="both"?QB(l):"";if(l.guidance)if(r==="voice"||r==="both")f=am(f,l.guidance);else i=am(i,l.guidance);return{...f&&{voice:f},...i&&{visual:i}}}function G1(l){return Ww(l,"voice").voice??""}function HB(l){return Ww(l,"visual").visual??""}var Ul=W.string().nullable().default(null),Z2=W.number().nullable().default(null),BB=W.union([W.enum(["public","shared","restricted"]),W.literal("private")]).optional().transform((l)=>{if(l===void 0)return"public";if(l==="private")return"restricted";return l}),GB=W.object({title:W.string(),status:Zw,publishedAt:Ul,seriesName:Ul,seriesIndex:Z2,slug:W.string(),error:Ul}),UB=W.object({title:W.string(),slug:Ul,status:Zw,publishedAt:Ul,excerpt:W.string(),author:W.string(),coverImageId:Ul,ogImageId:Ul,seriesName:Ul,seriesIndex:Z2,ogImage:Ul,ogDescription:Ul,twitterCard:W.enum(["summary","summary_large_image"]).nullable().default(null),canonicalUrl:Ul,atprotoUri:Ul}),yr=W.object({id:W.string(),entityType:W.literal("post"),content:W.string(),created:W.string(),updated:W.string(),visibility:BB,metadata:GB,contentHash:W.string(),frontmatter:UB,body:W.string(),url:Ul,typeLabel:Ul,listUrl:Ul,listLabel:Ul,seriesUrl:Ul,coverImageUrl:Ul,ogImageUrl:Ul,coverImageWidth:Z2,coverImageHeight:Z2,coverImageSrcset:Ul,coverImageSizes:Ul});var Xm={register:"publish-assets:register"};var Ym={lexicon:1,id:"ai.rizom.brain.card",defs:{main:{type:"record",description:"Public discovery card for a Rizom brain. The operational A2A Agent Card is conventionally served at /.well-known/agent-card.json under siteUrl.",key:"literal:self",record:{type:"object",required:["siteUrl","brain","anchor","skills","model","version","createdAt"],properties:{siteUrl:{type:"string",format:"uri",description:"Public site URL. Consumers derive the A2A Agent Card URL from this base."},brain:{type:"ref",ref:"#brain",description:"Brain identity described by this discovery card."},anchor:{type:"ref",ref:"#anchor",description:"Minimal Anchor snapshot for discovery grouping and display."},skills:{type:"array",description:"User-facing skills this brain advertises for discovery.",items:{type:"ref",ref:"#skill"},maxLength:100},model:{type:"string",description:"Rizom brain model identifier."},version:{type:"string",description:"Brain runtime/model implementation version."},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}},brain:{type:"object",description:"Brain identity described by this discovery card.",required:["did","name","role","purpose","values"],properties:{did:{type:"string",description:"Public DID for the brain identity."},name:{type:"string",maxLength:200,description:"Human-readable brain name."},role:{type:"string",maxLength:500,description:"Brain role or persona."},purpose:{type:"string",maxLength:2000,description:"Short public description of what this brain is for."},values:{type:"array",description:"Public values or principles for this brain.",items:{type:"string",maxLength:200},maxLength:50}}},anchor:{type:"object",description:"Minimal Anchor snapshot for discovery grouping and display.",required:["did","name","category","kind"],properties:{did:{type:"string",description:"Public DID for the Anchor identity."},name:{type:"string",maxLength:200,description:"Human-readable anchor name."},category:{type:"string",knownValues:["person","team","organization"],description:"Stable structural category for discovery and grouping."},kind:{type:"string",maxLength:200,description:"Open semantic profile kind selected by the publishing brain."}}},skill:{type:"object",description:"User-facing skill this brain advertises for discovery.",required:["id","name","description"],properties:{id:{type:"string",maxLength:200},name:{type:"string",maxLength:200},description:{type:"string",maxLength:2000},tags:{type:"array",items:{type:"string"},maxLength:50},examples:{type:"array",items:{type:"string"},maxLength:20}}}}};var Jm={lexicon:1,id:"ai.rizom.brain.deck",defs:{main:{type:"record",description:"Public presentation deck from a Rizom brain.",key:"any",record:{type:"object",required:["title","body","createdAt"],properties:{title:{type:"string",maxLength:300},slug:{type:"string"},description:{type:"string",maxLength:2000},body:{type:"string",maxLength:1e5},format:{type:"string",knownValues:["text/markdown"]},author:{type:"string"},event:{type:"string"},publishedAt:{type:"string",format:"datetime"},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}}}};var Qm={lexicon:1,id:"ai.rizom.brain.link",defs:{main:{type:"record",description:"Public curated link from a Rizom brain.",key:"any",record:{type:"object",required:["title","url","createdAt"],properties:{title:{type:"string",maxLength:500},url:{type:"string",format:"uri"},description:{type:"string",maxLength:2000},summary:{type:"string",maxLength:1e5},domain:{type:"string"},capturedAt:{type:"string",format:"datetime"},source:{type:"ref",ref:"#source"},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}},source:{type:"object",description:"Attribution for where this link was captured.",required:["ref","label"],properties:{ref:{type:"string"},label:{type:"string"}}}}};var Hm={lexicon:1,id:"ai.rizom.brain.note",defs:{main:{type:"record",description:"Public knowledge note from a Rizom brain.",key:"any",record:{type:"object",required:["title","body","createdAt"],properties:{title:{type:"string",maxLength:300},body:{type:"string",maxLength:1e5},format:{type:"string",knownValues:["text/markdown"]},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}}}};var Bm={lexicon:1,id:"ai.rizom.brain.post",defs:{main:{type:"record",description:"Markdown blog post distributed by a Rizom brain.",key:"any",record:{type:"object",required:["title","body","createdAt"],properties:{title:{type:"string",maxLength:300},summary:{type:"string",maxLength:2000},body:{type:"string",maxLength:1e5},format:{type:"string",knownValues:["text/markdown"]},brainDid:{type:"string"},anchorDid:{type:"string"},canonicalUrl:{type:"string",format:"uri"},topics:{type:"array",items:{type:"string"},maxLength:50},coverImage:{type:"ref",ref:"#coverImage"},series:{type:"string",maxLength:200},seriesIndex:{type:"integer"},sourceEntityType:{type:"string",knownValues:["post"]},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},publishedAt:{type:"string",format:"datetime"}}}},coverImage:{type:"object",description:"Cover image attached to the post.",required:["blob"],properties:{blob:{type:"blob"},alt:{type:"string",maxLength:1000},width:{type:"integer"},height:{type:"integer"}}}}};var Gm={lexicon:1,id:"ai.rizom.brain.project",defs:{main:{type:"record",description:"Public project or case study from a Rizom brain.",key:"any",record:{type:"object",required:["title","body","year","createdAt"],properties:{title:{type:"string",maxLength:300},slug:{type:"string"},description:{type:"string",maxLength:2000},body:{type:"string",maxLength:1e5},format:{type:"string",knownValues:["text/markdown"]},year:{type:"integer"},url:{type:"string",format:"uri"},publishedAt:{type:"string",format:"datetime"},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}}}};var Um={lexicon:1,id:"ai.rizom.brain.series",defs:{main:{type:"record",description:"Public content series from a Rizom brain.",key:"any",record:{type:"object",required:["title","createdAt"],properties:{title:{type:"string",maxLength:300},slug:{type:"string"},description:{type:"string",maxLength:1e4},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}}}};var Fm={lexicon:1,id:"ai.rizom.brain.socialPost",defs:{main:{type:"record",description:"Semantic local social-post entity from a Rizom brain; not a Bluesky feed post.",key:"any",record:{type:"object",required:["title","platform","body","createdAt"],properties:{title:{type:"string",maxLength:300},platform:{type:"string"},body:{type:"string",maxLength:1e5},format:{type:"string",knownValues:["text/markdown"]},status:{type:"string"},publishedAt:{type:"string",format:"datetime"},platformPostId:{type:"string"},sourceLocalEntityType:{type:"string"},sourceLocalEntityId:{type:"string"},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}}}};var Nm={lexicon:1,id:"ai.rizom.brain.topic",defs:{main:{type:"record",description:"Public topic page from a Rizom brain.",key:"any",record:{type:"object",required:["title","body","createdAt"],properties:{title:{type:"string",maxLength:300},body:{type:"string",maxLength:1e5},format:{type:"string",knownValues:["text/markdown"]},brainDid:{type:"string"},anchorDid:{type:"string"},sourceEntityType:{type:"string"},sourceEntityId:{type:"string"},createdAt:{type:"string",format:"datetime"},updatedAt:{type:"string",format:"datetime"}}}}}};var Lm=W.object({type:W.string()}).catchall(W.unknown()),IB=W.object({type:W.literal("object"),description:W.string().optional(),required:W.array(W.string()).optional(),properties:W.record(W.string(),Lm)}),qB=W.object({lexicon:W.literal(1),id:W.string(),defs:W.object({main:W.object({type:W.literal("record"),key:W.string().min(1),description:W.string().optional(),record:W.object({type:W.literal("object"),required:W.array(W.string()).optional(),properties:W.record(W.string(),Lm)})})}).catchall(IB)});function m1(l){return qB.parse(l)}var _l={"ai.rizom.brain.card":m1(Ym),"ai.rizom.brain.deck":m1(Jm),"ai.rizom.brain.link":m1(Qm),"ai.rizom.brain.note":m1(Hm),"ai.rizom.brain.post":m1(Bm),"ai.rizom.brain.project":m1(Gm),"ai.rizom.brain.series":m1(Um),"ai.rizom.brain.socialPost":m1(Fm),"ai.rizom.brain.topic":m1(Nm)},_B="Additive optional fields are compatible; required-field, type, or constraint changes require a migration plan or new NSID.";function U1(l){return{status:"approved",version:"1.0.0",revision:1,owner:"Rizom",steward:"Rizom protocol registry",projectionPackage:l,compatibility:_B}}var Rm={"ai.rizom.brain.card":U1("@brains/atproto"),"ai.rizom.brain.deck":U1("@brains/decks"),"ai.rizom.brain.link":U1("@brains/link"),"ai.rizom.brain.note":U1("@brains/note"),"ai.rizom.brain.post":U1("@brains/blog"),"ai.rizom.brain.project":U1("@brains/portfolio"),"ai.rizom.brain.series":U1("@brains/series"),"ai.rizom.brain.socialPost":U1("@brains/social-media"),"ai.rizom.brain.topic":U1("@brains/topics")};function DB(){return Object.values(_l)}function jB(l){if(!(l in _l))return;return _l[l]}function SB(){return Object.entries(Rm).map(([l,r])=>({id:l,...r}))}function a2(l){return typeof l==="object"&&l!==null&&!Array.isArray(l)}var xB=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/;function sB(l){let r=W.string(),f=l.maxLength!==void 0?r.max(l.maxLength):r;if(l.knownValues)f=f.refine((i)=>l.knownValues?.includes(i),{message:`expected one of ${l.knownValues.join(", ")}`});if(l.format==="datetime")f=f.refine((i)=>xB.test(i)&&!Number.isNaN(Date.parse(i)),{message:"expected datetime"});if(l.format==="uri")f=f.refine((i)=>{try{return new URL(i),!0}catch{return!1}},{message:"expected uri"});return f}function EB(l,r){if(typeof l!=="string"||!l.startsWith("#"))return;let f=r[l.slice(1)];return f?.type==="object"?f:void 0}function pm(l,r){switch(l.type){case"string":return sB(l);case"integer":return W.number().int();case"boolean":return W.boolean();case"array":{let f=l.items?pm(l.items,r):W.unknown(),i=W.array(f);if(l.maxLength!==void 0)i=i.max(l.maxLength);return i}case"object":return Vm(l,r);case"ref":{let f=EB(l.ref,r);if(!f)return W.custom(()=>!1,{message:`unresolvable lexicon ref ${String(l.ref)}`});return W.lazy(()=>Vm(f,r))}case"blob":return W.custom(a2,{message:"expected blob"});default:return W.unknown()}}function Tm(l,r){let f=new Set(l.required??[]),i={};for(let[t,n]of Object.entries(l.properties??{})){let u=pm(n,r);i[t]=f.has(t)?u:u.optional()}return i}function Vm(l,r){return W.object(Tm(l,r)).passthrough()}function aw(l,r,f,i=[]){let t=Object.keys(l).filter((n)=>!r.has(n));if(t.length===0)return;f.addIssue({code:W.ZodIssueCode.custom,path:i,message:`unrecognized field(s): ${t.join(", ")}`})}function CB(l,r){if(aw(l,new Set(["$type","siteUrl","brain","anchor","skills","model","version","createdAt","updatedAt"]),r),a2(l.brain))aw(l.brain,new Set(["did","name","role","purpose","values"]),r,["brain"]);if(a2(l.anchor))aw(l.anchor,new Set(["did","name","category","kind"]),r,["anchor"])}function Pr(l){let r=W.object({...Tm(l.defs.main.record,l.defs),$type:W.literal(l.id).optional()}).passthrough();return l.id==="ai.rizom.brain.card"?r.superRefine(CB):r}var Ow={"ai.rizom.brain.card":Pr(_l["ai.rizom.brain.card"]),"ai.rizom.brain.deck":Pr(_l["ai.rizom.brain.deck"]),"ai.rizom.brain.link":Pr(_l["ai.rizom.brain.link"]),"ai.rizom.brain.note":Pr(_l["ai.rizom.brain.note"]),"ai.rizom.brain.post":Pr(_l["ai.rizom.brain.post"]),"ai.rizom.brain.project":Pr(_l["ai.rizom.brain.project"]),"ai.rizom.brain.series":Pr(_l["ai.rizom.brain.series"]),"ai.rizom.brain.socialPost":Pr(_l["ai.rizom.brain.socialPost"]),"ai.rizom.brain.topic":Pr(_l["ai.rizom.brain.topic"])};function eB(l,r){let f=l;for(let i of r){if(typeof i==="symbol")return;if(Array.isArray(f)){f=f[Number(i)];continue}if(!a2(f))return;f=f[String(i)]}return f}function lG(l,r,f){let i=f.path.join(".");if(i==="$type")return`AT Protocol record $type must match lexicon id: ${String(r.$type)} !== ${l.id}`;if(f.code==="invalid_type"&&eB(r,f.path)===void 0)return`Missing required AT Protocol record field: ${i}`;if(f.code==="invalid_type")return`Invalid AT Protocol record field ${i}: expected ${f.expected}`;if(f.code==="too_big")return`Invalid AT Protocol record field ${i}: exceeds maxLength ${f.maximum}`;if(f.code==="custom")return`Invalid AT Protocol record field ${i}: ${f.message}`;if(f.code==="unrecognized_keys")return`Unrecognized AT Protocol record field(s): ${f.keys.join(", ")}`;return`Invalid AT Protocol record field ${i}: ${f.message}`}function rG(l,r){let f=Pr(l).safeParse(r);if(f.success)return;let i=f.error.issues[0];if(!i)throw f.error;throw Error(lG(l,r,i))}var fG="atproto:brain-card-discovered",iG="atproto:brain-discovered",tG="atproto:brain-card-refreshed",nG="atproto:brain-card-unavailable",uG="atproto:brain-card-conflict",hG="atproto:jetstream-gap",oG=W.custom((l)=>Ow["ai.rizom.brain.card"].safeParse(l).success),wG=W.object({repoDid:W.string().min(1),uri:W.string().min(1),cid:W.string().min(1),record:oG}).strict(),vG=W.object({agentId:W.string().min(1),name:W.string().min(1),url:W.string().url(),status:W.enum(["discovered","approved","archived"]),repoDid:W.string().min(1).optional(),brainDid:W.string().min(1).optional(),anchorDid:W.string().min(1).optional(),cardUri:W.string().min(1).optional(),cardCid:W.string().min(1).optional()}).strict(),kG=W.object({repoDid:W.string().startsWith("did:plc:"),observedAt:W.string().datetime(),staleAfter:W.string().datetime().optional(),reason:W.enum(["deleted","refresh-failed"]),error:W.string().min(1).optional()}).strict(),mG=W.object({domain:W.string().min(1),existingRepoDid:W.string().min(1).optional(),candidateRepoDid:W.string().startsWith("did:plc:"),observedAt:W.string().datetime(),reason:W.string().min(1)}).strict(),$G=W.object({previousCursorTimeUs:W.number().int().nonnegative(),clampedCursorTimeUs:W.number().int().nonnegative(),observedAt:W.string().datetime()}).strict();class hf{static instance;projections=new Map;static getInstance(){return this.instance??=new hf,this.instance}static createFresh(){return new hf}static resetInstance(){this.instance=void 0}register(l){this.validateProjection(l);let r=this.get(l.entityType);if(r&&!this.isEquivalentProjection(r,l))throw Error(`AT Protocol projection already registered for entity type ${l.entityType}`);let f=this.projections.get(l.entityType)??[];return f.push(l),this.projections.set(l.entityType,f),this.createUnregister(l.entityType,l)}get(l){let r=this.projections.get(l);return r?.[r.length-1]}has(l){return this.get(l)!==void 0}list(){let l=[];for(let r of this.projections.keys()){let f=this.get(r);if(f)l.push(f)}return l}listLexicons(){return this.list().map((l)=>l.lexicon)}createUnregister(l,r){let f=!0;return()=>{if(!f)return;f=!1;let i=this.projections.get(l);if(!i)return;let t=i.lastIndexOf(r);if(t!==-1)i.splice(t,1);if(i.length===0)this.projections.delete(l)}}isEquivalentProjection(l,r){return l.entityType===r.entityType&&l.collection===r.collection&&l.lexicon.id===r.lexicon.id&&l.validate===r.validate}validateProjection(l){if(l.collection!==l.lexicon.id)throw Error(`AT Protocol projection collection must match lexicon id: ${l.collection} !== ${l.lexicon.id}`);if(!l.lexicon.defs.main.key)throw Error(`AT Protocol projection lexicon must define a record key: ${l.collection}`)}}var Xw=W.object({defaultPrompt:W.string().default("Write a blog post about my recent work and insights"),paginate:W.boolean().default(!0),pageSize:W.number().default(10)});var bG=W.object({prompt:W.string().optional(),title:W.string().optional(),content:W.string().optional(),excerpt:W.string().optional(),coverImageId:W.string().optional(),seriesName:W.string().optional(),seriesIndex:W.number().optional(),skipAi:W.boolean().optional()}),K00=O2.extend({title:W.string().optional(),slug:W.string().optional()});class Yw extends X2{constructor(l,r){super(l,r,{schema:bG,jobTypeName:"blog-generation",entityType:"post"})}async generate(l,r){let{prompt:f,coverImageId:i,seriesName:t,seriesIndex:n,skipAi:u}=l,{title:o,content:w,excerpt:v}=l;if(u){if(!o)this.failEarly("Title is required when skipAi is true");w=w??`## Introduction
|
|
@@ -1384,7 +1384,7 @@ ${l.map((n)=>({url:`${r}${n.path}`,lastmod:f,changefreq:n.path==="/"?"daily":"we
|
|
|
1384
1384
|
letter-spacing: 0.02em;
|
|
1385
1385
|
}
|
|
1386
1386
|
.printable-footer a { color: inherit; text-decoration: none; overflow-wrap: anywhere; }
|
|
1387
|
-
`}},void 0,!1,void 0,this),lr("header",{className:"printable-hero",children:[lr("div",{className:"printable-masthead",children:r.brandLabel&&lr("p",{className:"printable-kicker",children:r.brandLabel},void 0,!1,void 0,this)},void 0,!1,void 0,this),lr("div",{children:[lr("h1",{className:"printable-title",children:r.title},void 0,!1,void 0,this),r.excerpt&&lr("p",{className:"printable-excerpt",children:r.excerpt},void 0,!1,void 0,this),lr("div",{className:"printable-meta",children:[r.author&&lr("span",{children:["By ",r.author]},void 0,!0,void 0,this),f&&lr("span",{children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r.coverImageUrl&&lr("figure",{className:"printable-cover-wrap",children:lr("img",{className:"printable-cover",src:r.coverImageUrl,alt:""},void 0,!1,void 0,this)},void 0,!1,void 0,this),lr(rn,{markdown:r.body,className:"printable-body"},void 0,!1,void 0,this),(Boolean(r.canonicalUrl)||Boolean(r.brandLabel))&&lr("footer",{className:"printable-footer",children:[lr("span",{children:r.brandLabel??"Printable PDF"},void 0,!1,void 0,this),r.canonicalUrl&&lr("a",{href:r.canonicalUrl,children:r.canonicalUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var jK=T6({sourceEntityType:"post",attachmentType:_h,template:DK,themeMode:"light",buildContent:async(l,r)=>{let{frontmatter:f,content:i}=zf(l.content),t=kr.parse(f),n=await r.resolveImageDataUrl(t.coverImageId);return{title:t.title,body:i,...t.excerpt?{excerpt:t.excerpt}:{},...t.author?{author:t.author}:{},...t.publishedAt?{publishedAt:t.publishedAt}:{},...t.canonicalUrl?{canonicalUrl:t.canonicalUrl}:{},...n?{coverImageUrl:n}:{},...r.brandLabel?{brandLabel:r.brandLabel}:{}}},pageTitle:(l)=>l.title,slug:(l)=>I1(l.metadata.slug,l.metadata.title)});import{jsxDEV as aq}from"preact/jsx-dev-runtime";var jn="og-image",zq="blog:og-image",SK=W.object({title:W.string().min(1),excerpt:W.string().optional(),author:W.string().optional(),publishedAt:W.string().optional(),brandLabel:W.string().optional(),coverImageUrl:W.string().optional()}),xK={name:zq,pluginId:"blog",schema:SK,renderers:{image:Zq}};function Wq(l){if(!l)return;let r=new Date(l);if(Number.isNaN(r.getTime()))return;return fr(r,{style:"medium"})}function Zq(l){let r=SK.parse(l);return aq(st,{brandLabel:r.brandLabel??r.title,eyebrow:"Journal",title:r.title,subtitle:r.excerpt,meta:[r.author],tag:Wq(r.publishedAt)},void 0,!1,void 0,this)}var sK=Dn({sourceEntityType:"post",attachmentType:jn,template:xK,themeMode:"light",buildContent:async(l,r)=>{let{frontmatter:f}=zf(l.content),i=kr.parse(f),t=await r.resolveImageDataUrl(i.coverImageId);return{title:i.title,...i.excerpt?{excerpt:i.excerpt}:{},...i.author?{author:i.author}:{},...i.publishedAt?{publishedAt:i.publishedAt}:{},...t?{coverImageUrl:t}:{},...r.brandLabel?{brandLabel:r.brandLabel}:{}}},pageTitle:(l)=>l.title,slug:(l)=>I1(l.metadata.slug,l.metadata.title)});var EK={name:"@brains/blog",license:"AGPL-3.0-only",version:"0.2.0-alpha.247",description:"AI-powered blog post generation from existing brain content",dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/contracts":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/plugins":"workspace:*","@brains/style-guide":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{eval:"cd evals && bun run brain-eval",lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};class M6 extends nf{entityType=of.entityType;schema=P6;adapter=of;unregisterAtprotoProjection;unregisterPrintableAttachmentProvider;unregisterOgImageAttachmentProvider;constructor(l={}){super("blog",EK,l,Xw)}getEntityTypeConfig(){return{weight:2,projectionSourceRole:"primary",publish:{publishStatuses:["queued","published"]}}}createGenerationHandler(l){return new Yw(this.logger.child("BlogGenerationJobHandler"),l)}getTemplates(){return Dm()}getDataSources(){return[new Bw(this.logger.child("BlogDataSource"))]}async onRegister(l){let{RSSDataSource:r}=await import("./rss-datasource-09f2desr.js");l.entities.registerDataSource(new r(this.logger.child("RSSDataSource"))),jm(l,this.logger),Sm(l,this.logger),Em(l,this.logger),Cm(l),this.unregisterPrintableAttachmentProvider=l.attachments.register("post",_h,jK(l)),this.unregisterOgImageAttachmentProvider=l.attachments.register("post",jn,sK(l)),this.deferPublishAssetRegistration(l),this.unregisterAtprotoProjection=hf.getInstance().register(Fw()),this.logger.info("Blog plugin registered (routes auto-generated at /posts/)")}deferPublishAssetRegistration(l){l.messaging.subscribe(F1.pluginsRegistered,async()=>{return await l.messaging.send({type:Xm.register,payload:{entityType:"post",attachmentType:jn,mediaEntityType:"image",targetEntityField:{location:"frontmatter",field:"ogImageId"},requiredWhen:{status:"published"},autoGenerate:!0,jobType:"image:image-render-source"}}),{success:!0}})}async onShutdown(){this.unregisterPrintableAttachmentProvider?.(),this.unregisterPrintableAttachmentProvider=void 0,this.unregisterOgImageAttachmentProvider?.(),this.unregisterOgImageAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}}function Xq(l={}){return new M6(l)}var eK=W.object({}),Sn=Ii.extend({id:W.literal("site-info"),entityType:W.literal("site-info"),metadata:eK});var Yq=CK.omit({url:!0,analyticsScript:!0}),kt=Yq.extend({title:W.string().optional().describe("Optional site title override"),description:W.string().optional().describe("Optional site description override")});var Jq=W.record(W.string(),W.unknown());class g1 extends qi{constructor(){super({entityType:"site-info",purpose:"Singleton configuration describing the published site.",schema:Sn,frontmatterSchema:kt,isSingleton:!0,hasBody:!1})}createSiteInfoContent(l){let r=kt.parse(l);return this.buildMarkdown("",r)}parseSiteInfoBody(l){return this.parseFrontmatter(l)}fromMarkdown(l){return{content:l,entityType:"site-info"}}extractMetadata(l){return{}}generateFrontMatter(l){let r=this.parseFrontmatter(l.content);return this.buildMarkdown("",Jq.parse(r))}}var Qq={getBrain:()=>({name:"Brain",role:"Knowledge assistant",purpose:"A knowledge management system",values:[]}),getAnchor:()=>({name:"Brain",description:"A knowledge management system"})};class xn{logger;entityService;adapter;defaultSiteInfo;identitySource;static getDefaultSiteInfo(){return{represents:"anchor",title:"Brain",description:"A knowledge management system"}}static createFresh(l,r,f,i){return new xn(l,r,f,i)}constructor(l,r,f,i=Qq){this.entityService=l,this.logger=r.child("SiteInfoService"),this.adapter=new g1,this.identitySource=i,this.defaultSiteInfo={represents:"anchor",...f}}async initialize(){try{if(!await this.entityService.getEntity({entityType:"site-info",id:"site-info"})){if(await this.entityService.getEntity({entityType:"site-info",id:"site-info"}))return;this.logger.info("No site info found, creating default site info");let f=this.adapter.createSiteInfoContent(this.defaultSiteInfo);await this.entityService.createEntity({entity:{id:"site-info",entityType:"site-info",content:f,metadata:{}}}),this.logger.info("Default site info created successfully")}}catch(l){this.logger.error("Failed to initialize site info",{error:l})}}async getSiteInfo(){try{let l=await this.entityService.getEntity({entityType:"site-info",id:"site-info"});if(l)return this.resolveIdentityFallbacks(this.adapter.parseSiteInfoBody(l.content))}catch(l){this.logger.debug("Site info not found, using defaults",{error:l})}return this.resolveIdentityFallbacks(this.defaultSiteInfo)}resolveIdentityFallbacks(l){if(l.represents==="brain"){let f=this.identitySource.getBrain();return{...l,title:l.title??f.name,description:l.description??f.purpose}}let r=this.identitySource.getAnchor();return{...l,title:l.title??r.name,description:l.description??r.description??`The public site for ${r.name}`}}}var Hq=new g1;class Dh{logger;id="site-info:entities";name="Site Info DataSource";description="Provides website channel metadata such as title, description, and CTA";constructor(l){this.logger=l}async fetch(l,r,f){let{entityService:i}=f,t;try{let u=await i.getEntity({entityType:"site-info",id:"site-info"});t=u?Hq.parseSiteInfoBody(u.content):{represents:"anchor",title:"Brain",description:"A knowledge management system"}}catch{t={represents:"anchor",title:"Brain",description:"A knowledge management system"}}let n={...t,title:t.title??"Brain",description:t.description??"A knowledge management system",copyright:t.copyright??"Powered by Rizom"};return this.logger.debug("SiteInfoDataSource returning",{title:n.title}),r.parse(n)}}var lz={name:"@brains/site-info",license:"AGPL-3.0-only",version:"0.2.0-alpha.247",description:"Site info entity \u2014 site metadata, title, description, CTA",dependencies:{"@brains/contracts":"workspace:*","@brains/entity-service":"workspace:*","@brains/plugins":"workspace:*","@brains/site-composition":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/test-utils":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};var Gq=new g1,Uq="site-info";class I6 extends nf{entityType=Uq;schema=Sn;adapter=Gq;defaultSiteInfo;constructor(l){super("site-info",lz,{},Di);this.defaultSiteInfo=l?.siteInfo??{}}getEntityTypeConfig(){return{embeddable:!1,projectionSource:!1,projectionSourceRole:"excluded"}}getDataSources(){return[new Dh(this.logger.child("SiteInfoDataSource"))]}async onRegister(l){let r=xn.createFresh(l.entityService,this.logger,this.defaultSiteInfo,{getBrain:l.identity.get,getAnchor:l.identity.getProfile});l.messaging.subscribe(fz,async()=>{return{success:!0,data:await r.getSiteInfo()}}),l.messaging.subscribe(rz.updated,async(f)=>{if(f.payload.entityType==="site-info"){let t=await r.getSiteInfo();await l.messaging.send({type:iz,payload:t,broadcast:!0})}return{success:!0}}),l.messaging.subscribe(W2.initialCompleted,async()=>{return await r.initialize(),{success:!0}})}}function Fq(l){return new I6(l)}var Nq=new g1;async function q6(l){let f=(await l.listEntities({entityType:"site-info",options:{limit:1}}))[0];if(!f)throw Error("Site info not found \u2014 create a site-info entity");return Nq.parseSiteInfoBody(f.content)}function tz(l,r){let f=l.metadata.publishedAt??l.created,i=r.metadata.publishedAt??r.created;return new Date(i).getTime()-new Date(f).getTime()}async function Lq(l,r){return(await l.listEntities({entityType:r.entityType,options:{limit:20}})).sort(tz).slice(0,r.count).map(r.parse)}function Rq(l){if(!l)throw Error("CTA not configured in site-info");return l}var nz=W.object({label:W.string(),href:W.string(),priority:W.number()}),Vq=W.object({primary:W.array(nz),secondary:W.array(nz)}),pq=W.object({platform:W.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:W.string().describe("Profile or contact URL"),label:W.string().optional().describe("Optional display label")}),Tq=kt.extend({title:W.string(),description:W.string(),navigation:Vq,copyright:W.string(),socialLinks:W.array(pq).optional().describe("Social media links composed by a site integration")});var sn=W.enum(["generating","draft","queued","published","failed"]),uz="publishedAt is required when deck status is published",hz=(l)=>l.status==="published"&&!l.publishedAt,_6=(l)=>{if(hz(l))throw Error(uz)},Cr=W.object({title:W.string(),slug:W.string().optional(),description:W.string().optional(),author:W.string().optional(),status:sn,publishedAt:W.string().datetime().optional(),event:W.string().optional(),coverImageId:W.string().optional(),ogImageId:W.string().optional()}),Pq=W.object({title:W.string(),description:W.string().optional(),status:sn,publishedAt:W.string().datetime().optional(),coverImageId:W.string().optional(),slug:W.string(),error:W.string().optional()}).superRefine((l,r)=>{if(!hz(l))return;r.addIssue({code:W.ZodIssueCode.custom,path:["publishedAt"],message:uz})}),mt=Ii.extend({entityType:W.literal("deck"),metadata:Pq}),jh=mt.extend({frontmatter:Cr,body:W.string(),ogImageUrl:W.string().optional()}),Mq=jh.extend({url:W.string().optional(),typeLabel:W.string().optional(),listUrl:W.string().optional(),listLabel:W.string().optional(),coverImageUrl:W.string().optional(),ogImageUrl:W.string().optional(),coverImageWidth:W.number().optional(),coverImageHeight:W.number().optional()});var Iq=W.union([W.enum(["public","shared","restricted"]),W.literal("private")]).optional().transform((l)=>{if(l===void 0)return"public";if(l==="private")return"restricted";return l}),qq=W.object({title:W.string(),slug:W.string().nullable().default(null),description:W.string().nullable().default(null),author:W.string().nullable().default(null),status:sn,publishedAt:W.string().nullable().default(null),event:W.string().nullable().default(null),coverImageId:W.string().nullable().default(null),ogImageId:W.string().nullable().default(null)}),_q=W.object({title:W.string(),description:W.string().nullable().default(null),status:sn,publishedAt:W.string().nullable().default(null),coverImageId:W.string().nullable().default(null),slug:W.string(),error:W.string().nullable().default(null)}),wi=W.object({id:W.string(),entityType:W.literal("deck"),content:W.string(),created:W.string(),updated:W.string(),visibility:Iq,metadata:_q,contentHash:W.string(),frontmatter:qq,body:W.string(),url:W.string().nullable().default(null),typeLabel:W.string().nullable().default(null),listUrl:W.string().nullable().default(null),listLabel:W.string().nullable().default(null),coverImageUrl:W.string().nullable().default(null),ogImageUrl:W.string().nullable().default(null),coverImageWidth:W.number().nullable().default(null),coverImageHeight:W.number().nullable().default(null)});class D6 extends qi{constructor(){super({entityType:"deck",purpose:"A slide-deck presentation.",schema:mt,frontmatterSchema:Cr,supportsCoverImage:!0})}validateSlideStructure(l){if(!/^---$/gm.test(l))throw Error("Invalid deck: markdown must contain slide separators (---) to be a valid presentation")}toMarkdown(l){let r=this.extractBody(l.content);this.validateSlideStructure(r);let f=this.parseFrontMatter(l.content,Cr);_6(f);let i={...f,slug:f.slug??l.metadata.slug};return this.buildMarkdown(r,i)}fromMarkdown(l){let r=this.parseFrontmatter(l),f=this.extractBody(l);_6(r),this.validateSlideStructure(f);let i=r.slug??Mr(r.title),t=r.status;return{entityType:"deck",content:l,metadata:{slug:i,title:r.title,description:r.description,status:t,publishedAt:r.publishedAt,coverImageId:r.coverImageId}}}generateTitle(l){return l.metadata.title}generateSummary(l){if(l.metadata.description)return l.metadata.description;return`Presentation: ${l.metadata.title}`}generateFrontMatter(l){return this.toMarkdown(l)}buildStub(l){let r={title:l.title,slug:l.id,status:"generating"};return{content:this.buildMarkdown(`---
|
|
1387
|
+
`}},void 0,!1,void 0,this),lr("header",{className:"printable-hero",children:[lr("div",{className:"printable-masthead",children:r.brandLabel&&lr("p",{className:"printable-kicker",children:r.brandLabel},void 0,!1,void 0,this)},void 0,!1,void 0,this),lr("div",{children:[lr("h1",{className:"printable-title",children:r.title},void 0,!1,void 0,this),r.excerpt&&lr("p",{className:"printable-excerpt",children:r.excerpt},void 0,!1,void 0,this),lr("div",{className:"printable-meta",children:[r.author&&lr("span",{children:["By ",r.author]},void 0,!0,void 0,this),f&&lr("span",{children:f},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r.coverImageUrl&&lr("figure",{className:"printable-cover-wrap",children:lr("img",{className:"printable-cover",src:r.coverImageUrl,alt:""},void 0,!1,void 0,this)},void 0,!1,void 0,this),lr(rn,{markdown:r.body,className:"printable-body"},void 0,!1,void 0,this),(Boolean(r.canonicalUrl)||Boolean(r.brandLabel))&&lr("footer",{className:"printable-footer",children:[lr("span",{children:r.brandLabel??"Printable PDF"},void 0,!1,void 0,this),r.canonicalUrl&&lr("a",{href:r.canonicalUrl,children:r.canonicalUrl},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var jK=T6({sourceEntityType:"post",attachmentType:_h,template:DK,themeMode:"light",buildContent:async(l,r)=>{let{frontmatter:f,content:i}=zf(l.content),t=kr.parse(f),n=await r.resolveImageDataUrl(t.coverImageId);return{title:t.title,body:i,...t.excerpt?{excerpt:t.excerpt}:{},...t.author?{author:t.author}:{},...t.publishedAt?{publishedAt:t.publishedAt}:{},...t.canonicalUrl?{canonicalUrl:t.canonicalUrl}:{},...n?{coverImageUrl:n}:{},...r.brandLabel?{brandLabel:r.brandLabel}:{}}},pageTitle:(l)=>l.title,slug:(l)=>I1(l.metadata.slug,l.metadata.title)});import{jsxDEV as aq}from"preact/jsx-dev-runtime";var jn="og-image",zq="blog:og-image",SK=W.object({title:W.string().min(1),excerpt:W.string().optional(),author:W.string().optional(),publishedAt:W.string().optional(),brandLabel:W.string().optional(),coverImageUrl:W.string().optional()}),xK={name:zq,pluginId:"blog",schema:SK,renderers:{image:Zq}};function Wq(l){if(!l)return;let r=new Date(l);if(Number.isNaN(r.getTime()))return;return fr(r,{style:"medium"})}function Zq(l){let r=SK.parse(l);return aq(st,{brandLabel:r.brandLabel??r.title,eyebrow:"Journal",title:r.title,subtitle:r.excerpt,meta:[r.author],tag:Wq(r.publishedAt)},void 0,!1,void 0,this)}var sK=Dn({sourceEntityType:"post",attachmentType:jn,template:xK,themeMode:"light",buildContent:async(l,r)=>{let{frontmatter:f}=zf(l.content),i=kr.parse(f),t=await r.resolveImageDataUrl(i.coverImageId);return{title:i.title,...i.excerpt?{excerpt:i.excerpt}:{},...i.author?{author:i.author}:{},...i.publishedAt?{publishedAt:i.publishedAt}:{},...t?{coverImageUrl:t}:{},...r.brandLabel?{brandLabel:r.brandLabel}:{}}},pageTitle:(l)=>l.title,slug:(l)=>I1(l.metadata.slug,l.metadata.title)});var EK={name:"@brains/blog",license:"AGPL-3.0-only",version:"0.2.0-alpha.248",description:"AI-powered blog post generation from existing brain content",dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/contracts":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/plugins":"workspace:*","@brains/style-guide":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{eval:"cd evals && bun run brain-eval",lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};class M6 extends nf{entityType=of.entityType;schema=P6;adapter=of;unregisterAtprotoProjection;unregisterPrintableAttachmentProvider;unregisterOgImageAttachmentProvider;constructor(l={}){super("blog",EK,l,Xw)}getEntityTypeConfig(){return{weight:2,projectionSourceRole:"primary",publish:{publishStatuses:["queued","published"]}}}createGenerationHandler(l){return new Yw(this.logger.child("BlogGenerationJobHandler"),l)}getTemplates(){return Dm()}getDataSources(){return[new Bw(this.logger.child("BlogDataSource"))]}async onRegister(l){let{RSSDataSource:r}=await import("./rss-datasource-09f2desr.js");l.entities.registerDataSource(new r(this.logger.child("RSSDataSource"))),jm(l,this.logger),Sm(l,this.logger),Em(l,this.logger),Cm(l),this.unregisterPrintableAttachmentProvider=l.attachments.register("post",_h,jK(l)),this.unregisterOgImageAttachmentProvider=l.attachments.register("post",jn,sK(l)),this.deferPublishAssetRegistration(l),this.unregisterAtprotoProjection=hf.getInstance().register(Fw()),this.logger.info("Blog plugin registered (routes auto-generated at /posts/)")}deferPublishAssetRegistration(l){l.messaging.subscribe(F1.pluginsRegistered,async()=>{return await l.messaging.send({type:Xm.register,payload:{entityType:"post",attachmentType:jn,mediaEntityType:"image",targetEntityField:{location:"frontmatter",field:"ogImageId"},requiredWhen:{status:"published"},autoGenerate:!0,jobType:"image:image-render-source"}}),{success:!0}})}async onShutdown(){this.unregisterPrintableAttachmentProvider?.(),this.unregisterPrintableAttachmentProvider=void 0,this.unregisterOgImageAttachmentProvider?.(),this.unregisterOgImageAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}}function Xq(l={}){return new M6(l)}var eK=W.object({}),Sn=Ii.extend({id:W.literal("site-info"),entityType:W.literal("site-info"),metadata:eK});var Yq=CK.omit({url:!0,analyticsScript:!0}),kt=Yq.extend({title:W.string().optional().describe("Optional site title override"),description:W.string().optional().describe("Optional site description override")});var Jq=W.record(W.string(),W.unknown());class g1 extends qi{constructor(){super({entityType:"site-info",purpose:"Singleton configuration describing the published site.",schema:Sn,frontmatterSchema:kt,isSingleton:!0,hasBody:!1})}createSiteInfoContent(l){let r=kt.parse(l);return this.buildMarkdown("",r)}parseSiteInfoBody(l){return this.parseFrontmatter(l)}fromMarkdown(l){return{content:l,entityType:"site-info"}}extractMetadata(l){return{}}generateFrontMatter(l){let r=this.parseFrontmatter(l.content);return this.buildMarkdown("",Jq.parse(r))}}var Qq={getBrain:()=>({name:"Brain",role:"Knowledge assistant",purpose:"A knowledge management system",values:[]}),getAnchor:()=>({name:"Brain",description:"A knowledge management system"})};class xn{logger;entityService;adapter;defaultSiteInfo;identitySource;static getDefaultSiteInfo(){return{represents:"anchor",title:"Brain",description:"A knowledge management system"}}static createFresh(l,r,f,i){return new xn(l,r,f,i)}constructor(l,r,f,i=Qq){this.entityService=l,this.logger=r.child("SiteInfoService"),this.adapter=new g1,this.identitySource=i,this.defaultSiteInfo={represents:"anchor",...f}}async initialize(){try{if(!await this.entityService.getEntity({entityType:"site-info",id:"site-info"})){if(await this.entityService.getEntity({entityType:"site-info",id:"site-info"}))return;this.logger.info("No site info found, creating default site info");let f=this.adapter.createSiteInfoContent(this.defaultSiteInfo);await this.entityService.createEntity({entity:{id:"site-info",entityType:"site-info",content:f,metadata:{}}}),this.logger.info("Default site info created successfully")}}catch(l){this.logger.error("Failed to initialize site info",{error:l})}}async getSiteInfo(){try{let l=await this.entityService.getEntity({entityType:"site-info",id:"site-info"});if(l)return this.resolveIdentityFallbacks(this.adapter.parseSiteInfoBody(l.content))}catch(l){this.logger.debug("Site info not found, using defaults",{error:l})}return this.resolveIdentityFallbacks(this.defaultSiteInfo)}resolveIdentityFallbacks(l){if(l.represents==="brain"){let f=this.identitySource.getBrain();return{...l,title:l.title??f.name,description:l.description??f.purpose}}let r=this.identitySource.getAnchor();return{...l,title:l.title??r.name,description:l.description??r.description??`The public site for ${r.name}`}}}var Hq=new g1;class Dh{logger;id="site-info:entities";name="Site Info DataSource";description="Provides website channel metadata such as title, description, and CTA";constructor(l){this.logger=l}async fetch(l,r,f){let{entityService:i}=f,t;try{let u=await i.getEntity({entityType:"site-info",id:"site-info"});t=u?Hq.parseSiteInfoBody(u.content):{represents:"anchor",title:"Brain",description:"A knowledge management system"}}catch{t={represents:"anchor",title:"Brain",description:"A knowledge management system"}}let n={...t,title:t.title??"Brain",description:t.description??"A knowledge management system",copyright:t.copyright??"Powered by Rizom"};return this.logger.debug("SiteInfoDataSource returning",{title:n.title}),r.parse(n)}}var lz={name:"@brains/site-info",license:"AGPL-3.0-only",version:"0.2.0-alpha.248",description:"Site info entity \u2014 site metadata, title, description, CTA",dependencies:{"@brains/contracts":"workspace:*","@brains/entity-service":"workspace:*","@brains/plugins":"workspace:*","@brains/site-composition":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/test-utils":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};var Gq=new g1,Uq="site-info";class I6 extends nf{entityType=Uq;schema=Sn;adapter=Gq;defaultSiteInfo;constructor(l){super("site-info",lz,{},Di);this.defaultSiteInfo=l?.siteInfo??{}}getEntityTypeConfig(){return{embeddable:!1,projectionSource:!1,projectionSourceRole:"excluded"}}getDataSources(){return[new Dh(this.logger.child("SiteInfoDataSource"))]}async onRegister(l){let r=xn.createFresh(l.entityService,this.logger,this.defaultSiteInfo,{getBrain:l.identity.get,getAnchor:l.identity.getProfile});l.messaging.subscribe(fz,async()=>{return{success:!0,data:await r.getSiteInfo()}}),l.messaging.subscribe(rz.updated,async(f)=>{if(f.payload.entityType==="site-info"){let t=await r.getSiteInfo();await l.messaging.send({type:iz,payload:t,broadcast:!0})}return{success:!0}}),l.messaging.subscribe(W2.initialCompleted,async()=>{return await r.initialize(),{success:!0}})}}function Fq(l){return new I6(l)}var Nq=new g1;async function q6(l){let f=(await l.listEntities({entityType:"site-info",options:{limit:1}}))[0];if(!f)throw Error("Site info not found \u2014 create a site-info entity");return Nq.parseSiteInfoBody(f.content)}function tz(l,r){let f=l.metadata.publishedAt??l.created,i=r.metadata.publishedAt??r.created;return new Date(i).getTime()-new Date(f).getTime()}async function Lq(l,r){return(await l.listEntities({entityType:r.entityType,options:{limit:20}})).sort(tz).slice(0,r.count).map(r.parse)}function Rq(l){if(!l)throw Error("CTA not configured in site-info");return l}var nz=W.object({label:W.string(),href:W.string(),priority:W.number()}),Vq=W.object({primary:W.array(nz),secondary:W.array(nz)}),pq=W.object({platform:W.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:W.string().describe("Profile or contact URL"),label:W.string().optional().describe("Optional display label")}),Tq=kt.extend({title:W.string(),description:W.string(),navigation:Vq,copyright:W.string(),socialLinks:W.array(pq).optional().describe("Social media links composed by a site integration")});var sn=W.enum(["generating","draft","queued","published","failed"]),uz="publishedAt is required when deck status is published",hz=(l)=>l.status==="published"&&!l.publishedAt,_6=(l)=>{if(hz(l))throw Error(uz)},Cr=W.object({title:W.string(),slug:W.string().optional(),description:W.string().optional(),author:W.string().optional(),status:sn,publishedAt:W.string().datetime().optional(),event:W.string().optional(),coverImageId:W.string().optional(),ogImageId:W.string().optional()}),Pq=W.object({title:W.string(),description:W.string().optional(),status:sn,publishedAt:W.string().datetime().optional(),coverImageId:W.string().optional(),slug:W.string(),error:W.string().optional()}).superRefine((l,r)=>{if(!hz(l))return;r.addIssue({code:W.ZodIssueCode.custom,path:["publishedAt"],message:uz})}),mt=Ii.extend({entityType:W.literal("deck"),metadata:Pq}),jh=mt.extend({frontmatter:Cr,body:W.string(),ogImageUrl:W.string().optional()}),Mq=jh.extend({url:W.string().optional(),typeLabel:W.string().optional(),listUrl:W.string().optional(),listLabel:W.string().optional(),coverImageUrl:W.string().optional(),ogImageUrl:W.string().optional(),coverImageWidth:W.number().optional(),coverImageHeight:W.number().optional()});var Iq=W.union([W.enum(["public","shared","restricted"]),W.literal("private")]).optional().transform((l)=>{if(l===void 0)return"public";if(l==="private")return"restricted";return l}),qq=W.object({title:W.string(),slug:W.string().nullable().default(null),description:W.string().nullable().default(null),author:W.string().nullable().default(null),status:sn,publishedAt:W.string().nullable().default(null),event:W.string().nullable().default(null),coverImageId:W.string().nullable().default(null),ogImageId:W.string().nullable().default(null)}),_q=W.object({title:W.string(),description:W.string().nullable().default(null),status:sn,publishedAt:W.string().nullable().default(null),coverImageId:W.string().nullable().default(null),slug:W.string(),error:W.string().nullable().default(null)}),wi=W.object({id:W.string(),entityType:W.literal("deck"),content:W.string(),created:W.string(),updated:W.string(),visibility:Iq,metadata:_q,contentHash:W.string(),frontmatter:qq,body:W.string(),url:W.string().nullable().default(null),typeLabel:W.string().nullable().default(null),listUrl:W.string().nullable().default(null),listLabel:W.string().nullable().default(null),coverImageUrl:W.string().nullable().default(null),ogImageUrl:W.string().nullable().default(null),coverImageWidth:W.number().nullable().default(null),coverImageHeight:W.number().nullable().default(null)});class D6 extends qi{constructor(){super({entityType:"deck",purpose:"A slide-deck presentation.",schema:mt,frontmatterSchema:Cr,supportsCoverImage:!0})}validateSlideStructure(l){if(!/^---$/gm.test(l))throw Error("Invalid deck: markdown must contain slide separators (---) to be a valid presentation")}toMarkdown(l){let r=this.extractBody(l.content);this.validateSlideStructure(r);let f=this.parseFrontMatter(l.content,Cr);_6(f);let i={...f,slug:f.slug??l.metadata.slug};return this.buildMarkdown(r,i)}fromMarkdown(l){let r=this.parseFrontmatter(l),f=this.extractBody(l);_6(r),this.validateSlideStructure(f);let i=r.slug??Mr(r.title),t=r.status;return{entityType:"deck",content:l,metadata:{slug:i,title:r.title,description:r.description,status:t,publishedAt:r.publishedAt,coverImageId:r.coverImageId}}}generateTitle(l){return l.metadata.title}generateSummary(l){if(l.metadata.description)return l.metadata.description;return`Presentation: ${l.metadata.title}`}generateFrontMatter(l){return this.toMarkdown(l)}buildStub(l){let r={title:l.title,slug:l.id,status:"generating"};return{content:this.buildMarkdown(`---
|
|
1388
1388
|
`,r),metadata:{title:l.title,slug:l.id,status:"generating"}}}}var En=new D6;var Dq=W.object({markdown:W.string().describe("Markdown content with slide separators (---)"),deck:wi.nullable().default(null)}),j6=xl({name:"deck-detail",description:"Render a presentation deck as Reveal.js slides",schema:Dq,dataSourceId:"decks:entities",requiredPermission:"public",layout:{component:tw,fullscreen:!0}});var S6=W.object({decks:W.array(jh)}),x6=W.object({decks:W.array(wi),pageTitle:W.string().nullable().default(null),pageLabel:W.string().nullable().default(null)});import{jsxDEV as s6}from"preact/jsx-dev-runtime";var jq="Presentations",E6=({decks:l,pageLabel:r})=>{let f=l.map((t)=>({id:t.id,url:t.url,title:t.frontmatter.title,date:t.frontmatter.publishedAt??t.created,...t.frontmatter.description?{description:t.frontmatter.description}:{}}));return s6("div",{className:"deck-list bg-theme",children:s6("div",{className:"container mx-auto max-w-[1100px] px-6 py-16 md:px-12 md:py-24",children:s6(Et,{label:r&&r!=="Decks"?r:jq,items:f},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)};class Sh extends oz{constructor(){super(S6,{title:"Deck List",mappings:[{key:"decks",label:"Decks",type:"array",itemType:"object"}]})}}var C6=xl({name:"deck-list",description:"List view of all presentation decks",schema:x6,dataSourceId:"decks:entities",requiredPermission:"public",formatter:new Sh,layout:{component:E6}});var Sq=W.object({title:W.string().max(80).describe("A short, punchy title (2-5 words) that's memorable and evocative"),content:W.string().describe("Full slide deck content in markdown format with slide separators (---). Each slide should have a header and focused content."),description:W.string().describe("A concise 1-2 sentence summary that captures the essence of the talk")}),wz=xl({name:"decks:generation",description:"Template for AI to generate complete slide decks from prompts",schema:Sq,dataSourceId:"shell:ai-content",requiredPermission:"public",useKnowledgeContext:!0,basePrompt:`Generate a complete slide deck based on the user's prompt.
|
|
1389
1389
|
|
|
1390
1390
|
Content requirements:
|
|
@@ -1688,12 +1688,12 @@ ${o}`,templateName:"decks:description",representedIdentity:"none"})).description
|
|
|
1688
1688
|
color: var(--carousel-accent);
|
|
1689
1689
|
font-weight: 600;
|
|
1690
1690
|
}
|
|
1691
|
-
`}},void 0,!1,void 0,this),t.map((v,m)=>ur("section",{className:`deck-carousel-slide${m===0?" is-cover":""}`,children:[ur("header",{className:"deck-carousel-header",children:ur("span",{className:"deck-carousel-wordmark","aria-label":f??r,children:[ur("span",{className:"wm-primary",children:n.primary},void 0,!1,void 0,this),n.secondary!==void 0&&ur(l_,{children:[ur("span",{className:"wm-dot",children:"."},void 0,!1,void 0,this),ur("span",{className:"wm-secondary",children:n.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),ur("div",{className:"deck-carousel-body",children:ur("div",{className:"deck-carousel-content",dangerouslySetInnerHTML:{__html:w(v.markdown)}},void 0,!1,void 0,this)},void 0,!1,void 0,this),ur("footer",{className:"deck-carousel-footer",children:[ur("span",{className:"deck-carousel-footer-meta",children:i??r},void 0,!1,void 0,this),ur("span",{className:"deck-carousel-counter","aria-label":`Slide ${m+1} of ${u}`,children:[ur("span",{className:"deck-carousel-counter-current",children:String(m+1).padStart(2,"0")},void 0,!1,void 0,this)," / ",ur("span",{children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},m,!0,void 0,this))]},void 0,!0,void 0,this)}var yz=20;class f4{metadata={outputEntityType:"document"};context;renderPdf;getThemeMode;constructor(l,r={}){this.context=l,this.renderPdf=r.renderPdf,this.getThemeMode=r.getThemeMode??(async()=>"dark")}async resolve(l){if(l.sourceEntityType!=="deck")return;let r=await this.context.entityService.getEntity({entityType:"deck",id:l.sourceEntityId});if(!r)return;let{brandLabel:f}=qh(this.context),i=r_(r,{brandLabel:f});if(i.slides.length>yz)throw Error(`Refusing to render carousel with ${i.slides.length} slides; maxSlides=${yz}`);return{type:"document",data:await _n({mediaPath:`/_media/carousel/${r.id}`,template:bz,content:i,title:i.title,themeMode:await this.getThemeMode(),themeCSS:this.context.themeCSS,tmpPrefix:"brain-deck-carousel-",...this.renderPdf?{renderPdf:this.renderPdf}:{}}),mimeType:"application/pdf",filename:`${I1(r.metadata.slug,r.metadata.title)}-carousel.pdf`}}}function r_(l,r={}){let{frontmatter:f,content:i}=zf(l.content),t=typeof f.title==="string"?f.title:l.metadata.title,n=typeof f.event==="string"&&f.event.length>0?f.event:void 0,u=i.split(/^---$/gm).map((o)=>o.trim()).filter((o)=>o.length>0).map((o)=>({markdown:o}));return{title:t,slides:u,...r.brandLabel?{brandLabel:r.brandLabel}:{},...n?{eyebrow:n}:{}}}import{jsxDEV as t_}from"preact/jsx-dev-runtime";var xh="og-image",f_="decks:og-image",gz=W.object({title:W.string().min(1),description:W.string().optional(),event:W.string().optional(),brandLabel:W.string().optional(),slideCount:W.number().int().positive().optional(),coverImageUrl:W.string().optional()}),dz={name:f_,pluginId:"decks",schema:gz,renderers:{image:i_}};function i_(l){let r=gz.parse(l),f=r.slideCount?`${r.slideCount} slide${r.slideCount===1?"":"s"}`:void 0;return t_(st,{brandLabel:r.brandLabel??r.title,eyebrow:"Deck",title:r.title,subtitle:r.description,meta:[r.event],tag:f},void 0,!1,void 0,this)}var cz=Dn({sourceEntityType:"deck",attachmentType:xh,template:dz,themeMode:"dark",buildContent:async(l,r)=>{let{frontmatter:f,content:i}=zf(l.content),t=Cr.parse(f),n=n_(i),u=await r.resolveImageDataUrl(t.coverImageId);return{title:t.title,...t.description?{description:t.description}:{},...t.event?{event:t.event}:{},...n?{slideCount:n}:{},...u?{coverImageUrl:u}:{},...r.brandLabel?{brandLabel:r.brandLabel}:{}}},pageTitle:(l)=>l.title,slug:(l)=>I1(l.metadata.slug,l.metadata.title)});function n_(l){return l.split(/^---$/gm).map((r)=>r.trim()).filter((r)=>r.length>0).length}async function Az({entity:l,config:r}){let f=mt.parse(l),i=Zl(f.content,Cr),t=i.metadata;return{$type:"ai.rizom.brain.deck",title:t.title,...t.slug&&{slug:t.slug},...t.description&&{description:t.description},body:i.content,format:"text/markdown",...t.author&&{author:t.author},...t.event&&{event:t.event},...t.publishedAt&&{publishedAt:t.publishedAt},...r.brainDid&&{brainDid:r.brainDid},...r.anchorDid&&{anchorDid:r.anchorDid},sourceEntityType:"deck",sourceEntityId:f.id,createdAt:f.created,...f.updated&&{updatedAt:f.updated}}}function i4(){return{entityType:"deck",collection:"ai.rizom.brain.deck",lexicon:_l["ai.rizom.brain.deck"],validate:!1,buildRecord:Az}}var Kz={name:"@brains/decks",license:"AGPL-3.0-only",version:"0.2.0-alpha.
|
|
1691
|
+
`}},void 0,!1,void 0,this),t.map((v,m)=>ur("section",{className:`deck-carousel-slide${m===0?" is-cover":""}`,children:[ur("header",{className:"deck-carousel-header",children:ur("span",{className:"deck-carousel-wordmark","aria-label":f??r,children:[ur("span",{className:"wm-primary",children:n.primary},void 0,!1,void 0,this),n.secondary!==void 0&&ur(l_,{children:[ur("span",{className:"wm-dot",children:"."},void 0,!1,void 0,this),ur("span",{className:"wm-secondary",children:n.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),ur("div",{className:"deck-carousel-body",children:ur("div",{className:"deck-carousel-content",dangerouslySetInnerHTML:{__html:w(v.markdown)}},void 0,!1,void 0,this)},void 0,!1,void 0,this),ur("footer",{className:"deck-carousel-footer",children:[ur("span",{className:"deck-carousel-footer-meta",children:i??r},void 0,!1,void 0,this),ur("span",{className:"deck-carousel-counter","aria-label":`Slide ${m+1} of ${u}`,children:[ur("span",{className:"deck-carousel-counter-current",children:String(m+1).padStart(2,"0")},void 0,!1,void 0,this)," / ",ur("span",{children:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},m,!0,void 0,this))]},void 0,!0,void 0,this)}var yz=20;class f4{metadata={outputEntityType:"document"};context;renderPdf;getThemeMode;constructor(l,r={}){this.context=l,this.renderPdf=r.renderPdf,this.getThemeMode=r.getThemeMode??(async()=>"dark")}async resolve(l){if(l.sourceEntityType!=="deck")return;let r=await this.context.entityService.getEntity({entityType:"deck",id:l.sourceEntityId});if(!r)return;let{brandLabel:f}=qh(this.context),i=r_(r,{brandLabel:f});if(i.slides.length>yz)throw Error(`Refusing to render carousel with ${i.slides.length} slides; maxSlides=${yz}`);return{type:"document",data:await _n({mediaPath:`/_media/carousel/${r.id}`,template:bz,content:i,title:i.title,themeMode:await this.getThemeMode(),themeCSS:this.context.themeCSS,tmpPrefix:"brain-deck-carousel-",...this.renderPdf?{renderPdf:this.renderPdf}:{}}),mimeType:"application/pdf",filename:`${I1(r.metadata.slug,r.metadata.title)}-carousel.pdf`}}}function r_(l,r={}){let{frontmatter:f,content:i}=zf(l.content),t=typeof f.title==="string"?f.title:l.metadata.title,n=typeof f.event==="string"&&f.event.length>0?f.event:void 0,u=i.split(/^---$/gm).map((o)=>o.trim()).filter((o)=>o.length>0).map((o)=>({markdown:o}));return{title:t,slides:u,...r.brandLabel?{brandLabel:r.brandLabel}:{},...n?{eyebrow:n}:{}}}import{jsxDEV as t_}from"preact/jsx-dev-runtime";var xh="og-image",f_="decks:og-image",gz=W.object({title:W.string().min(1),description:W.string().optional(),event:W.string().optional(),brandLabel:W.string().optional(),slideCount:W.number().int().positive().optional(),coverImageUrl:W.string().optional()}),dz={name:f_,pluginId:"decks",schema:gz,renderers:{image:i_}};function i_(l){let r=gz.parse(l),f=r.slideCount?`${r.slideCount} slide${r.slideCount===1?"":"s"}`:void 0;return t_(st,{brandLabel:r.brandLabel??r.title,eyebrow:"Deck",title:r.title,subtitle:r.description,meta:[r.event],tag:f},void 0,!1,void 0,this)}var cz=Dn({sourceEntityType:"deck",attachmentType:xh,template:dz,themeMode:"dark",buildContent:async(l,r)=>{let{frontmatter:f,content:i}=zf(l.content),t=Cr.parse(f),n=n_(i),u=await r.resolveImageDataUrl(t.coverImageId);return{title:t.title,...t.description?{description:t.description}:{},...t.event?{event:t.event}:{},...n?{slideCount:n}:{},...u?{coverImageUrl:u}:{},...r.brandLabel?{brandLabel:r.brandLabel}:{}}},pageTitle:(l)=>l.title,slug:(l)=>I1(l.metadata.slug,l.metadata.title)});function n_(l){return l.split(/^---$/gm).map((r)=>r.trim()).filter((r)=>r.length>0).length}async function Az({entity:l,config:r}){let f=mt.parse(l),i=Zl(f.content,Cr),t=i.metadata;return{$type:"ai.rizom.brain.deck",title:t.title,...t.slug&&{slug:t.slug},...t.description&&{description:t.description},body:i.content,format:"text/markdown",...t.author&&{author:t.author},...t.event&&{event:t.event},...t.publishedAt&&{publishedAt:t.publishedAt},...r.brainDid&&{brainDid:r.brainDid},...r.anchorDid&&{anchorDid:r.anchorDid},sourceEntityType:"deck",sourceEntityId:f.id,createdAt:f.created,...f.updated&&{updatedAt:f.updated}}}function i4(){return{entityType:"deck",collection:"ai.rizom.brain.deck",lexicon:_l["ai.rizom.brain.deck"],validate:!1,buildRecord:Az}}var Kz={name:"@brains/decks",license:"AGPL-3.0-only",version:"0.2.0-alpha.248",description:"Presentation decks plugin for creating and viewing slide presentations",dependencies:{"@brains/atproto-contracts":"workspace:*","@brains/content-formatters":"workspace:*","@brains/contracts":"workspace:*","@brains/image":"workspace:*","@brains/media-page-composer":"workspace:*","@brains/plugins":"workspace:*","@brains/site-info":"workspace:*","@brains/style-guide":"workspace:*","@brains/ui-library":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/app":"workspace:*","@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{eval:"cd evals && bun run brain-eval",lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};var h_=W.object({prompt:W.string(),event:W.string().optional()}),o_=W.object({title:W.string(),content:W.string()});class t4 extends nf{deps;entityType=En.entityType;schema=En.schema;adapter=En;unregisterCarouselAttachmentProvider;unregisterOgImageAttachmentProvider;unregisterAtprotoProjection;constructor(l={}){super("decks",Kz,{},Di);this.deps=l}createGenerationHandler(l){return new r4(this.logger.child("DeckGenerationJobHandler"),l)}getTemplates(){return{"deck-detail":j6,"deck-list":C6,generation:wz,description:vz}}getDataSources(){return[new l4(this.logger)]}getEntityTypeConfig(){return{weight:1.5,projectionSourceRole:"primary"}}async onRegister(l){this.deferPublishRegistration(l),this.subscribeToPublishExecute(l),this.registerCarouselAttachmentProvider(l),this.registerOgImageAttachmentProvider(l),this.registerEvalHandlers(l),this.unregisterAtprotoProjection=hf.getInstance().register(i4()),this.logger.info("Decks plugin registered")}async onShutdown(){this.unregisterCarouselAttachmentProvider?.(),this.unregisterCarouselAttachmentProvider=void 0,this.unregisterOgImageAttachmentProvider?.(),this.unregisterOgImageAttachmentProvider=void 0,this.unregisterAtprotoProjection?.(),this.unregisterAtprotoProjection=void 0}deferPublishRegistration(l){l.messaging.subscribe(F1.pluginsRegistered,async()=>{return await l.messaging.send({type:Fr.register,payload:{entityType:"deck",provider:{name:"internal",publish:async()=>({id:"internal"})},config:{executionMode:"provider"}}}),{success:!0}})}subscribeToPublishExecute(l){l.messaging.subscribe(Fr.execute,async(r)=>{let{entityType:f,entityId:i}=r.payload;if(f!=="deck")return{success:!0};try{let t=await l.entityService.getEntity({entityType:"deck",id:i});if(!t)return await l.messaging.send({type:Fr.reportFailure,payload:{entityType:f,entityId:i,error:`Deck not found: ${i}`}}),{success:!0};if(t.metadata.status==="published")return{success:!0};let n=new Date().toISOString(),u={...t,metadata:{...t.metadata,status:"published",publishedAt:n}};await l.entityService.updateEntity({entity:{...u,content:this.adapter.toMarkdown(u)}}),await l.messaging.send({type:Fr.reportSuccess,payload:{entityType:f,entityId:i,result:{id:i}}})}catch(t){await l.messaging.send({type:Fr.reportFailure,payload:{entityType:f,entityId:i,error:mr(t)}})}return{success:!0}})}registerCarouselAttachmentProvider(l){let r={...this.deps,getThemeMode:this.deps.getThemeMode??(async()=>{try{return(await q6(l.entityService)).themeMode??"dark"}catch{return"dark"}})};this.unregisterCarouselAttachmentProvider=l.attachments.register("deck",mz,new f4(l,r))}registerOgImageAttachmentProvider(l){this.unregisterOgImageAttachmentProvider=l.attachments.register("deck",xh,cz(l))}registerEvalHandlers(l){l.eval.registerHandler("generateDeck",async(r)=>{let f=h_.parse(r),i=G1(await B1(l.entityService));return l.ai.generate({prompt:`${f.prompt}${f.event?`
|
|
1692
1692
|
|
|
1693
1693
|
Note: This presentation is for "${f.event}".`:""}`,templateName:"decks:generation",representedIdentity:"anchor",...i&&{styleGuide:{voice:i}}})}),l.eval.registerHandler("generateDescription",async(r)=>{let f=o_.parse(r);return l.ai.generate({prompt:`Title: ${f.title}
|
|
1694
1694
|
|
|
1695
1695
|
Content:
|
|
1696
|
-
${f.content}`,templateName:"decks:description",representedIdentity:"none"})})}}function w_(){return new t4}var zz={name:"@brains/profile",license:"AGPL-3.0-only",version:"0.2.0-alpha.
|
|
1696
|
+
${f.content}`,templateName:"decks:description",representedIdentity:"none"})})}}function w_(){return new t4}var zz={name:"@brains/profile",license:"AGPL-3.0-only",version:"0.2.0-alpha.248",description:"Anchor-profile extensions and context-generated starter identity lifecycle",dependencies:{"@brains/plugins":"workspace:*","@brains/utils":"workspace:*"},devDependencies:{"@brains/eslint-config":"workspace:*","@brains/typescript-config":"workspace:*","@types/bun":"^1.3.14","bun-types":"^1.3.14",eslint:"^10.5.0",typescript:"^7.0.2"},exports:{".":"./src/index.ts"},private:!0,scripts:{lint:"eslint . --max-warnings 0","lint:fix":"eslint . --max-warnings 0 --fix",test:"bun test",typecheck:"tsc --noEmit"},type:"module"};var Wf=W.object({tagline:W.string().optional().describe("Short public profile tagline"),intro:W.string().optional().describe("Longer public profile introduction"),story:W.string().optional().describe("Extended profile narrative sourced from the markdown body"),audience:W.string().optional().describe("Primary audience or community served")}),sh=W.object({tagline:Wf.shape.tagline,intro:Wf.shape.intro,audience:Wf.shape.audience}),Eh=W.object({role:W.string().optional().describe("Professional role or working identity"),expertise:W.array(W.string()).optional().describe("Skills, domains, and areas of focus"),currentFocus:W.string().optional().describe("What the professional is currently working on"),availability:W.string().optional().describe("Work, speaking, or collaboration availability")}),Wz=Wf.extend(Eh.shape),n4=W.object({purpose:W.string().optional().describe("Team purpose"),focusAreas:W.array(W.string()).optional().describe("Team focus areas"),capabilities:W.array(W.string()).optional().describe("Team capabilities"),workingPrinciples:W.array(W.string()).optional().describe("Principles guiding how the team works")}),Zz=Wf.extend(n4.shape),u4=W.object({mission:W.string().optional().describe("Organization mission"),focusAreas:W.array(W.string()).optional().describe("Organization focus areas"),offerings:W.array(W.string()).optional().describe("Organization products, services, or programs"),values:W.array(W.string()).optional().describe("Organization values")}),az=Wf.extend(u4.shape),k_=$t.extend(Wz.shape).strict(),m_=$t.extend(Zz.shape).strict(),$_=$t.extend(az.shape).strict(),Oz=$t.extend(Wf.shape).loose(),b_=Oz.extend(Eh.shape).loose();var h4=[{kind:"professional",category:"person",fields:Eh,labels:{singular:"Professional",plural:"Professionals"}},{kind:"team",category:"team",fields:n4,labels:{singular:"Team",plural:"Teams"}},{kind:"organization",category:"organization",fields:u4,labels:{singular:"Organization",plural:"Organizations"}}],y_=W.record(W.string(),W.unknown()),g_={person:"person",professional:"person",team:"team",organization:"organization",collective:"organization"};function d_(l,r){if(l===void 0)return;if(typeof l!=="string")throw Error("anchor-profile transitional kind must be a string");let f=g_[l];if(!f)throw Error(`Unknown transitional anchor-profile kind: ${l}`);if(r&&f!==r.category)throw Error(`anchor-profile content kind category ${f} does not match configured category ${r.category}`)}function o4(l,r){let{metadata:f}=Zl(l,y_);if(Object.hasOwn(f,"story"))throw Error("anchor-profile story must be stored in the markdown body, not frontmatter");d_(f.kind,r);let{kind:i,...t}=f,n=r?.fields.shape??{};$t.extend(sh.shape).extend(n).strict().parse(t)}var c_=50,Xz=12,A_=12,K_=160,z_=/\b(?:ranger|relay|rover)\b/iu,W_=W.record(W.string(),W.unknown()),Z_=["title","name","summary","description","topic","tagline"],a_=[["name"],["description"],["tagline"],["intro"],["role"],["purpose"],["mission"],["audience"],["expertise"],["currentFocus"],["focusAreas"],["capabilities"],["offerings"],["values"],["workingPrinciples"]],O_=[["messaging","audiences"],["messaging","positioning"],["voice","summary"],["voice","traits"],["voice","principles"],["voice","preferredTerms"],["voice","avoid"]],X_=new Set(["anchor-profile","brain-character","conversation","image","site-info","style-guide"]),Y_=W.string().trim().min(3).max(80).refine((l)=>l.split(/\s+/u).length>=2&&l.split(/\s+/u).length<=6,"Role must contain between two and six words").refine((l)=>!/[.!?]$/u.test(l),"Role must be a phrase"),J_=W.string().trim().min(12).max(240).refine((l)=>!/[\r\n]/u.test(l),"Purpose must be one line"),Q_=W.string().trim().min(2).max(60).refine((l)=>l.split(/\s+/u).length<=5,"Values must contain at most five words"),w4=W.object({role:Y_,purpose:J_,values:W.array(Q_).length(3)}).refine(({values:l})=>new Set(l.map((r)=>r.toLowerCase())).size===l.length,{message:"Values must be distinct",path:["values"]});function Qz(l){return l.replace(/\s+/gu," ").trim().slice(0,K_)}function k4(l){if(typeof l==="string"){let r=Qz(l);return r?[r]:[]}if(Array.isArray(l))return l.flatMap((r)=>typeof r==="string"?k4(r):[]);return[]}function v4(l){try{return Zl(l,W_).metadata}catch{return null}}function H_(l){return l!==null&&typeof l==="object"&&!Array.isArray(l)}function B_(l,r){let f=l;for(let i of r){if(!H_(f))return;f=f[i]}return f}function Yz(l,r){let f=[];for(let i of r)for(let t of k4(B_(l,i)))if(f.push(`${i.join(".")}: ${t}`),f.length>=A_)return f;return f}function G_(l){let r=v4(l.content);if(!r)return null;let f=[];for(let t of Z_){let n=k4(r[t]);if(n.length>0)f.push(`${t}: ${n.join(", ")}`);if(f.length>=2)break}return Qz(f.join(" \u2014 "))||null}function Jz(l){if(l==="topic")return 0;if(l==="summary")return 1;return 2}async function U_(l,r){let f=[...r.entries()].filter(([t,n])=>n>0&&!X_.has(t)).sort(([t,n],[u,o])=>Jz(t)-Jz(u)||o-n||t.localeCompare(u)),i=[];for(let[t]of f){let n=await l.listEntities({entityType:t,options:{limit:Xz,sortFields:[{field:"updated",direction:"desc"}],filter:{visibilityScope:"restricted"}}});for(let u of n){let o=G_(u);if(!o||z_.test(o))continue;if(i.push({entityType:t,label:o}),i.length>=Xz)return i}}return i}async function m4(l){let{entityService:r,profileKind:f,profileCategory:i,anchorEntity:t,includeAnchor:n}=l,u=await r.getEntityCounts("restricted"),o=new Map(u.map(({entityType:c,count:O})=>[c,O])),w=r.getEntityTypes().sort((c,O)=>c.localeCompare(O)).slice(0,c_).map((c)=>({entityType:c,count:o.get(c)??0})),v=n&&t?v4(t.content):null,m=v?Yz(v,a_):[],$=await r.getEntity({entityType:"style-guide",id:"style-guide",visibilityScope:"restricted"}),b=$?v4($.content):null,d=b?Yz(b,O_):[];return{...f&&{profileKind:f},...i&&{profileCategory:i},capabilities:w,anchorSignals:m,styleSignals:d,contentSignals:await U_(r,o)}}function Hz(l){return`Create a durable starter character for a software agent from the factual brief below.
|
|
1697
1697
|
|
|
1698
1698
|
Return only the requested structured fields.
|
|
1699
1699
|
|
|
@@ -1710,5 +1710,5 @@ Requirements:
|
|
|
1710
1710
|
Factual brief:
|
|
1711
1711
|
${JSON.stringify(l,null,2)}`}async function $4(l,r){let f=await l.generateObject(Hz(r),w4);return w4.parse(f.object)}import{createHash as F_}from"crypto";var N_=W.record(W.string(),W.unknown()),b4={first:["Arcane","Astonishing","Bold","Cosmic","Daring","Deep","Dynamic","Electric","Endless","Fearless","Hidden","Infinite","Keen","Lucky","Midnight","Mighty","Mystic","Noble","Phantom","Profound","Quiet","Radiant","Silent","Solar","Sonic","Supreme","Swift","Thunderous","Uncommon","Vivid"],second:["Architect","Cipher","Diplomat","Dreamer","Explorer","Genius","Guide","Herald","Inventor","Luminary","Magician","Mastermind","Navigator","Observer","Operator","Oracle","Pioneer","Sage","Scholar","Scribe","Seeker","Specialist","Strategist","Thinker","Voyager","Watcher","Weaver","Wizard"]},L_=[{id:"brain-v2",character:{name:"Brain",role:"Knowledge assistant",purpose:"Help organize, understand, and retrieve information from your knowledge base",values:["clarity","accuracy","helpfulness"]}},{id:"personal-brain-v1",character:{name:"Personal Brain",role:"Personal knowledge assistant",purpose:"Help organize, understand, and retrieve information from your personal knowledge base",values:["clarity","accuracy","helpfulness"]}}],R_=[{id:"unknown-person-v1",name:"Unknown",kind:"person"}];function Uz(l){let r=l.trim().toLowerCase();if(!r)return null;let f;try{f=new URL(/^[a-z][a-z\d+.-]*:\/\//u.test(r)?r:`https://${r}`).host}catch{return null}return f.replace(/\.$/u,"")||null}function V_(l){let r=l.trim().toLowerCase();if(!r.startsWith("did:web:"))return null;let f=r.slice(8).split(":");if(f.length!==1||!f[0])return null;try{return Uz(decodeURIComponent(f[0]))}catch{return null}}function c4(l){let r=l.domain?Uz(l.domain):l.didWeb?V_(l.didWeb):null;return r?`domain:${r}`:null}function p_(l){return F_("sha256").update(l).digest()}function Bz(l,r,f){let i=r[f]??0,t=l[i%l.length];if(t===void 0)throw Error("Starter identity register is empty");return t}function Fz(l){let r=p_(`starter-alias:v1:${l}`);return{name:`${Bz(b4.first,r,0)} ${Bz(b4.second,r,1)}`}}function A4(l){try{let r=Zl(l,N_);return{metadata:r.metadata,body:r.content.trim()}}catch{return null}}function y4(l,r){let f=Object.keys(l).sort(),i=[...r].sort();return f.length===i.length&&f.every((t,n)=>t===i[n])}function Nz(l){let r=A4(l);if(!r||r.body||!y4(r.metadata,["name","role","purpose","values"]))return!1;let f=d4.safeParse(r.metadata);if(!f.success)return!1;return L_.some(({character:i})=>Boolean(f.data.name===i.name&&f.data.role===i.role&&f.data.purpose===i.purpose&&f.data.values.length===i.values.length&&f.data.values.every((t,n)=>t===i.values[n])))}function g4(l){let r=A4(l);if(!r||r.body)return!1;if(y4(r.metadata,["name"])&&r.metadata.name==="Unknown")return!0;if(!y4(r.metadata,["name","kind"]))return!1;return R_.some((f)=>r.metadata.name===f.name&&r.metadata.kind===f.kind)}function T_(l){if(!l)return null;let f=A4(l.content)?.metadata.name;return typeof f==="string"&&f.trim()?f:null}function Lz(l){return Cn("",l)}function Rz(l,r){let f=r??"anchor";return Cn(`This brain picked **${l}** as its starter name. Replace this placeholder with the ${f} identity the brain represents.`,{name:`Anchor for ${l}`,description:`Starter ${f} profile; configuration is still needed.`,intro:"This is a generated placeholder, not an invented real-world identity."})}async function Gz(l,r,f,i){if(r)return await l.updateEntity({entity:{...r,content:i}}),"migrated";return await l.createEntity({entity:{id:f,entityType:f,content:i,metadata:{}}}),"created"}async function K4(l){let{entityService:r,identifier:f,profileKind:i,profileCategory:t,generateBrainCharacter:n,logger:u}=l,[o,w]=await Promise.all([r.getEntity({entityType:"brain-character",id:"brain-character",visibilityScope:"restricted"}),r.getEntity({entityType:"anchor-profile",id:"anchor-profile",visibilityScope:"restricted"})]),v=Fz(f),m=!o||Nz(o.content),$=Boolean(w&&!g4(w.content)),b=null;if(m){let L=await n({starterName:v.name,...i&&{profileKind:i},...t&&{profileCategory:t},anchorEntity:w,anchorIsAuthored:$});b={name:v.name,...L},d4.parse(b)}let d="unchanged";if(b)d=await Gz(r,o,"brain-character",Lz(b));let c=b?b.name:T_(o)??v.name,O="unchanged";if(!w||g4(w.content))O=await Gz(r,w,"anchor-profile",Rz(c,t));let Y={brainCharacter:d,anchorProfile:O,starterName:v.name};if(d!=="unchanged"||O!=="unchanged")u?.info("Seeded or migrated starter identity",Y);return Y}var P_=W.object({enabled:W.boolean().default(!0)}),M_=W.object({starterIdentity:P_.default({enabled:!0})});class z4 extends Vz{constructor(l={}){super("profile",zz,l,M_)}async generateCharacter(l,r){return $4(l.ai,r)}async onRegister(l){for(let u of h4)l.profileKinds.register(u);if(!this.config.starterIdentity.enabled)return;let r=!1,f=!1,i,t=async()=>{let u=c4({domain:l.domain});if(!u){this.logger.warn("Starter identity deferred: configure a canonical brain domain");return}let o=l.profileKinds.getResolved();try{await K4({entityService:l.entityService,identifier:u,...o&&{profileKind:o.kind,profileCategory:o.category},generateBrainCharacter:async({profileKind:w,profileCategory:v,anchorEntity:m,anchorIsAuthored:$})=>{let b=await m4({entityService:l.entityService,...w&&{profileKind:w},...v&&{profileCategory:v},anchorEntity:m,includeAnchor:$});return this.generateCharacter(l,b)},logger:this.logger})}catch(w){this.logger.warn("Starter character generation deferred",{error:mr(w)})}},n=async()=>{if(!r||!f)return;if(i){await i;return}i=t();try{await i}finally{i=void 0}};l.messaging.subscribe(F1.initialSyncCompleted,async(u)=>{if(u.payload.success===!0)r=!0,await n();return{success:!0}}),l.messaging.subscribe(F1.shellReady,async()=>{return f=!0,await n(),{success:!0}})}async onRegistrationComplete(l){l.entities.extendFrontmatterSchema("anchor-profile",sh);let r=l.profileKinds.getResolved(),f=l.profileKinds.getSelectedDefinition();if(r&&!f)throw Error(`Selected profile kind "${r.kind}" has no field definition`);if(f)l.entities.extendFrontmatterSchema("anchor-profile",f.fields);l.entities.registerPersistValidator("anchor-profile",async(i)=>{o4(i.content,r&&f?{category:r.category,fields:f.fields}:void 0)})}}function I_(l={}){return new z4(l)}async function pz(l){let f=(await l.listEntities({entityType:"anchor-profile",options:{limit:1}}))[0];if(!f)throw Error("Profile not found \u2014 create an anchor-profile entity");return f.content}async function q_(l,r){let f=await pz(l),{metadata:i,content:t}=Zl(f,W.record(W.string(),W.unknown()));return r.parse(t?{...i,story:t}:i)}export{_l as W,DB as X,jB as Y,SB as Z,rG as _,fG as $,iG as aa,tG as ba,nG as ca,uG as da,hG as ea,wG as fa,vG as ga,kG as ha,mG as ia,hf as ja,W0 as ka,_Z as la,zi as ma,Ai as na,Qo as oa,z1 as pa,ai as qa,Z1 as ra,b8 as sa,P8 as ta,fw as ua,UH as va,PZ as wa,qZ as xa,st as ya,RH as za,VH as Aa,hw as Ba,TH as Ca,PH as Da,IH as Ea,qH as Fa,fr as Ga,mw as Ha,_H as Ia,DH as Ja,jH as Ka,SH as La,sH as Ma,tB as Na,uB as Oa,oB as Pa,vB as Qa,rn as Ra,bB as Sa,yB as Ta,gB as Ua,YB as Va,B1 as Wa,G1 as Xa,HB as Ya,Qw as Za,yr as _a,gK as $a,dK as ab,Lh as bb,W6 as cb,ph as db,a6 as eb,OK as fb,GI as gb,FI as hb,UK as ib,NK as jb,NI as kb,LI as lb,RI as mb,pI as nb,V6 as ob,I1 as pb,Dn as qb,T6 as rb,Xq as sb,Fq as tb,q6 as ub,Lq as vb,Rq as wb,wi as xb,e6 as yb,w_ as zb,I_ as Ab,q_ as Bb};
|
|
1712
1712
|
|
|
1713
|
-
//# debugId=
|
|
1714
|
-
//# sourceMappingURL=index-
|
|
1713
|
+
//# debugId=56C46A3F668EB8FF64756E2164756E21
|
|
1714
|
+
//# sourceMappingURL=index-n8fzpy3v.js.map
|