@rizom/brain 0.2.0-alpha.694 → 0.2.0-alpha.695

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/brain.js +16 -16
  2. package/dist/chunks/{app-15nfqfss.js → app-vx1bjwc5.js} +2 -2
  3. package/dist/chunks/{index-xbh6e1rh.js → index-4jf2jzjs.js} +2 -2
  4. package/dist/chunks/{index-17rpw6kh.js → index-gd765s5q.js} +3 -3
  5. package/dist/chunks/{index-17rpw6kh.js.map → index-gd765s5q.js.map} +3 -3
  6. package/dist/chunks/{index-aadrhszz.js → index-gq9n2d3d.js} +2 -2
  7. package/dist/chunks/{index-2ksj6hdk.js → index-s5v5f614.js} +2 -2
  8. package/dist/chunks/{index-mp4q1mgj.js → index-xmxyszkz.js} +3 -3
  9. package/dist/chunks/{index-mp4q1mgj.js.map → index-xmxyszkz.js.map} +1 -1
  10. package/dist/chunks/{index-wzqxbtja.js → index-y81ng1rp.js} +2 -2
  11. package/dist/chunks/{linkedin-template-6kxt7ng4.js → linkedin-template-f7bt9fn1.js} +2 -2
  12. package/dist/chunks/{package-xpr15mjg.js → package-w0xfh9pe.js} +3 -3
  13. package/dist/chunks/{package-xpr15mjg.js.map → package-w0xfh9pe.js.map} +1 -1
  14. package/dist/entities.js +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/interfaces.js +1 -1
  17. package/dist/model.js +14 -14
  18. package/dist/model.js.map +1 -1
  19. package/dist/services.js +1 -1
  20. package/dist/testing.js +1 -1
  21. package/dist/ui/studio-chunks/main-x6wctnve.js.map +1 -1
  22. package/package.json +1 -1
  23. /package/dist/chunks/{app-15nfqfss.js.map → app-vx1bjwc5.js.map} +0 -0
  24. /package/dist/chunks/{index-xbh6e1rh.js.map → index-4jf2jzjs.js.map} +0 -0
  25. /package/dist/chunks/{index-aadrhszz.js.map → index-gq9n2d3d.js.map} +0 -0
  26. /package/dist/chunks/{index-2ksj6hdk.js.map → index-s5v5f614.js.map} +0 -0
  27. /package/dist/chunks/{index-wzqxbtja.js.map → index-y81ng1rp.js.map} +0 -0
  28. /package/dist/chunks/{linkedin-template-6kxt7ng4.js.map → linkedin-template-f7bt9fn1.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{B as a}from"./index-xbh6e1rh.js";import"./index-66v76w4h.js";import"./index-wzqxbtja.js";import"./index-17rpw6kh.js";import"./index-qnt46f4v.js";import"./index-yhsfzqsw.js";import"./index-g95msk2x.js";import"./index-q6a6w2ga.js";import"./index-x4qnbqvy.js";import"./index-edt6y87t.js";export{a as App};
2
+ import{B as a}from"./index-4jf2jzjs.js";import"./index-66v76w4h.js";import"./index-y81ng1rp.js";import"./index-gd765s5q.js";import"./index-qnt46f4v.js";import"./index-yhsfzqsw.js";import"./index-g95msk2x.js";import"./index-q6a6w2ga.js";import"./index-x4qnbqvy.js";import"./index-edt6y87t.js";export{a as App};
3
3
 
4
4
  //# debugId=85103B03B1AFE91364756E2164756E21
5
- //# sourceMappingURL=app-15nfqfss.js.map
5
+ //# sourceMappingURL=app-vx1bjwc5.js.map
@@ -1,7 +1,7 @@
1
1
  // @bun
2
- import{N as p}from"./index-66v76w4h.js";import{Ba as m,Ga as d,Ja as v,Ka as S}from"./index-wzqxbtja.js";import{Lg as u}from"./index-17rpw6kh.js";import{Xn as n,Yn as r}from"./index-yhsfzqsw.js";import{Dv as s,Es as l,ps as f}from"./index-g95msk2x.js";import{yx as g}from"./index-edt6y87t.js";async function h(e){let[{default:i},{default:t}]=await Promise.all([import("./index-aadrhszz.js"),import("./package-xpr15mjg.js")]);return u(i,e??{},{name:t.name,version:t.version},{pluginId:"cli"})}class c{shell=null;config;signalScope=null;signalShutdownFiber=null;stopPromise=null;hasCLI=!1;static create(e,i){return new c(v(e),i)}constructor(e,i){if(this.config=e,this.hasCLI=process.argv.slice(2).includes("--cli"),i)this.shell=i}async migrate(){let e=r.getInstance();await new d(e).runAllMigrations({database:this.config.shellConfig?.database?.url??this.config.database,jobQueueDatabase:this.config.shellConfig?.jobQueueDatabase?.url,conversationDatabase:this.config.shellConfig?.conversationDatabase?.url,runtimeStateDatabase:this.config.shellConfig?.runtimeStateDatabase?.url})}createShell(e,i){this.shell=m.createFresh(S(this.config,e),void 0,{...i?.processRole&&{processRole:i.processRole},...i?.peerChannel&&{peerChannel:i.peerChannel}})}wantsCLI(e){return this.hasCLI||e?.cli===!0}async registerCLIInterface(e){if(!this.wantsCLI(e))return;let i=this.getShell().getPluginManager();for(let t of await h(this.config.cliConfig))i.registerPlugin(t)}async initialize(e,i){if(!this.shell){if(!i?.migrationsCompleted)await this.migrate();this.createShell(e,i)}await this.registerCLIInterface(i),await this.getShell().initialize(e)}async start(){if(this.stopPromise)return;this.setupSignalHandlers()}stop(){return this.stopPromise??=this.stopApp(),this.stopPromise}async stopApp(){await this.closeSignalScope(),await this.shell?.shutdown()}async run(e){let t={debug:n.DEBUG,info:n.INFO,warn:n.WARN,error:n.ERROR}[this.config.logLevel??"info"]??n.INFO,o=this.wantsCLI(e),a=r.createFresh({level:t,context:this.config.name,useStderr:o});if(o)r.getInstance().setUseStderr(!0);try{await this.initialize(void 0,e),await this.start(),e?.onRuntimeReady?.(),a.info(`\u2705 ${this.config.name} v${this.config.version} ready`),process.stdin.resume()}catch(C){a.error(`\u274C Failed to start ${this.config.name}:`,C),process.exit(1)}}static async run(e,i,t){await c.create(e,i).run(t)}setupSignalHandlers(){if(this.signalScope)return;let e=s.runSync(l.make()),i=()=>{this.requestGracefulShutdown("SIGINT")},t=()=>{this.requestGracefulShutdown("SIGTERM")},o=p(["SIGINT"],i),a=p(["SIGTERM"],t);s.runSync(l.addFinalizer(e,s.sync(()=>{a(),o()}))),this.signalScope=e}requestGracefulShutdown(e){if(this.signalShutdownFiber)return;let i=r.getInstance();i.info(`
2
+ import{N as p}from"./index-66v76w4h.js";import{Ba as m,Ga as d,Ja as v,Ka as S}from"./index-y81ng1rp.js";import{Lg as u}from"./index-gd765s5q.js";import{Xn as n,Yn as r}from"./index-yhsfzqsw.js";import{Dv as s,Es as l,ps as f}from"./index-g95msk2x.js";import{yx as g}from"./index-edt6y87t.js";async function h(e){let[{default:i},{default:t}]=await Promise.all([import("./index-gq9n2d3d.js"),import("./package-w0xfh9pe.js")]);return u(i,e??{},{name:t.name,version:t.version},{pluginId:"cli"})}class c{shell=null;config;signalScope=null;signalShutdownFiber=null;stopPromise=null;hasCLI=!1;static create(e,i){return new c(v(e),i)}constructor(e,i){if(this.config=e,this.hasCLI=process.argv.slice(2).includes("--cli"),i)this.shell=i}async migrate(){let e=r.getInstance();await new d(e).runAllMigrations({database:this.config.shellConfig?.database?.url??this.config.database,jobQueueDatabase:this.config.shellConfig?.jobQueueDatabase?.url,conversationDatabase:this.config.shellConfig?.conversationDatabase?.url,runtimeStateDatabase:this.config.shellConfig?.runtimeStateDatabase?.url})}createShell(e,i){this.shell=m.createFresh(S(this.config,e),void 0,{...i?.processRole&&{processRole:i.processRole},...i?.peerChannel&&{peerChannel:i.peerChannel}})}wantsCLI(e){return this.hasCLI||e?.cli===!0}async registerCLIInterface(e){if(!this.wantsCLI(e))return;let i=this.getShell().getPluginManager();for(let t of await h(this.config.cliConfig))i.registerPlugin(t)}async initialize(e,i){if(!this.shell){if(!i?.migrationsCompleted)await this.migrate();this.createShell(e,i)}await this.registerCLIInterface(i),await this.getShell().initialize(e)}async start(){if(this.stopPromise)return;this.setupSignalHandlers()}stop(){return this.stopPromise??=this.stopApp(),this.stopPromise}async stopApp(){await this.closeSignalScope(),await this.shell?.shutdown()}async run(e){let t={debug:n.DEBUG,info:n.INFO,warn:n.WARN,error:n.ERROR}[this.config.logLevel??"info"]??n.INFO,o=this.wantsCLI(e),a=r.createFresh({level:t,context:this.config.name,useStderr:o});if(o)r.getInstance().setUseStderr(!0);try{await this.initialize(void 0,e),await this.start(),e?.onRuntimeReady?.(),a.info(`\u2705 ${this.config.name} v${this.config.version} ready`),process.stdin.resume()}catch(C){a.error(`\u274C Failed to start ${this.config.name}:`,C),process.exit(1)}}static async run(e,i,t){await c.create(e,i).run(t)}setupSignalHandlers(){if(this.signalScope)return;let e=s.runSync(l.make()),i=()=>{this.requestGracefulShutdown("SIGINT")},t=()=>{this.requestGracefulShutdown("SIGTERM")},o=p(["SIGINT"],i),a=p(["SIGTERM"],t);s.runSync(l.addFinalizer(e,s.sync(()=>{a(),o()}))),this.signalScope=e}requestGracefulShutdown(e){if(this.signalShutdownFiber)return;let i=r.getInstance();i.info(`
3
3
  Received ${e}, shutting down gracefully...`);let t=s.tryPromise({try:()=>this.stop(),catch:(o)=>o}).pipe(s.match({onFailure:(o)=>{i.error("Error during shutdown:",o),process.exit(1)},onSuccess:()=>{process.exit(0)}}));this.signalShutdownFiber=s.runFork(t)}async closeSignalScope(){let e=this.signalScope;if(this.signalScope=null,e)await s.runPromise(l.close(e,f.void))}getShell(){if(!this.shell)throw Error("Shell not initialized. Call initialize() first.");return this.shell}}
4
4
  export{c as B};
5
5
 
6
6
  //# debugId=CA66FC041D98DA0864756E2164756E21
7
- //# sourceMappingURL=index-xbh6e1rh.js.map
7
+ //# sourceMappingURL=index-4jf2jzjs.js.map
@@ -70,7 +70,7 @@ params: ${t}`);if(this.query=e,this.params=t,this.cause=n,Error.captureStackTrac
70
70
  dimensions = excluded.dimensions,
71
71
  prompt_revision = excluded.prompt_revision`,args:[t.model,t.dimensions,t.promptRevision]},"DROP INDEX IF EXISTS embeddings_embedding_idx","UPDATE embeddings SET entity_type = 'note' WHERE entity_type = 'base'"]),await n.commit(),o?{rebuilt:!0,previous:o}:{rebuilt:!1}}finally{n.close()}}async function Tw(e,t){await e.execute(`ATTACH DATABASE '${t}' AS emb`)}function Cw(e){return e.startsWith("file:")?e.slice(5):e}async function v5(e,t,n){let{firstDelayMs:r,maxDelayMs:o,giveUpAt:a,signal:s,clock:l,onRetry:c}=n,u,d=(f,g)=>{let h=Math.min(r*2**(f-1),o);return BO.currentTimeMillis.pipe(be.flatMap((S)=>{if(a!==void 0&&S+h>=a)return be.succeed({kind:"abandoned",error:g});return c?.(g,h),be.sleep(h).pipe(be.andThen(be.uninterruptibleMask((v)=>be.tryPromise({try:()=>e(),catch:(b)=>b}).pipe(be.matchEffect({onSuccess:(b)=>be.sync(()=>(u={kind:"succeeded",value:b},u)),onFailure:(b)=>v(d(f+1,b))})))))}))},p=await be.runPromiseExit(Oo(d(1,t),l),s?{signal:s}:void 0);if(cn.isSuccess(p))return p.value;if(u)return u;if(qi.hasInterruptsOnly(p.cause))return{kind:"stopped"};throw qi.squash(p.cause)}var S5=1000,w5=60000;class rp{options;controller=new AbortController;running=new Set;keyed=new Map;constructor(e){this.options=e}retry(e,t,n,r){let{clock:o,logger:a}=this.options,s=new AbortController;if(r!==void 0)this.keyed.get(r)?.abort(),this.keyed.set(r,s);let l=v5(e,t,{firstDelayMs:this.options.firstDelayMs??S5,maxDelayMs:this.options.maxDelayMs??w5,clock:o,signal:AbortSignal.any([this.controller.signal,s.signal]),onRetry:(c,u)=>{a.warn(`Failed to ${n}; retrying in ${u}ms`,{error:c})}}).catch((c)=>(a.error(`Retrying "${n}" failed`,{error:c}),{kind:"stopped"}));return this.running.add(l),l.then(()=>{if(this.running.delete(l),r!==void 0&&this.keyed.get(r)===s)this.keyed.delete(r)}),l}async run(e,t,n){try{await e()}catch(r){this.retry(e,r,t,n)}}cancel(e){this.keyed.get(e)?.abort(),this.keyed.delete(e)}async dispose(){this.controller.abort(),await Promise.all([...this.running])}}function FO(e){return{...e,...e.source!==void 0&&{source:qO(e.source)},...e.target!==void 0&&{target:qO(e.target)}}}function qO(e){if(e instanceof RegExp)return e;if(!e.includes("*"))return e;let t=e.split("*").map((n)=>n.replace(/[.+?^${}()|[\]\\]/g,"\\$&")).join(".*");return new RegExp(`^${t}$`)}function UO(e,t){if(!t)return!0;if(!LO(e.source,t.source))return!1;if(!LO(e.target,t.target,!0))return!1;if(!x5(e.metadata,t.metadata))return!1;return t.predicate?t.predicate(e):!0}function LO(e,t,n=!1){if(!t)return!0;if(n&&!e)return!1;return T5(e,t)}function x5(e,t){if(!t)return!0;if(!e)return!1;return Object.entries(t).every(([n,r])=>e[n]===r)}function T5(e,t){if(!e)return!1;if(t instanceof RegExp){t.lastIndex=0;let n=t.test(e);return t.lastIndex=0,n}return e===t}var lg=i.object({success:i.boolean(),data:i.unknown().optional(),error:i.string().optional(),code:i.string().optional()}),cg=i.object({id:i.string().min(1),timestamp:i.string(),type:i.string().min(1),source:i.string().min(1),target:i.string().optional(),metadata:i.record(i.string(),i.unknown()).optional()});var C5=i.union([i.object({noop:i.literal(!0)}),lg]);function ZO(e){let t=C5.safeParse(e);if(!t.success)throw Error("Invalid message response format");return t.data}function Iw(e,t,n,r,o){return{id:GO("msg"),type:e,timestamp:JO(),source:n,target:r,metadata:o,payload:t}}function ug(e,t){let n=ZO(t);if("noop"in n)return WO(e,!0);return WO(e,n.success,n.data,n.error,n.code)}function Ew(e,t){if(t?.success)return{success:!0,data:t.data};let n=t?.error?.code;return{success:!1,error:t?.error?.message??`No handler found for message type: ${e}`,...n!==void 0&&{code:n}}}function WO(e,t,n,r,o){return{id:GO("resp"),requestId:e,timestamp:JO(),success:t,data:n,error:r?{message:r,...o!==void 0&&{code:o}}:void 0}}function GO(e){return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}function JO(){return new Date().toISOString()}class dg{handlers=new Map;add(e,t,n){let r=this.createHandlerEntry(t,n);return this.getOrCreateHandlers(e).add(r),r}remove(e,t){let n=this.handlers.get(e);if(!n)return!1;let r=n.delete(t);return this.deleteEmptyHandlerSet(e,n),r}removeHandler(e,t){let n=this.handlers.get(e);if(!n)return;for(let r of Array.from(n))if(r.originalHandler===t)n.delete(r);this.deleteEmptyHandlerSet(e,n)}getMatchingHandlers(e,t){let n=this.handlers.get(e);if(!n||n.size===0)return;return{entries:Array.from(n).filter((r)=>UO(t,r.filter)),totalHandlers:n.size}}hasHandlers(e){let t=this.handlers.get(e);return t!==void 0&&t.size>0}clearHandlers(e){return this.handlers.delete(e)}clearAllHandlers(){this.handlers.clear()}getHandlerCount(e){return this.handlers.get(e)?.size??0}getTargetedHandlerCount(e,t){let n=this.handlers.get(e);if(!n)return 0;return Array.from(n).filter((r)=>r.filter?.target===t).length}createHandlerEntry(e,t){let n={handler:this.wrapHandler(e),originalHandler:e};return t?{...n,filter:FO(t)}:n}wrapHandler(e){return async(t)=>{let r=await e(t);return ug(t.id,r)}}getOrCreateHandlers(e){let t=this.handlers.get(e);if(!t)t=new Set,this.handlers.set(e,t);return t}deleteEmptyHandlerSet(e,t){if(t.size===0)this.handlers.delete(e)}}async function HO(e,t,n){return await Promise.all(t.map((r)=>Rw(r,e,n))),null}async function VO(e,t,n){for(let r of t){let o=await Rw(r,e,n);if(o)return o}return null}async function KO(e,t,n){return(await Promise.all(t.map((o)=>Rw(o,e,n)))).map((o)=>o??ug(e.id,{success:!1,error:`Message handler failed for message type: ${e.type}`}))}async function Rw(e,t,n){try{return await e.handler(t)}catch(r){return n.error(`Error in message handler for ${t.type}`,r),null}}class pg{registry;logger;constructor(e,t){this.registry=e,this.logger=t}async publish(e,t){let n=this.resolveMatchingHandlers(e);if(!n)return null;return t===!0?HO(e,n,this.logger):VO(e,n,this.logger)}async collect(e){let t=this.resolveMatchingHandlers(e);if(!t)return[];return KO(e,t,this.logger)}resolveMatchingHandlers(e){if(typeof e!=="object"||!e.type||!e.id){this.logger.error("Invalid message structure - missing required fields 'id' or 'type'");return}let{type:t}=e;this.logger.debug(`Publishing message of type: ${t}`,{source:e.source,target:e.target,hasMetadata:!!e.metadata});let n=this.registry.getMatchingHandlers(t,e);if(!n){this.logger.debug(`No handlers found for message type: ${t}`);return}if(n.entries.length===0){this.logger.debug(`No matching handlers for message type: ${t}`,{totalHandlers:n.totalHandlers,target:e.target});return}return n.entries}}var I5=i.looseObject({issues:i.array(i.looseObject({message:i.string()})).optional()});function kw(e,t){try{return{valid:!0,data:t.parse(e)}}catch(n){let r=I5.safeParse(n);if(r.success)return{valid:!1,error:r.data.issues?.[0]?.message??"Validation failed"};return{valid:!1,error:"Unknown validation error"}}}import{AsyncLocalStorage as E5}from"async_hooks";class is{storage=new E5;static createFresh(){return new is}constructor(){}current(){return this.storage.getStore()}run(e,t,n){if(t.length===0)throw Error("Operation ID must not be empty");let r=Mo.parse(e),o=R5(r);return this.storage.run(Object.freeze({provenance:o,operationId:t}),n)}}function R5(e){if(Object.freeze(e.projectionLineage),e.sourceEntity)Object.freeze(e.sourceEntity);return Object.freeze(e)}class Aw{registry=new dg;publisher;peerRegistry=new dg;peerPublisher;logger;operationContext;static createFresh(e,t){return new Aw(e,t)}constructor(e,t){this.logger=e,this.operationContext=t??is.createFresh(),this.publisher=new pg(this.registry,e),this.peerPublisher=new pg(this.peerRegistry,e)}subscribe(e,t,n){let r=this.registry.add(e,t,n);return this.logger.debug(`Registered handler for message type: ${e}`,{hasFilter:!!n,filterTarget:n?.target}),()=>{this.registry.remove(e,r)}}observe(e,t){let n=this.subscribe(e,t),r=this.peerRegistry.add(e,t);return()=>{n(),this.peerRegistry.remove(e,r)}}async deliverPeer(e,t){await this.peerPublisher.publish(Iw(e,t,"peer"),!0)}async send(e){let t=await this.dispatchWithProvenance(e,(n)=>this.publisher.publish(n,e.broadcast));return Ew(e.type,t)}async collect(e){return(await this.dispatchWithProvenance(e,(n)=>this.publisher.collect(n))).map((n)=>Ew(e.type,n))}dispatchWithProvenance(e,t){let{type:n,payload:r,sender:o,target:a,metadata:s}=e,l=Iw(n,r,o,a,s),c=this.operationContext.current(),u=s?.provenance,d=u===void 0?c?.provenance:Mo.parse(u),p=Mo.parse(d?{...d,causationId:c?.operationId??d.causationId}:{rootJobId:l.id,causationId:l.id,projectionLineage:[],derivationDepth:0}),f={...l,metadata:{...s,provenance:p}};return this.operationContext.run(p,f.id,()=>t(f))}validateMessage(e,t){return kw(e,t)}hasHandlers(e){return this.registry.hasHandlers(e)}unsubscribe(e,t){this.registry.removeHandler(e,t)}clearHandlers(e){if(this.registry.clearHandlers(e))this.logger.info(`Cleared all handlers for message type: ${e}`)}clearAllHandlers(){this.registry.clearAllHandlers(),this.logger.info("Cleared all message handlers")}getHandlerCount(e){return this.registry.getHandlerCount(e)}getTargetedHandlerCount(e,t){return this.registry.getTargetedHandlerCount(e,t)}}var A5=i.object({id:i.string().min(1),requestId:i.string().min(1),success:i.boolean(),data:i.unknown().optional(),error:i.object({message:i.string(),code:i.string().optional()}).optional(),timestamp:i.string().datetime()});var _w=new it("invalid_response").toJSON();function QO(e){if("success"in e&&e.success)return;if(!("success"in e))return new it("no_handler").toJSON();let t=mg.safeParse({code:e.code,message:e.error});return t.success?t.data:new it("handler_failed").toJSON()}function Pw(e){return{success:!1,error:e.message,code:e.code}}async function Ow(e,t,n,r){let o=t.schema.parse(n);if(e.getHandlerCount(t.name)===0)return{status:"unavailable"};let a=await e.send({type:t.name,payload:o,sender:r}),s=QO(a);if(s!==void 0)return{status:"failed",error:s};let l=t.response.safeParse("data"in a?a.data:void 0);return l.success?{status:"answered",data:l.data}:{status:"failed",error:_w}}async function Mw(e,t,n,r){let o=t.schema.parse(n);if(e.getHandlerCount(t.name)===0)return{status:"unavailable"};let a=await e.collect({type:t.name,payload:o,sender:r}),s=[],l=[];for(let c of a){let u=QO(c);if(u!==void 0){l.push(u);continue}let d=t.response.safeParse("data"in c?c.data:void 0);if(d.success)s.push(d.data);else l.push(_w)}return{status:"answered",answers:s,failures:l}}async function jw(e,t,n,r){let o=t.schema.parse(n);await e.send({type:t.name,payload:o,sender:r,broadcast:!0})}async function qr(e,t,n,r){let o=t.schema.safeParse(n);if(!o.success)throw Error(`${r} broadcast a payload ${t.name} refuses: it does not match the channel's schema`);await e.send({type:t.name,payload:o.data,sender:r,broadcast:!0})}function Dw(e,t,n,r){let{owner:o,logger:a}=r;if(t.delivery==="request"&&e.getHandlerCount(t.name)>0)throw Error(`${o} cannot answer ${t.name}: ${t.name} already has an owner`);return e.subscribe(t.name,async(s)=>{let l=t.schema.safeParse(s.payload);if(!l.success)return a.warn(`Refused an invalid ${t.name} request`,{error:l.error.message}),Pw(new it("invalid_input",{publicMessage:`Invalid ${t.name} request`}).toJSON());let c={sender:s.source};try{if(t.delivery==="command")return await n(l.data,c),{success:!0};let u=t.response.safeParse(await n(l.data,c));if(u.success)return{success:!0,data:u.data};return a.error(`${o} answered ${t.name} outside its contract`,{error:u.error.message}),Pw(_w)}catch(u){let d=to(u),p=d.code==="handler_failed"?"error":"warn";return a[p](`${o} failed to answer ${t.name}`,{code:d.code,error:ge(u)}),Pw(d.toJSON())}})}var Er=i.object({id:i.string(),entityType:i.string(),content:i.string(),created:i.string().datetime(),updated:i.string().datetime(),visibility:ji,metadata:i.record(i.string(),i.unknown()),contentHash:i.string()}),P5=i.enum(["public","shared","restricted"]),fg=i.object({id:i.string(),entityType:i.string(),content:i.string(),created:i.string().datetime(),updated:i.string().datetime(),visibility:i.union([P5,i.literal("private")]).optional().transform((e)=>{if(e===void 0)return"public";if(e==="private")return"restricted";return e}),metadata:i.record(i.string(),i.unknown()),contentHash:i.string()}),gg=i.object({}),Zc=i.object({mediaType:i.string(),url:i.string(),downloadUrl:i.string().optional(),previewUrl:i.string().optional(),filename:i.string().optional(),sizeBytes:i.number().optional(),source:i.object({entityType:i.string().optional(),entityId:i.string().optional(),attachmentType:i.string().optional()}).optional()});var YO=Er.loose(),ip=i.object({entityType:i.string().min(1),entityId:i.string().min(1),entity:YO.optional(),previousMetadata:i.record(i.string(),i.unknown()).optional(),conversationId:i.string().optional(),channelId:i.string().optional(),runId:i.string().optional(),toolCallId:i.string().optional(),actor:Rr.optional(),interfaceType:i.string().optional()}),zw=i.object({entityType:i.string().min(1),entityId:i.string().min(1),entity:YO}),hg=un(cl.created,ip),Wc=un(cl.updated,ip),Gc=un(cl.deleted,ip),yg=un(cl.embeddingReady,zw);function d$e(e){return Object.entries(e)}function p$e(e,t){return t in e}var Jc=["id","entityType","content","contentHash","created","updated","visibility"];function hi(e,t){let n=Object.fromEntries(Object.entries(t).filter(([,r])=>r!==void 0&&r!==null));if(Object.keys(n).length===0)return e;return ei(n,e)}function Nw(e){if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(Nw);if(e!==null&&typeof e==="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=Nw(r);return t}return e}function Rn(e,t,n){let{content:r,data:o}=cr(e),a=Nw(o);return{content:r.trim(),metadata:t.parse(a)}}var _5=i.object({title:i.string().optional()});function op(e){let t=e.metadata.title;if(typeof t==="string")return t;return Rn(e.content,_5).metadata.title??null}function ap(e){if(Object.keys(e).length===0)return"";let n=ei(e,"").match(/^---\n[\s\S]*?\n---/);return n?n[0]:""}function XO(e){if(!Xe(e))return e;let{visibility:t,...n}=e;return n}var O5=i.object({visibility:i.enum(["public","shared","restricted","private"]).optional().transform((e)=>{if(e===void 0)return;return e==="private"?"restricted":e})});function bg(e){let t=cr(e);return O5.parse(t.data).visibility}function ul(e){return e.replace(/^---\r?\n[\s\S]*?\r?\n---[^\S\r\n]*(?:\r?\n|$)/,"").trim()}function eM(e){let n=e.match(/^---\r?\n[\s\S]*?\r?\n---/)?.[0].match(/^visibility:/m);return n!==null&&n!==void 0}function Hc(e,t){if(t==="public"&&!eM(e))return e;let n=cr(e);if(n.data===null||n.data===void 0)throw TypeError("Cannot convert undefined or null to object");let r=Object.entries(n.data),o=Object.fromEntries(r.filter(([a])=>a!=="visibility"));if(t!=="public")o.visibility=t;return hi(n.content.trim(),o)}var M5=i.object({id:i.string().min(1,"Entity ID is required"),entityType:i.string().min(1,"Entity type is required"),contentHash:i.string().min(1,"Content hash is required"),operation:i.enum(["create","update"])});function j5(e){let t=e.indexOf(":");return[e.slice(0,t),e.slice(t+1)]}class sp{logger;embeddingService;entityService;messageBus;static createFresh(e,t,n){return new sp(e,t,n)}constructor(e,t,n){if(this.logger=$i.getInstance().child("EmbeddingJobHandler"),this.embeddingService=t,this.entityService=e,n)this.messageBus=n}async process(e,t,n){try{this.logger.debug("Processing embedding job",{jobId:t,entityId:e.id,entityType:e.entityType,contentHash:e.contentHash});let r=await this.entityService.getEntity({entityType:e.entityType,id:e.id,visibilityScope:zt("embedding regeneration must index every entity, no user surface"),source:!0});if(!r){this.logger.warn("Entity no longer exists, skipping embedding job",{jobId:t,entityId:e.id,entityType:e.entityType,operation:e.operation});return}if(r.contentHash!==e.contentHash){this.logger.info("Entity content changed since job created, skipping stale embedding",{jobId:t,entityId:e.id,entityType:e.entityType,jobContentHash:e.contentHash,currentContentHash:r.contentHash});return}let o=op(r),{embeddings:[a],usage:s}=await this.embeddingService.embedDocuments([{...o!==null?{title:o}:{},content:r.content}]);if(!a)throw Error("Embedding provider returned no vector");let[l,c]=j5(this.embeddingService.identity.model);if(this.logger.info("ai:usage",{operation:"embedding",provider:l,model:c,inputTokens:s.tokens,outputTokens:0}),await this.entityService.storeEmbedding({entityId:e.id,entityType:e.entityType,embedding:a,contentHash:e.contentHash}),this.messageBus)this.logger.debug(`Emitting entity:embedding:ready event for ${e.entityType}:${e.id}`),await qr(this.messageBus,yg,{entityType:e.entityType,entityId:e.id,entity:{...r}},"entity-service");this.logger.debug("Embedding job completed successfully",{jobId:t,entityId:e.id,embeddingDimensions:a.length})}catch(r){throw this.logger.error("Embedding job failed",{jobId:t,entityId:e.id,entityType:e.entityType,error:r}),r}}async onError(e,t,n){this.logger.error("Embedding job error handler called",{jobId:n,entityId:t.id,entityType:t.entityType,contentHash:t.contentHash,errorMessage:e.message,errorStack:e.stack})}validateAndParse(e){let t=M5.safeParse(e);if(!t.success)return this.logger.warn("Invalid embedding job data",{data:e,validationError:t.error.issues}),null;return this.logger.debug("Embedding job data validation successful",{entityId:t.data.id,entityType:t.data.entityType,contentHash:t.data.contentHash}),t.data}}var D5=i.looseObject({issues:i.array(i.looseObject({message:i.string()}))}),tM=i.object({name:i.literal("EntityValidationError"),entityType:i.string(),originalError:i.unknown()});class Lr extends Error{entityType;originalError;phase;constructor(e,t,n="schema"){super(`Invalid entity data for ${e}: ${ge(t)}`);this.name="EntityValidationError",this.entityType=e,this.originalError=t,this.phase=n}}var z5=i.object({name:i.literal("EntityValidationError"),phase:i.literal("schema")});function nM(e){return z5.safeParse(e).success}function vg(e){return D5.safeParse(e).success}function rM(e){return e instanceof Lr||tM.safeParse(e).success||vg(e)}function dl(e,t,n="schema"){if(t instanceof Lr)return t.phase===n?t:new Lr(e,t.originalError,n);let r=tM.safeParse(t);if(r.success)return new Lr(e,r.data.originalError,n);return vg(t)?new Lr(e,t,n):void 0}class pl extends Error{constructor(){super("Semantic indexing is disabled for this Brain instance");this.name="SemanticIndexingDisabledError"}}var Sg=M`json_extract(${J.metadata}, '$.status')`;function Vc(e){if(e&&e.length>0)return M`${Sg} IN (${M.join(e.map((t)=>M`${t}`),M`, `)})`;return M`(${Sg} = 'published' OR ${Sg} = 'active' OR ${Sg} IS NULL)`}function $w(e){let t=Object.entries(e).filter(([,o])=>o.length>0);if(t.length===0)return Vc();let n=t.map(([o,a])=>M`(${J.entityType} = ${o} AND ${Vc(a)})`),r=M`(${J.entityType} NOT IN (${M.join(t.map(([o])=>M`${o}`),M`, `)}) AND ${Vc()})`;return M`(${M.join([...n,r],M` OR `)})`}function aM(e,t={}){if(t.maxNeighborDistance!==void 0&&(!Number.isFinite(t.maxNeighborDistance)||t.maxNeighborDistance<0||t.maxNeighborDistance>2))throw RangeError("maxNeighborDistance must be between 0 and 2");N5(e,t.origin);let n=e.map((c)=>iM(c.embedding)),r=t.origin?iM(t.origin.embedding):$5(n),o=q5(n),a=t.origin?{kind:"entity",entityId:t.origin.entityId,entityType:t.origin.entityType}:{kind:"centroid"},s=e.map((c,u)=>({entityId:c.entityId,entityType:c.entityType,coordinates:o[u]??[0,0],distanceToOrigin:sM(n[u]??new Float64Array,r)})),l=s.map((c)=>c.distanceToOrigin);return{origin:a,points:s,neighbors:B5(e,n,t.maxNeighborDistance),distanceRange:{min:l.length>0?Math.min(...l):0,max:l.length>0?Math.max(...l):0}}}function N5(e,t){let n=e[0]?.embedding.length??t?.embedding.length;if(n===void 0)return;for(let r of e)if(r.embedding.length!==n)throw RangeError("Semantic embeddings must have matching dimensions");if(t&&t.embedding.length!==n)throw RangeError("Semantic origin must match point dimensions")}function iM(e){let t=0;for(let o of e)t+=o*o;let n=Math.sqrt(t),r=new Float64Array(e.length);if(n<=0.000000000001)return r;for(let o=0;o<e.length;o+=1)r[o]=(e[o]??0)/n;return r}function $5(e){let t=e[0]?.length??0,n=new Float64Array(t);if(e.length===0)return n;for(let a of e)for(let s=0;s<t;s+=1)n[s]=(n[s]??0)+(a[s]??0);let r=0;for(let a of n)r+=a*a;let o=Math.sqrt(r);if(o<=0.000000000001)return new Float64Array(t);for(let a=0;a<t;a+=1)n[a]=(n[a]??0)/o;return n}function sM(e,t){if(e.length===0||t.length===0)return 1;let n=0,r=0,o=0;for(let s=0;s<e.length;s+=1){let l=e[s]??0,c=t[s]??0;n+=l*c,r+=l*l,o+=c*c}if(r<=0.000000000001||o<=0.000000000001)return 1;return 1-Math.max(-1,Math.min(1,n/Math.sqrt(r*o)))}function B5(e,t,n){if(n===void 0)return[];let r=[];for(let o=0;o<e.length;o+=1)for(let a=o+1;a<e.length;a+=1){let s=e[o],l=e[a],c=t[o],u=t[a];if(!s||!l||!c||!u)continue;let d=sM(c,u);if(d<=n)r.push({source:{entityId:s.entityId,entityType:s.entityType},target:{entityId:l.entityId,entityType:l.entityType},distance:d})}return r}function q5(e){let t=e.length;if(t===0)return[];if(t===1)return[[0,0]];let n=e[0]?.length??0,r=new Float64Array(n);for(let l of e)for(let c=0;c<n;c+=1)r[c]=(r[c]??0)+(l[c]??0)/t;let o=Array.from({length:t},()=>Array(t).fill(0));for(let l=0;l<t;l+=1)for(let c=l;c<t;c+=1){let u=0,d=e[l],p=e[c];if(!d||!p)continue;for(let h=0;h<n;h+=1)u+=((d[h]??0)-(r[h]??0))*((p[h]??0)-(r[h]??0));let f=o[l],g=o[c];if(f)f[c]=u;if(g)g[l]=u}let a=[],s=[];for(let l=0;l<2;l+=1){let c=L5(o,a,l);if(!c){a.push(Array(t).fill(0)),s.push(0);continue}a.push(c),s.push(Math.max(0,F5(o,c)))}return Array.from({length:t},(l,c)=>[(a[0]?.[c]??0)*Math.sqrt(s[0]??0),(a[1]?.[c]??0)*Math.sqrt(s[1]??0)])}function L5(e,t,n){let r=e.length,o=Array.from({length:r},(s,l)=>Math.sin((l+1)*(n+1))+Math.cos((l+1)*(n+2)));if(o=oM(o,t),Bw(o)<=0.000000000001)return null;for(let s=0;s<100;s+=1){let l=oM(lM(e,o),t),c=Bw(l);if(c<=0.000000000001)return null;o=l.map((u)=>u/c)}let a=o.reduce((s,l,c)=>Math.abs(l)>Math.abs(o[s]??0)?c:s,0);if((o[a]??0)<0)o=o.map((s)=>-s);return o}function lM(e,t){return e.map((n)=>n.reduce((r,o,a)=>r+o*(t[a]??0),0))}function oM(e,t){let n=[...e];for(let o of t){let a=n.reduce((s,l,c)=>s+l*(o[c]??0),0);for(let s=0;s<n.length;s+=1)n[s]=(n[s]??0)-a*(o[s]??0)}let r=Bw(n);return r<=0.000000000001?n:n.map((o)=>o/r)}function Bw(e){return Math.sqrt(e.reduce((t,n)=>t+n*n,0))}function F5(e,t){let n=lM(e,t);return t.reduce((r,o,a)=>r+o*(n[a]??0),0)}var lp=12000,U5=0.82,wg=[at(J.id),at(J.entityType)];function cM(e,t,n=lp){let r=e.trim().replace(/\s+/g," ");if(r.length<=n)return r;return t?.warn("Truncating search query that exceeds max length",{originalLength:r.length,truncatedLength:n}),r.slice(0,n)}var Z5=i.object({limit:i.number().int().positive().optional().default(20),offset:i.number().int().min(0).optional().default(0),types:i.array(i.string()).optional().default([]),excludeTypes:i.array(i.string()).optional().default([]),weight:i.record(i.string(),i.number()).optional(),visibilityScope:i.enum(["public","shared","restricted"]).optional(),includeUngenerated:i.boolean().optional().default(!1),publishedOnly:i.boolean().optional().default(!1),minScore:i.number().min(0).optional(),signal:i.instanceof(AbortSignal).optional()}),W5=i.preprocess((e)=>{if(typeof e!=="string")return e;return JSON.parse(e)},i.record(i.string(),i.unknown()));class xg{db;embeddingService;serializer;logger;embeddingsEnabled;publishGates;registeredTypes;constructor(e,t,n,r,o=!0,a=()=>({}),s){this.db=e,this.embeddingService=t,this.serializer=n,this.logger=r.child("EntitySearch"),this.embeddingsEnabled=o,this.publishGates=a,this.registeredTypes=s}searchableTypes(e){let t=this.registeredTypes?.();if(!t)return e;return(e.length>0?e:t).filter((r)=>t.includes(r))}async search(e,t){let n=Z5.parse(t??{}),{offset:r,types:o,excludeTypes:a,weight:s,visibilityScope:l,includeUngenerated:c,publishedOnly:u,minScore:d,signal:p,limit:f}=n;p?.throwIfAborted();let g=this.searchableTypes(o);if(this.registeredTypes&&g.length===0)return[];let h=s&&Object.keys(s).length>0,S=cM(e,this.logger);if(this.logger.debug(`Searching entities with query (${S.length} chars)`),!this.embeddingsEnabled)return this.searchLexically(S,{limit:f,offset:r,types:g,excludeTypes:a,weight:s,visibilityScope:l,includeUngenerated:c,publishedOnly:u,minScore:d,signal:p});let v=(await(p?this.embeddingService.embedQuery(S,p):this.embeddingService.embedQuery(S))).embedding;p?.throwIfAborted();let b=JSON.stringify(Array.from(v)),x=this.buildWeightMultiplier(h?s:void 0),T=[];if(g.length>0)T.push(M`${J.entityType} IN (${M.join(g.map((C)=>M`${C}`),M`, `)})`);if(a.length>0)T.push(M`${J.entityType} NOT IN (${M.join(a.map((C)=>M`${C}`),M`, `)})`);return this.searchWithAttachedDb(b,x,[...T,...this.buildVisibilityConditions(l),...this.buildGenerationStatusConditions(c),...this.buildPublishedConditions(u)],f,r,S,d,p)}async searchLexically(e,t){if(!e)return[];let n='"'+e.replace(/"/g,'""')+'"',r=[M`entity_fts MATCH ${n}`];if(t.types.length>0)r.push(Tt(J.entityType,t.types));if(t.excludeTypes.length>0)r.push(M`${J.entityType} NOT IN (${M.join(t.excludeTypes.map((l)=>M`${l}`),M`, `)})`);r.push(...this.buildVisibilityConditions(t.visibilityScope),...this.buildGenerationStatusConditions(t.includeUngenerated),...this.buildPublishedConditions(t.publishedOnly));let o=this.buildWeightMultiplier(t.weight),a=M`(0.5 + 0.5 * ((-bm25(entity_fts)) / (1.0 - bm25(entity_fts)))) * (${o})`;if(t.minScore!==void 0)r.push(M`${a} >= ${t.minScore}`);let s=await this.db.select({id:J.id,entityType:J.entityType,content:J.content,contentHash:J.contentHash,visibility:J.visibility,created:J.created,updated:J.updated,metadata:J.metadata,weighted_score:a.as("weighted_score")}).from(J).innerJoin(M`entity_fts`,M`entity_fts.entity_id = ${J.id} AND entity_fts.entity_type = ${J.entityType}`).where(ce(...r)).orderBy(M`weighted_score DESC`,...wg).limit(t.limit).offset(t.offset);return t.signal?.throwIfAborted(),this.mapSearchResults(s,e)}buildVisibilityConditions(e){let t=e??"public";if(t==="restricted")return[];return[Tt(J.visibility,ko(t))]}buildGenerationStatusConditions(e){if(e)return[];return[M`(json_extract(${J.metadata}, '$.status') IS NULL OR json_extract(${J.metadata}, '$.status') NOT IN ('generating', 'failed'))`]}buildPublishedConditions(e){return e?[$w(this.publishGates())]:[]}static FTS_ALPHA=0.3;buildWeightMultiplier(e){let t=Object.entries(e??{}).filter(([,r])=>Number.isFinite(r));if(t.length===0)return M`1.0`;let n=t.map(([r,o])=>M`WHEN ${J.entityType} = ${r} THEN ${o}`);return M`CASE ${M.join(n,M` `)} ELSE 1.0 END`}async searchWithAttachedDb(e,t,n,r,o,a,s,l){let c=xg.FTS_ALPHA,u=M`(1.0 - vector_distance_cos(emb_e.embedding, vector32(${e})) / 2.0) * (${t})`,d=M`vector_distance_cos(emb_e.embedding, vector32(${e}))`,p='"'+a.replace(/"/g,'""')+'"',f=M`CASE WHEN (${J.entityType}, ${J.id}) IN (
72
72
  SELECT entity_type, entity_id FROM entity_fts WHERE entity_fts MATCH ${p}
73
- ) THEN 1.0 ELSE 0.0 END`,g=M`(${1-c} * ${u}) + (${c} * ${f})`,h=await this.db.select({id:J.id,entityType:J.entityType,content:J.content,contentHash:J.contentHash,visibility:J.visibility,created:J.created,updated:J.updated,metadata:J.metadata,distance:d,weighted_score:g}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(ce(M`${d} < ${U5}`,...s!==void 0?[M`${g} >= ${s}`]:[],...n)).orderBy(Xt(g),...wg).limit(r).offset(o);return l?.throwIfAborted(),this.mapSearchResults(h,a)}async searchEntities(e,t,n){let r={types:[e],limit:n?.limit??20,offset:0,sortBy:"relevance",sortDirection:"desc"};return this.search(t,r)}async projectSemanticSpace(e){if(!this.embeddingsEnabled)throw new pl;let t=e.entities?new Set(e.entities.map(uM)):void 0,n=e.entities?new Set(e.entities.map(({entityType:l})=>l)):e.types&&e.types.length>0?new Set(e.types):void 0,r=(await this.readEmbeddings(n?Array.from(n):void 0,e.visibilityScope,e.entities?.map(({entityId:l})=>l))).filter((l)=>!t||t.has(uM(l))),o=e.origin,a=o?r.find((l)=>l.entityId===o.entityId&&l.entityType===o.entityType)??(n?.has(o.entityType)===!1?(await this.readEmbeddings([o.entityType],e.visibilityScope,[o.entityId]))[0]:void 0):void 0,s=r.filter((l)=>{let c=n?.has(l.entityType)??!0,u=l.entityId===o?.entityId&&l.entityType===o.entityType;return c&&!u});return aM(s,{...a&&{origin:a},...e.maxNeighborDistance!==void 0&&{maxNeighborDistance:e.maxNeighborDistance}})}async readEmbeddings(e,t,n){let r=this.buildVisibilityConditions(t);if(e&&e.length>0)r.push(Tt(J.entityType,e));if(n!==void 0)r.push(Tt(J.id,[...n]));let o=M`emb_e.embedding`.mapWith({mapFromDriverValue(a){if(!ArrayBuffer.isView(a))throw TypeError("Expected embedding blob to be an ArrayBuffer view");let s=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);if(s.byteLength%Float32Array.BYTES_PER_ELEMENT!==0)throw RangeError("Embedding blob byte length must be divisible by 4");let l=new Uint8Array(s.byteLength);return l.set(s),new Float32Array(l.buffer)}});return this.db.select({entityId:J.id,entityType:J.entityType,embedding:o}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(r.length>0?ce(...r):void 0).orderBy(at(J.entityType),at(J.id))}async nearestToEntity(e){if(!this.embeddingsEnabled)throw new pl;let[t]=await this.readEmbeddings([e.origin.entityType],e.visibilityScope,[e.origin.entityId]);if(!t||e.types.length===0)return[];let n=JSON.stringify(Array.from(t.embedding)),r=M`vector_distance_cos(emb_e.embedding, vector32(${n}))`,o=this.db.select({entityId:J.id,entityType:J.entityType,distance:r,metadata:J.metadata}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(ce(...this.buildVisibilityConditions(e.visibilityScope),Tt(J.entityType,e.types),e.publishedOnly?$w(this.publishGates()):void 0,M`NOT (${J.id} = ${e.origin.entityId} AND ${J.entityType} = ${e.origin.entityType})`,e.maxDistance!==void 0?M`${r} <= ${e.maxDistance}`:void 0)).orderBy(M`${r} ASC`,...wg);return(e.limit!==void 0?await o.limit(e.limit):await o).map(({metadata:s,...l})=>e.includeMetadata?{...l,metadata:s}:l)}async searchWithDistances(e,t={}){if(!this.embeddingsEnabled)throw new pl;let n=cM(e,this.logger),{embedding:r}=await this.embeddingService.embedQuery(n),o=JSON.stringify(Array.from(r)),a=M`vector_distance_cos(emb_e.embedding, vector32(${o}))`;return await this.db.select({entityId:J.id,entityType:J.entityType,distance:a}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(ce(t.types&&t.types.length>0?Tt(J.entityType,t.types):void 0,t.maxDistance!==void 0?M`${a} <= ${t.maxDistance}`:void 0)).orderBy(M`${a} ASC`,...wg)}mapSearchResults(e,t){let n=[];for(let o of e)try{let a=W5.parse(o.metadata),s=this.serializer.reconstructEntity({id:o.id,entityType:o.entityType,content:o.content,contentHash:o.contentHash,visibility:o.visibility,created:o.created,updated:o.updated,metadata:a});n.push({entity:s,score:o.weighted_score,excerpt:this.createExcerpt(o.content,t)})}catch(a){this.logger.error(`Failed to parse entity during search: ${a}`)}let r=t.length>50?t.substring(0,50)+"...":t;return this.logger.debug(`Found ${n.length} results for query "${r}"`),n}createExcerpt(e,t){let n=ul(e),r=200,o=t.toLowerCase(),s=n.toLowerCase().indexOf(o);if(s!==-1){let l=Math.max(0,s-50),c=Math.min(n.length,s+o.length+50),u=n.slice(l,c);if(l>0)u="..."+u;if(c<n.length)u=u+"...";return u}return n.slice(0,200)+(n.length>200?"...":"")}}function uM(e){return`${e.entityType}:${e.entityId}`}var qw=i.record(i.string(),i.unknown()),dM=new Set(Jc);function pM(e,t,n,r="reject"){if(n.length===0)return t;let o={...t};for(let a of n){let s=Object.keys(a.shape),l=Object.fromEntries(s.filter((u)=>Object.hasOwn(e,u)).map((u)=>[u,e[u]])),c=a.safeParse(l);if(!c.success&&r==="reject")throw c.error;for(let u of s)if(delete o[u],c.success&&Object.hasOwn(e,u)&&c.data[u]!==void 0&&!dM.has(u))o[u]=c.data[u]}return o}function Tg(e,t,n,r,o=[],a=[]){if(!n)return t;let s=new Set(a.filter((v)=>!v.includes("."))),l=cr(e),c=cr(t),u=qw.parse(l.data),d=qw.parse(c.data),p=new Set([...r.flatMap((v)=>Object.keys(v.shape)),...o]),f=Object.entries(u).filter(([v,b])=>!dM.has(v)&&!s.has(v)&&(!Object.hasOwn(n.shape,v)||p.has(v))&&(!Object.hasOwn(d,v)||JSON.stringify(d[v])!==JSON.stringify(b))),g=[...[...p].filter((v)=>!Object.hasOwn(u,v)&&Object.hasOwn(d,v)),...[...s].filter((v)=>Object.hasOwn(d,v))],h={...d};for(let v of g)delete h[v];for(let[v,b]of f)h[v]=b;let S=Cg(h,a)??h;if(f.length===0&&g.length===0&&S===h)return t;return Object.keys(S).length>0?ei(S,c.content):c.content}function os(e){return[...e.retiredFields??[],...e.translatedFields??[]]}function Cg(e,t){let n=t.reduce((r,o)=>{let[a,s]=o.split(".",2);if(a===void 0||!Object.hasOwn(r,a))return r;if(s===void 0){let{[a]:d,...p}=r;return p}let l=r[a];if(!In(l)||!Object.hasOwn(l,s))return r;let{[s]:c,...u}=l;return{...r,[a]:u}},e);return n===e?void 0:n}function Kc(e,t){if(t.length===0)return e;let n=cr(e),r=qw.safeParse(n.data);if(!r.success)return e;let o=Cg(r.data,t);if(!o)return e;return Object.keys(o).length>0?ei(o,n.content):n.content}function Lw(e,t){if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((n,r)=>Lw(n,t[r]));if(Xe(e)&&Xe(t)){let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((r)=>Object.hasOwn(t,r)&&Lw(e[r],t[r]))}return Object.is(e,t)}var G5=new Set(Jc.filter((e)=>e!=="visibility"));function J5(e,t){let n=cr(t).data,r=cr(e);if(!Xe(n)||!Xe(r.data))return e;let o={...Object.fromEntries(Object.entries(n).filter(([l])=>G5.has(l)).map(([l,c])=>[l,c instanceof Date?c.toISOString():c])),...r.data},a=[...Object.keys(n).filter((l)=>Object.hasOwn(o,l)),...Object.keys(o).filter((l)=>!Object.hasOwn(n,l))],s=Object.fromEntries(a.map((l)=>[l,Lw(n[l],o[l])?n[l]:o[l]]));return ei(s,r.content)}class Fw{entityRegistry;logger;constructor(e,t){this.entityRegistry=e,this.logger=t.child("EntitySerializer")}serializeEntity(e,t){let n=this.entityRegistry.getAdapter(e.entityType),r=Hc(n.toMarkdown(e),e.visibility),o=Tg(t===void 0?e.content:H5(t,r),r,this.entityRegistry.getEntityTypeConfig(e.entityType).binaryStorage==="asset"?void 0:n.writtenFrontmatterSchema??n.frontmatterSchema,this.entityRegistry.getFrontmatterExtensions(e.entityType),this.entityRegistry.getGroupings().filter((a)=>a.types.includes(e.entityType)).map((a)=>a.field),os(this.entityRegistry.getEntityTypeConfig(e.entityType)));return n.writesInDocumentOrder===!0?J5(o,t??e.content):o}deserializeEntity(e,t){let n=this.entityRegistry.getAdapter(t),r=Kc(e,this.retiredFields(t)),o;try{o=n.fromMarkdown(r)}catch(d){throw dl(t,d)??d}let{metadata:a,visibility:s,...l}=o,c=bg(e),u=this.stripPolicyMetadata(this.entityRegistry.projectMetadata(t,r,a??{}),t);return{...l,...c&&{visibility:c},metadata:u}}async convertToEntity(e,t){try{return this.reconstructEntity(e,t)}catch(n){let r=ge(n);return this.logger.error(`Failed to parse entity of type ${e.entityType} with ID ${e.id}: ${r}`),null}}async convertToEntities(e,t,n){let r=[];for(let o of e)try{r.push(this.reconstructEntity(o,n))}catch(a){let s=ge(a);this.logger.error(`Failed to parse entity of type ${t} with ID ${o.id}: ${s}`)}return r}reconstructEntity(e,t){let n=this.entityRegistry.getAdapter(e.entityType),r=n.fromMarkdown(Kc(e.content,this.retiredFields(e.entityType))),{metadata:o,visibility:a,...s}=r,l={id:e.id,entityType:e.entityType,content:e.content,contentHash:e.contentHash,created:new Date(e.created).toISOString(),updated:new Date(e.updated).toISOString(),visibility:e.visibility,...s,...this.stripPolicyMetadata(e.metadata,e.entityType),metadata:this.stripPolicyMetadata(e.metadata,e.entityType)},c=n.schema.parse(l);return t===!0&&n.metadataFromFrontmatter===!0?{...c,content:e.content}:c}prepareEntityForStorage(e,t,n){let r=this.entityRegistry.getAdapter(t),o=this.serializeEntity(e,n),a=this.stripPolicyMetadata(this.entityRegistry.projectMetadata(t,o,r.extractMetadata(e)),t);return{markdown:o,metadata:a}}keepsStoredFrontmatter(e){if(this.entityRegistry.getAdapter(e.entityType).metadataFromFrontmatter!==!0)return!1;let t=cr(e.content);return!Xe(t.data)||Object.keys(t.data).length===0}withFrontmatterWrites(e){let t=this.entityRegistry.getAdapter(e.entityType);if(t.metadataFromFrontmatter!==!0)return e;let n=cr(e.content);if(!Xe(n.data))return e;if(Object.keys(n.data).length===0)return e;let r=cr(t.toMarkdown({...e,content:n.content})),o;try{o=t.fromMarkdown(ei({...Xe(r.data)?r.data:{},...n.data},n.content))}catch(a){throw dl(e.entityType,a)??a}return{...e,metadata:this.stripPolicyMetadata(o.metadata??e.metadata,e.entityType)}}withoutRetiredFields(e){let t=Kc(e.content,this.retiredFields(e.entityType));return t===e.content?e:{...e,content:t}}stripPolicyMetadata(e,t){let{visibility:n,...r}=e,o=os(this.entityRegistry.getEntityTypeConfig(t));return Cg(r,o)??r}retiredFields(e){return this.entityRegistry.getEntityTypeConfig(e).retiredFields??[]}}function H5(e,t){let n=cr(e).data,r=cr(t).data;if(!Xe(n))return"";let o=Object.fromEntries(Object.entries(n).filter(([a])=>!Xe(r)||!Object.hasOwn(r,a)));return Object.keys(o).length>0?ei(o,""):""}async function Ig(e,t,n,r){await e.run(M`INSERT OR IGNORE INTO entity_fts_rowids (entity_type, entity_id) VALUES (${t}, ${n})`),await e.run(M`INSERT INTO entity_fts (rowid, entity_id, entity_type, content)
73
+ ) THEN 1.0 ELSE 0.0 END`,g=M`(${1-c} * ${u}) + (${c} * ${f})`,h=await this.db.select({id:J.id,entityType:J.entityType,content:J.content,contentHash:J.contentHash,visibility:J.visibility,created:J.created,updated:J.updated,metadata:J.metadata,distance:d,weighted_score:g}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(ce(M`${d} < ${U5}`,...s!==void 0?[M`${g} >= ${s}`]:[],...n)).orderBy(Xt(g),...wg).limit(r).offset(o);return l?.throwIfAborted(),this.mapSearchResults(h,a)}async searchEntities(e,t,n){let r={types:[e],limit:n?.limit??20,offset:0,sortBy:"relevance",sortDirection:"desc"};return this.search(t,r)}async projectSemanticSpace(e){if(!this.embeddingsEnabled)throw new pl;let t=e.entities?new Set(e.entities.map(uM)):void 0,n=e.entities?new Set(e.entities.map(({entityType:l})=>l)):e.types&&e.types.length>0?new Set(e.types):void 0,r=(await this.readEmbeddings(n?Array.from(n):void 0,e.visibilityScope,e.entities?.map(({entityId:l})=>l))).filter((l)=>!t||t.has(uM(l))),o=e.origin,a=o?r.find((l)=>l.entityId===o.entityId&&l.entityType===o.entityType)??(n?.has(o.entityType)===!1?(await this.readEmbeddings([o.entityType],e.visibilityScope,[o.entityId]))[0]:void 0):void 0,s=r.filter((l)=>{let c=n?.has(l.entityType)??!0,u=l.entityId===o?.entityId&&l.entityType===o.entityType;return c&&!u});return aM(s,{...a&&{origin:a},...e.maxNeighborDistance!==void 0&&{maxNeighborDistance:e.maxNeighborDistance}})}async readEmbeddings(e,t,n){let r=this.buildVisibilityConditions(t);if(e&&e.length>0)r.push(Tt(J.entityType,e));if(n!==void 0)r.push(Tt(J.id,[...n]));let o=M`emb_e.embedding`.mapWith({mapFromDriverValue(a){if(!ArrayBuffer.isView(a))throw TypeError("Expected embedding blob to be an ArrayBuffer view");let s=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);if(s.byteLength%Float32Array.BYTES_PER_ELEMENT!==0)throw RangeError("Embedding blob byte length must be divisible by 4");let l=new Uint8Array(s.byteLength);return l.set(s),new Float32Array(l.buffer)}});return this.db.select({entityId:J.id,entityType:J.entityType,embedding:o}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(r.length>0?ce(...r):void 0).orderBy(at(J.entityType),at(J.id))}async nearestToEntity(e){if(!this.embeddingsEnabled)throw new pl;let[t]=await this.readEmbeddings([e.origin.entityType],e.visibilityScope,[e.origin.entityId]);if(!t||e.types.length===0)return[];let n=JSON.stringify(Array.from(t.embedding)),r=M`vector_distance_cos(emb_e.embedding, vector32(${n}))`,o=this.db.select({entityId:J.id,entityType:J.entityType,distance:r,metadata:J.metadata}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(ce(...this.buildVisibilityConditions(e.visibilityScope),Tt(J.entityType,e.types),e.publishedOnly?$w(this.publishGates()):void 0,M`NOT (${J.id} = ${e.origin.entityId} AND ${J.entityType} = ${e.origin.entityType})`,e.maxDistance!==void 0?M`${r} <= ${e.maxDistance}`:void 0)).orderBy(M`${r} ASC`,...wg);return(e.limit!==void 0?await o.limit(e.limit):await o).map(({metadata:s,...l})=>e.includeMetadata?{...l,metadata:s}:l)}async searchWithDistances(e,t={}){if(!this.embeddingsEnabled)throw new pl;let n=cM(e,this.logger),{embedding:r}=await this.embeddingService.embedQuery(n),o=JSON.stringify(Array.from(r)),a=M`vector_distance_cos(emb_e.embedding, vector32(${o}))`;return await this.db.select({entityId:J.id,entityType:J.entityType,distance:a}).from(J).innerJoin(M`emb.embeddings AS emb_e`,M`${J.id} = emb_e.entity_id AND ${J.entityType} = emb_e.entity_type`).where(ce(t.types&&t.types.length>0?Tt(J.entityType,t.types):void 0,t.maxDistance!==void 0?M`${a} <= ${t.maxDistance}`:void 0)).orderBy(M`${a} ASC`,...wg)}mapSearchResults(e,t){let n=[];for(let o of e)try{let a=W5.parse(o.metadata),s=this.serializer.reconstructEntity({id:o.id,entityType:o.entityType,content:o.content,contentHash:o.contentHash,visibility:o.visibility,created:o.created,updated:o.updated,metadata:a});n.push({entity:s,score:o.weighted_score,excerpt:this.createExcerpt(o.content,t)})}catch(a){this.logger.error(`Failed to parse entity during search: ${a}`)}let r=t.length>50?t.substring(0,50)+"...":t;return this.logger.debug(`Found ${n.length} results for query "${r}"`),n}createExcerpt(e,t){let n=ul(e),r=200,o=t.toLowerCase(),s=n.toLowerCase().indexOf(o);if(s!==-1){let l=Math.max(0,s-50),c=Math.min(n.length,s+o.length+50),u=n.slice(l,c);if(l>0)u="..."+u;if(c<n.length)u=u+"...";return u}return n.slice(0,200)+(n.length>200?"...":"")}}function uM(e){return`${e.entityType}:${e.entityId}`}var qw=i.record(i.string(),i.unknown()),dM=new Set(Jc);function pM(e,t,n,r="reject"){if(n.length===0)return t;let o={...t};for(let a of n){let s=Object.keys(a.shape),l=Object.fromEntries(s.filter((u)=>Object.hasOwn(e,u)).map((u)=>[u,e[u]])),c=a.safeParse(l);if(!c.success&&r==="reject")throw c.error;for(let u of s)if(delete o[u],c.success&&Object.hasOwn(e,u)&&c.data[u]!==void 0&&!dM.has(u))o[u]=c.data[u]}return o}function Tg(e,t,n,r,o=[],a=[]){if(!n)return t;let s=new Set(a.filter((v)=>!v.includes("."))),l=cr(e),c=cr(t),u=qw.parse(l.data),d=qw.parse(c.data),p=new Set([...r.flatMap((v)=>Object.keys(v.shape)),...o]),f=Object.entries(u).filter(([v,b])=>!dM.has(v)&&!s.has(v)&&(!Object.hasOwn(n.shape,v)||p.has(v))&&(!Object.hasOwn(d,v)||JSON.stringify(d[v])!==JSON.stringify(b))),g=[...[...p].filter((v)=>!Object.hasOwn(u,v)&&Object.hasOwn(d,v)),...[...s].filter((v)=>Object.hasOwn(d,v))],h={...d};for(let v of g)delete h[v];for(let[v,b]of f)h[v]=b;let S=Cg(h,a)??h;if(f.length===0&&g.length===0&&S===h)return t;return Object.keys(S).length>0?ei(S,c.content):c.content}function os(e){return[...e.retiredFields??[],...e.translatedFields??[]]}function Cg(e,t){let n=t.reduce((r,o)=>{let[a,s]=o.split(".",2);if(a===void 0||!Object.hasOwn(r,a))return r;if(s===void 0){let{[a]:d,...p}=r;return p}let l=r[a];if(!In(l)||!Object.hasOwn(l,s))return r;let{[s]:c,...u}=l;return{...r,[a]:u}},e);return n===e?void 0:n}function Kc(e,t){if(t.length===0)return e;let n=cr(e),r=qw.safeParse(n.data);if(!r.success)return e;let o=Cg(r.data,t);if(!o)return e;return Object.keys(o).length>0?ei(o,n.content):n.content}function Lw(e,t){if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((n,r)=>Lw(n,t[r]));if(Xe(e)&&Xe(t)){let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((r)=>Object.hasOwn(t,r)&&Lw(e[r],t[r]))}return Object.is(e,t)}var G5=new Set(Jc.filter((e)=>e!=="visibility"));function J5(e,t){let n=cr(t).data,r=cr(e);if(!Xe(n)||!Xe(r.data))return e;let o={...Object.fromEntries(Object.entries(n).filter(([l])=>G5.has(l)).map(([l,c])=>[l,c instanceof Date?c.toISOString():c])),...r.data},a=[...Object.keys(n).filter((l)=>Object.hasOwn(o,l)),...Object.keys(o).filter((l)=>!Object.hasOwn(n,l))],s=Object.fromEntries(a.map((l)=>[l,Lw(n[l],o[l])?n[l]:o[l]]));return ei(s,r.content)}class Fw{entityRegistry;logger;constructor(e,t){this.entityRegistry=e,this.logger=t.child("EntitySerializer")}serializeEntity(e,t){let n=this.entityRegistry.getAdapter(e.entityType),r=Hc(n.toMarkdown(e),e.visibility),o=Tg(t===void 0?e.content:H5(t,r),r,this.entityRegistry.getEntityTypeConfig(e.entityType).binaryStorage==="asset"?void 0:n.writtenFrontmatterSchema??n.frontmatterSchema,this.entityRegistry.getFrontmatterExtensions(e.entityType),this.entityRegistry.getGroupings().filter((a)=>a.types.includes(e.entityType)).map((a)=>a.field),os(this.entityRegistry.getEntityTypeConfig(e.entityType)));return n.writesInDocumentOrder===!0?J5(o,t??e.content):o}deserializeEntity(e,t){let n=this.entityRegistry.getAdapter(t),r=Kc(e,this.retiredFields(t)),o;try{o=n.fromMarkdown(r)}catch(d){throw dl(t,d)??d}let{metadata:a,visibility:s,...l}=o,c=bg(e),u=this.stripPolicyMetadata(this.entityRegistry.projectMetadata(t,r,a??{}),t);return{...l,...c&&{visibility:c},metadata:u}}async convertToEntity(e,t){try{return this.reconstructEntity(e,t)}catch(n){let r=ge(n);return this.logger.error(`Failed to parse entity of type ${e.entityType} with ID ${e.id}: ${r}`),null}}async convertToEntities(e,t,n){let r=[];for(let o of e)try{r.push(this.reconstructEntity(o,n))}catch(a){let s=ge(a);this.logger.error(`Failed to parse entity of type ${t} with ID ${o.id}: ${s}`)}return r}reconstructEntity(e,t){try{return this.reconstructFromRow(e,t)}catch(n){let r=this.declaredMetadataFromMarkdown(e);if(!r)throw n;return this.reconstructFromRow({...e,metadata:r},t)}}declaredMetadataFromMarkdown(e){let{entityType:t,content:n}=e;if(!this.entityRegistry.hasEntityType(t)||this.entityRegistry.getAdapter(t).metadataFromFrontmatter!==!0)return;try{return this.deserializeEntity(n,t).metadata??{}}catch{return}}reconstructFromRow(e,t){let n=this.entityRegistry.getAdapter(e.entityType),r=n.fromMarkdown(Kc(e.content,this.retiredFields(e.entityType))),{metadata:o,visibility:a,...s}=r,l={id:e.id,entityType:e.entityType,content:e.content,contentHash:e.contentHash,created:new Date(e.created).toISOString(),updated:new Date(e.updated).toISOString(),visibility:e.visibility,...s,...this.stripPolicyMetadata(e.metadata,e.entityType),metadata:this.stripPolicyMetadata(e.metadata,e.entityType)},c=n.schema.parse(l);return t===!0&&n.metadataFromFrontmatter===!0?{...c,content:e.content}:c}prepareEntityForStorage(e,t,n){let r=this.entityRegistry.getAdapter(t),o=this.serializeEntity(e,n),a=this.stripPolicyMetadata(this.entityRegistry.projectMetadata(t,o,r.extractMetadata(e)),t);return{markdown:o,metadata:a}}keepsStoredFrontmatter(e){if(this.entityRegistry.getAdapter(e.entityType).metadataFromFrontmatter!==!0)return!1;let t=cr(e.content);return!Xe(t.data)||Object.keys(t.data).length===0}withFrontmatterWrites(e){let t=this.entityRegistry.getAdapter(e.entityType);if(t.metadataFromFrontmatter!==!0)return e;let n=cr(e.content);if(!Xe(n.data))return e;if(Object.keys(n.data).length===0)return e;let r=cr(t.toMarkdown({...e,content:n.content})),o;try{o=t.fromMarkdown(ei({...Xe(r.data)?r.data:{},...n.data},n.content))}catch(a){throw dl(e.entityType,a)??a}return{...e,metadata:this.stripPolicyMetadata(o.metadata??e.metadata,e.entityType)}}withoutRetiredFields(e){let t=Kc(e.content,this.retiredFields(e.entityType));return t===e.content?e:{...e,content:t}}stripPolicyMetadata(e,t){let{visibility:n,...r}=e,o=os(this.entityRegistry.getEntityTypeConfig(t));return Cg(r,o)??r}retiredFields(e){return this.entityRegistry.getEntityTypeConfig(e).retiredFields??[]}}function H5(e,t){let n=cr(e).data,r=cr(t).data;if(!Xe(n))return"";let o=Object.fromEntries(Object.entries(n).filter(([a])=>!Xe(r)||!Object.hasOwn(r,a)));return Object.keys(o).length>0?ei(o,""):""}async function Ig(e,t,n,r){await e.run(M`INSERT OR IGNORE INTO entity_fts_rowids (entity_type, entity_id) VALUES (${t}, ${n})`),await e.run(M`INSERT INTO entity_fts (rowid, entity_id, entity_type, content)
74
74
  SELECT fts_rowid, ${n}, ${t}, ${r}
75
75
  FROM entity_fts_rowids
76
76
  WHERE entity_type = ${t} AND entity_id = ${n}`)}async function as(e,t,n){await e.run(M`DELETE FROM entity_fts WHERE rowid IN (
@@ -410,5 +410,5 @@ Result:`);if(n===-1)return;let r=e.slice(n+9).trim();if(!r)return;try{return JSO
410
410
  `)}function F_e(e){return e.split(`
411
411
  `).flatMap((t)=>{let n=t.match(q_e);if(!n)return[];let r=(n[3]??"").split(",").map((o)=>o.trim()).filter(Boolean);return[{name:n[1]??"",description:n[2]??"",tags:r}]})}var hQ=new bs(mS,{title:"Agent",mappings:[{key:"about",label:"About",type:"string"},{key:"skills",label:"Skills",type:"custom",formatter:L_e,parser:F_e},{key:"notes",label:"Notes",type:"string"}]});function U_e(e){return hQ.format(e)}function Z_e(e){if(!e.trim())return mS.parse({});try{return hQ.parse(e)}catch{return mS.parse({})}}import{EventEmitter as IQ}from"events";var mn={REGISTERED:"registered",INITIALIZED:"initialized",ERROR:"error",DISABLED:"disabled"},Wi={REGISTERED:"plugin:registered",BEFORE_INITIALIZE:"plugin:before_initialize",INITIALIZED:"plugin:initialized",ERROR:"plugin:error",DISABLED:"plugin:disabled"};class Gi extends Error{pluginId;constructor(e,t){super(`Plugin ${e}: ${t}`);this.name="PluginError",this.pluginId=e}}class yQ extends Error{pluginId;constructor(e,t){super(t);this.name="FatalPluginConfigurationError",this.pluginId=e}}var bQ=Symbol.for("brains.httpRouteSnapshotProvider");function fS(e){let t=Reflect.get(e,bQ);return typeof t==="function"?t:void 0}function W_e(e,t){if(fS(e))throw Error("HTTP route snapshot provider is already bound");Object.defineProperty(e,bQ,{value:t,enumerable:!1,configurable:!0,writable:!1})}function vQ(e,t){let n=fS(e);if(!n)throw Error("HTTP route snapshot provider is not bound");if(fS(t))return;W_e(t,n)}function Myt(e){let t=fS(e);if(!t)throw Error("HTTP route snapshot provider is not bound");return t()}function wQ(e,t){return Reflect.get(e,t,e)}function xQ(e,t,n){if(typeof e!=="function")throw TypeError("Cannot apply a non-callable trapped member");return Reflect.apply(e,t,n)}class $P{scope;ingress=new Set;closePromise=null;closed=!1;constructor(){this.scope=be.runSync(dn.make())}assertOpen(){if(this.closed)throw Error("Cannot register a resource after plugin teardown")}acquire(e,t){this.assertOpen();let n=e();try{this.addFinalizer(()=>t(n))}catch(r){try{t(n)}catch(o){throw AggregateError([r,o],"Plugin acquisition rollback failed",{cause:o})}throw r}return n}addFinalizer(e){this.assertOpen(),be.runSync(dn.addFinalizer(this.scope,be.promise(async()=>{await e()})))}addIngress(e){this.assertOpen(),this.ingress.add(e)}close(e=cn.void){return this.closed=!0,this.closePromise??=this.closeScope(e),this.closePromise}async closeScope(e){let t,n=!1,r=[...this.ingress].reverse();for(let l of r)try{l.stopAdmission()}catch(c){if(!n)t=c;n=!0}let o=await Promise.allSettled(r.map((l)=>Promise.resolve().then(()=>l.drain())));this.ingress.clear();let a=o.find((l)=>l.status==="rejected");if(!n&&a)t=a.reason,n=!0;let s=await be.runPromiseExit(dn.close(this.scope,e));if(!n&&cn.isFailure(s))t=qi.squash(s.cause),n=!0;if(n)throw t}}function vc(e,t,n,r){return new Proxy(e,{get(o,a){let s=wQ(o,a);if(typeof a==="string"&&t.some((l)=>l===a)&&typeof s==="function")return(...l)=>n.acquire(()=>xQ(s,o,l),(c)=>r(l,c));return typeof s==="function"?s.bind(o):s}})}function SQ(e){return typeof e==="function"}function Ef(e,t,n){return vc(e,t,n,(r)=>{let o=r[0];if(typeof o==="string")e.unregisterPlugin(o)})}function TQ(e,t){let n=e.getMessageBus(),r=new Set,o=(A,k,j)=>{t.assertOpen();let z=!0,G=new Set,N=j((B)=>{if(!z)return{noop:!0};let Q,ee=new Promise((ae)=>{Q=ae});G.add(ee);let F=()=>{G.delete(ee),Q()},O;try{O=Promise.resolve(k(B))}catch(ae){throw F(),ae}return O.then((ae)=>(F(),ae),(ae)=>{throw F(),ae})}),L={type:A,originalHandler:k,stopAdmission:()=>{if(!z)return;z=!1,N(),r.delete(L)}};r.add(L);try{t.addIngress({stopAdmission:L.stopAdmission,drain:async()=>{await Promise.all(G)}})}catch(B){throw L.stopAdmission(),B}return L.stopAdmission},a={send:(A)=>n.send(A),hasHandlers:(A)=>n.hasHandlers?.(A)??!1,subscribe:(A,k,j)=>o(A,k,(z)=>n.subscribe(A,z,j)),observe:(A,k)=>o(A,k,(j)=>n.observe(A,j)),deliverPeer:(A,k)=>n.deliverPeer(A,k),unsubscribe:(A,k)=>{let j=[...r].filter((z)=>z.type===A&&z.originalHandler===k);if(j.length===0){n.unsubscribe(A,k);return}for(let z of j)z.stopAdmission()},collect:(A)=>n.collect(A),validateMessage:(A,k)=>n.validateMessage(A,k),getHandlerCount:(A)=>n.getHandlerCount(A),getTargetedHandlerCount:(A,k)=>n.getTargetedHandlerCount(A,k),clearHandlers:(A)=>n.clearHandlers(A),clearAllHandlers:()=>n.clearAllHandlers()},s=e.getAttachmentRegistry(),l={...s,register:(A,k,j)=>t.acquire(()=>s.register(A,k,j),(z)=>z())},c=e.getEntityRegistry(),u=vc(c,["registerEntityType"],t,(A)=>{let k=A[0];if(typeof k==="string")c.unregisterEntityType(k)}),d=Ef(e.getProfileKindRegistry(),["register"],t),p=Ef(e.getChannelRegistry(),["registerDescriptor","registerDeliveryProvider"],t),f=Ef(e.getInboxRegistry(),["registerSource"],t),g=Ef(e.getInboxFollowUpRegistry(),["registerKind"],t),h=e.getAccountSettingsRegistry(),S=vc(h,["register"],t,(A,k)=>{xQ(h.unregister,h,[k])}),v=vc(e.getAuthRegistry(),["bindBackend"],t,(A,k)=>{if(SQ(k))k()}),b=vc(e.getAtprotoProjectionRegistry(),["register"],t,(A,k)=>{if(SQ(k))k()}),x=Ef(e.getOperationalHealthRegistry(),["register"],t),T=e.getDataSourceRegistry(),C=vc(T,["register"],t,(A)=>{let k=A[0];if(typeof k==="object"&&k!==null&&"id"in k&&typeof k.id==="string"){let j=k.id.includes(":")?k.id:`shell:${k.id}`;T.unregister(j)}}),w=e.getAnalyticsRegistry(),y=vc(w,["register"],t,(A)=>{let k=A[0];if(typeof k==="object"&&k!==null&&"type"in k&&typeof k.type==="string")w.unregister(k.type)}),R=new Proxy(e,{get(A,k){if(k==="getMessageBus")return()=>a;if(k==="getAttachmentRegistry")return()=>l;if(k==="getEntityRegistry")return()=>u;if(k==="getDataSourceRegistry")return()=>C;if(k==="getProfileKindRegistry")return()=>d;if(k==="getChannelRegistry")return()=>p;if(k==="getInboxRegistry")return()=>f;if(k==="getInboxFollowUpRegistry")return()=>g;if(k==="getOperationalHealthRegistry")return()=>x;if(k==="getAccountSettingsRegistry")return()=>S;if(k==="getAuthRegistry")return()=>v;if(k==="getAtprotoProjectionRegistry")return()=>b;if(k==="getAnalyticsRegistry")return()=>y;let j=wQ(A,k);return typeof j==="function"?j.bind(A):j}});return vQ(e,R),R}class BP{plugins;events;daemonRegistry;logger;projectionRegistry;resourceScopes=new Map;releasePromises=new Map;constructor(e,t,n,r,o){this.plugins=e,this.events=t,this.daemonRegistry=n,this.projectionRegistry=r,this.logger=o.child("PluginLifecycle")}async initializePlugin(e,t,n){let r=this.plugins.get(e);if(!r)throw new Gi(e,"Registration failed: Plugin is not registered");let o=r.plugin,a=new $P;a.addFinalizer(()=>t.unregisterPluginCapabilities?.(e)),a.addFinalizer(()=>t.getJobQueueService().unregisterPluginHandlers(e)),a.addFinalizer(()=>this.projectionRegistry.unregisterPlugin(e)),this.resourceScopes.set(e,a),this.releasePromises.delete(e),this.logger.debug(`Initializing plugin: ${e}`);try{this.events.emit(Wi.BEFORE_INITIALIZE,e,o);let s=await o.register(TQ(t,a),n);return r.status=mn.INITIALIZED,this.logger.debug(`Initialized plugin: ${e}`),this.events.emit(Wi.INITIALIZED,e,o),s}catch(s){throw this.logger.error(`Error initializing plugin ${e}: ${ge(s)}`),await this.failPluginInitialization(e,s),s}}async finalizePluginRegistration(e){let t=this.plugins.get(e);if(!t)throw new Gi(e,"Registration finalization failed: Plugin is not registered");if(t.status!==mn.INITIALIZED)return;try{await t.plugin.finalizeRegistration?.(),this.logger.debug(`Registration finalized for plugin: ${e}`)}catch(n){throw await this.failPluginInitialization(e,n),n}}async readyPlugin(e){let t=this.plugins.get(e);if(!t)throw new Gi(e,"Ready failed: Plugin is not registered");if(t.status!==mn.INITIALIZED){this.logger.debug(`Skipping ready hook for non-initialized plugin: ${e}`);return}try{await t.plugin.ready?.(),this.logger.debug(`Ready hook completed for plugin: ${e}`)}catch(n){let r=yu(n);t.status=mn.ERROR,t.error=r;try{this.events.emit(Wi.ERROR,e,r)}catch(o){this.logger.error(`Plugin error listener failed for ${e}`,o)}throw r}}async startPluginDaemons(e){let t=this.plugins.get(e);if(t?.status!==mn.INITIALIZED)return;try{await this.daemonRegistry.startPlugin(e),this.logger.debug(`Started daemons for plugin: ${e}`)}catch(n){if(t.plugin.requiresDaemonStartup?.())throw n;this.logger.warn(`Daemon ${e} failed to start: ${ge(n)}`)}}async failPluginInitialization(e,t){let n=this.plugins.get(e);if(!n)return;let r=n.status!==mn.ERROR,o=yu(t);if(n.status=mn.ERROR,n.error=o,await this.releasePluginResources(e,cn.fail(t)),r)try{this.events.emit(Wi.ERROR,e,o)}catch(a){this.logger.error(`Plugin error listener failed for ${e}`,a)}}async disablePlugin(e){let t=this.plugins.get(e);if(!t){this.logger.warn(`Cannot disable plugin ${e}: not registered`);return}if(t.status===mn.DISABLED)return;this.logger.debug(`Disabling plugin: ${e}`);let n=t.status===mn.ERROR;await this.releasePluginResources(e,cn.void);let r=this.plugins.get(e);if(!n&&r&&r.status!==mn.DISABLED)r.status=mn.DISABLED,this.events.emit(Wi.DISABLED,e,r.plugin);this.logger.debug(`Disabled plugin: ${e}`)}releasePluginResources(e,t){let n=this.releasePromises.get(e);if(n)return n;let r=this.releasePluginResourcesOnce(e,t);return this.releasePromises.set(e,r),r}async releasePluginResourcesOnce(e,t){let n=this.plugins.get(e);if(!n)return;try{await this.daemonRegistry.stopPlugin(e),this.logger.debug(`Stopped daemons for plugin: ${e}`)}catch(o){this.logger.error(`Failed to stop daemons for plugin: ${e}`,o)}let r=this.resourceScopes.get(e);if(this.resourceScopes.delete(e),r)try{await r.close(t)}catch(o){this.logger.error(`Failed to close resources for plugin ${e}`,o)}if(n.plugin.shutdown)try{await n.plugin.shutdown(),this.logger.debug(`Shutdown completed for plugin: ${e}`)}catch(o){this.logger.error(`Plugin shutdown failed for ${e}:`,o)}for(let o of this.daemonRegistry.getByPlugin(e))try{await this.daemonRegistry.unregister(o.name)}catch(a){this.logger.error(`Failed to unregister daemon ${o.name} for plugin ${e}`,a)}}}class qP{plugins;events;logger;constructor(e,t,n){this.plugins=e,this.events=t,this.logger=n.child("DependencyResolver")}async resolveInitializationOrder(e){this.logger.debug("Resolving plugin initialization order...");let t=Array.from(this.plugins.keys()),n=new Set,r=!0;while(r&&n.size<t.length){r=!1;for(let s of t){if(n.has(s))continue;if(!this.plugins.get(s))continue;if(this.getUnmetDependencies(s).length===0)try{await e(s),n.add(s),r=!0}catch(u){let d=ge(u);this.logger.error(`Failed to initialize plugin ${s}: ${d}`),n.add(s),r=!0}}}let o=t.filter((s)=>!n.has(s));if(o.length>0){let s=o.join(", ");this.logger.error(`Failed to initialize plugins due to dependency issues: ${s}`);for(let l of o){let c=this.getUnmetDependencies(l);this.logger.error(`Plugin ${l} has unmet dependencies: ${c.join(", ")}`);let u=this.plugins.get(l);if(u)u.status=mn.ERROR,u.error=new Gi(l,`Unmet dependencies: ${c.join(", ")}`);this.events.emit(Wi.ERROR,l,u?.error)}}let a=new Set;for(let[s,l]of this.plugins)if(l.status===mn.INITIALIZED)a.add(s);return this.logger.debug(`Resolved ${a.size} of ${t.length} plugins`),{initialized:a,failed:o}}getUnmetDependencies(e){let t=this.plugins.get(e);if(!t)return[];let{dependencies:n}=t,r=[];for(let o of n){let a=this.plugins.get(o);if(!a){r.push(o);continue}if(a.status!==mn.INITIALIZED)r.push(o)}return r}}class LP{logger;projectionRegistry;constructor(e,t){this.logger=e.child("CapabilityRegistrar"),this.projectionRegistry=t}async registerCapabilities(e,t,n,r){if(!r?.executionOnly&&n.tools.length>0)e.registerTools(t,n.tools),this.logger.debug(`Registered ${n.tools.length} tools from ${t}`);if(!r?.executionOnly&&n.resources.length>0)e.registerResources(t,n.resources),this.logger.debug(`Registered ${n.resources.length} resources from ${t}`);if(!r?.executionOnly&&n.instructions)e.registerInstructions(t,n.instructions),this.logger.debug(`Registered instructions from ${t}`);let o=n.projectionRules??[];try{for(let a of o)this.projectionRegistry.registerRule(t,a)}catch(a){throw this.projectionRegistry.unregisterPlugin(t),a}if(o.length>0)this.logger.debug(`Registered ${o.length} projection rules from ${t}`)}}class gS{projections=new Map;rules=new Map;static createFresh(){return new gS}constructor(){}registerRule(e,t){if(!Object.isFrozen(t))throw Error(`Projection rule "${t.id}" must be created with defineProjectionRule`);let n=this.projections.get(t.id);if(n)throw Error(`Projection "${t.id}" is already registered by "${n.pluginId}"`);let r={id:t.id,pluginId:e,targetType:t.targetType,sources:t.sources.map((a)=>({kind:a.kind,types:[...a.types],...a.excludeTypes?{excludeTypes:[...a.excludeTypes]}:{}}))};this.projections.set(t.id,r),this.rules.set(t.id,t);let o=!0;return()=>{if(!o)return;if(o=!1,this.rules.get(t.id)===t)this.rules.delete(t.id);if(this.projections.get(t.id)===r)this.projections.delete(t.id)}}unregisterPlugin(e){for(let[t,n]of this.projections)if(n.pluginId===e)this.projections.delete(t),this.rules.delete(t)}list(){return Array.from(this.projections.values()).sort((e,t)=>e.id.localeCompare(t.id)).map(H_e)}listRules(){return[...this.rules.values()].sort((e,t)=>e.id.localeCompare(t.id))}validate(e){let t=this.list(),n=new Set(e.map(({type:s})=>s));for(let s of t)if(!n.has(s.targetType))throw Error(`Projection "${s.id}" targets unregistered entity type "${s.targetType}"`);let r=e.filter(({projectionSource:s})=>s).map(({type:s})=>s).sort(),o=V_e(t,r),a=Q_e(t,o)[0];if(a){let s=Y_e(a,o);throw Error(`Projection cycle is not supported: ${[...s,s[0]].join(" -> ")}`)}return J_e({projections:t,edges:o,unknownSourceTypes:G_e(t,n)})}}function G_e(e,t){let n=[];for(let r of e){let o=[...new Set(r.sources.flatMap((a)=>[...a.types,...a.excludeTypes??[]]).filter((a)=>a!=="*"&&!t.has(a)))].sort();if(o.length>0)n.push({projectionId:r.id,types:o})}return n}function J_e(e){for(let t of e.projections){for(let n of t.sources){if(Object.freeze(n.types),n.excludeTypes)Object.freeze(n.excludeTypes);Object.freeze(n)}Object.freeze(t.sources),Object.freeze(t)}for(let t of e.edges)Object.freeze(t.causes),Object.freeze(t);for(let t of e.unknownSourceTypes)Object.freeze(t.types),Object.freeze(t);return Object.freeze(e.unknownSourceTypes),Object.freeze(e.projections),Object.freeze(e.edges),Object.freeze(e)}function H_e(e){return{...e,sources:e.sources.map((t)=>({...t,types:[...t.types],...t.excludeTypes?{excludeTypes:[...t.excludeTypes]}:{}}))}}function V_e(e,t){let n=new Map;for(let r of e)for(let o of e){let a=K_e(r,o,t);if(a.length===0)continue;n.set(`${r.id}\x00${o.id}`,new Set(a))}return Array.from(n,([r,o])=>{let[a="",s=""]=r.split("\x00");return{from:a,to:s,causes:[...o].sort()}}).sort((r,o)=>r.from.localeCompare(o.from)||r.to.localeCompare(o.to))}function K_e(e,t,n){let r=[];for(let o of t.sources){let a=new Set(o.excludeTypes??[]);if((o.types.includes("*")?[...o.types.filter((l)=>l!=="*"),...n]:o.types).includes(e.targetType)&&!a.has(e.targetType))r.push(`entity:${e.targetType}`)}return[...new Set(r)]}function Q_e(e,t){let n=e.map(({id:p})=>p).sort(),r=CQ(n,t),o=new Map,a=new Map,s=[],l=new Set,c=[],u=0,d=(p)=>{o.set(p,u),a.set(p,u),u++,s.push(p),l.add(p);for(let S of r.get(p)??[])if(!o.has(S))d(S),a.set(p,Math.min(a.get(p)??0,a.get(S)??0));else if(l.has(S))a.set(p,Math.min(a.get(p)??0,o.get(S)??0));if(a.get(p)!==o.get(p))return;let f=[],g;do{if(g=s.pop(),!g)break;l.delete(g),f.push(g)}while(g!==p);let h=r.get(p)?.includes(p)??!1;if(f.length>1||h)c.push(f.sort())};for(let p of n)if(!o.has(p))d(p);return c.sort((p,f)=>(p[0]??"").localeCompare(f[0]??""))}function Y_e(e,t){let n=new Set(e),r=CQ(e,t),o=[...e].sort()[0];if(!o)return[];if(r.get(o)?.includes(o))return[o];let a=(s,l)=>{for(let c of r.get(s)??[]){if(!n.has(c))continue;if(c===o)return l;if(l.includes(c))continue;let u=a(c,[...l,c]);if(u)return u}return};return a(o,[o])??[...e].sort()}function CQ(e,t){let n=new Map;for(let r of e)n.set(r,[]);for(let r of t){let o=n.get(r.from);if(o&&!o.includes(r.to))o.push(r.to)}for(let r of n.values())r.sort();return n}class hS{plugins=new Map;logger;events=new IQ;daemonRegistry;shell=null;initializedPluginIds=[];channelOnlyPlugins=[];pluginLifecycle;dependencyResolver;capabilityRegistrar;projectionRegistry=gS.createFresh();projectionGraph;static createFresh(e,t){return new hS(e,t)}setShell(e){this.shell=e}constructor(e,t){this.logger=e.child("PluginManager"),this.events=new IQ,this.daemonRegistry=t,this.pluginLifecycle=new BP(this.plugins,this.events,this.daemonRegistry,this.projectionRegistry,e),this.dependencyResolver=new qP(this.plugins,this.events,e),this.capabilityRegistrar=new LP(e,this.projectionRegistry)}registerPlugin(e){if(!e.id)throw new Gi("unknown","Registration failed: Plugin must have an id");if(this.logger.debug(`Registering plugin: ${e.id} (${e.version})`),this.plugins.has(e.id)){let o=this.plugins.get(e.id)?.plugin.version;throw new Gi(e.id,`Registration failed: Plugin is already registered with version ${o}`)}let t=e.dependencies??[],n={plugin:e,status:mn.REGISTERED,dependencies:t};this.plugins.set(e.id,n),this.logger.debug(`Registered plugin: ${e.id} (${e.version})`),this.events.emit(Wi.REGISTERED,e.id,e)}async initializePlugins(e){this.logger.debug("Initializing plugins..."),this.initializedPluginIds=[];let t=await this.dependencyResolver.resolveInitializationOrder(async(n)=>{await this.initializePlugin(n,e)});this.logger.debug(`Initialized ${t.initialized.size} of ${this.plugins.size} plugins`)}async registerInterfaceChannels(e,t){let n=this.shell;if(!n)throw Error("Cannot register interface channels: Shell not set. Call setShell() first.");for(let r of e)try{await r.registerChannelsForExecution?.(n,t),this.channelOnlyPlugins.push(r)}catch(o){this.logger.error(`Channel registration failed for interface ${r.id}: ${ge(o)}`)}}async initializePlugin(e,t){if(!this.shell)throw new Gi(e,"Cannot initialize plugin: Shell not set. Call setShell() first.");let n=this.shell;try{let r=await this.pluginLifecycle.initializePlugin(e,n,t);await this.capabilityRegistrar.registerCapabilities(n,e,r,{executionOnly:t?.executionOnly}),this.initializedPluginIds.push(e)}catch(r){throw await this.pluginLifecycle.failPluginInitialization(e,r),r}}async finalizePluginRegistrations(){this.logger.debug("Finalizing plugin registrations...");for(let n of this.initializedPluginIds)await this.pluginLifecycle.finalizePluginRegistration(n);if(!this.shell)throw Error("Cannot validate projections before the shell is set");let e=this.shell.getEntityRegistry(),t=this.projectionRegistry.validate(e.getAllEntityTypes().map((n)=>{let r=e.getEntityTypeConfig(n);return{type:n,projectionSource:r.projectionSource!==!1&&r.projectionSourceRole!=="excluded"}}));this.projectionGraph=t;for(let n of t.unknownSourceTypes)this.logger.warn("Projection declares entity source types no installed plugin registers",{projectionId:n.projectionId,types:n.types});this.logger.debug("Validated projection graph",{projections:t.projections.length,edges:t.edges.length})}getProjectionGraphSnapshot(){if(!this.projectionGraph)throw Error("Projection graph has not been finalized");return this.projectionGraph}getProjectionRulesSnapshot(){if(!this.projectionGraph)throw Error("Projection graph has not been finalized");return Object.freeze(this.projectionRegistry.listRules())}async readyPlugins(){this.logger.debug("Dispatching plugin ready hooks...");try{await FP(this.initializedPluginIds.map((e)=>()=>this.pluginLifecycle.readyPlugin(e)))}catch(e){for(let t of this.initializedPluginIds){let n=this.plugins.get(t);if(n?.status===mn.ERROR)await this.pluginLifecycle.failPluginInitialization(t,n.error??e)}throw e}}async startPluginDaemons(){this.logger.debug("Starting plugin daemons..."),await FP(this.initializedPluginIds.map((e)=>()=>this.pluginLifecycle.startPluginDaemons(e)))}getPlugin(e){return this.plugins.get(e)?.plugin}getPluginStatus(e){return this.plugins.get(e)?.status}hasPlugin(e){return this.plugins.has(e)}isPluginInitialized(e){return this.plugins.get(e)?.status===mn.INITIALIZED}getAllPluginIds(){return Array.from(this.plugins.keys())}getAllPlugins(){return new Map(this.plugins)}getFailedPlugins(){return Array.from(this.plugins.entries()).filter((e)=>e[1].status===mn.ERROR&&e[1].error!==void 0).map(([e,t])=>({id:e,error:t.error}))}getPluginPackageName(e){return this.plugins.get(e)?.plugin.packageName}async disablePlugin(e){await this.pluginLifecycle.disablePlugin(e)}async shutdownPlugins(){let e=new Set;for(let t of[...this.initializedPluginIds].reverse())await this.disablePlugin(t),e.add(t);for(let t of[...this.plugins.keys()].reverse())if(!e.has(t))await this.disablePlugin(t);for(let t of this.channelOnlyPlugins.splice(0).reverse())try{await t.shutdown?.()}catch(n){this.logger.error(`Shutdown failed for interface channels ${t.id}: ${ge(n)}`)}}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}getEventEmitter(){return this.events}}class EQ{definitions=new Map;register(e){this.definitions.set(e.type,e)}unregister(e){this.definitions.delete(e)}getDefinitions(){return Array.from(this.definitions.values())}async run(e){let t=this.definitions.get(e.type);if(!t)throw Error(`Unknown analytics report: ${e.type}. Available: ${Array.from(this.definitions.keys()).join(", ")}`);let n=t.minVisibility??"public";if(!Zr.hasPermission(e.permission,n))throw Error(`The ${t.type} report answers ${n} callers only`);let r=t.params.safeParse(e.params??{});if(!r.success){let s=r.error.issues.map((l)=>`${l.path.join(".")||"params"}: ${l.message}`).join("; ");throw Error(`Invalid params for ${t.type}: ${s}`)}let o=Cr(e.permission),a=o==="public"?Tp(e.entityService,{publishedOnly:!0,visibilityScope:o}):e.entityService;return t.handler(r.data,{entityService:a,visibilityScope:o})}}function X_e(e){return e}function yS(e){let t=e?.trim();if(!t)return"http://localhost:8080";let n=t.replace(/\/+$/,""),r=new URL(n);if(r.pathname!=="/"||r.search||r.hash)throw Error("OAuth issuer must be an origin without path, query, or hash");return r.origin}function eOe(e){let t=new URL(yS(e)).hostname.toLowerCase();return t==="localhost"||t==="[::1]"||t==="::1"||t.startsWith("127.")}function RQ(e,t){let r=e.headers.get("x-forwarded-proto")?.split(",")[0]?.trim(),o=e.headers.get("x-forwarded-host")??e.headers.get("host");if(o){let a=r??new URL(e.url).protocol.replace(":","");return yS(`${a}://${o}`)}return yS(t??new URL(e.url).origin)}function kQ(e,t){return new Response(JSON.stringify({error:e}),{status:t,headers:{"Content-Type":"application/json; charset=utf-8","Cache-Control":"no-store"}})}function AQ(e){let t=e.headers.get("origin");if(t===null)return!1;try{return t===RQ(e)}catch{return!1}}function PQ(e){return AQ(e)?void 0:kQ("Same-origin request required",403)}function tOe(e){let t=PQ(e);if(t)return t;if(!e.headers.get("content-type")?.startsWith("application/json"))return kQ("JSON request required",415);return}export{jc as Na,Dc as Oa,zt as Pa,M as Qa,Bc as Ra,H as Sa,Xa as Ta,ce as Ua,$n as Va,Vn as Wa,T_ as Xa,vr as Ya,Tt as Za,Kn as _a,ua as $a,al as ab,es as bb,at as cb,Xt as db,z_ as eb,Jf as fb,ns as gb,We as hb,de as ib,Ft as jb,_t as kb,YS as lb,Br as mb,J as nb,ag as ob,bw as pb,Xi as qb,eo as rb,zO as sb,m5 as tb,f5 as ub,Ln as vb,rs as wb,En as xb,bn as yb,gi as zb,da as Ab,Ct as Bb,Bi as Cb,NO as Db,v5 as Eb,S5 as Fb,w5 as Gb,rp as Hb,is as Ib,Aw as Jb,Ow as Kb,Mw as Lb,qr as Mb,pi as Nb,ji as Ob,Mc as Pb,Cr as Qb,Va as Rb,Er as Sb,fg as Tb,hg as Ub,Wc as Vb,Gc as Wb,yg as Xb,d$e as Yb,p$e as Zb,Jc as _b,hi as $b,Rn as ac,op as bc,bg as cc,ul as dc,Hc as ec,Lr as fc,rM as gc,pl as hc,Tg as ic,Eg as jc,Uw as kc,Zw as lc,Rg as mc,kg as nc,Gw as oc,Pg as pc,Qc as qc,jo as rc,Yc as sc,kr as tc,Ki as uc,ax as vc,sx as wc,b6 as xc,v6 as yc,ux as zc,pLe as Ac,mx as Bc,gx as Cc,zo as Dc,Zg as Ec,FM as Fc,ls as Gc,UM as Hc,YLe as Ic,ZM as Jc,Gg as Kc,W as Lc,No as Mc,_ as Nc,fe as Oc,P as Pc,Sr as Qc,VM as Rc,fa as Sc,vi as Tc,Ur as Uc,fp as Vc,Ce as Wc,Mn as Xc,ot as Yc,XM as Zc,ej as _c,st as $c,tu as ad,nu as bd,us as cd,kj as dd,lh as ed,cu as fd,Fx as gd,Ux as hd,Xx as id,gh as jd,uT as kd,wh as ld,jD as md,zD as nd,xh as od,hs as pd,pT as qd,b8 as rd,$D as sd,Ch as td,mT as ud,BD as vd,ga as wd,p2e as xd,m2e as yd,f2e as zd,g2e as Ad,gT as Bd,Ih as Cd,hT as Dd,yT as Ed,E8 as Fd,h2e as Gd,y2e as Hd,b2e as Id,v2e as Jd,S2e as Kd,w2e as Ld,x2e as Md,wi as Nd,T2e as Od,Cp as Pd,qD as Qd,Rl as Rd,Jet as Sd,Ite as Td,_B as Ud,py as Vd,va as Wd,tz as Xd,M5e as Yd,eC as Zd,Dp as _d,VY as $d,KY as ae,QY as be,YY as ce,fz as de,gu as ee,XY as fe,e7 as ge,t7 as he,pu as ie,bs as je,r7 as ke,bz as le,Sz as me,a7 as ne,iC as oe,Tz as pe,l7 as qe,oC as re,aC as se,HD as te,KD as ue,Eh as ve,r0 as we,ET as xe,OT as ye,a0 as ze,Wr as Ae,Nl as Be,re as Ce,yt as De,gC as Ee,yC as Fe,bC as Ge,qo as He,vC as Ie,qp as Je,Lp as Ke,SC as Le,wC as Me,xC as Ne,TC as Oe,wt as Pe,Mh as Qe,jh as Re,N9e as Se,$9e as Te,A7 as Ue,Gz as Ve,q9e as We,N7 as Xe,L9e as Ye,F9e as Ze,U9e as _e,Z9e as $e,W9e as af,G9e as bf,J9e as cf,H9e as df,V9e as ef,K9e as ff,Q9e as gf,U7 as hf,Z7 as if,X9e as jf,e8e as kf,t8e as lf,n8e as mf,r8e as nf,i8e as of,o8e as pf,a8e as qf,Ae as rf,Fn as sf,ql as tf,xa as uf,Dh as vf,zh as wf,eN as xf,tN as yf,G7 as zf,Nh as Af,MC as Bf,Wp as Cf,EN as Df,Gp as Ef,Bh as Ff,Ll as Gf,kN as Hf,qh as If,NC as Jf,AN as Kf,Lh as Lf,$C as Mf,BC as Nf,lX as Of,UC as Pf,dX as Qf,Gh as Rf,yy as Sf,WC as Tf,Su as Uf,DT as Vf,PAe as Wf,XC as Xf,_Ae as Yf,NT as Zf,OAe as _f,jAe as $f,K4 as ag,DAe as bg,X4 as cg,rK as dg,oK as eg,Au as fg,Kr as gg,Vv as hg,aK as ig,SP as jg,pK as kg,hf as lg,mK as mg,Rd as ng,fK as og,VAe as pg,gK as qg,hK as rg,aPe as sg,bK as tg,Ui as ug,SI as vg,oB as wg,Nee as xg,$ee as yg,Bee as zg,qee as Ag,dPe as Bg,pPe as Cg,mPe as Dg,xP as Eg,Fi as Fg,Ta as Gg,SX as Hg,VC as Ig,Ut as Jg,nY as Kg,$T as Lg,sI as Mg,hY as Ng,CY as Og,IY as Pg,EY as Qg,RY as Rg,kY as Sg,PY as Tg,_Y as Ug,OY as Vg,MY as Wg,jY as Xg,DY as Yg,zY as Zg,Qh as _g,m0 as $g,h0 as ah,S0 as bh,yI as ch,vI as dh,kh as eh,NY as fh,dte as gh,mte as hh,fte as ih,gte as jh,vte as kh,PI as lh,jB as mh,_I as nh,II as oh,Ate as ph,xB as qh,DI as rh,Ute as sh,TB as th,IB as uh,RB as vh,Hte as wh,Xte as xh,ene as yh,tne as zh,ine as Ah,one as Bh,ane as Ch,Ine as Dh,Ane as Eh,Mne as Fh,jne as Gh,Dne as Hh,zne as Ih,Nne as Jh,$ne as Kh,Lne as Lh,bue as Mh,ost as Nh,_de as Oh,TR as Ph,_a as Qh,Mde as Rh,jde as Sh,Fm as Th,zk as Uh,uv as Vh,Nk as Wh,dv as Xh,pV as Yh,$k as Zh,hxe as _h,yxe as $h,bxe as ai,Bk as bi,Gk as ci,Hk as di,Kk as ei,Qk as fi,Yk as gi,Xk as hi,_e as ii,RA as ji,Ske as ki,VA as li,QA as mi,eAe as ni,iP as oi,oP as pi,R4 as qi,Dv as ri,zv as si,Id as ti,Nv as ui,$v as vi,ff as wi,Bv as xi,j4 as yi,L4 as zi,F4 as Ai,Ed as Bi,yc as Ci,gf as Di,Wv as Ei,Gv as Fi,Jv as Gi,TAe as Hi,CAe as Ii,IAe as Ji,EAe as Ki,RAe as Li,AAe as Mi,yf as Ni,bf as Oi,gPe as Pi,yPe as Qi,zPe as Ri,AK as Si,PK as Ti,jK as Ui,DK as Vi,zK as Wi,NK as Xi,BK as Yi,EP as Zi,RP as _i,UK as $i,kP as aj,rS as bj,GK as cj,iS as dj,AP as ej,JK as fj,HK as gj,KK as hj,QK as ij,oS as jj,OP as kj,xf as lj,XK as mj,eQ as nj,tQ as oj,nQ as pj,rQ as qj,w_e as rj,x_e as sj,E_e as tj,R_e as uj,k_e as vj,A_e as wj,sS as xj,aQ as yj,lS as zj,cS as Aj,uS as Bj,lQ as Cj,bc as Dj,dS as Ej,If as Fj,cQ as Gj,DP as Hj,dQ as Ij,gQ as Jj,D_e as Kj,B_e as Lj,U_e as Mj,Z_e as Nj,yQ as Oj,W_e as Pj,Myt as Qj,hS as Rj,EQ as Sj,X_e as Tj,yS as Uj,eOe as Vj,RQ as Wj,PQ as Xj,tOe as Yj};
412
412
 
413
- //# debugId=4DBA950BD54F6BBB64756E2164756E21
414
- //# sourceMappingURL=index-17rpw6kh.js.map
413
+ //# debugId=39D815CDD45FCD2A64756E2164756E21
414
+ //# sourceMappingURL=index-gd765s5q.js.map