@kelceyp/caw-server 1.0.263 → 1.0.264
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/main.js +1 -1
- package/dist/public_html/main.js +343 -343
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -830,7 +830,7 @@ ${q}
|
|
|
830
830
|
WHERE e.store_id = ${i}
|
|
831
831
|
AND e.deleted_at IS NULL
|
|
832
832
|
AND ${n}
|
|
833
|
-
`.execute(_)).rows.map((q)=>({id:q.id,objectId:q.object_id,name:q.name,typeCode:q.type_code,subtype:q.subtype}))},X$_={create:p92};I2();ku();Uv();var Jp=h_.create({namespace:"caw:stores:db:fields"}),PK=(_)=>{let i={int:"int_fields",string:"string_fields",text:"text_fields",date:"date_fields",float:"float_fields",object_ref:"obj_ref_fields"}[_];if(!i)throw Error(`Unknown primitive type: ${_}`);return i},_b=(_)=>{if(!_)return{allowed:null,jsonSchema:null};try{let v=JSON.parse(_);return{allowed:v.allowed??null,jsonSchema:v.jsonSchema??null}}catch(v){return{allowed:null,jsonSchema:null}}},K92=async(_,v,i,u)=>{let c=PK(u);await _.deleteFrom(c).where("entity_id","=",v).where("field_definition_id","=",i).execute()},q92=async(_,v,i,u,c,a=0)=>{if(u==="object_ref")throw Error("Use FieldOps factory insertTypedField for object_ref type (requires target entity lookup)");let p=PK(u),n=c;if(u==="int")n=typeof c==="string"?parseInt(c,10):c;else if(u==="float")n=typeof c==="string"?parseFloat(c):c;await _.insertInto(p).values({entity_id:v,field_definition_id:i,value:n,ordinal:a}).execute()},w92=({storePk:_,storeCode:v,entityCache:i})=>{let u=new Map,c=!1,a=async(Z)=>{if(c)return;let O=await Z.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.object_id","fd.name","fd.primitive_type","cfd.class_type_id"]).where((A)=>A.or([A("fd.store_id","=",_),A("fd.store_id","is",null)])).where("fd.is_system","=",1).orderBy(C_`fd.store_id IS NULL`,"desc").execute();for(let A of O){let X=A.class_type_id?`${A.name}:${A.class_type_id}`:A.name;u.set(X,{pk:A.id,objectId:A.object_id,primitiveType:A.primitive_type})}c=!0,Jp.debug("System field definition cache initialized with %d entries",u.size)},p=(Z,O=null)=>{if(O){let A=`${Z}:${O}`;if(u.has(A))return u.get(A)}return u.get(Z)||null},n=(Z)=>{let O=null;if(Z.owner_entity_id!==null)O=i.getIdByPk(Z.owner_entity_id)??null;let{allowed:A,jsonSchema:X}=_b(Z.config),{entity:G,mutationApi:j}=hc.create({id:Z.object_id,name:Z.name,ownerEntityId:O,label:Z.label,description:Z.description,primitiveType:Z.primitive_type,required:Z.required===1,multiplicity:Z.multiplicity,isSystem:Z.is_system===1,editable:Z.editable===1,allowed:A,jsonSchema:X,createdAt:Z.created_at,updatedAt:Z.updated_at});return{entity:G,mutationApi:j,pk:Z.id}},K=async(Z,O,A,X,G,j=0)=>{if(X==="object_ref"){let T=await Z.selectFrom("entities").select("id").where("object_id","=",G).where("deleted_at","is",null).executeTakeFirst();if(!T)throw P.validation(`Target entity not found: ${G}`,"INVALID_REFERENCE");await Z.insertInto("obj_ref_fields").values({entity_id:O,field_definition_id:A,target_entity_id:T.id,ordinal:j}).execute()}else await q92(Z,O,A,X,G,j)},q=async(Z,O,A,X)=>{await K92(Z,O,A,X)},w=async(Z,O)=>{let A=new Map,X=await Z.selectFrom("int_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'int'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of X){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"int"});A.get(D.def_id).values.push(D.value)}let G=await Z.selectFrom("string_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'string'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of G){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"string"});A.get(D.def_id).values.push(D.value)}let j=await Z.selectFrom("text_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'text'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of j){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"text"});A.get(D.def_id).values.push(D.value)}let T=await Z.selectFrom("date_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'date'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of T){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"date"});A.get(D.def_id).values.push(D.value)}let k=await Z.selectFrom("float_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'float'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of k){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"float"});A.get(D.def_id).values.push(D.value)}let N=await Z.selectFrom("obj_ref_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").innerJoin("entities as e","e.id","f.target_entity_id").select(["f.field_definition_id as def_id","e.object_id as value","f.ordinal",C_`'object_ref'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of N){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"object_ref"});A.get(D.def_id).values.push(D.value)}return A},Y=async(Z,O)=>{if(O.length===0)return Jp.debug("batchLoadTypedFieldValues: empty entityPks, returning empty Map"),new Map;Jp.debug("batchLoadTypedFieldValues: loading for %d entities",O.length);let A=new Map;for(let m of O)A.set(m,new Map);let X=(m,V)=>{for(let l of m){let s=A.get(l.entity_id);if(!s)continue;if(!s.has(l.def_id))s.set(l.def_id,{values:[],primitiveType:V});s.get(l.def_id).values.push(l.value)}},G=await Z.selectFrom("int_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(G,"int");let j=await Z.selectFrom("string_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(j,"string");let T=await Z.selectFrom("text_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(T,"text");let k=await Z.selectFrom("date_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(k,"date");let N=await Z.selectFrom("float_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(N,"float");let D=await Z.selectFrom("obj_ref_fields as f").innerJoin("entities as e","e.id","f.target_entity_id").select(["f.entity_id","f.field_definition_id as def_id","e.object_id as value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();return X(D,"object_ref"),A},W=async(Z,O)=>{if(O.size===0)return Jp.debug("batchLoadFieldDefinitions: empty defIds, returning empty Map"),new Map;Jp.debug("batchLoadFieldDefinitions: loading %d definitions",O.size);let A=await Z.selectFrom("field_definitions").selectAll().where("id","in",[...O]).execute(),X=new Map;for(let G of A){let{allowed:j,jsonSchema:T}=_b(G.config);X.set(G.id,{id:G.object_id,name:G.name,label:G.label,description:G.description,primitiveType:G.primitive_type,required:G.required===1,multiplicity:G.multiplicity,isSystem:G.is_system===1,ownerEntityId:null,allowed:j,jsonSchema:T,createdAt:G.created_at,updatedAt:G.updated_at})}return X},z=(Z)=>{return t$.filter((O)=>!O.searchOnly).map((O)=>{let A;if(O.name==="parent")A=Z.parent_object_id??null;else A=Z[O.columnName];let{entity:X}=hc.create({id:`virtual:${O.name}`,name:O.name,label:O.label,description:O.description,primitiveType:O.primitiveType,required:!1,multiplicity:"single",isSystem:!0,isVirtual:!0,editable:O.editable});return x6.create({definition:X,values:A!==null&&A!==void 0?[String(A)]:[]})})};return{initSystemFieldDefCache:a,getSystemFieldDef:p,fieldDefinitionFromRow:n,getTypedFieldTable:PK,insertTypedField:K,deleteTypedField:q,loadTypedFieldValues:w,batchLoadTypedFieldValues:Y,batchLoadFieldDefinitions:W,batchLoadFieldsForEntities:async(Z,O,A)=>{if(O.length===0)return Jp.debug("batchLoadFieldsForEntities: empty entityPks, returning empty Map"),new Map;Jp.debug("batchLoadFieldsForEntities: loading fields for %d entities",O.length);let X=await Y(Z,O),G=new Set;for(let k of X.values())for(let N of k.keys())G.add(N);let j=await W(Z,G),T=new Map;for(let k of O){let N=X.get(k),D=[];for(let[V,l]of N.entries()){let s=j.get(V);if(!s)continue;let{entity:o}=hc.create(s);D.push(x6.create({definition:o,values:l.values}))}let m=A.get(k);if(m)D.push(...z(m));T.set(k,D)}return T},loadFieldsForEntity:async(Z,O)=>{let A=new Map,X=await w(Z,O);for(let[T,k]of X.entries()){let N=await Z.selectFrom("field_definitions").selectAll().where("id","=",T).executeTakeFirst();if(!N)continue;let{allowed:D,jsonSchema:m}=_b(N.config);A.set(T,{definition:{id:N.object_id,name:N.name,label:N.label,description:N.description,primitiveType:N.primitive_type,required:N.required===1,multiplicity:N.multiplicity,isSystem:N.is_system===1,ownerEntityId:N.owner_entity_id?i.getIdByPk(N.owner_entity_id):null,allowed:D,jsonSchema:m,createdAt:N.created_at,updatedAt:N.updated_at},values:k.values})}let G=[];for(let{definition:T,values:k}of A.values()){let{entity:N}=hc.create(T),D=x6.create({definition:N,values:k});G.push(D)}let j=await Z.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","created_at","updated_at"]).where("id","=",O).executeTakeFirst();if(j){let T=z(j);G.push(...T)}return G},buildVirtualFields:z}},H$_={create:w92};var{parseId:z92}=zi,W92=({storePk:_,storeCode:v,entityCache:i,pathOps:u,fieldOps:c})=>{return{readEntity:async(p,n,{id:K,includeDeleted:q=!1})=>{let w=z92(K);if(!w)return null;let{typeCode:Y,seq:W}=w;await v$.ensureLoaded();let z=v$.get(Y),J=p.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",_).where("entities.seq","=",W).where("entities.type_code","=",Y);if(!q)J=J.where("entities.deleted_at","is",null);let f=await J.executeTakeFirst();if(!f)return null;let Z=f.id;i.setIdByPk(Z,K);let O={pk:Z,typeCode:Y,object_id:K,name:f.name,subtype:f.subtype,created_at:f.created_at,updated_at:f.updated_at};if(z.isPathable)O.parentId=f.parent_object_id,O.path=f.path;return O.fields=await c.loadFieldsForEntity(p,Z),O}}},A$_={create:W92};I2();ku();import{createHash as Z92}from"crypto";s$();I2();var LH=(_)=>{let v=_;return v=v.replace(/```[\s\S]*?```/g,(i)=>" ".repeat(i.length)),v=v.replace(/~~~[\s\S]*?~~~/g,(i)=>" ".repeat(i.length)),v=v.replace(/``[^`]+``/g,(i)=>" ".repeat(i.length)),v=v.replace(/`[^`]+`/g,(i)=>" ".repeat(i.length)),v};var mK=h_.create({namespace:"caw:services:content-ref-extractor"}),vb=(_)=>{if(!_)return[];let v=/\/api\/p\/[^/]+\/assets\/([AB]a\d+)\/binary/g,i=[],u;while((u=v.exec(_))!==null)i.push(u[1]);let c=[...new Set(i)];return mK.debug("extractAttachments: found %d attachments (deduplicated from %d matches)",c.length,i.length),c},J92=async(_,{pathResolver:v}={})=>{if(!_)return[];let i=LH(_),u=/<include\s+id="([AB][dt]\d+)"/g,c=[],a;while((a=u.exec(i))!==null)c.push(a[1]);if(v){let n=/<include\s+path="([^"]+)"/g,K,q=0,w=0,Y=0;while((K=n.exec(i))!==null){q++;let W=K[1];try{let z=await v(W);if(z)c.push(z),w++;else Y++}catch(z){mK.debug('extractIncludes: path resolution failed for "%s": %s',W,z.message),Y++}}mK.debug("extractIncludes: path-based includes: found=%d, resolved=%d, skipped=%d",q,w,Y)}let p=[...new Set(c)];return mK.debug("extractIncludes: found %d includes (deduplicated from %d matches)",p.length,c.length),p},O92=(_)=>{if(!_)return[];let v=/\[(?:[^\]]+)\]\(([AB][dtfs]\d+)\)/g,i=[],u;while((u=v.exec(_))!==null)i.push(u[1]);let c=[...new Set(i)];return mK.debug("extractHyperlinks: found %d hyperlinks (deduplicated from %d matches)",c.length,i.length),c},VK=async(_,{pathResolver:v}={})=>{let i=Date.now(),u=vb(_),c=await J92(_,{pathResolver:v}),a=O92(_),p=Date.now()-i;return mK.debug("extractAll: completed in %dms (attachments=%d, includes=%d, hyperlinks=%d)",p,u.length,c.length,a.length),{attachments:u,includes:c,hyperlinks:a}};var au=async(_,v,i,u)=>{try{let c=i||v;return v$.get(c).isIndexable}catch{return!0}};var{buildId:f92}=zi,kK=h_.create({namespace:"caw:stores:db:version"}),X92=({storePk:_,storeCode:v,entityCache:i,fieldOps:u})=>{return{createVersionEntity:async(p,n,{documentPk:K,documentObjectId:q,documentEntityTypeId:w,documentName:Y,content:W,versionNumber:z,publishedAt:J=null,textFields:f="",keywords:Z="",includePathResolver:O})=>{await u.initSystemFieldDefCache(p);let A=g2(),X=await o2.readEntityTypeId(p,n,"v",null),G=await li.nextSeq(p,"store",_,"v"),j=f92(v,"v",G),k=(await p.insertInto("entities").values({store_id:_,object_id:j,entity_type_id:X,type_code:"v",seq:G,parent_folder_id:null,parent_object_id:null,name:null,created_at:A,updated_at:A}).returningAll().executeTakeFirstOrThrow()).id;i.setIdByPk(k,j);let N=u.getSystemFieldDef("document",X);if(!N)throw Error('System field definition "document" not found for version type');await p.insertInto("obj_ref_fields").values({entity_id:k,field_definition_id:N.pk,target_entity_id:K,ordinal:0}).execute();let D=u.getSystemFieldDef("version_number",X);if(!D)throw Error('System field definition "version_number" not found for version type');if(await p.insertInto("int_fields").values({entity_id:k,field_definition_id:D.pk,value:z,ordinal:0}).execute(),J!==null){let s=u.getSystemFieldDef("published_at",X);if(!s)throw Error('System field definition "published_at" not found for version type');await p.insertInto("date_fields").values({entity_id:k,field_definition_id:s.pk,value:J,ordinal:0}).execute()}await p.insertInto("entity_content").values({entity_id:k,content_text:W,content_type:"markdown",updated_at:A}).execute();let m=await p.selectFrom("entities").select("parent_folder_id").where("id","=",K).executeTakeFirst();if(await au(p,"v",null,m?.parent_folder_id??null))await C_`INSERT INTO entity_content_fts(rowid, name, content_text, text_fields, keywords) VALUES (${k}, ${Y}, ${W}, ${f}, ${Z})`.execute(p);let V=u.getSystemFieldDef("content_hash",X);if(!V)throw Error('System field definition "content_hash" not found for version type');let l=Z92("sha256").update(W||"","utf8").digest("hex");await p.insertInto("string_fields").values({entity_id:k,field_definition_id:V.pk,value:l,ordinal:0}).execute();try{let o=await VK(W,{pathResolver:O?(i_)=>O(p,n,i_,v):void 0});kK.debug("Extracted content references: attachments=%d, includes=%d, hyperlinks=%d",o.attachments.length,o.includes.length,o.hyperlinks.length);let C=u.getSystemFieldDef("attachments",X),g=u.getSystemFieldDef("includes",X),I=u.getSystemFieldDef("hyperlinks",X),t=async(i_,u_,w_)=>{if(!i_){kK.debug('System field definition "%s" not found for version type - skipping',w_);return}let q_=0;for(let z_ of u_){let A_=await p.selectFrom("entities").select("id").where("object_id","=",z_).where("deleted_at","is",null).executeTakeFirst();if(!A_){kK.debug("Target entity not found for %s reference: %s - skipping",w_,z_);continue}await p.insertInto("obj_ref_fields").values({entity_id:k,field_definition_id:i_.pk,target_entity_id:A_.id,ordinal:q_}).execute(),q_++}if(q_>0)kK.debug("Populated %d %s references for version %s",q_,w_,j)};await t(C,o.attachments,"attachments"),await t(g,o.includes,"includes"),await t(I,o.hyperlinks,"hyperlinks")}catch(s){kK.debug("Content reference extraction failed for version %s: %s - continuing with version creation",j,s.message)}return kK.debug("Created version entity %s (pk=%d) for document %s, version %d, draft=%s",j,k,q,z,J===null),{pk:k,objectId:j}},readVersionEntity:async(p,n,{includeDeleted:K}={})=>{if(!n)return null;await u.initSystemFieldDefCache(p);let q=p.selectFrom("entities").select(["object_id","entity_type_id"]).where("id","=",n);if(!K)q=q.where("deleted_at","is",null);let w=await q.executeTakeFirst();if(!w)return null;let{entity_type_id:Y,object_id:W}=w;i.setIdByPk(n,W);let z=u.getSystemFieldDef("version_number",Y),J=null;if(z)J=(await p.selectFrom("int_fields").select("value").where("entity_id","=",n).where("field_definition_id","=",z.pk).executeTakeFirst())?.value??null;let f=u.getSystemFieldDef("published_at",Y),Z=null;if(f)Z=(await p.selectFrom("date_fields").select("value").where("entity_id","=",n).where("field_definition_id","=",f.pk).executeTakeFirst())?.value??null;let A=(await p.selectFrom("entity_content").select("content_text").where("entity_id","=",n).executeTakeFirst())?.content_text??null;return{versionNumber:J,publishedAt:Z,content:A,objectId:W}}}},G$_={create:X92};I2();ku();Uv();s$();ku();Uv();Uv();var N2=Object.freeze({WORD:"WORD",IDENT:"IDENT",PHRASE:"PHRASE",COLON:"COLON",TILDE:"TILDE",COMMA:"COMMA",STAR:"STAR",DASH:"DASH",LPAREN:"LPAREN",RPAREN:"RPAREN",AND:"AND",OR:"OR",NOT:"NOT",UNION:"UNION",INTERSECT:"INTERSECT",BANG_EQ:"BANG_EQ",GTE:"GTE",LTE:"LTE",GT:"GT",LT:"LT",EQ:"EQ",EOF:"EOF"}),H92=(_)=>{let v=[],i=0,u=_.length;while(i<u){if(/\s/.test(_[i])){i++;continue}let c=i;if(_[i]==='"'){i++;let p="",n=!1;while(i<u){if(_[i]==='"'){n=!0,i++;break}p+=_[i++]}if(!n)throw P.validation(`Unclosed quote starting at position ${c}`,"PARSE_ERROR");if(i<u&&!/[\s)"(,]/.test(_[i]))throw P.validation(`Nested quotes not supported at position ${c}`,"PARSE_ERROR");v.push({type:N2.PHRASE,value:p,start:c,end:i});continue}if(_[i]==="!"&&i+1<u&&_[i+1]==="="){v.push({type:N2.BANG_EQ,value:"!=",start:c,end:c+2}),i+=2;continue}if(_[i]===">"&&i+1<u&&_[i+1]==="="){v.push({type:N2.GTE,value:">=",start:c,end:c+2}),i+=2;continue}if(_[i]==="<"&&i+1<u&&_[i+1]==="="){v.push({type:N2.LTE,value:"<=",start:c,end:c+2}),i+=2;continue}if(_[i]===":"){v.push({type:N2.COLON,value:":",start:c,end:c+1}),i++;continue}if(_[i]==="~"){v.push({type:N2.TILDE,value:"~",start:c,end:c+1}),i++;continue}if(_[i]===","){v.push({type:N2.COMMA,value:",",start:c,end:c+1}),i++;continue}if(_[i]==="*"){v.push({type:N2.STAR,value:"*",start:c,end:c+1}),i++;continue}if(_[i]==="-"){v.push({type:N2.DASH,value:"-",start:c,end:c+1}),i++;continue}if(_[i]==="("){v.push({type:N2.LPAREN,value:"(",start:c,end:c+1}),i++;continue}if(_[i]===")"){v.push({type:N2.RPAREN,value:")",start:c,end:c+1}),i++;continue}if(_[i]===">"){v.push({type:N2.GT,value:">",start:c,end:c+1}),i++;continue}if(_[i]==="<"){v.push({type:N2.LT,value:"<",start:c,end:c+1}),i++;continue}if(_[i]==="="){v.push({type:N2.EQ,value:"=",start:c,end:c+1}),i++;continue}if(/[a-zA-Z_]/.test(_[i])){let p="";while(i<u&&/[a-zA-Z0-9_]/.test(_[i]))p+=_[i++];let n=i;if(_[i]===":"&&i+1<u&&_[i+1]==="/"){let K=p;while(i<u&&!/\s/.test(_[i])&&_[i]!==")"&&_[i]!=="(")K+=_[i++];v.push({type:N2.WORD,value:K,start:c,end:i});continue}if(p==="AND"){v.push({type:N2.AND,value:"AND",start:c,end:n});continue}if(p==="OR"){v.push({type:N2.OR,value:"OR",start:c,end:n});continue}if(p==="NOT"){v.push({type:N2.NOT,value:"NOT",start:c,end:n});continue}if(p==="UNION"){v.push({type:N2.UNION,value:"UNION",start:c,end:n});continue}if(p==="INTERSECT"){v.push({type:N2.INTERSECT,value:"INTERSECT",start:c,end:n});continue}if(p==="content"&&i<u&&_[i]==="["){let K=i+1,q="";while(K<u&&_[K]!=="]"&&!/\s/.test(_[K]))q+=_[K++];if(K<u&&_[K]==="]")if(q==="rag"){if(K+1<u&&_[K+1]===":"){i=K+1,v.push({type:N2.IDENT,value:"content[rag]",start:c,end:i});continue}}else if(q==="fts"){let w=K+1,Y="content[fts]";if(w<u&&_[w]==="."){w++;let W="";while(w<u&&/[a-zA-Z_]/.test(_[w]))W+=_[w++];if(W)Y=`content[fts].${W}`}if(w<u&&_[w]===":"){i=w,v.push({type:N2.IDENT,value:Y,start:c,end:i});continue}throw P.validation(`Expected ':' after '${Y}' at position ${c}`,"PARSE_ERROR")}else throw P.validation(`Unrecognized content strategy '[${q}]' at position ${c}. Expected '[fts]' or '[rag]'`,"PARSE_ERROR")}if((_[i]===":"||_[i]==="~")&&!(c>0&&_[c-1]==="-")){v.push({type:N2.IDENT,value:p,start:c,end:n});continue}while(i<u&&!/[\s()"*,]/.test(_[i]))p+=_[i++];v.push({type:N2.WORD,value:p,start:c,end:i});continue}if(/\d/.test(_[i])){let p="";while(i<u&&!/\s/.test(_[i])&&_[i]!==")"&&_[i]!=="("&&_[i]!=='"'&&_[i]!==",")p+=_[i++];v.push({type:N2.WORD,value:p,start:c,end:i});continue}let a="";while(i<u&&!/\s/.test(_[i])&&_[i]!==")"&&_[i]!=="("&&_[i]!=='"'&&_[i]!==",")a+=_[i++];if(a)v.push({type:N2.WORD,value:a,start:c,end:i})}return v.push({type:N2.EOF,value:"",start:u,end:u}),v},A92=(_)=>{let v=0,i=()=>_[v],u=(j)=>_[v].type===j,c=(...j)=>j.includes(_[v].type),a=(j)=>{let T=_[v];if(T.type!==j)throw P.validation(`Expected ${j} but got ${T.type} '${T.value}' at position ${T.start}`,"PARSE_ERROR");return v++,T},p=(j)=>{let T=i();if(u(N2.PHRASE)){if(v++,T.value==="")throw P.validation(`Empty filter value for key '${j}' at position ${T.start}`,"PARSE_ERROR");return T.value}if(u(N2.STAR)){v++;let k="*";if(c(N2.WORD,N2.AND,N2.OR,N2.NOT)){if(k+=i().value,v++,u(N2.STAR))v++,k+="*"}return k}if(u(N2.DASH)){let k=i();if(v++,c(N2.WORD)){let N=i().value;return v++,"-"+N}throw P.validation(`Expected number after '-' in filter value for '${j}' at position ${k.start}`,"PARSE_ERROR")}if(c(N2.WORD,N2.AND,N2.OR,N2.NOT)){let k=T.value;if(v++,u(N2.STAR)){v++;let N=k+"*";if(c(N2.WORD,N2.AND,N2.OR,N2.NOT)){if(N+=i().value,v++,u(N2.STAR))v++,N+="*"}return N}return k}throw P.validation(`Expected filter value for '${j}' at position ${T.start}`,"PARSE_ERROR")},n=(j)=>{let T=[p(j)];while(u(N2.COMMA))v++,T.push(p(j));return T},K=()=>{if(u(N2.BANG_EQ))return v++,"!=";if(u(N2.GTE))return v++,">=";if(u(N2.LTE))return v++,"<=";if(u(N2.GT))return v++,">";if(u(N2.LT))return v++,"<";if(u(N2.EQ))return v++,"=";return null},q=(j)=>w(j),w=(j)=>{let T=i().start,k=Y(j);if(!u(N2.OR))return k;let N=[k];while(u(N2.OR))v++,N.push(Y(j));let D=N[N.length-1].span.end;return{kind:"or",children:N,span:{start:T,end:D}}},Y=(j)=>{let T=i().start,k=z(j);if(!u(N2.AND)&&!W(j))return k;let N=[k];while(u(N2.AND)||W(j)){if(u(N2.AND))v++;N.push(z(j))}let D=N[N.length-1].span.end;return N.length===1?N[0]:{kind:"and",children:N,span:{start:T,end:D}}},W=(j)=>{if(c(N2.EOF,N2.OR,N2.AND,N2.RPAREN,N2.COMMA))return!1;if(u(N2.IDENT))return!1;if(c(N2.BANG_EQ,N2.GTE,N2.LTE,N2.GT,N2.LT,N2.EQ,N2.COLON,N2.TILDE))return!1;if(u(N2.STAR))return!1;if(c(N2.UNION,N2.INTERSECT))return!1;return!0},z=(j)=>{if(u(N2.NOT)){let T=i().start;v++;let k=J(j);return{kind:"not",operand:k,span:{start:T,end:k.span.end}}}if(u(N2.DASH)){let T=i().start;v++;let k=J(j);return{kind:"not",operand:k,span:{start:T,end:k.span.end}}}return J(j)},J=(j)=>{let T=i();if(u(N2.IDENT)){if(j)throw P.validation(`Filter expressions are only allowed at the top level, not inside parentheses at position ${T.start}`,"PARSE_ERROR");throw P.validation(`Unexpected filter key '${T.value}' at position ${T.start} — filters are only allowed at the top level`,"PARSE_ERROR")}if(u(N2.LPAREN)){let k=T.start;v++;let N=q(!0);if(u(N2.IDENT))throw P.validation(`Filter expressions are only allowed at the top level, not inside parentheses at position ${i().start}`,"PARSE_ERROR");let D=a(N2.RPAREN);return{...N,span:{start:k,end:D.end}}}if(u(N2.PHRASE))return v++,{kind:"phrase",value:T.value,span:{start:T.start,end:T.end}};if(u(N2.WORD)){if(v++,u(N2.STAR)){let k=_[v];return v++,{kind:"prefix",value:T.value,span:{start:T.start,end:k.end}}}return{kind:"term",value:T.value,span:{start:T.start,end:T.end}}}throw P.validation(`Unexpected token '${T.value}' (${T.type}) at position ${T.start}`,"PARSE_ERROR")},f=()=>{let j=a(N2.IDENT);if(u(N2.TILDE)){if(v++,u(N2.PHRASE)&&i().value==="")throw P.validation(`Empty FTS filter value for key '${j.value}' at position ${j.start}`,"PARSE_ERROR");if(!W(!1)&&!u(N2.NOT))throw P.validation(`Empty FTS filter value for key '${j.value}' at position ${j.start}`,"PARSE_ERROR");let T=q(!1);return{kind:"text_match",key:j.value,content:T,span:{start:j.start,end:T.span.end}}}if(u(N2.COLON)){v++;let T=K()??"=",k=i();if(!c(N2.WORD,N2.PHRASE,N2.AND,N2.OR,N2.NOT,N2.STAR,N2.DASH))throw P.validation(`Empty filter value for key '${j.value}' at position ${j.start}`,"PARSE_ERROR");let N=n(j.value);return{kind:"cmp",key:j.value,op:T,values:N,span:{start:j.start,end:i().start}}}throw P.validation(`Expected ':' or '~' after filter key '${j.value}' at position ${j.start}`,"PARSE_ERROR")},Z=(j)=>{let T={name:"name",content:"content_text",text_fields:"text_fields",keywords:"keywords"},k=j.indexOf(".");if(k===-1)return{column:null};let N=j.slice(k+1);if(!Object.prototype.hasOwnProperty.call(T,N))throw P.validation(`Invalid column '${N}' for '${j}:'. Valid columns: name, content, text_fields, keywords`,"PARSE_ERROR");return{column:T[N]}},O=()=>{let j=[],T=[],k=null,N=()=>{if(W(!1)||u(N2.NOT)){let V=q(!1);if(V)j.push(V);return!0}return!1};N();while(!u(N2.EOF)){if(u(N2.RPAREN))throw P.validation(`Unexpected ')' at position ${i().start}`,"PARSE_ERROR");if(u(N2.IDENT)){if(i().value.startsWith("content[fts]")){let V=i().value,l=i().start;if(v++,a(N2.COLON),!W(!1)&&!u(N2.NOT))throw P.validation(`Expected content expression after '${V}:' at position ${l}`,"PARSE_ERROR");let{column:s}=Z(V),o=q(!1);if(s)o.ftsColumn=s;j.push(o),N();continue}if(i().value==="content[rag]"){let V=i().start;if(v++,a(N2.COLON),k!==null)throw P.validation(`Duplicate 'content[rag]:' expression at position ${V}`,"PARSE_ERROR");let l=i();if(u(N2.PHRASE)){if(v++,l.value==="")throw P.validation(`Empty RAG query value for 'content[rag]:' at position ${l.start}`,"PARSE_ERROR");k=l.value}else if(u(N2.WORD))v++,k=l.value;else throw P.validation(`Expected RAG query value after 'content[rag]:' at position ${V}`,"PARSE_ERROR");N();continue}T.push(f()),N();continue}break}if(!u(N2.EOF))throw P.validation(`Unexpected token '${i().value}' at position ${i().start}`,"PARSE_ERROR");if(j.length===1&&T.length===0){if(j[0].kind==="not")throw P.validation("Standalone NOT/negation requires a preceding expression","PARSE_ERROR")}let D=null;if(j.length===1)D=j[0];else if(j.length>1){let V=j[0].span.start,l=j[j.length-1].span.end;D={kind:"and",children:j,span:{start:V,end:l}}}let m={content:D,filters:T};if(k!==null)m.ragQuery=k;return m},A=()=>{let j=0;for(let T of _){if(T.type===N2.LPAREN){j++;continue}if(T.type===N2.RPAREN){j--;continue}if(j===0&&(T.type===N2.UNION||T.type===N2.INTERSECT))return!0}return!1},X=()=>{let j=i();if(u(N2.LPAREN))throw P.validation(`Set operators (UNION/INTERSECT) cannot be used inside parentheses at position ${j.start}`,"PARSE_ERROR");if(!u(N2.IDENT))throw P.validation(`UNION/INTERSECT requires qualified content directives (content[fts]: or content[rag]:) on both sides — got '${j.value}' at position ${j.start}`,"PARSE_ERROR");if(j.value.startsWith("content[fts]")){let{value:T,start:k}=j;if(v++,a(N2.COLON),!W(!1)&&!u(N2.NOT))throw P.validation(`Expected content expression after '${T}:' at position ${k}`,"PARSE_ERROR");let{column:N}=Z(T),D=q(!1),m=N??null;if(m)D.ftsColumn=m;return{method:"fts",content:D,ftsColumn:m}}if(j.value==="content[rag]"){let T=j.start;v++,a(N2.COLON);let k=i(),N;if(u(N2.PHRASE)){if(v++,k.value==="")throw P.validation(`Empty RAG query value for 'content[rag]:' at position ${k.start}`,"PARSE_ERROR");N=k.value}else if(u(N2.WORD))v++,N=k.value;else throw P.validation(`Expected RAG query value after 'content[rag]:' at position ${T}`,"PARSE_ERROR");return{method:"rag",ragQuery:N}}throw P.validation(`UNION/INTERSECT requires qualified content directives (content[fts]: or content[rag]:) on both sides — got '${j.value}' at position ${j.start}`,"PARSE_ERROR")};return{parseQuery:O,parseComposedQuery:()=>{let j=X();if(!c(N2.UNION,N2.INTERSECT))throw P.validation(`Expected UNION or INTERSECT after first content directive, got '${i().value}' at position ${i().start}`,"PARSE_ERROR");let T=i().value.toLowerCase();v++;let k=X();if(c(N2.UNION,N2.INTERSECT))throw P.validation(`Multi-arm chaining (more than two arms) is not supported — found '${i().value}' at position ${i().start}`,"PARSE_ERROR");let N=[];while(!u(N2.EOF)){if(u(N2.RPAREN))throw P.validation(`Unexpected ')' at position ${i().start}`,"PARSE_ERROR");if(u(N2.IDENT)){if(i().value.startsWith("content[fts]")||i().value==="content[rag]")throw P.validation(`Unexpected content directive '${i().value}' after second arm at position ${i().start} — only filters are allowed after both arms`,"PARSE_ERROR");N.push(f());continue}break}if(!u(N2.EOF))throw P.validation(`Unexpected token '${i().value}' at position ${i().start}`,"PARSE_ERROR");return{composed:{operator:T,left:j,right:k},filters:N}},hasTopLevelSetOp:A}},j$_=(_)=>{if(!_||_.trim()==="")return{content:null,filters:[]};let v=H92(_),i=A92(v);if(i.hasTopLevelSetOp())return i.parseComposedQuery();return i.parseQuery()},T$_=(_)=>{if(/^[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)+$/.test(_))return!0;if(_.includes(":")&&_.indexOf(":")>0)return!0;return!1},ib=(_)=>_.toLowerCase().replace(/-/g," "),_9=(_,v=0)=>{if(!_)return"";let i;switch(_.kind){case"term":{let{value:u}=_;i=T$_(u)?`"${ib(u)}"`:u;break}case"phrase":i=`"${ib(_.value)}"`;break;case"prefix":{let{value:u}=_;i=T$_(u)?`"${ib(u)}"*`:`${u}*`;break}case"not":i="";break;case"and":{let u=_.children.filter((K)=>K.kind!=="not"),c=_.children.filter((K)=>K.kind==="not");if(c.length===0){let q=_.children.map((w)=>_9(w,2)).join(" AND ");i=v>2?`(${q})`:q;break}if(u.length===0){i="";break}let a=u.map((K)=>_9(K,2)),p;if(u.length===1){let K=u[0];p=K.kind==="and"||K.kind==="or"?`(${a[0]})`:a[0]}else p=`(${a.join(" AND ")})`;let n=p;for(let K of c)n+=` NOT ${_9(K.operand,3)}`;i=v>2?`(${n})`:n;break}case"or":{let c=_.children.map((a)=>_9(a,1)).filter(Boolean).join(" OR ");i=v>1?`(${c})`:c;break}default:i=""}if(_.ftsColumn)return`{${_.ftsColumn}}: (${i})`;return i};var P$_=(_)=>{return/[^a-zA-Z0-9\s]/.test(_)},ub=(_)=>{if(!_)return[];let v=[],i=(u,c)=>{if(!u)return;switch(u.kind){case"phrase":if(!c&&P$_(u.value))v.push(u.value);break;case"not":i(u.operand,!0);break;case"and":case"or":for(let a of u.children)i(a,c);break;default:break}};return i(_,!1),v};s$();var GW=new Set(["s","j","f"]),m$_={s:"statusMessage",j:"errorMessage"},IH=60,V$_=0.45;var Rc=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/;var k$_=(_)=>{let v=[..._].sort((u,c)=>{if(c.score!==u.score)return c.score-u.score;if(u.entityId<c.entityId)return-1;if(u.entityId>c.entityId)return 1;return 0}),i=new Map;for(let u=0;u<v.length;u++)i.set(v[u].entityId,u+1);return i},G92=(_,v,{operator:i,k:u=IH})=>{let c=k$_(_),a=k$_(v),p=i==="UNION"?new Set([...c.keys(),...a.keys()]):new Set([...c.keys()].filter((K)=>a.has(K))),n=[];for(let K of p){let q=0;if(c.has(K))q+=1/(u+c.get(K));if(a.has(K))q+=1/(u+a.get(K));n.push({entityId:K,score:q})}return n.sort((K,q)=>{if(q.score!==K.score)return q.score-K.score;if(K.entityId<q.entityId)return-1;if(K.entityId>q.entityId)return 1;return 0}),n},M$_=Object.freeze({fuse:G92});I2();var x$_=h_.create({namespace:"caw:perf:search"}),N$_=50,TW=200,T92=0.2,BH=new Set(["type","published","draft","store"]),j92=new Set(["document","template","d","t","story","job","s","j","folder","f"]);var D$_=new Set(["true","false"]),P92=new Set(["=",">","<",">=","<=","!="]),m92={document:"d",template:"t",folder:"f",story:"s",job:"j"},V92=["d","t"],k92=async(_,v)=>{if(!v||v.length===0)return;for(let i of v){if(i.kind==="text_match")continue;if(!BH.has(i.key)){if(!i.values||i.values.length===0||!i.values[0])throw P.validation(`Filter '${i.key}' requires a value`,"INVALID_FILTER_VALUE");if(!P92.has(i.op))throw P.validation(`Invalid operator '${i.op}' for filter '${i.key}'`,"INVALID_FILTER_OPERATOR");continue}if(i.key==="type"){if(!i.values||i.values.length===0||!i.values[0])throw P.validation("Filter 'type' requires a value","INVALID_FILTER_VALUE");let u=[];for(let c of i.values){if(!c)throw P.validation("Filter 'type' requires a value","INVALID_FILTER_VALUE");if(c.includes("/"))throw P.validation(`Unknown type: ${c}`,"INVALID_FILTER_VALUE");else if(!j92.has(c)){let a=await o2.resolveSubtype(_,c);if(!a)throw P.validation(`Unknown type: ${c}`,"INVALID_FILTER_VALUE");u.push(a)}else u.push(null)}if(i.values.length===1&&u[0])i.resolvedType=u[0];if(i.values.length>1)i.resolvedTypes=u}if(i.key==="published"){if(i.values.length>1)throw P.validation("Multi-value not supported for 'published' filter","INVALID_FILTER_VALUE");if(!D$_.has(i.values[0]))throw P.validation(`Filter 'published' requires 'true' or 'false', got: ${i.values[0]}`,"INVALID_FILTER_VALUE")}if(i.key==="draft"){if(i.values.length>1)throw P.validation("Multi-value not supported for 'draft' filter","INVALID_FILTER_VALUE");if(!D$_.has(i.values[0]))throw P.validation(`Filter 'draft' requires 'true' or 'false', got: ${i.values[0]}`,"INVALID_FILTER_VALUE")}if(i.key==="store"){let u=i.values[0];if(i.values.length>1)throw P.validation("Cross-store search is not supported","CROSS_STORE_SEARCH_NOT_SUPPORTED");if(u==="all")continue;if(u==="*"||u.includes(","))throw P.validation("Cross-store search is not supported","CROSS_STORE_SEARCH_NOT_SUPPORTED")}}},M92=(_,v)=>{let i=_?.find((u)=>u.key==="store");return i?i.values[0]:v},yH=(_,v)=>{let i=new Set;for(let c of v??[]){if(c.key!=="ancestor")continue;for(let a of c.values??[])if(typeof a==="string"&&a.length>0)i.add(a[0])}if(i.size===0)return _;if(i.size>1)return[];let u=[...i][0];return _.filter((c)=>c===u)},x92=async(_,v,i,u)=>{if(!i||i.length===0||!u)return i;if(!i.some((n)=>n.key==="track"||n.key==="trackId"))return i;let a=null,p=[];for(let n of i)if(n.key==="trackId")p.push({...n,key:"track"});else if(n.key==="track"){if(!a)a=await u.listTracks(_,v,{store:"all"});let K=[];for(let q of n.values){let w=a.filter((Y)=>Y.name===q);for(let Y of w)K.push(Y.id)}if(K.length===0)p.push({...n,values:["__NO_TRACK_MATCH__"]});else p.push({...n,values:K})}else p.push(n);return p},N92=(_)=>{if(!_||_.length===0)return _;if(!_.some((u)=>u.key==="agent"))return _;let i=[];for(let u of _)if(u.key==="agent"){let c=[];for(let a of u.values)for(let p of cu.getSearchValues(a))if(!c.includes(p))c.push(p);i.push({...u,values:c})}else i.push(u);return i},oH=(_)=>/^\d{4}-\d{2}-\d{2}$/.test(_),l$_=(_)=>_.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_"),D92=({store:_,trackService:v,embeddingProvider:i,embeddingStore:u,embeddingOps:c,ragIndexedFieldDefPk:a=null})=>{let p=async(z,J)=>{let f=[],Z=J.filter((G)=>G.key==="type");if(Z.length>0){let G=[];for(let j of Z)for(let T=0;T<j.values.length;T++){let k=j.resolvedTypes&&j.resolvedTypes[T]||(T===0&&j.resolvedType?j.resolvedType:null);if(k){let{code:N,subtype:D}=k;G.push((m)=>m.and([m("e.type_code","=",N),m("entity_types.subtype","=",D)]))}else{let N=m92[j.values[T]]||j.values[T];G.push((D)=>D("e.type_code","=",N))}}if(G.length===1)f.push(G[0]);else f.push((j)=>j.or(G.map((T)=>T(j))))}else f.push((G)=>G("e.type_code","in",V92));let O=J.find((G)=>G.key==="published");if(O){let G=O.values[0]==="true";if(O.op==="!="?!G:G)f.push((T)=>T.exists(T.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("pub_orf.entity_id","=","e.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1)));else f.push((T)=>T.not(T.exists(T.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("pub_orf.entity_id","=","e.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))))}let A=J.find((G)=>G.key==="draft");if(A){let G=A.values[0]==="true";if(A.op==="!="?!G:G)f.push((T)=>T.and([T.exists(T.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf.entity_id","=","e.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1)),T.or([T.not(T.exists(T.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("pub_orf.entity_id","=","e.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))),T.exists(T.selectFrom("obj_ref_fields as draft_orf2").innerJoin("field_definitions as draft_fd2","draft_fd2.id","draft_orf2.field_definition_id").innerJoin("obj_ref_fields as pub_orf2",(k)=>k.onRef("pub_orf2.entity_id","=","e.id")).innerJoin("field_definitions as pub_fd2","pub_fd2.id","pub_orf2.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf2.entity_id","=","e.id").where("draft_fd2.name","=","draft_version").where("draft_fd2.is_system","=",1).where("pub_fd2.name","=","latest_published_version").where("pub_fd2.is_system","=",1).whereRef("draft_orf2.target_entity_id","!=","pub_orf2.target_entity_id"))])]));else f.push((T)=>T.or([T.not(T.exists(T.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf.entity_id","=","e.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1))),T.exists(T.selectFrom("obj_ref_fields as draft_orf3").innerJoin("field_definitions as draft_fd3","draft_fd3.id","draft_orf3.field_definition_id").innerJoin("obj_ref_fields as pub_orf3",(k)=>k.onRef("pub_orf3.entity_id","=","e.id")).innerJoin("field_definitions as pub_fd3","pub_fd3.id","pub_orf3.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf3.entity_id","=","e.id").where("draft_fd3.name","=","draft_version").where("draft_fd3.is_system","=",1).where("pub_fd3.name","=","latest_published_version").where("pub_fd3.is_system","=",1).whereRef("draft_orf3.target_entity_id","=","pub_orf3.target_entity_id"))]))}let X=J.filter((G)=>!BH.has(G.key));for(let G of X){if(G.kind==="text_match")continue;let j=TK(G.key);if(j){if(j.primitiveType==="ancestor_ref"){if(G.op!=="=")throw P.validation("Comparison operators not supported for ancestor field","INVALID_FILTER_OPERATOR");if(G.values.length>1)throw P.validation("Multi-value not supported for ancestor field","INVALID_FILTER_VALUE");let k=G.values[0],N=await z.selectFrom("entities").select(["path"]).where("object_id","=",k).where("deleted_at","is",null).executeTakeFirst();if(!N)throw P.notFound(`Entity not found: ${k}`,"ENTITY_NOT_FOUND");if(N.path===null)throw P.validation(`Entity '${k}' does not have a path and cannot be used as an ancestor`,"INVALID_FILTER_VALUE");let m=`${l$_(N.path)}/%`;f.push(()=>C_`e.path LIKE ${m} ESCAPE '\\'`)}else if(j.primitiveType==="string"){let k=j.columnName,N=G.op==="!=",D=G.values.length>1,m=G.values.some((V)=>V.includes("*"));if(G.op!=="="&&G.op!=="!=")throw P.validation(`Range operators not supported for '${G.key}' field`,"INVALID_FILTER_OPERATOR");if(D&&m)throw P.validation(`Multi-value and wildcard cannot be combined for '${G.key}' filter`,"INVALID_FILTER_VALUE");if(m){let V=G.values[0].replace(/\*/g,"%");if(N)f.push((l)=>l(`e.${k}`,"not like",V));else f.push((l)=>l(`e.${k}`,"like",V))}else if(D)if(N)f.push((V)=>V(`e.${k}`,"not in",G.values));else f.push((V)=>V(`e.${k}`,"in",G.values));else if(N)f.push((V)=>V(`e.${k}`,"!=",G.values[0]));else f.push((V)=>V(`e.${k}`,"=",G.values[0]))}else if(j.primitiveType==="object_ref")f.push((k)=>k("e.parent_object_id","=",G.values[0]));else if(j.primitiveType==="date"){if(G.values.length>1)throw P.validation(`Multi-value not supported for '${G.key}' field`,"INVALID_FILTER_VALUE");let k=G.values[0];if(!Rc.test(k))throw P.validation(`Invalid date format '${k}' for filter '${G.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");let N=C_.ref(`e.${j.name}`);if(G.op==="="&&oH(k))f.push((D)=>D(C_`date(${N})`,"=",k));else f.push((D)=>D(C_`datetime(${N})`,G.op,C_`datetime(${k})`))}else if(j.primitiveType==="path_string"){if(G.op!=="="&&G.op!=="!=")throw P.validation(`Range operators not supported for '${G.key}' field`,"INVALID_FILTER_OPERATOR");for(let m of G.values)if(m===""||m===void 0||m===null)throw P.validation(`Empty value not allowed for '${G.key}' filter`,"INVALID_FILTER_VALUE");let k=C_.ref("e.path"),N=G.op==="!=",D=G.values.map((m)=>l$_(m).replace(/\*/g,"%"));f.push((m)=>{let V=D.map((l)=>N?C_`${k} COLLATE NOCASE NOT LIKE ${l} COLLATE NOCASE ESCAPE '\\'`:C_`${k} COLLATE NOCASE LIKE ${l} COLLATE NOCASE ESCAPE '\\'`);if(V.length===1)return V[0];return N?m.and(V):m.or(V)})}continue}let T=await z.selectFrom("field_definitions").select(["id","primitive_type"]).where("name","=",G.key).where("owner_entity_id","is",null).executeTakeFirst();if(!T){f.push((k)=>k.lit(!1));continue}switch(T.primitive_type){case"string":{if(G.op!=="="&&G.op!=="!=")throw P.validation("Comparison operators not supported for string fields","INVALID_FILTER_OPERATOR");if(G.op==="!="){let N=G.values[0];f.push((D)=>D.not(D.exists(D.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(D.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("sf.value","=",N))));break}if(G.values.length>1){f.push((N)=>N.exists(N.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(N.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("sf.value","in",G.values)));break}let k=G.values[0];if(k.includes("*")){let N=k.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_").replace(/\*/g,"%");f.push((D)=>D.exists(D.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(D.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value LIKE ${N} ESCAPE '\\'`)))}else f.push((N)=>N.exists(N.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(N.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("sf.value","=",k)));break}case"text":{if(G.op!=="=")throw P.validation("Text fields only support = (equality) operator","INVALID_FILTER_OPERATOR");f.push((k)=>k.exists(k.selectFrom("text_fields as tf").innerJoin("field_definitions as fd","fd.id","tf.field_definition_id").select(k.lit(1).as("one")).whereRef("tf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("tf.value","=",G.values[0])));break}case"object_ref":{if(G.op!=="="&&G.op!=="!=")throw P.validation("Comparison operators not supported for object_ref fields","INVALID_FILTER_OPERATOR");if(G.op==="!="){f.push((k)=>k.not(k.exists(k.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(k.lit(1).as("one")).whereRef("orf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",G.values[0]))));break}if(G.values.length>1){f.push((k)=>k.exists(k.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(k.lit(1).as("one")).whereRef("orf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","in",G.values)));break}f.push((k)=>k.exists(k.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(k.lit(1).as("one")).whereRef("orf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",G.values[0])));break}case"int":{if(G.values.length>1){if(G.op!=="=")throw P.validation(`Multi-value not supported for '${G.op}' operator on filter '${G.key}'`,"INVALID_FILTER_VALUE");let D=G.values.map((m)=>{let V=parseInt(m,10);if(isNaN(V)||!Number.isInteger(V)||String(V)!==m)throw P.validation(`Invalid integer value '${m}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");return V});f.push((m)=>m.exists(m.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(m.lit(1).as("one")).whereRef("inf.entity_id","=","e.id").where("fd.name","=",G.key).where((V)=>V.or([C_`fd.store_id = e.store_id`,V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","in",D)));break}let k=G.values[0],N=parseInt(k,10);if(isNaN(N)||!Number.isInteger(N)||String(N)!==k)throw P.validation(`Invalid integer value '${k}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");if(G.op==="!="){f.push((D)=>D.not(D.exists(D.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(D.lit(1).as("one")).whereRef("inf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","=",N))));break}f.push((D)=>D.exists(D.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(D.lit(1).as("one")).whereRef("inf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value",G.op,N)));break}case"float":{if(G.values.length>1){if(G.op!=="=")throw P.validation(`Multi-value not supported for '${G.op}' operator on filter '${G.key}'`,"INVALID_FILTER_VALUE");let D=G.values.map((m)=>{let V=parseFloat(m);if(isNaN(V)||!isFinite(V))throw P.validation(`Invalid numeric value '${m}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");return V});f.push((m)=>m.exists(m.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(m.lit(1).as("one")).whereRef("ff.entity_id","=","e.id").where("fd.name","=",G.key).where((V)=>V.or([C_`fd.store_id = e.store_id`,V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","in",D)));break}let k=G.values[0],N=parseFloat(k);if(isNaN(N)||!isFinite(N))throw P.validation(`Invalid numeric value '${k}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");if(G.op==="!="){f.push((D)=>D.not(D.exists(D.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(D.lit(1).as("one")).whereRef("ff.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","=",N))));break}f.push((D)=>D.exists(D.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(D.lit(1).as("one")).whereRef("ff.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value",G.op,N)));break}case"date":{if(G.values.length>1){if(G.op!=="=")throw P.validation(`Multi-value not supported for '${G.op}' operator on filter '${G.key}'`,"INVALID_FILTER_VALUE");for(let N of G.values)if(!Rc.test(N))throw P.validation(`Invalid date format '${N}' for filter '${G.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");f.push((N)=>N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where((D)=>D.or(G.values.map((m)=>oH(m)?D(C_`date(df.value)`,"=",m):D(C_`datetime(df.value)`,"=",C_`datetime(${m})`))))));break}let k=G.values[0];if(!Rc.test(k))throw P.validation(`Invalid date format '${k}' for filter '${G.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");if(G.op==="!="){if(oH(k))f.push((N)=>N.not(N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",k))));else f.push((N)=>N.not(N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,"=",C_`datetime(${k})`))));break}if(G.op==="="&&oH(k)){f.push((N)=>N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",k)));break}f.push((N)=>N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,G.op,C_`datetime(${k})`)));break}default:f.push((k)=>k.lit(!1))}}return f},n=async(z,{storeId:J,storeEntityId:f}={})=>{if(!c)return{status:"unavailable",indexedEntityCount:0,lastError:null,totalEntityCount:null,progress:null,storeEntityId:f??null,needsIndexingCount:0};let Z=Date.now();try{let O=await c.readStoreField(J,"embeddingState"),A=await c.readStoreField(J,"embeddingError"),X=await c.countNeedsIndexing(J),G=0;try{let k=z.selectFrom("search_embedding_chunks").innerJoin("entities","entities.id","search_embedding_chunks.entity_id").select(C_`COUNT(DISTINCT search_embedding_chunks.entity_id)`.as("count")).where("search_embedding_chunks.target","=","all");if(J!==void 0)k=k.where("entities.store_id","=",J);let N=await k.where("entities.deleted_at","is",null).executeTakeFirst();G=Number(N?.count??0)}catch{}let j=null;if(a)try{let k=z.selectFrom("string_fields").innerJoin("entities","entities.id","string_fields.entity_id").select(C_`COUNT(*)`.as("count")).where("string_fields.field_definition_id","=",a).where("string_fields.value","=","true").where("entities.deleted_at","is",null);if(J!==void 0)k=k.where("entities.store_id","=",J);let N=await k.executeTakeFirst();j=Number(N?.count??0)}catch{}let T=O??"ready";if(T==="error")return{status:"error",indexedEntityCount:G,lastError:A||null,totalEntityCount:j,progress:null,storeEntityId:f??null,needsIndexingCount:X};if(T==="indexing"){let k=c.getProgress(J),N=k?G+k.indexed:G,D=j>0?Math.round(N/j*100):null;return{status:"indexing",indexedEntityCount:N,totalEntityCount:j,progress:D,lastError:null,storeEntityId:f??null,needsIndexingCount:X}}if(X>0)return{status:"stale",indexedEntityCount:G,lastError:null,totalEntityCount:j,progress:null,storeEntityId:f??null,needsIndexingCount:X};return{status:"ready",indexedEntityCount:G,lastError:null,totalEntityCount:j,progress:null,storeEntityId:f??null,needsIndexingCount:X}}catch(O){return{status:"unavailable",indexedEntityCount:0,lastError:O.message,totalEntityCount:null,progress:null,storeEntityId:f??null,needsIndexingCount:null}}finally{let O=Date.now()-Z;if(O>N$_)x$_.warn("PERF_SEARCH op=embeddingStatus duration=%d",O)}},K=async(z,J,{queryText:f,filters:Z,limit:O,offset:A,effectiveStoreCode:X})=>{let G=null;if(X&&X!=="all"){let t=(_.getChildren?_.getChildren():[]).find((i_)=>i_.getCode&&i_.getCode()===X);if(t&&t.getPk)G=[t.getPk()]}let T=(await i.embed([f]))[0],k=await u.searchByVector(T,G?{storeIds:G}:{});if(k.length===0)return{results:[],total:0,debug:{strategy:"rag",message:"No embeddings found. Run reindex_embeddings to populate the embedding index."}};let N=k.filter((I)=>I.similarity>=V$_);if(N.length===0)return{results:[],total:0,debug:{strategy:"rag"}};let D=new Map;for(let I of N)D.set(I.entityPk,I);let m=N.map((I)=>I.entityPk),V=await p(z,Z),l=z.selectFrom("entities as e").leftJoin("entity_types","entity_types.id","e.entity_type_id").select(["e.id as entityPk","e.object_id as objectId","e.name","e.path","e.type_code as typeCode","entity_types.subtype"]).where("e.id","in",m).where("e.deleted_at","is",null);for(let I of V)l=l.where(I);let s=await l.execute();if(s.length===0)return{results:[],total:0,debug:{strategy:"rag"}};let o=s.map((I)=>{let t=D.get(I.entityPk);return{entityId:I.objectId,name:I.name,path:I.path,score:Math.max(0,t.similarity),snippet:t.chunkText,snippetSource:"semantic",matchMethod:"rag",type:I.typeCode,subtype:I.subtype||null}}).sort((I,t)=>t.score-I.score),C=o.length;return{results:o.slice(A,A+O),total:C,debug:{strategy:"rag"}}},q=async(z,J,f,Z,O,A,X)=>{let G=_9(f.content),j=ub(f.content);if(Z==="all"){let k=yH([..._.getCodes()],O),N=[];for(let D of k){let m=await _.searchContent(z,J,{query:G,filters:O,startMarker:A,endMarker:X,storeCode:D,literals:j,armMode:!0,armLimit:TW});N.push(...m.results)}return N}return(await _.searchContent(z,J,{query:G,filters:O,startMarker:A,endMarker:X,storeCode:Z,literals:j,armMode:!0,armLimit:TW})).results},w=async(z,J,f,Z,O)=>{if(!i||!u)throw P.validation("RAG arms require the embedding system to be enabled. Embeddings are not available in this environment.","EMBEDDINGS_NOT_AVAILABLE");let A=null,X=(o)=>{let g=(_.getChildren?_.getChildren():[]).find((I)=>I.getCode&&I.getCode()===o);return g&&g.getPk?g.getPk():null};if(Z&&Z!=="all"){let o=X(Z);if(o!==null)A=[o]}else if(Z==="all"){let o=[..._.getCodes()],C=yH(o,O);if(C.length===0)return{results:[],rawResultCount:0};if(C.length!==o.length)A=C.map(X).filter((g)=>g!==null)}let j=(await i.embed([f.ragQuery]))[0],T=await u.searchByVector(j,A?{storeIds:A}:{});if(T.length===0)return{results:[],rawResultCount:0};let k=T.filter((o)=>o.similarity>=T92);if(k.length===0)return{results:[],rawResultCount:T.length};let N=new Map;for(let o of k)N.set(o.entityPk,o);let D=k.map((o)=>o.entityPk),m=await p(z,O),V=z.selectFrom("entities as e").leftJoin("entity_types","entity_types.id","e.entity_type_id").select(["e.id as entityPk","e.object_id as objectId","e.name","e.path","e.type_code as typeCode","entity_types.subtype"]).where("e.id","in",D).where("e.deleted_at","is",null);for(let o of m)V=V.where(o);let l=await V.execute();if(l.length===0)return{results:[],rawResultCount:T.length};return{results:l.map((o)=>{let C=N.get(o.entityPk);return{entityId:o.objectId,name:o.name,path:o.path,score:Math.max(0,C.similarity),snippet:C.chunkText,snippetSource:"semantic",matchMethod:"rag",type:o.typeCode,subtype:o.subtype||null}}).sort((o,C)=>C.score-o.score).slice(0,TW),rawResultCount:T.length}},Y=async(z,J,{composed:f,filters:Z,effectiveStoreCode:O,limit:A,offset:X,startMarker:G,endMarker:j})=>{let{operator:T,left:k,right:N}=f;for(let L_ of[k,N]){if(L_.method!=="fts"&&L_.method!=="rag")throw P.validation(`Invalid arm method '${L_.method}': must be 'fts' or 'rag'`,"INVALID_COMPOSED_ARM");if(L_.method==="fts"&&!L_.content)throw P.validation("FTS arm requires a content node","INVALID_COMPOSED_ARM");if(L_.method==="rag"&&!L_.ragQuery)throw P.validation("RAG arm requires a ragQuery string","INVALID_COMPOSED_ARM")}let D=Z.filter((L_)=>L_.key!=="store"),[m,V]=await Promise.all([k.method==="fts"?q(z,J,k,O,D,G,j):w(z,J,k,O,D),N.method==="fts"?q(z,J,N,O,D,G,j):w(z,J,N,O,D)]),l=Array.isArray(m)?m:m.results,s=Array.isArray(V)?V:V.results,o=Array.isArray(m)?void 0:m.rawResultCount,C=Array.isArray(V)?void 0:V.rawResultCount,g=new Map,I=new Map;for(let L_ of l){if(!I.has(L_.entityId))I.set(L_.entityId,{name:L_.name,path:L_.path,type:L_.type,subtype:L_.subtype,snippet:L_.snippet,snippetSource:L_.snippetSource??null,matchMethod:L_.matchMethod??null});if(k.method==="fts")g.set(L_.entityId,{snippet:L_.snippet,snippetSource:L_.snippetSource??null})}for(let L_ of s){if(!I.has(L_.entityId))I.set(L_.entityId,{name:L_.name,path:L_.path,type:L_.type,subtype:L_.subtype,snippet:L_.snippet,snippetSource:L_.snippetSource??null,matchMethod:L_.matchMethod??null});if(N.method==="fts")g.set(L_.entityId,{snippet:L_.snippet,snippetSource:L_.snippetSource??null})}for(let[L_,r_]of I)if(g.has(L_)){let T2=g.get(L_);r_.snippet=T2.snippet,r_.snippetSource=T2.snippetSource,r_.matchMethod="fts"}let t=(L_)=>L_.map((r_)=>({entityId:r_.entityId,score:-r_.score})),i_=(L_)=>L_.map((r_)=>({entityId:r_.entityId,score:r_.score})),u_=k.method==="fts"?t(l):i_(l),w_=N.method==="fts"?t(s):i_(s),q_=M$_.fuse(u_,w_,{operator:T.toUpperCase(),k:IH}),z_=q_.length,D_=q_.slice(X,X+A).map(({entityId:L_,score:r_})=>{let T2=I.get(L_)??{};return{entityId:L_,name:T2.name??null,path:T2.path??null,score:r_,snippet:T2.snippet??"",snippetSource:T2.snippetSource??null,matchMethod:T2.matchMethod??null,type:T2.type??null,subtype:T2.subtype??null}}),g_=l.length>=TW||s.length>=TW,b_=(L_,r_,T2)=>{let m_={method:L_.method,resultCount:r_.length};if(T2!==void 0)m_.rawResultCount=T2;return m_};return{results:D_,total:z_,debug:{strategy:"composed",operator:T,arms:[b_(k,l,o),b_(N,s,C)],composedResultCount:z_,fusionMethod:"rrf",truncated:g_}}};return Object.freeze({search:async(z,J,{query:f,limit:Z=20,offset:O=0,startMarker:A="<mark>",endMarker:X="</mark>",storeCode:G})=>{let j=Date.now();if(Z!==void 0&&(!Number.isInteger(Z)||Z<1))throw P.validation("Limit must be a positive integer","INVALID_LIMIT");if(O!==void 0&&(!Number.isInteger(O)||O<0))throw P.validation("Offset must be a non-negative integer","INVALID_OFFSET");let k=j$_(f&&typeof f==="string"?f:"");await k92(z,k.filters);let N=k.filters.filter((u_)=>u_.key==="type");if(k.filters.some((u_)=>u_.key==="published"||u_.key==="draft")&&N.length>0){let u_={document:"d",template:"t",story:"s",job:"j",folder:"f"};if(N.some((q_)=>{let z_=q_.resolvedTypes||(q_.resolvedType?[q_.resolvedType]:q_.values.map(()=>null));return q_.values.some((A_,D_)=>{let g_=z_[D_]?.code??(u_[A_]||A_);return GW.has(g_)})}))throw P.validation("published and draft filters cannot be combined with non-versioned types (story, job, folder)","INVALID_FILTER_COMBINATION")}let m=_9(k.content),V=ub(k.content),l=M92(k.filters,G),s=await x92(z,J,k.filters,v),o=N92(s),C;if(l&&l!=="all"){let w_=(_.getChildren?_.getChildren():[]).find((q_)=>q_.getCode&&q_.getCode()===l);if(w_&&w_.getPk)C=w_.getPk()}let g=n(z,{storeId:C}),I;if(k.composed)I=await Y(z,J,{composed:k.composed,filters:o,effectiveStoreCode:l,limit:Z,offset:O,startMarker:A,endMarker:X});else{if(k.ragQuery&&k.content)throw P.validation('Cannot combine FTS content terms with content[rag]: in the same query. Use content[rag]:"query" for semantic search, or bare terms for keyword search.',"INVALID_QUERY");if(k.ragQuery){if(o.some((w_)=>w_.kind==="text_match"))throw P.validation("Tilde (~) field filters are FTS-based and cannot be combined with content[rag]: queries.","INVALID_QUERY")}if(!m&&!k.ragQuery&&(!k.filters||k.filters.length===0))throw P.validation("Search query is required","INVALID_QUERY");if(k.ragQuery){if(!i||!u)throw P.validation("content[rag]: queries require the embedding system to be enabled. Embeddings are not available in this environment.","EMBEDDINGS_NOT_AVAILABLE");I=await K(z,J,{queryText:k.ragQuery,filters:o,limit:Z,offset:O,effectiveStoreCode:l})}else if(l==="all"){let u_=yH([..._.getCodes()],o);if(u_.length===0)I={results:[],total:0,debug:{strategy:"ancestor-cross-store-empty"}};else{let w_=await _.searchContent(z,J,{query:m,filters:o,limit:Z,offset:O,startMarker:A,endMarker:X,storeCode:u_[0],literals:V}),q_=w_.total,z_=[...w_.results],A_=q_;for(let D_=1;D_<u_.length;D_++){let g_=u_[D_],b_=Z-z_.length;if(O>=q_){let L_=await _.searchContent(z,J,{query:m,filters:o,limit:Z,offset:O-q_,startMarker:A,endMarker:X,storeCode:g_,literals:V});A_+=L_.total,z_.push(...L_.results)}else if(b_>0){let L_=await _.searchContent(z,J,{query:m,filters:o,limit:b_,offset:0,startMarker:A,endMarker:X,storeCode:g_,literals:V});A_+=L_.total,z_.push(...L_.results)}else{let L_=await _.searchContent(z,J,{query:m,filters:o,limit:1,offset:0,startMarker:A,endMarker:X,storeCode:g_,literals:V});A_+=L_.total}}I={results:z_,total:A_,debug:w_.debug}}}else if(yH([l],o).length===0)I={results:[],total:0,debug:{strategy:"ancestor-cross-store-empty"}};else I=await _.searchContent(z,J,{query:m,filters:o,limit:Z,offset:O,startMarker:A,endMarker:X,storeCode:l,literals:V})}let t=await g,i_=Date.now()-j;if(i_>N$_)x$_.warn("PERF_SEARCH op=search strategy=%s duration=%d",I.debug.strategy,i_);return{...I,embeddingStatus:t}},computeEmbeddingStatus:n})};var h$_=Object.freeze({create:D92});var $b=h_.create({namespace:"caw:stores:db:search"}),cb={document:"d",template:"t",folder:"f",story:"s",job:"j"},l92=["d","t"],R$_={0:"name",1:"content_text",2:"text_fields",3:"keywords"},UH=(_)=>/^\d{4}-\d{2}-\d{2}$/.test(_);var h92=(_)=>_.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_"),R92=({storePk:_,storeCode:v,pathOps:i,fieldOps:u})=>{let c=(T)=>{if(T.resolvedType){let{code:k,subtype:N}=T.resolvedType;return{clause:(D)=>D.and([D("doc.type_code","=",k),D("entity_types.subtype","=",N)]),needsEntityTypesJoin:!0}}else{let k=cb[T.values[0]]||T.values[0];return{clause:(N)=>N("doc.type_code","=",k),needsEntityTypesJoin:!1}}},a=(T)=>{if(T.values.length>1)throw P.validation("Multi-value not supported for 'published' filter","INVALID_FILTER_VALUE");let k=T.values[0]==="true";if(T.op==="!="?!k:k)return{clause:(D)=>D.exists(D.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("pub_orf.entity_id","=","doc.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))};else return{clause:(D)=>D.not(D.exists(D.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("pub_orf.entity_id","=","doc.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1)))}},p=(T)=>{if(T.values.length>1)throw P.validation("Multi-value not supported for 'draft' filter","INVALID_FILTER_VALUE");let k=T.values[0]==="true";if(T.op==="!="?!k:k)return{clause:(D)=>D.and([D.exists(D.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf.entity_id","=","doc.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1)),D.or([D.not(D.exists(D.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("pub_orf.entity_id","=","doc.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))),D.exists(D.selectFrom("obj_ref_fields as draft_orf2").innerJoin("field_definitions as draft_fd2","draft_fd2.id","draft_orf2.field_definition_id").innerJoin("obj_ref_fields as pub_orf2",(m)=>m.onRef("pub_orf2.entity_id","=","doc.id")).innerJoin("field_definitions as pub_fd2","pub_fd2.id","pub_orf2.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf2.entity_id","=","doc.id").where("draft_fd2.name","=","draft_version").where("draft_fd2.is_system","=",1).where("pub_fd2.name","=","latest_published_version").where("pub_fd2.is_system","=",1).whereRef("draft_orf2.target_entity_id","!=","pub_orf2.target_entity_id"))])])};else return{clause:(D)=>D.or([D.not(D.exists(D.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf.entity_id","=","doc.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1))),D.exists(D.selectFrom("obj_ref_fields as draft_orf3").innerJoin("field_definitions as draft_fd3","draft_fd3.id","draft_orf3.field_definition_id").innerJoin("obj_ref_fields as pub_orf3",(m)=>m.onRef("pub_orf3.entity_id","=","doc.id")).innerJoin("field_definitions as pub_fd3","pub_fd3.id","pub_orf3.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf3.entity_id","=","doc.id").where("draft_fd3.name","=","draft_version").where("draft_fd3.is_system","=",1).where("pub_fd3.name","=","latest_published_version").where("pub_fd3.is_system","=",1).whereRef("draft_orf3.target_entity_id","=","pub_orf3.target_entity_id"))])}},n=(T,k)=>{if(T.op==="!="){if(T.values.length>1)return{clause:(V)=>V.not(V.exists(V.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(V.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`LOWER(sf.value)`,"in",T.values.map((l)=>l.toLowerCase()))))};let m=T.values[0];return{clause:(V)=>V.not(V.exists(V.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(V.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value COLLATE NOCASE`,"=",m)))}}if(T.values.length>1)return{clause:(m)=>m.exists(m.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(m.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`LOWER(sf.value)`,"in",T.values.map((V)=>V.toLowerCase())))};let N=T.values[0];if(N.includes("*")){let m=N.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_").replace(/\*/g,"%");return{clause:(V)=>V.exists(V.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(V.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value LIKE ${m} ESCAPE '\\'`))}}return{clause:(m)=>m.exists(m.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(m.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value COLLATE NOCASE`,"=",N))}},K=(T,k)=>{return{clause:(N)=>N.exists(N.selectFrom("text_fields as tf").innerJoin("field_definitions as fd","fd.id","tf.field_definition_id").select(N.lit(1).as("one")).whereRef("tf.entity_id","=","doc.id").where("fd.name","=",T.key).where((D)=>D.or([D("fd.store_id","=",k),D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("tf.value","=",T.values[0]))}},q=(T,k,N,D)=>{if(!N?.isVersionScoped){if(T.op==="!="){let V=T.values[0];return{clause:(l)=>l.not(l.exists(l.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(l.lit(1).as("one")).whereRef("orf.entity_id","=","doc.id").where("fd.name","=",T.key).where((s)=>s.or([s("fd.store_id","=",k),s("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",V)))}}if(T.values.length>1)return{clause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","in",T.values))};return{clause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",T.values[0]))}}let m=N.id;if(T.op==="!="){let V=T.values[0];return{filtersOnlyClause:(l)=>l.not(l.exists(l.selectFrom("obj_ref_fields as lpv").innerJoin("obj_ref_fields as orf","orf.entity_id","lpv.target_entity_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(l.lit(1).as("one")).whereRef("lpv.entity_id","=","doc.id").where("lpv.field_definition_id","in",D).where("orf.field_definition_id","=",m).where("ref_ent.object_id","=",V).where("ref_ent.deleted_at","is",null))),ftsFirstClause:(l)=>l.not(l.exists(l.selectFrom("obj_ref_fields as orf").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(l.lit(1).as("one")).whereRef("orf.entity_id","=","ver.id").where("orf.field_definition_id","=",m).where("ref_ent.object_id","=",V).where("ref_ent.deleted_at","is",null)))}}if(T.values.length>1)return{filtersOnlyClause:(V)=>V.exists(V.selectFrom("obj_ref_fields as lpv").innerJoin("obj_ref_fields as orf","orf.entity_id","lpv.target_entity_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("lpv.entity_id","=","doc.id").where("lpv.field_definition_id","in",D).where("orf.field_definition_id","=",m).where("ref_ent.object_id","in",T.values).where("ref_ent.deleted_at","is",null)),ftsFirstClause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","ver.id").where("orf.field_definition_id","=",m).where("ref_ent.object_id","in",T.values).where("ref_ent.deleted_at","is",null))};return{filtersOnlyClause:(V)=>V.exists(V.selectFrom("obj_ref_fields as lpv").innerJoin("obj_ref_fields as orf","orf.entity_id","lpv.target_entity_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("lpv.entity_id","=","doc.id").where("lpv.field_definition_id","in",D).where("orf.field_definition_id","=",m).where("ref_ent.object_id","=",T.values[0]).where("ref_ent.deleted_at","is",null)),ftsFirstClause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","ver.id").where("orf.field_definition_id","=",m).where("ref_ent.object_id","=",T.values[0]).where("ref_ent.deleted_at","is",null))}},w=(T,k)=>{if(T.values.length>1){if(T.op!=="=")throw P.validation(`Multi-value not supported for '${T.op}' operator on filter '${T.key}'`,"INVALID_FILTER_VALUE");let m=T.values.map((V)=>{let l=parseInt(V,10);if(isNaN(l)||!Number.isInteger(l)||String(l)!==V)throw P.validation(`Invalid integer value '${V}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");return l});return{clause:(V)=>V.exists(V.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(V.lit(1).as("one")).whereRef("inf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","in",m))}}let N=T.values[0],D=parseInt(N,10);if(isNaN(D)||!Number.isInteger(D)||String(D)!==N)throw P.validation(`Invalid integer value '${N}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");if(T.op==="!=")return{clause:(m)=>m.not(m.exists(m.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(m.lit(1).as("one")).whereRef("inf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","=",D)))};return{clause:(m)=>m.exists(m.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(m.lit(1).as("one")).whereRef("inf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value",T.op,D))}},Y=(T,k)=>{if(T.values.length>1){if(T.op!=="=")throw P.validation(`Multi-value not supported for '${T.op}' operator on filter '${T.key}'`,"INVALID_FILTER_VALUE");let m=T.values.map((V)=>{let l=parseFloat(V);if(isNaN(l)||!isFinite(l))throw P.validation(`Invalid numeric value '${V}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");return l});return{clause:(V)=>V.exists(V.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(V.lit(1).as("one")).whereRef("ff.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","in",m))}}let N=T.values[0],D=parseFloat(N);if(isNaN(D)||!isFinite(D))throw P.validation(`Invalid numeric value '${N}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");if(T.op==="!=")return{clause:(m)=>m.not(m.exists(m.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(m.lit(1).as("one")).whereRef("ff.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","=",D)))};return{clause:(m)=>m.exists(m.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(m.lit(1).as("one")).whereRef("ff.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value",T.op,D))}},W=(T,k)=>{if(T.values.length>1){if(T.op!=="=")throw P.validation(`Multi-value not supported for '${T.op}' operator on filter '${T.key}'`,"INVALID_FILTER_VALUE");for(let D of T.values)if(!Rc.test(D))throw P.validation(`Invalid date format '${D}' for filter '${T.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");return{clause:(D)=>D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where((m)=>m.or(T.values.map((V)=>UH(V)?m(C_`date(df.value)`,"=",V):m(C_`datetime(df.value)`,"=",C_`datetime(${V})`)))))}}let N=T.values[0];if(!Rc.test(N))throw P.validation(`Invalid date format '${N}' for filter '${T.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");if(T.op==="!=")if(UH(N))return{clause:(D)=>D.not(D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",N)))};else return{clause:(D)=>D.not(D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,"=",C_`datetime(${N})`)))};if(T.op==="="&&UH(N))return{clause:(D)=>D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",N))};return{clause:(D)=>D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,T.op,C_`datetime(${N})`))}},z=async(T,k,N)=>{let D=await T.selectFrom("field_definitions").select(["id","primitive_type",C_`EXISTS (
|
|
833
|
+
`.execute(_)).rows.map((q)=>({id:q.id,objectId:q.object_id,name:q.name,typeCode:q.type_code,subtype:q.subtype}))},X$_={create:p92};I2();ku();Uv();var Jp=h_.create({namespace:"caw:stores:db:fields"}),PK=(_)=>{let i={int:"int_fields",string:"string_fields",text:"text_fields",date:"date_fields",float:"float_fields",object_ref:"obj_ref_fields"}[_];if(!i)throw Error(`Unknown primitive type: ${_}`);return i},_b=(_)=>{if(!_)return{allowed:null,jsonSchema:null};try{let v=JSON.parse(_);return{allowed:v.allowed??null,jsonSchema:v.jsonSchema??null}}catch(v){return{allowed:null,jsonSchema:null}}},K92=async(_,v,i,u)=>{let c=PK(u);await _.deleteFrom(c).where("entity_id","=",v).where("field_definition_id","=",i).execute()},q92=async(_,v,i,u,c,a=0)=>{if(u==="object_ref")throw Error("Use FieldOps factory insertTypedField for object_ref type (requires target entity lookup)");let p=PK(u),n=c;if(u==="int")n=typeof c==="string"?parseInt(c,10):c;else if(u==="float")n=typeof c==="string"?parseFloat(c):c;await _.insertInto(p).values({entity_id:v,field_definition_id:i,value:n,ordinal:a}).execute()},w92=({storePk:_,storeCode:v,entityCache:i})=>{let u=new Map,c=!1,a=async(Z)=>{if(c)return;let O=await Z.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.object_id","fd.name","fd.primitive_type","cfd.class_type_id"]).where((A)=>A.or([A("fd.store_id","=",_),A("fd.store_id","is",null)])).where("fd.is_system","=",1).orderBy(C_`fd.store_id IS NULL`,"desc").execute();for(let A of O){let X=A.class_type_id?`${A.name}:${A.class_type_id}`:A.name;u.set(X,{pk:A.id,objectId:A.object_id,primitiveType:A.primitive_type})}c=!0,Jp.debug("System field definition cache initialized with %d entries",u.size)},p=(Z,O=null)=>{if(O){let A=`${Z}:${O}`;if(u.has(A))return u.get(A)}return u.get(Z)||null},n=(Z)=>{let O=null;if(Z.owner_entity_id!==null)O=i.getIdByPk(Z.owner_entity_id)??null;let{allowed:A,jsonSchema:X}=_b(Z.config),{entity:G,mutationApi:j}=hc.create({id:Z.object_id,name:Z.name,ownerEntityId:O,label:Z.label,description:Z.description,primitiveType:Z.primitive_type,required:Z.required===1,multiplicity:Z.multiplicity,isSystem:Z.is_system===1,editable:Z.editable===1,allowed:A,jsonSchema:X,createdAt:Z.created_at,updatedAt:Z.updated_at});return{entity:G,mutationApi:j,pk:Z.id}},K=async(Z,O,A,X,G,j=0)=>{if(X==="object_ref"){let T=await Z.selectFrom("entities").select("id").where("object_id","=",G).where("deleted_at","is",null).executeTakeFirst();if(!T)throw P.validation(`Target entity not found: ${G}`,"INVALID_REFERENCE");await Z.insertInto("obj_ref_fields").values({entity_id:O,field_definition_id:A,target_entity_id:T.id,ordinal:j}).execute()}else await q92(Z,O,A,X,G,j)},q=async(Z,O,A,X)=>{await K92(Z,O,A,X)},w=async(Z,O)=>{let A=new Map,X=await Z.selectFrom("int_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'int'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of X){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"int"});A.get(D.def_id).values.push(D.value)}let G=await Z.selectFrom("string_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'string'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of G){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"string"});A.get(D.def_id).values.push(D.value)}let j=await Z.selectFrom("text_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'text'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of j){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"text"});A.get(D.def_id).values.push(D.value)}let T=await Z.selectFrom("date_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'date'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of T){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"date"});A.get(D.def_id).values.push(D.value)}let k=await Z.selectFrom("float_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",C_`'float'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of k){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"float"});A.get(D.def_id).values.push(D.value)}let N=await Z.selectFrom("obj_ref_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").innerJoin("entities as e","e.id","f.target_entity_id").select(["f.field_definition_id as def_id","e.object_id as value","f.ordinal",C_`'object_ref'`.as("primitive_type")]).where("f.entity_id","=",O).orderBy("f.ordinal").execute();for(let D of N){if(!A.has(D.def_id))A.set(D.def_id,{values:[],primitiveType:"object_ref"});A.get(D.def_id).values.push(D.value)}return A},Y=async(Z,O)=>{if(O.length===0)return Jp.debug("batchLoadTypedFieldValues: empty entityPks, returning empty Map"),new Map;Jp.debug("batchLoadTypedFieldValues: loading for %d entities",O.length);let A=new Map;for(let m of O)A.set(m,new Map);let X=(m,V)=>{for(let l of m){let s=A.get(l.entity_id);if(!s)continue;if(!s.has(l.def_id))s.set(l.def_id,{values:[],primitiveType:V});s.get(l.def_id).values.push(l.value)}},G=await Z.selectFrom("int_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(G,"int");let j=await Z.selectFrom("string_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(j,"string");let T=await Z.selectFrom("text_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(T,"text");let k=await Z.selectFrom("date_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(k,"date");let N=await Z.selectFrom("float_fields as f").select(["f.entity_id","f.field_definition_id as def_id","f.value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();X(N,"float");let D=await Z.selectFrom("obj_ref_fields as f").innerJoin("entities as e","e.id","f.target_entity_id").select(["f.entity_id","f.field_definition_id as def_id","e.object_id as value","f.ordinal"]).where("f.entity_id","in",O).orderBy(["f.entity_id","f.ordinal"]).execute();return X(D,"object_ref"),A},W=async(Z,O)=>{if(O.size===0)return Jp.debug("batchLoadFieldDefinitions: empty defIds, returning empty Map"),new Map;Jp.debug("batchLoadFieldDefinitions: loading %d definitions",O.size);let A=await Z.selectFrom("field_definitions").selectAll().where("id","in",[...O]).execute(),X=new Map;for(let G of A){let{allowed:j,jsonSchema:T}=_b(G.config);X.set(G.id,{id:G.object_id,name:G.name,label:G.label,description:G.description,primitiveType:G.primitive_type,required:G.required===1,multiplicity:G.multiplicity,isSystem:G.is_system===1,ownerEntityId:null,allowed:j,jsonSchema:T,createdAt:G.created_at,updatedAt:G.updated_at})}return X},z=(Z)=>{return t$.filter((O)=>!O.searchOnly).map((O)=>{let A;if(O.name==="parent")A=Z.parent_object_id??null;else A=Z[O.columnName];let{entity:X}=hc.create({id:`virtual:${O.name}`,name:O.name,label:O.label,description:O.description,primitiveType:O.primitiveType,required:!1,multiplicity:"single",isSystem:!0,isVirtual:!0,editable:O.editable});return x6.create({definition:X,values:A!==null&&A!==void 0?[String(A)]:[]})})};return{initSystemFieldDefCache:a,getSystemFieldDef:p,fieldDefinitionFromRow:n,getTypedFieldTable:PK,insertTypedField:K,deleteTypedField:q,loadTypedFieldValues:w,batchLoadTypedFieldValues:Y,batchLoadFieldDefinitions:W,batchLoadFieldsForEntities:async(Z,O,A)=>{if(O.length===0)return Jp.debug("batchLoadFieldsForEntities: empty entityPks, returning empty Map"),new Map;Jp.debug("batchLoadFieldsForEntities: loading fields for %d entities",O.length);let X=await Y(Z,O),G=new Set;for(let k of X.values())for(let N of k.keys())G.add(N);let j=await W(Z,G),T=new Map;for(let k of O){let N=X.get(k),D=[];for(let[V,l]of N.entries()){let s=j.get(V);if(!s)continue;let{entity:o}=hc.create(s);D.push(x6.create({definition:o,values:l.values}))}let m=A.get(k);if(m)D.push(...z(m));T.set(k,D)}return T},loadFieldsForEntity:async(Z,O)=>{let A=new Map,X=await w(Z,O);for(let[T,k]of X.entries()){let N=await Z.selectFrom("field_definitions").selectAll().where("id","=",T).executeTakeFirst();if(!N)continue;let{allowed:D,jsonSchema:m}=_b(N.config);A.set(T,{definition:{id:N.object_id,name:N.name,label:N.label,description:N.description,primitiveType:N.primitive_type,required:N.required===1,multiplicity:N.multiplicity,isSystem:N.is_system===1,ownerEntityId:N.owner_entity_id?i.getIdByPk(N.owner_entity_id):null,allowed:D,jsonSchema:m,createdAt:N.created_at,updatedAt:N.updated_at},values:k.values})}let G=[];for(let{definition:T,values:k}of A.values()){let{entity:N}=hc.create(T),D=x6.create({definition:N,values:k});G.push(D)}let j=await Z.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","created_at","updated_at"]).where("id","=",O).executeTakeFirst();if(j){let T=z(j);G.push(...T)}return G},buildVirtualFields:z}},H$_={create:w92};var{parseId:z92}=zi,W92=({storePk:_,storeCode:v,entityCache:i,pathOps:u,fieldOps:c})=>{return{readEntity:async(p,n,{id:K,includeDeleted:q=!1})=>{let w=z92(K);if(!w)return null;let{typeCode:Y,seq:W}=w;await v$.ensureLoaded();let z=v$.get(Y),J=p.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",_).where("entities.seq","=",W).where("entities.type_code","=",Y);if(!q)J=J.where("entities.deleted_at","is",null);let f=await J.executeTakeFirst();if(!f)return null;let Z=f.id;i.setIdByPk(Z,K);let O={pk:Z,typeCode:Y,object_id:K,name:f.name,subtype:f.subtype,created_at:f.created_at,updated_at:f.updated_at};if(z.isPathable)O.parentId=f.parent_object_id,O.path=f.path;return O.fields=await c.loadFieldsForEntity(p,Z),O}}},A$_={create:W92};I2();ku();import{createHash as Z92}from"crypto";s$();I2();var LH=(_)=>{let v=_;return v=v.replace(/```[\s\S]*?```/g,(i)=>" ".repeat(i.length)),v=v.replace(/~~~[\s\S]*?~~~/g,(i)=>" ".repeat(i.length)),v=v.replace(/``[^`]+``/g,(i)=>" ".repeat(i.length)),v=v.replace(/`[^`]+`/g,(i)=>" ".repeat(i.length)),v};var mK=h_.create({namespace:"caw:services:content-ref-extractor"}),vb=(_)=>{if(!_)return[];let v=/\/api\/p\/[^/]+\/assets\/([AB]a\d+)\/binary/g,i=[],u;while((u=v.exec(_))!==null)i.push(u[1]);let c=[...new Set(i)];return mK.debug("extractAttachments: found %d attachments (deduplicated from %d matches)",c.length,i.length),c},J92=async(_,{pathResolver:v}={})=>{if(!_)return[];let i=LH(_),u=/<include\s+id="([AB][dt]\d+)"/g,c=[],a;while((a=u.exec(i))!==null)c.push(a[1]);if(v){let n=/<include\s+path="([^"]+)"/g,K,q=0,w=0,Y=0;while((K=n.exec(i))!==null){q++;let W=K[1];try{let z=await v(W);if(z)c.push(z),w++;else Y++}catch(z){mK.debug('extractIncludes: path resolution failed for "%s": %s',W,z.message),Y++}}mK.debug("extractIncludes: path-based includes: found=%d, resolved=%d, skipped=%d",q,w,Y)}let p=[...new Set(c)];return mK.debug("extractIncludes: found %d includes (deduplicated from %d matches)",p.length,c.length),p},O92=(_)=>{if(!_)return[];let v=/\[(?:[^\]]+)\]\(([AB][dtfs]\d+)\)/g,i=[],u;while((u=v.exec(_))!==null)i.push(u[1]);let c=[...new Set(i)];return mK.debug("extractHyperlinks: found %d hyperlinks (deduplicated from %d matches)",c.length,i.length),c},VK=async(_,{pathResolver:v}={})=>{let i=Date.now(),u=vb(_),c=await J92(_,{pathResolver:v}),a=O92(_),p=Date.now()-i;return mK.debug("extractAll: completed in %dms (attachments=%d, includes=%d, hyperlinks=%d)",p,u.length,c.length,a.length),{attachments:u,includes:c,hyperlinks:a}};var au=async(_,v,i,u)=>{try{let c=i||v;return v$.get(c).isIndexable}catch{return!0}};var{buildId:f92}=zi,kK=h_.create({namespace:"caw:stores:db:version"}),X92=({storePk:_,storeCode:v,entityCache:i,fieldOps:u})=>{return{createVersionEntity:async(p,n,{documentPk:K,documentObjectId:q,documentEntityTypeId:w,documentName:Y,content:W,versionNumber:z,publishedAt:J=null,textFields:f="",keywords:Z="",includePathResolver:O})=>{await u.initSystemFieldDefCache(p);let A=g2(),X=await o2.readEntityTypeId(p,n,"v",null),G=await li.nextSeq(p,"store",_,"v"),j=f92(v,"v",G),k=(await p.insertInto("entities").values({store_id:_,object_id:j,entity_type_id:X,type_code:"v",seq:G,parent_folder_id:null,parent_object_id:null,name:null,created_at:A,updated_at:A}).returningAll().executeTakeFirstOrThrow()).id;i.setIdByPk(k,j);let N=u.getSystemFieldDef("document",X);if(!N)throw Error('System field definition "document" not found for version type');await p.insertInto("obj_ref_fields").values({entity_id:k,field_definition_id:N.pk,target_entity_id:K,ordinal:0}).execute();let D=u.getSystemFieldDef("version_number",X);if(!D)throw Error('System field definition "version_number" not found for version type');if(await p.insertInto("int_fields").values({entity_id:k,field_definition_id:D.pk,value:z,ordinal:0}).execute(),J!==null){let s=u.getSystemFieldDef("published_at",X);if(!s)throw Error('System field definition "published_at" not found for version type');await p.insertInto("date_fields").values({entity_id:k,field_definition_id:s.pk,value:J,ordinal:0}).execute()}await p.insertInto("entity_content").values({entity_id:k,content_text:W,content_type:"markdown",updated_at:A}).execute();let m=await p.selectFrom("entities").select("parent_folder_id").where("id","=",K).executeTakeFirst();if(await au(p,"v",null,m?.parent_folder_id??null))await C_`INSERT INTO entity_content_fts(rowid, name, content_text, text_fields, keywords) VALUES (${k}, ${Y}, ${W}, ${f}, ${Z})`.execute(p);let V=u.getSystemFieldDef("content_hash",X);if(!V)throw Error('System field definition "content_hash" not found for version type');let l=Z92("sha256").update(W||"","utf8").digest("hex");await p.insertInto("string_fields").values({entity_id:k,field_definition_id:V.pk,value:l,ordinal:0}).execute();try{let o=await VK(W,{pathResolver:O?(i_)=>O(p,n,i_,v):void 0});kK.debug("Extracted content references: attachments=%d, includes=%d, hyperlinks=%d",o.attachments.length,o.includes.length,o.hyperlinks.length);let C=u.getSystemFieldDef("attachments",X),g=u.getSystemFieldDef("includes",X),I=u.getSystemFieldDef("hyperlinks",X),t=async(i_,u_,w_)=>{if(!i_){kK.debug('System field definition "%s" not found for version type - skipping',w_);return}let q_=0;for(let z_ of u_){let A_=await p.selectFrom("entities").select("id").where("object_id","=",z_).where("deleted_at","is",null).executeTakeFirst();if(!A_){kK.debug("Target entity not found for %s reference: %s - skipping",w_,z_);continue}await p.insertInto("obj_ref_fields").values({entity_id:k,field_definition_id:i_.pk,target_entity_id:A_.id,ordinal:q_}).execute(),q_++}if(q_>0)kK.debug("Populated %d %s references for version %s",q_,w_,j)};await t(C,o.attachments,"attachments"),await t(g,o.includes,"includes"),await t(I,o.hyperlinks,"hyperlinks")}catch(s){kK.debug("Content reference extraction failed for version %s: %s - continuing with version creation",j,s.message)}return kK.debug("Created version entity %s (pk=%d) for document %s, version %d, draft=%s",j,k,q,z,J===null),{pk:k,objectId:j}},readVersionEntity:async(p,n,{includeDeleted:K}={})=>{if(!n)return null;await u.initSystemFieldDefCache(p);let q=p.selectFrom("entities").select(["object_id","entity_type_id"]).where("id","=",n);if(!K)q=q.where("deleted_at","is",null);let w=await q.executeTakeFirst();if(!w)return null;let{entity_type_id:Y,object_id:W}=w;i.setIdByPk(n,W);let z=u.getSystemFieldDef("version_number",Y),J=null;if(z)J=(await p.selectFrom("int_fields").select("value").where("entity_id","=",n).where("field_definition_id","=",z.pk).executeTakeFirst())?.value??null;let f=u.getSystemFieldDef("published_at",Y),Z=null;if(f)Z=(await p.selectFrom("date_fields").select("value").where("entity_id","=",n).where("field_definition_id","=",f.pk).executeTakeFirst())?.value??null;let A=(await p.selectFrom("entity_content").select("content_text").where("entity_id","=",n).executeTakeFirst())?.content_text??null;return{versionNumber:J,publishedAt:Z,content:A,objectId:W}}}},G$_={create:X92};I2();ku();Uv();s$();ku();Uv();Uv();var N2=Object.freeze({WORD:"WORD",IDENT:"IDENT",PHRASE:"PHRASE",COLON:"COLON",TILDE:"TILDE",COMMA:"COMMA",STAR:"STAR",DASH:"DASH",LPAREN:"LPAREN",RPAREN:"RPAREN",AND:"AND",OR:"OR",NOT:"NOT",UNION:"UNION",INTERSECT:"INTERSECT",BANG_EQ:"BANG_EQ",GTE:"GTE",LTE:"LTE",GT:"GT",LT:"LT",EQ:"EQ",EOF:"EOF"}),H92=(_)=>{let v=[],i=0,u=_.length;while(i<u){if(/\s/.test(_[i])){i++;continue}let c=i;if(_[i]==='"'){i++;let p="",n=!1;while(i<u){if(_[i]==='"'){n=!0,i++;break}p+=_[i++]}if(!n)throw P.validation(`Unclosed quote starting at position ${c}`,"PARSE_ERROR");if(i<u&&!/[\s)"(,]/.test(_[i]))throw P.validation(`Nested quotes not supported at position ${c}`,"PARSE_ERROR");v.push({type:N2.PHRASE,value:p,start:c,end:i});continue}if(_[i]==="!"&&i+1<u&&_[i+1]==="="){v.push({type:N2.BANG_EQ,value:"!=",start:c,end:c+2}),i+=2;continue}if(_[i]===">"&&i+1<u&&_[i+1]==="="){v.push({type:N2.GTE,value:">=",start:c,end:c+2}),i+=2;continue}if(_[i]==="<"&&i+1<u&&_[i+1]==="="){v.push({type:N2.LTE,value:"<=",start:c,end:c+2}),i+=2;continue}if(_[i]===":"){v.push({type:N2.COLON,value:":",start:c,end:c+1}),i++;continue}if(_[i]==="~"){v.push({type:N2.TILDE,value:"~",start:c,end:c+1}),i++;continue}if(_[i]===","){v.push({type:N2.COMMA,value:",",start:c,end:c+1}),i++;continue}if(_[i]==="*"){v.push({type:N2.STAR,value:"*",start:c,end:c+1}),i++;continue}if(_[i]==="-"){v.push({type:N2.DASH,value:"-",start:c,end:c+1}),i++;continue}if(_[i]==="("){v.push({type:N2.LPAREN,value:"(",start:c,end:c+1}),i++;continue}if(_[i]===")"){v.push({type:N2.RPAREN,value:")",start:c,end:c+1}),i++;continue}if(_[i]===">"){v.push({type:N2.GT,value:">",start:c,end:c+1}),i++;continue}if(_[i]==="<"){v.push({type:N2.LT,value:"<",start:c,end:c+1}),i++;continue}if(_[i]==="="){v.push({type:N2.EQ,value:"=",start:c,end:c+1}),i++;continue}if(/[a-zA-Z_]/.test(_[i])){let p="";while(i<u&&/[a-zA-Z0-9_]/.test(_[i]))p+=_[i++];let n=i;if(_[i]===":"&&i+1<u&&_[i+1]==="/"){let K=p;while(i<u&&!/\s/.test(_[i])&&_[i]!==")"&&_[i]!=="(")K+=_[i++];v.push({type:N2.WORD,value:K,start:c,end:i});continue}if(p==="AND"){v.push({type:N2.AND,value:"AND",start:c,end:n});continue}if(p==="OR"){v.push({type:N2.OR,value:"OR",start:c,end:n});continue}if(p==="NOT"){v.push({type:N2.NOT,value:"NOT",start:c,end:n});continue}if(p==="UNION"){v.push({type:N2.UNION,value:"UNION",start:c,end:n});continue}if(p==="INTERSECT"){v.push({type:N2.INTERSECT,value:"INTERSECT",start:c,end:n});continue}if(p==="content"&&i<u&&_[i]==="["){let K=i+1,q="";while(K<u&&_[K]!=="]"&&!/\s/.test(_[K]))q+=_[K++];if(K<u&&_[K]==="]")if(q==="rag"){if(K+1<u&&_[K+1]===":"){i=K+1,v.push({type:N2.IDENT,value:"content[rag]",start:c,end:i});continue}}else if(q==="fts"){let w=K+1,Y="content[fts]";if(w<u&&_[w]==="."){w++;let W="";while(w<u&&/[a-zA-Z_]/.test(_[w]))W+=_[w++];if(W)Y=`content[fts].${W}`}if(w<u&&_[w]===":"){i=w,v.push({type:N2.IDENT,value:Y,start:c,end:i});continue}throw P.validation(`Expected ':' after '${Y}' at position ${c}`,"PARSE_ERROR")}else throw P.validation(`Unrecognized content strategy '[${q}]' at position ${c}. Expected '[fts]' or '[rag]'`,"PARSE_ERROR")}if((_[i]===":"||_[i]==="~")&&!(c>0&&_[c-1]==="-")){v.push({type:N2.IDENT,value:p,start:c,end:n});continue}while(i<u&&!/[\s()"*,]/.test(_[i]))p+=_[i++];v.push({type:N2.WORD,value:p,start:c,end:i});continue}if(/\d/.test(_[i])){let p="";while(i<u&&!/\s/.test(_[i])&&_[i]!==")"&&_[i]!=="("&&_[i]!=='"'&&_[i]!==",")p+=_[i++];v.push({type:N2.WORD,value:p,start:c,end:i});continue}let a="";while(i<u&&!/\s/.test(_[i])&&_[i]!==")"&&_[i]!=="("&&_[i]!=='"'&&_[i]!==",")a+=_[i++];if(a)v.push({type:N2.WORD,value:a,start:c,end:i})}return v.push({type:N2.EOF,value:"",start:u,end:u}),v},A92=(_)=>{let v=0,i=()=>_[v],u=(j)=>_[v].type===j,c=(...j)=>j.includes(_[v].type),a=(j)=>{let T=_[v];if(T.type!==j)throw P.validation(`Expected ${j} but got ${T.type} '${T.value}' at position ${T.start}`,"PARSE_ERROR");return v++,T},p=(j)=>{let T=i();if(u(N2.PHRASE)){if(v++,T.value==="")throw P.validation(`Empty filter value for key '${j}' at position ${T.start}`,"PARSE_ERROR");return T.value}if(u(N2.STAR)){v++;let k="*";if(c(N2.WORD,N2.AND,N2.OR,N2.NOT)){if(k+=i().value,v++,u(N2.STAR))v++,k+="*"}return k}if(u(N2.DASH)){let k=i();if(v++,c(N2.WORD)){let N=i().value;return v++,"-"+N}throw P.validation(`Expected number after '-' in filter value for '${j}' at position ${k.start}`,"PARSE_ERROR")}if(c(N2.WORD,N2.AND,N2.OR,N2.NOT)){let k=T.value;if(v++,u(N2.STAR)){v++;let N=k+"*";if(c(N2.WORD,N2.AND,N2.OR,N2.NOT)){if(N+=i().value,v++,u(N2.STAR))v++,N+="*"}return N}return k}throw P.validation(`Expected filter value for '${j}' at position ${T.start}`,"PARSE_ERROR")},n=(j)=>{let T=[p(j)];while(u(N2.COMMA))v++,T.push(p(j));return T},K=()=>{if(u(N2.BANG_EQ))return v++,"!=";if(u(N2.GTE))return v++,">=";if(u(N2.LTE))return v++,"<=";if(u(N2.GT))return v++,">";if(u(N2.LT))return v++,"<";if(u(N2.EQ))return v++,"=";return null},q=(j)=>w(j),w=(j)=>{let T=i().start,k=Y(j);if(!u(N2.OR))return k;let N=[k];while(u(N2.OR))v++,N.push(Y(j));let D=N[N.length-1].span.end;return{kind:"or",children:N,span:{start:T,end:D}}},Y=(j)=>{let T=i().start,k=z(j);if(!u(N2.AND)&&!W(j))return k;let N=[k];while(u(N2.AND)||W(j)){if(u(N2.AND))v++;N.push(z(j))}let D=N[N.length-1].span.end;return N.length===1?N[0]:{kind:"and",children:N,span:{start:T,end:D}}},W=(j)=>{if(c(N2.EOF,N2.OR,N2.AND,N2.RPAREN,N2.COMMA))return!1;if(u(N2.IDENT))return!1;if(c(N2.BANG_EQ,N2.GTE,N2.LTE,N2.GT,N2.LT,N2.EQ,N2.COLON,N2.TILDE))return!1;if(u(N2.STAR))return!1;if(c(N2.UNION,N2.INTERSECT))return!1;return!0},z=(j)=>{if(u(N2.NOT)){let T=i().start;v++;let k=J(j);return{kind:"not",operand:k,span:{start:T,end:k.span.end}}}if(u(N2.DASH)){let T=i().start;v++;let k=J(j);return{kind:"not",operand:k,span:{start:T,end:k.span.end}}}return J(j)},J=(j)=>{let T=i();if(u(N2.IDENT)){if(j)throw P.validation(`Filter expressions are only allowed at the top level, not inside parentheses at position ${T.start}`,"PARSE_ERROR");throw P.validation(`Unexpected filter key '${T.value}' at position ${T.start} — filters are only allowed at the top level`,"PARSE_ERROR")}if(u(N2.LPAREN)){let k=T.start;v++;let N=q(!0);if(u(N2.IDENT))throw P.validation(`Filter expressions are only allowed at the top level, not inside parentheses at position ${i().start}`,"PARSE_ERROR");let D=a(N2.RPAREN);return{...N,span:{start:k,end:D.end}}}if(u(N2.PHRASE))return v++,{kind:"phrase",value:T.value,span:{start:T.start,end:T.end}};if(u(N2.WORD)){if(v++,u(N2.STAR)){let k=_[v];return v++,{kind:"prefix",value:T.value,span:{start:T.start,end:k.end}}}return{kind:"term",value:T.value,span:{start:T.start,end:T.end}}}throw P.validation(`Unexpected token '${T.value}' (${T.type}) at position ${T.start}`,"PARSE_ERROR")},f=()=>{let j=a(N2.IDENT);if(u(N2.TILDE)){if(v++,u(N2.PHRASE)&&i().value==="")throw P.validation(`Empty FTS filter value for key '${j.value}' at position ${j.start}`,"PARSE_ERROR");if(!W(!1)&&!u(N2.NOT))throw P.validation(`Empty FTS filter value for key '${j.value}' at position ${j.start}`,"PARSE_ERROR");let T=q(!1);return{kind:"text_match",key:j.value,content:T,span:{start:j.start,end:T.span.end}}}if(u(N2.COLON)){v++;let T=K()??"=",k=i();if(!c(N2.WORD,N2.PHRASE,N2.AND,N2.OR,N2.NOT,N2.STAR,N2.DASH))throw P.validation(`Empty filter value for key '${j.value}' at position ${j.start}`,"PARSE_ERROR");let N=n(j.value);return{kind:"cmp",key:j.value,op:T,values:N,span:{start:j.start,end:i().start}}}throw P.validation(`Expected ':' or '~' after filter key '${j.value}' at position ${j.start}`,"PARSE_ERROR")},Z=(j)=>{let T={name:"name",content:"content_text",text_fields:"text_fields",keywords:"keywords"},k=j.indexOf(".");if(k===-1)return{column:null};let N=j.slice(k+1);if(!Object.prototype.hasOwnProperty.call(T,N))throw P.validation(`Invalid column '${N}' for '${j}:'. Valid columns: name, content, text_fields, keywords`,"PARSE_ERROR");return{column:T[N]}},O=()=>{let j=[],T=[],k=null,N=()=>{if(W(!1)||u(N2.NOT)){let V=q(!1);if(V)j.push(V);return!0}return!1};N();while(!u(N2.EOF)){if(u(N2.RPAREN))throw P.validation(`Unexpected ')' at position ${i().start}`,"PARSE_ERROR");if(u(N2.IDENT)){if(i().value.startsWith("content[fts]")){let V=i().value,l=i().start;if(v++,a(N2.COLON),!W(!1)&&!u(N2.NOT))throw P.validation(`Expected content expression after '${V}:' at position ${l}`,"PARSE_ERROR");let{column:s}=Z(V),o=q(!1);if(s)o.ftsColumn=s;j.push(o),N();continue}if(i().value==="content[rag]"){let V=i().start;if(v++,a(N2.COLON),k!==null)throw P.validation(`Duplicate 'content[rag]:' expression at position ${V}`,"PARSE_ERROR");let l=i();if(u(N2.PHRASE)){if(v++,l.value==="")throw P.validation(`Empty RAG query value for 'content[rag]:' at position ${l.start}`,"PARSE_ERROR");k=l.value}else if(u(N2.WORD))v++,k=l.value;else throw P.validation(`Expected RAG query value after 'content[rag]:' at position ${V}`,"PARSE_ERROR");N();continue}T.push(f()),N();continue}break}if(!u(N2.EOF))throw P.validation(`Unexpected token '${i().value}' at position ${i().start}`,"PARSE_ERROR");if(j.length===1&&T.length===0){if(j[0].kind==="not")throw P.validation("Standalone NOT/negation requires a preceding expression","PARSE_ERROR")}let D=null;if(j.length===1)D=j[0];else if(j.length>1){let V=j[0].span.start,l=j[j.length-1].span.end;D={kind:"and",children:j,span:{start:V,end:l}}}let m={content:D,filters:T};if(k!==null)m.ragQuery=k;return m},A=()=>{let j=0;for(let T of _){if(T.type===N2.LPAREN){j++;continue}if(T.type===N2.RPAREN){j--;continue}if(j===0&&(T.type===N2.UNION||T.type===N2.INTERSECT))return!0}return!1},X=()=>{let j=i();if(u(N2.LPAREN))throw P.validation(`Set operators (UNION/INTERSECT) cannot be used inside parentheses at position ${j.start}`,"PARSE_ERROR");if(!u(N2.IDENT))throw P.validation(`UNION/INTERSECT requires qualified content directives (content[fts]: or content[rag]:) on both sides — got '${j.value}' at position ${j.start}`,"PARSE_ERROR");if(j.value.startsWith("content[fts]")){let{value:T,start:k}=j;if(v++,a(N2.COLON),!W(!1)&&!u(N2.NOT))throw P.validation(`Expected content expression after '${T}:' at position ${k}`,"PARSE_ERROR");let{column:N}=Z(T),D=q(!1),m=N??null;if(m)D.ftsColumn=m;return{method:"fts",content:D,ftsColumn:m}}if(j.value==="content[rag]"){let T=j.start;v++,a(N2.COLON);let k=i(),N;if(u(N2.PHRASE)){if(v++,k.value==="")throw P.validation(`Empty RAG query value for 'content[rag]:' at position ${k.start}`,"PARSE_ERROR");N=k.value}else if(u(N2.WORD))v++,N=k.value;else throw P.validation(`Expected RAG query value after 'content[rag]:' at position ${T}`,"PARSE_ERROR");return{method:"rag",ragQuery:N}}throw P.validation(`UNION/INTERSECT requires qualified content directives (content[fts]: or content[rag]:) on both sides — got '${j.value}' at position ${j.start}`,"PARSE_ERROR")};return{parseQuery:O,parseComposedQuery:()=>{let j=X();if(!c(N2.UNION,N2.INTERSECT))throw P.validation(`Expected UNION or INTERSECT after first content directive, got '${i().value}' at position ${i().start}`,"PARSE_ERROR");let T=i().value.toLowerCase();v++;let k=X();if(c(N2.UNION,N2.INTERSECT))throw P.validation(`Multi-arm chaining (more than two arms) is not supported — found '${i().value}' at position ${i().start}`,"PARSE_ERROR");let N=[];while(!u(N2.EOF)){if(u(N2.RPAREN))throw P.validation(`Unexpected ')' at position ${i().start}`,"PARSE_ERROR");if(u(N2.IDENT)){if(i().value.startsWith("content[fts]")||i().value==="content[rag]")throw P.validation(`Unexpected content directive '${i().value}' after second arm at position ${i().start} — only filters are allowed after both arms`,"PARSE_ERROR");N.push(f());continue}break}if(!u(N2.EOF))throw P.validation(`Unexpected token '${i().value}' at position ${i().start}`,"PARSE_ERROR");return{composed:{operator:T,left:j,right:k},filters:N}},hasTopLevelSetOp:A}},j$_=(_)=>{if(!_||_.trim()==="")return{content:null,filters:[]};let v=H92(_),i=A92(v);if(i.hasTopLevelSetOp())return i.parseComposedQuery();return i.parseQuery()},T$_=(_)=>{if(/^[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)+$/.test(_))return!0;if(_.includes(":")&&_.indexOf(":")>0)return!0;return!1},ib=(_)=>_.toLowerCase().replace(/-/g," "),_9=(_,v=0)=>{if(!_)return"";let i;switch(_.kind){case"term":{let{value:u}=_;i=T$_(u)?`"${ib(u)}"`:u;break}case"phrase":i=`"${ib(_.value)}"`;break;case"prefix":{let{value:u}=_;i=T$_(u)?`"${ib(u)}"*`:`${u}*`;break}case"not":i="";break;case"and":{let u=_.children.filter((K)=>K.kind!=="not"),c=_.children.filter((K)=>K.kind==="not");if(c.length===0){let q=_.children.map((w)=>_9(w,2)).join(" AND ");i=v>2?`(${q})`:q;break}if(u.length===0){i="";break}let a=u.map((K)=>_9(K,2)),p;if(u.length===1){let K=u[0];p=K.kind==="and"||K.kind==="or"?`(${a[0]})`:a[0]}else p=`(${a.join(" AND ")})`;let n=p;for(let K of c)n+=` NOT ${_9(K.operand,3)}`;i=v>2?`(${n})`:n;break}case"or":{let c=_.children.map((a)=>_9(a,1)).filter(Boolean).join(" OR ");i=v>1?`(${c})`:c;break}default:i=""}if(_.ftsColumn)return`{${_.ftsColumn}}: (${i})`;return i};var P$_=(_)=>{return/[^a-zA-Z0-9\s]/.test(_)},ub=(_)=>{if(!_)return[];let v=[],i=(u,c)=>{if(!u)return;switch(u.kind){case"phrase":if(!c&&P$_(u.value))v.push(u.value);break;case"not":i(u.operand,!0);break;case"and":case"or":for(let a of u.children)i(a,c);break;default:break}};return i(_,!1),v};s$();var GW=new Set(["s","j","f"]),m$_={s:"statusMessage",j:"errorMessage"},IH=60,V$_=0.45;var Rc=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/;var k$_=(_)=>{let v=[..._].sort((u,c)=>{if(c.score!==u.score)return c.score-u.score;if(u.entityId<c.entityId)return-1;if(u.entityId>c.entityId)return 1;return 0}),i=new Map;for(let u=0;u<v.length;u++)i.set(v[u].entityId,u+1);return i},G92=(_,v,{operator:i,k:u=IH})=>{let c=k$_(_),a=k$_(v),p=i==="UNION"?new Set([...c.keys(),...a.keys()]):new Set([...c.keys()].filter((K)=>a.has(K))),n=[];for(let K of p){let q=0;if(c.has(K))q+=1/(u+c.get(K));if(a.has(K))q+=1/(u+a.get(K));n.push({entityId:K,score:q})}return n.sort((K,q)=>{if(q.score!==K.score)return q.score-K.score;if(K.entityId<q.entityId)return-1;if(K.entityId>q.entityId)return 1;return 0}),n},M$_=Object.freeze({fuse:G92});I2();var x$_=h_.create({namespace:"caw:perf:search"}),N$_=50,TW=200,T92=0.2,BH=new Set(["type","published","draft","store"]),j92=new Set(["document","template","d","t","story","job","s","j","folder","f"]);var D$_=new Set(["true","false"]),P92=new Set(["=",">","<",">=","<=","!="]),m92={document:"d",template:"t",folder:"f",story:"s",job:"j"},V92=["d","t"],k92=async(_,v)=>{if(!v||v.length===0)return;for(let i of v){if(i.kind==="text_match")continue;if(!BH.has(i.key)){if(!i.values||i.values.length===0||!i.values[0])throw P.validation(`Filter '${i.key}' requires a value`,"INVALID_FILTER_VALUE");if(!P92.has(i.op))throw P.validation(`Invalid operator '${i.op}' for filter '${i.key}'`,"INVALID_FILTER_OPERATOR");continue}if(i.key==="type"){if(!i.values||i.values.length===0||!i.values[0])throw P.validation("Filter 'type' requires a value","INVALID_FILTER_VALUE");let u=[];for(let c of i.values){if(!c)throw P.validation("Filter 'type' requires a value","INVALID_FILTER_VALUE");if(c.includes("/"))throw P.validation(`Unknown type: ${c}`,"INVALID_FILTER_VALUE");else if(!j92.has(c)){let a=await o2.resolveSubtype(_,c);if(!a)throw P.validation(`Unknown type: ${c}`,"INVALID_FILTER_VALUE");u.push(a)}else u.push(null)}if(i.values.length===1&&u[0])i.resolvedType=u[0];if(i.values.length>1)i.resolvedTypes=u}if(i.key==="published"){if(i.values.length>1)throw P.validation("Multi-value not supported for 'published' filter","INVALID_FILTER_VALUE");if(!D$_.has(i.values[0]))throw P.validation(`Filter 'published' requires 'true' or 'false', got: ${i.values[0]}`,"INVALID_FILTER_VALUE")}if(i.key==="draft"){if(i.values.length>1)throw P.validation("Multi-value not supported for 'draft' filter","INVALID_FILTER_VALUE");if(!D$_.has(i.values[0]))throw P.validation(`Filter 'draft' requires 'true' or 'false', got: ${i.values[0]}`,"INVALID_FILTER_VALUE")}if(i.key==="store"){let u=i.values[0];if(i.values.length>1)throw P.validation("Cross-store search is not supported","CROSS_STORE_SEARCH_NOT_SUPPORTED");if(u==="all")continue;if(u==="*"||u.includes(","))throw P.validation("Cross-store search is not supported","CROSS_STORE_SEARCH_NOT_SUPPORTED")}}},M92=(_,v)=>{let i=_?.find((u)=>u.key==="store");return i?i.values[0]:v},yH=(_,v)=>{let i=new Set;for(let c of v??[]){if(c.key!=="ancestor")continue;for(let a of c.values??[])if(typeof a==="string"&&a.length>0)i.add(a[0])}if(i.size===0)return _;if(i.size>1)return[];let u=[...i][0];return _.filter((c)=>c===u)},x92=async(_,v,i,u)=>{if(!i||i.length===0||!u)return i;if(!i.some((n)=>n.key==="track"||n.key==="trackId"))return i;let a=null,p=[];for(let n of i)if(n.key==="trackId")p.push({...n,key:"track"});else if(n.key==="track"){if(!a)a=await u.listTracks(_,v,{store:"all"});let K=[];for(let q of n.values){let w=a.filter((Y)=>Y.name===q);for(let Y of w)K.push(Y.id)}if(K.length===0)p.push({...n,values:["__NO_TRACK_MATCH__"]});else p.push({...n,values:K})}else p.push(n);return p},N92=(_)=>{if(!_||_.length===0)return _;if(!_.some((u)=>u.key==="agent"))return _;let i=[];for(let u of _)if(u.key==="agent"){let c=[];for(let a of u.values)for(let p of cu.getSearchValues(a))if(!c.includes(p))c.push(p);i.push({...u,values:c})}else i.push(u);return i},oH=(_)=>/^\d{4}-\d{2}-\d{2}$/.test(_),l$_=(_)=>_.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_"),D92=({store:_,trackService:v,embeddingProvider:i,embeddingStore:u,embeddingOps:c,ragIndexedFieldDefPk:a=null})=>{let p=async(z,J)=>{let f=[],Z=J.filter((G)=>G.key==="type");if(Z.length>0){let G=[];for(let j of Z)for(let T=0;T<j.values.length;T++){let k=j.resolvedTypes&&j.resolvedTypes[T]||(T===0&&j.resolvedType?j.resolvedType:null);if(k){let{code:N,subtype:D}=k;G.push((m)=>m.and([m("e.type_code","=",N),m("entity_types.subtype","=",D)]))}else{let N=m92[j.values[T]]||j.values[T];G.push((D)=>D("e.type_code","=",N))}}if(G.length===1)f.push(G[0]);else f.push((j)=>j.or(G.map((T)=>T(j))))}else f.push((G)=>G("e.type_code","in",V92));let O=J.find((G)=>G.key==="published");if(O){let G=O.values[0]==="true";if(O.op==="!="?!G:G)f.push((T)=>T.exists(T.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("pub_orf.entity_id","=","e.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1)));else f.push((T)=>T.not(T.exists(T.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("pub_orf.entity_id","=","e.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))))}let A=J.find((G)=>G.key==="draft");if(A){let G=A.values[0]==="true";if(A.op==="!="?!G:G)f.push((T)=>T.and([T.exists(T.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf.entity_id","=","e.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1)),T.or([T.not(T.exists(T.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("pub_orf.entity_id","=","e.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))),T.exists(T.selectFrom("obj_ref_fields as draft_orf2").innerJoin("field_definitions as draft_fd2","draft_fd2.id","draft_orf2.field_definition_id").innerJoin("obj_ref_fields as pub_orf2",(k)=>k.onRef("pub_orf2.entity_id","=","e.id")).innerJoin("field_definitions as pub_fd2","pub_fd2.id","pub_orf2.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf2.entity_id","=","e.id").where("draft_fd2.name","=","draft_version").where("draft_fd2.is_system","=",1).where("pub_fd2.name","=","latest_published_version").where("pub_fd2.is_system","=",1).whereRef("draft_orf2.target_entity_id","!=","pub_orf2.target_entity_id"))])]));else f.push((T)=>T.or([T.not(T.exists(T.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf.entity_id","=","e.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1))),T.exists(T.selectFrom("obj_ref_fields as draft_orf3").innerJoin("field_definitions as draft_fd3","draft_fd3.id","draft_orf3.field_definition_id").innerJoin("obj_ref_fields as pub_orf3",(k)=>k.onRef("pub_orf3.entity_id","=","e.id")).innerJoin("field_definitions as pub_fd3","pub_fd3.id","pub_orf3.field_definition_id").select(T.lit(1).as("one")).whereRef("draft_orf3.entity_id","=","e.id").where("draft_fd3.name","=","draft_version").where("draft_fd3.is_system","=",1).where("pub_fd3.name","=","latest_published_version").where("pub_fd3.is_system","=",1).whereRef("draft_orf3.target_entity_id","=","pub_orf3.target_entity_id"))]))}let X=J.filter((G)=>!BH.has(G.key));for(let G of X){if(G.kind==="text_match")continue;let j=TK(G.key);if(j){if(j.primitiveType==="ancestor_ref"){if(G.op!=="=")throw P.validation("Comparison operators not supported for ancestor field","INVALID_FILTER_OPERATOR");if(G.values.length>1)throw P.validation("Multi-value not supported for ancestor field","INVALID_FILTER_VALUE");let k=G.values[0],N=await z.selectFrom("entities").select(["path"]).where("object_id","=",k).where("deleted_at","is",null).executeTakeFirst();if(!N)throw P.notFound(`Entity not found: ${k}`,"ENTITY_NOT_FOUND");if(N.path===null)throw P.validation(`Entity '${k}' does not have a path and cannot be used as an ancestor`,"INVALID_FILTER_VALUE");let m=`${l$_(N.path)}/%`;f.push(()=>C_`e.path LIKE ${m} ESCAPE '\\'`)}else if(j.primitiveType==="string"){let k=j.columnName,N=G.op==="!=",D=G.values.length>1,m=G.values.some((V)=>V.includes("*"));if(G.op!=="="&&G.op!=="!=")throw P.validation(`Range operators not supported for '${G.key}' field`,"INVALID_FILTER_OPERATOR");if(D&&m)throw P.validation(`Multi-value and wildcard cannot be combined for '${G.key}' filter`,"INVALID_FILTER_VALUE");if(m){let V=G.values[0].replace(/\*/g,"%");if(N)f.push((l)=>l(`e.${k}`,"not like",V));else f.push((l)=>l(`e.${k}`,"like",V))}else if(D)if(N)f.push((V)=>V(`e.${k}`,"not in",G.values));else f.push((V)=>V(`e.${k}`,"in",G.values));else if(N)f.push((V)=>V(`e.${k}`,"!=",G.values[0]));else f.push((V)=>V(`e.${k}`,"=",G.values[0]))}else if(j.primitiveType==="object_ref")f.push((k)=>k("e.parent_object_id","=",G.values[0]));else if(j.primitiveType==="date"){if(G.values.length>1)throw P.validation(`Multi-value not supported for '${G.key}' field`,"INVALID_FILTER_VALUE");let k=G.values[0];if(!Rc.test(k))throw P.validation(`Invalid date format '${k}' for filter '${G.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");let N=C_.ref(`e.${j.name}`);if(G.op==="="&&oH(k))f.push((D)=>D(C_`date(${N})`,"=",k));else f.push((D)=>D(C_`datetime(${N})`,G.op,C_`datetime(${k})`))}else if(j.primitiveType==="path_string"){if(G.op!=="="&&G.op!=="!=")throw P.validation(`Range operators not supported for '${G.key}' field`,"INVALID_FILTER_OPERATOR");for(let m of G.values)if(m===""||m===void 0||m===null)throw P.validation(`Empty value not allowed for '${G.key}' filter`,"INVALID_FILTER_VALUE");let k=C_.ref("e.path"),N=G.op==="!=",D=G.values.map((m)=>l$_(m).replace(/\*/g,"%"));f.push((m)=>{let V=D.map((l)=>N?C_`${k} COLLATE NOCASE NOT LIKE ${l} COLLATE NOCASE ESCAPE '\\'`:C_`${k} COLLATE NOCASE LIKE ${l} COLLATE NOCASE ESCAPE '\\'`);if(V.length===1)return V[0];return N?m.and(V):m.or(V)})}continue}let T=await z.selectFrom("field_definitions").select(["id","primitive_type"]).where("name","=",G.key).where("owner_entity_id","is",null).executeTakeFirst();if(!T){f.push((k)=>k.lit(!1));continue}switch(T.primitive_type){case"string":{if(G.op!=="="&&G.op!=="!=")throw P.validation("Comparison operators not supported for string fields","INVALID_FILTER_OPERATOR");if(G.op==="!="){let N=G.values[0];f.push((D)=>D.not(D.exists(D.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(D.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("sf.value","=",N))));break}if(G.values.length>1){f.push((N)=>N.exists(N.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(N.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("sf.value","in",G.values)));break}let k=G.values[0];if(k.includes("*")){let N=k.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_").replace(/\*/g,"%");f.push((D)=>D.exists(D.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(D.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value LIKE ${N} ESCAPE '\\'`)))}else f.push((N)=>N.exists(N.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(N.lit(1).as("one")).whereRef("sf.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("sf.value","=",k)));break}case"text":{if(G.op!=="=")throw P.validation("Text fields only support = (equality) operator","INVALID_FILTER_OPERATOR");f.push((k)=>k.exists(k.selectFrom("text_fields as tf").innerJoin("field_definitions as fd","fd.id","tf.field_definition_id").select(k.lit(1).as("one")).whereRef("tf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("tf.value","=",G.values[0])));break}case"object_ref":{if(G.op!=="="&&G.op!=="!=")throw P.validation("Comparison operators not supported for object_ref fields","INVALID_FILTER_OPERATOR");if(G.op==="!="){f.push((k)=>k.not(k.exists(k.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(k.lit(1).as("one")).whereRef("orf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",G.values[0]))));break}if(G.values.length>1){f.push((k)=>k.exists(k.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(k.lit(1).as("one")).whereRef("orf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","in",G.values)));break}f.push((k)=>k.exists(k.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(k.lit(1).as("one")).whereRef("orf.entity_id","=","e.id").where("fd.name","=",G.key).where((N)=>N.or([C_`fd.store_id = e.store_id`,N("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",G.values[0])));break}case"int":{if(G.values.length>1){if(G.op!=="=")throw P.validation(`Multi-value not supported for '${G.op}' operator on filter '${G.key}'`,"INVALID_FILTER_VALUE");let D=G.values.map((m)=>{let V=parseInt(m,10);if(isNaN(V)||!Number.isInteger(V)||String(V)!==m)throw P.validation(`Invalid integer value '${m}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");return V});f.push((m)=>m.exists(m.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(m.lit(1).as("one")).whereRef("inf.entity_id","=","e.id").where("fd.name","=",G.key).where((V)=>V.or([C_`fd.store_id = e.store_id`,V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","in",D)));break}let k=G.values[0],N=parseInt(k,10);if(isNaN(N)||!Number.isInteger(N)||String(N)!==k)throw P.validation(`Invalid integer value '${k}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");if(G.op==="!="){f.push((D)=>D.not(D.exists(D.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(D.lit(1).as("one")).whereRef("inf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","=",N))));break}f.push((D)=>D.exists(D.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(D.lit(1).as("one")).whereRef("inf.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value",G.op,N)));break}case"float":{if(G.values.length>1){if(G.op!=="=")throw P.validation(`Multi-value not supported for '${G.op}' operator on filter '${G.key}'`,"INVALID_FILTER_VALUE");let D=G.values.map((m)=>{let V=parseFloat(m);if(isNaN(V)||!isFinite(V))throw P.validation(`Invalid numeric value '${m}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");return V});f.push((m)=>m.exists(m.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(m.lit(1).as("one")).whereRef("ff.entity_id","=","e.id").where("fd.name","=",G.key).where((V)=>V.or([C_`fd.store_id = e.store_id`,V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","in",D)));break}let k=G.values[0],N=parseFloat(k);if(isNaN(N)||!isFinite(N))throw P.validation(`Invalid numeric value '${k}' for filter '${G.key}'`,"INVALID_FILTER_VALUE");if(G.op==="!="){f.push((D)=>D.not(D.exists(D.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(D.lit(1).as("one")).whereRef("ff.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","=",N))));break}f.push((D)=>D.exists(D.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(D.lit(1).as("one")).whereRef("ff.entity_id","=","e.id").where("fd.name","=",G.key).where((m)=>m.or([C_`fd.store_id = e.store_id`,m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value",G.op,N)));break}case"date":{if(G.values.length>1){if(G.op!=="=")throw P.validation(`Multi-value not supported for '${G.op}' operator on filter '${G.key}'`,"INVALID_FILTER_VALUE");for(let N of G.values)if(!Rc.test(N))throw P.validation(`Invalid date format '${N}' for filter '${G.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");f.push((N)=>N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where((D)=>D.or(G.values.map((m)=>oH(m)?D(C_`date(df.value)`,"=",m):D(C_`datetime(df.value)`,"=",C_`datetime(${m})`))))));break}let k=G.values[0];if(!Rc.test(k))throw P.validation(`Invalid date format '${k}' for filter '${G.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");if(G.op==="!="){if(oH(k))f.push((N)=>N.not(N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",k))));else f.push((N)=>N.not(N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,"=",C_`datetime(${k})`))));break}if(G.op==="="&&oH(k)){f.push((N)=>N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",k)));break}f.push((N)=>N.exists(N.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(N.lit(1).as("one")).whereRef("df.entity_id","=","e.id").where("fd.name","=",G.key).where((D)=>D.or([C_`fd.store_id = e.store_id`,D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,G.op,C_`datetime(${k})`)));break}default:f.push((k)=>k.lit(!1))}}return f},n=async(z,{storeId:J,storeEntityId:f}={})=>{if(!c)return{status:"unavailable",indexedEntityCount:0,lastError:null,totalEntityCount:null,progress:null,storeEntityId:f??null,needsIndexingCount:0};let Z=Date.now();try{let O=await c.readStoreField(J,"embeddingState"),A=await c.readStoreField(J,"embeddingError"),X=await c.countNeedsIndexing(J),G=0;try{let k=z.selectFrom("search_embedding_chunks").innerJoin("entities","entities.id","search_embedding_chunks.entity_id").select(C_`COUNT(DISTINCT search_embedding_chunks.entity_id)`.as("count")).where("search_embedding_chunks.target","=","all");if(J!==void 0)k=k.where("entities.store_id","=",J);let N=await k.where("entities.deleted_at","is",null).executeTakeFirst();G=Number(N?.count??0)}catch{}let j=null;if(a)try{let k=z.selectFrom("string_fields").innerJoin("entities","entities.id","string_fields.entity_id").select(C_`COUNT(*)`.as("count")).where("string_fields.field_definition_id","=",a).where("string_fields.value","=","true").where("entities.deleted_at","is",null);if(J!==void 0)k=k.where("entities.store_id","=",J);let N=await k.executeTakeFirst();j=Number(N?.count??0)}catch{}let T=O??"ready";if(T==="error")return{status:"error",indexedEntityCount:G,lastError:A||null,totalEntityCount:j,progress:null,storeEntityId:f??null,needsIndexingCount:X};if(T==="indexing"){let k=c.getProgress(J),N=k?G+k.indexed:G,D=j>0?Math.round(N/j*100):null;return{status:"indexing",indexedEntityCount:N,totalEntityCount:j,progress:D,lastError:null,storeEntityId:f??null,needsIndexingCount:X}}if(X>0)return{status:"stale",indexedEntityCount:G,lastError:null,totalEntityCount:j,progress:null,storeEntityId:f??null,needsIndexingCount:X};return{status:"ready",indexedEntityCount:G,lastError:null,totalEntityCount:j,progress:null,storeEntityId:f??null,needsIndexingCount:X}}catch(O){return{status:"unavailable",indexedEntityCount:0,lastError:O.message,totalEntityCount:null,progress:null,storeEntityId:f??null,needsIndexingCount:null}}finally{let O=Date.now()-Z;if(O>N$_)x$_.warn("PERF_SEARCH op=embeddingStatus duration=%d",O)}},K=async(z,J,{queryText:f,filters:Z,limit:O,offset:A,effectiveStoreCode:X})=>{let G=null;if(X&&X!=="all"){let t=(_.getChildren?_.getChildren():[]).find((i_)=>i_.getCode&&i_.getCode()===X);if(t&&t.getPk)G=[t.getPk()]}let T=(await i.embed([f]))[0],k=await u.searchByVector(T,G?{storeIds:G}:{});if(k.length===0)return{results:[],total:0,debug:{strategy:"rag",message:"No embeddings found. Run reindex_embeddings to populate the embedding index."}};let N=k.filter((I)=>I.similarity>=V$_);if(N.length===0)return{results:[],total:0,debug:{strategy:"rag"}};let D=new Map;for(let I of N)D.set(I.entityPk,I);let m=N.map((I)=>I.entityPk),V=await p(z,Z),l=z.selectFrom("entities as e").leftJoin("entity_types","entity_types.id","e.entity_type_id").select(["e.id as entityPk","e.object_id as objectId","e.name","e.path","e.type_code as typeCode","entity_types.subtype"]).where("e.id","in",m).where("e.deleted_at","is",null);for(let I of V)l=l.where(I);let s=await l.execute();if(s.length===0)return{results:[],total:0,debug:{strategy:"rag"}};let o=s.map((I)=>{let t=D.get(I.entityPk);return{entityId:I.objectId,name:I.name,path:I.path,score:Math.max(0,t.similarity),snippet:t.chunkText,snippetSource:"semantic",matchMethod:"rag",type:I.typeCode,subtype:I.subtype||null}}).sort((I,t)=>t.score-I.score),C=o.length;return{results:o.slice(A,A+O),total:C,debug:{strategy:"rag"}}},q=async(z,J,f,Z,O,A,X)=>{let G=_9(f.content),j=ub(f.content);if(Z==="all"){let k=yH([..._.getCodes()],O),N=[];for(let D of k){let m=await _.searchContent(z,J,{query:G,filters:O,startMarker:A,endMarker:X,storeCode:D,literals:j,armMode:!0,armLimit:TW});N.push(...m.results)}return N}return(await _.searchContent(z,J,{query:G,filters:O,startMarker:A,endMarker:X,storeCode:Z,literals:j,armMode:!0,armLimit:TW})).results},w=async(z,J,f,Z,O)=>{if(!i||!u)throw P.validation("RAG arms require the embedding system to be enabled. Embeddings are not available in this environment.","EMBEDDINGS_NOT_AVAILABLE");let A=null,X=(o)=>{let g=(_.getChildren?_.getChildren():[]).find((I)=>I.getCode&&I.getCode()===o);return g&&g.getPk?g.getPk():null};if(Z&&Z!=="all"){let o=X(Z);if(o!==null)A=[o]}else if(Z==="all"){let o=[..._.getCodes()],C=yH(o,O);if(C.length===0)return{results:[],rawResultCount:0};if(C.length!==o.length)A=C.map(X).filter((g)=>g!==null)}let j=(await i.embed([f.ragQuery]))[0],T=await u.searchByVector(j,A?{storeIds:A}:{});if(T.length===0)return{results:[],rawResultCount:0};let k=T.filter((o)=>o.similarity>=T92);if(k.length===0)return{results:[],rawResultCount:T.length};let N=new Map;for(let o of k)N.set(o.entityPk,o);let D=k.map((o)=>o.entityPk),m=await p(z,O),V=z.selectFrom("entities as e").leftJoin("entity_types","entity_types.id","e.entity_type_id").select(["e.id as entityPk","e.object_id as objectId","e.name","e.path","e.type_code as typeCode","entity_types.subtype"]).where("e.id","in",D).where("e.deleted_at","is",null);for(let o of m)V=V.where(o);let l=await V.execute();if(l.length===0)return{results:[],rawResultCount:T.length};return{results:l.map((o)=>{let C=N.get(o.entityPk);return{entityId:o.objectId,name:o.name,path:o.path,score:Math.max(0,C.similarity),snippet:C.chunkText,snippetSource:"semantic",matchMethod:"rag",type:o.typeCode,subtype:o.subtype||null}}).sort((o,C)=>C.score-o.score).slice(0,TW),rawResultCount:T.length}},Y=async(z,J,{composed:f,filters:Z,effectiveStoreCode:O,limit:A,offset:X,startMarker:G,endMarker:j})=>{let{operator:T,left:k,right:N}=f;for(let L_ of[k,N]){if(L_.method!=="fts"&&L_.method!=="rag")throw P.validation(`Invalid arm method '${L_.method}': must be 'fts' or 'rag'`,"INVALID_COMPOSED_ARM");if(L_.method==="fts"&&!L_.content)throw P.validation("FTS arm requires a content node","INVALID_COMPOSED_ARM");if(L_.method==="rag"&&!L_.ragQuery)throw P.validation("RAG arm requires a ragQuery string","INVALID_COMPOSED_ARM")}let D=Z.filter((L_)=>L_.key!=="store"),[m,V]=await Promise.all([k.method==="fts"?q(z,J,k,O,D,G,j):w(z,J,k,O,D),N.method==="fts"?q(z,J,N,O,D,G,j):w(z,J,N,O,D)]),l=Array.isArray(m)?m:m.results,s=Array.isArray(V)?V:V.results,o=Array.isArray(m)?void 0:m.rawResultCount,C=Array.isArray(V)?void 0:V.rawResultCount,g=new Map,I=new Map;for(let L_ of l){if(!I.has(L_.entityId))I.set(L_.entityId,{name:L_.name,path:L_.path,type:L_.type,subtype:L_.subtype,snippet:L_.snippet,snippetSource:L_.snippetSource??null,matchMethod:L_.matchMethod??null});if(k.method==="fts")g.set(L_.entityId,{snippet:L_.snippet,snippetSource:L_.snippetSource??null})}for(let L_ of s){if(!I.has(L_.entityId))I.set(L_.entityId,{name:L_.name,path:L_.path,type:L_.type,subtype:L_.subtype,snippet:L_.snippet,snippetSource:L_.snippetSource??null,matchMethod:L_.matchMethod??null});if(N.method==="fts")g.set(L_.entityId,{snippet:L_.snippet,snippetSource:L_.snippetSource??null})}for(let[L_,r_]of I)if(g.has(L_)){let T2=g.get(L_);r_.snippet=T2.snippet,r_.snippetSource=T2.snippetSource,r_.matchMethod="fts"}let t=(L_)=>L_.map((r_)=>({entityId:r_.entityId,score:-r_.score})),i_=(L_)=>L_.map((r_)=>({entityId:r_.entityId,score:r_.score})),u_=k.method==="fts"?t(l):i_(l),w_=N.method==="fts"?t(s):i_(s),q_=M$_.fuse(u_,w_,{operator:T.toUpperCase(),k:IH}),z_=q_.length,D_=q_.slice(X,X+A).map(({entityId:L_,score:r_})=>{let T2=I.get(L_)??{};return{entityId:L_,name:T2.name??null,path:T2.path??null,score:r_,snippet:T2.snippet??"",snippetSource:T2.snippetSource??null,matchMethod:T2.matchMethod??null,type:T2.type??null,subtype:T2.subtype??null}}),g_=l.length>=TW||s.length>=TW,b_=(L_,r_,T2)=>{let m_={method:L_.method,resultCount:r_.length};if(T2!==void 0)m_.rawResultCount=T2;return m_};return{results:D_,total:z_,debug:{strategy:"composed",operator:T,arms:[b_(k,l,o),b_(N,s,C)],composedResultCount:z_,fusionMethod:"rrf",truncated:g_}}};return Object.freeze({search:async(z,J,{query:f,limit:Z=20,offset:O=0,startMarker:A="<mark>",endMarker:X="</mark>",storeCode:G})=>{let j=Date.now();if(Z!==void 0&&(!Number.isInteger(Z)||Z<1))throw P.validation("Limit must be a positive integer","INVALID_LIMIT");if(O!==void 0&&(!Number.isInteger(O)||O<0))throw P.validation("Offset must be a non-negative integer","INVALID_OFFSET");let k=j$_(f&&typeof f==="string"?f:"");await k92(z,k.filters);let N=k.filters.filter((u_)=>u_.key==="type");if(k.filters.some((u_)=>u_.key==="published"||u_.key==="draft")&&N.length>0){let u_={document:"d",template:"t",story:"s",job:"j",folder:"f"};if(N.some((q_)=>{let z_=q_.resolvedTypes||(q_.resolvedType?[q_.resolvedType]:q_.values.map(()=>null));return q_.values.some((A_,D_)=>{let g_=z_[D_]?.code??(u_[A_]||A_);return GW.has(g_)})}))throw P.validation("published and draft filters cannot be combined with non-versioned types (story, job, folder)","INVALID_FILTER_COMBINATION")}let m=_9(k.content),V=ub(k.content),l=M92(k.filters,G),s=await x92(z,J,k.filters,v),o=N92(s),C;if(l&&l!=="all"){let w_=(_.getChildren?_.getChildren():[]).find((q_)=>q_.getCode&&q_.getCode()===l);if(w_&&w_.getPk)C=w_.getPk()}let g=n(z,{storeId:C}),I;if(k.composed)I=await Y(z,J,{composed:k.composed,filters:o,effectiveStoreCode:l,limit:Z,offset:O,startMarker:A,endMarker:X});else{if(k.ragQuery&&k.content)throw P.validation('Cannot combine FTS content terms with content[rag]: in the same query. Use content[rag]:"query" for semantic search, or bare terms for keyword search.',"INVALID_QUERY");if(k.ragQuery){if(o.some((w_)=>w_.kind==="text_match"))throw P.validation("Tilde (~) field filters are FTS-based and cannot be combined with content[rag]: queries.","INVALID_QUERY")}if(!m&&!k.ragQuery&&(!k.filters||k.filters.length===0))throw P.validation("Search query is required","INVALID_QUERY");if(k.ragQuery){if(!i||!u)throw P.validation("content[rag]: queries require the embedding system to be enabled. Embeddings are not available in this environment.","EMBEDDINGS_NOT_AVAILABLE");I=await K(z,J,{queryText:k.ragQuery,filters:o,limit:Z,offset:O,effectiveStoreCode:l})}else if(l==="all"){let u_=yH([..._.getCodes()],o);if(u_.length===0)I={results:[],total:0,debug:{strategy:"ancestor-cross-store-empty"}};else{let w_=await _.searchContent(z,J,{query:m,filters:o,limit:Z,offset:O,startMarker:A,endMarker:X,storeCode:u_[0],literals:V}),q_=w_.total,z_=[...w_.results],A_=q_;for(let D_=1;D_<u_.length;D_++){let g_=u_[D_],b_=Z-z_.length;if(O>=q_){let L_=await _.searchContent(z,J,{query:m,filters:o,limit:Z,offset:O-q_,startMarker:A,endMarker:X,storeCode:g_,literals:V});A_+=L_.total,z_.push(...L_.results)}else if(b_>0){let L_=await _.searchContent(z,J,{query:m,filters:o,limit:b_,offset:0,startMarker:A,endMarker:X,storeCode:g_,literals:V});A_+=L_.total,z_.push(...L_.results)}else{let L_=await _.searchContent(z,J,{query:m,filters:o,limit:1,offset:0,startMarker:A,endMarker:X,storeCode:g_,literals:V});A_+=L_.total}}I={results:z_,total:A_,debug:w_.debug}}}else if(yH([l],o).length===0)I={results:[],total:0,debug:{strategy:"ancestor-cross-store-empty"}};else I=await _.searchContent(z,J,{query:m,filters:o,limit:Z,offset:O,startMarker:A,endMarker:X,storeCode:l,literals:V})}let t=await g,i_=Date.now()-j;if(i_>N$_)x$_.warn("PERF_SEARCH op=search strategy=%s duration=%d",I.debug.strategy,i_);return{...I,embeddingStatus:t}},computeEmbeddingStatus:n})};var h$_=Object.freeze({create:D92});var $b=h_.create({namespace:"caw:stores:db:search"}),cb={document:"d",template:"t",folder:"f",story:"s",job:"j"},l92=["d","t"],R$_={0:"name",1:"content_text",2:"text_fields",3:"keywords"},UH=(_)=>/^\d{4}-\d{2}-\d{2}$/.test(_);var h92=(_)=>_.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_"),R92=({storePk:_,storeCode:v,pathOps:i,fieldOps:u})=>{let c=(T)=>{if(T.resolvedType){let{code:k,subtype:N}=T.resolvedType;return{clause:(D)=>D.and([D("doc.type_code","=",k),D("entity_types.subtype","=",N)]),needsEntityTypesJoin:!0}}else{let k=cb[T.values[0]]||T.values[0];return{clause:(N)=>N("doc.type_code","=",k),needsEntityTypesJoin:!1}}},a=(T)=>{if(T.values.length>1)throw P.validation("Multi-value not supported for 'published' filter","INVALID_FILTER_VALUE");let k=T.values[0]==="true";if(T.op==="!="?!k:k)return{clause:(D)=>D.exists(D.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("pub_orf.entity_id","=","doc.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))};else return{clause:(D)=>D.not(D.exists(D.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("pub_orf.entity_id","=","doc.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1)))}},p=(T)=>{if(T.values.length>1)throw P.validation("Multi-value not supported for 'draft' filter","INVALID_FILTER_VALUE");let k=T.values[0]==="true";if(T.op==="!="?!k:k)return{clause:(D)=>D.and([D.exists(D.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf.entity_id","=","doc.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1)),D.or([D.not(D.exists(D.selectFrom("obj_ref_fields as pub_orf").innerJoin("field_definitions as pub_fd","pub_fd.id","pub_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("pub_orf.entity_id","=","doc.id").where("pub_fd.name","=","latest_published_version").where("pub_fd.is_system","=",1))),D.exists(D.selectFrom("obj_ref_fields as draft_orf2").innerJoin("field_definitions as draft_fd2","draft_fd2.id","draft_orf2.field_definition_id").innerJoin("obj_ref_fields as pub_orf2",(m)=>m.onRef("pub_orf2.entity_id","=","doc.id")).innerJoin("field_definitions as pub_fd2","pub_fd2.id","pub_orf2.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf2.entity_id","=","doc.id").where("draft_fd2.name","=","draft_version").where("draft_fd2.is_system","=",1).where("pub_fd2.name","=","latest_published_version").where("pub_fd2.is_system","=",1).whereRef("draft_orf2.target_entity_id","!=","pub_orf2.target_entity_id"))])])};else return{clause:(D)=>D.or([D.not(D.exists(D.selectFrom("obj_ref_fields as draft_orf").innerJoin("field_definitions as draft_fd","draft_fd.id","draft_orf.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf.entity_id","=","doc.id").where("draft_fd.name","=","draft_version").where("draft_fd.is_system","=",1))),D.exists(D.selectFrom("obj_ref_fields as draft_orf3").innerJoin("field_definitions as draft_fd3","draft_fd3.id","draft_orf3.field_definition_id").innerJoin("obj_ref_fields as pub_orf3",(m)=>m.onRef("pub_orf3.entity_id","=","doc.id")).innerJoin("field_definitions as pub_fd3","pub_fd3.id","pub_orf3.field_definition_id").select(D.lit(1).as("one")).whereRef("draft_orf3.entity_id","=","doc.id").where("draft_fd3.name","=","draft_version").where("draft_fd3.is_system","=",1).where("pub_fd3.name","=","latest_published_version").where("pub_fd3.is_system","=",1).whereRef("draft_orf3.target_entity_id","=","pub_orf3.target_entity_id"))])}},n=(T,k)=>{if(T.op==="!="){if(T.values.length>1)return{clause:(V)=>V.not(V.exists(V.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(V.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`LOWER(sf.value)`,"in",T.values.map((l)=>l.toLowerCase()))))};let m=T.values[0];return{clause:(V)=>V.not(V.exists(V.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(V.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value COLLATE NOCASE`,"=",m)))}}if(T.values.length>1)return{clause:(m)=>m.exists(m.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(m.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`LOWER(sf.value)`,"in",T.values.map((V)=>V.toLowerCase())))};let N=T.values[0];if(N.includes("*")){let m=N.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_").replace(/\*/g,"%");return{clause:(V)=>V.exists(V.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(V.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value LIKE ${m} ESCAPE '\\'`))}}return{clause:(m)=>m.exists(m.selectFrom("string_fields as sf").innerJoin("field_definitions as fd","fd.id","sf.field_definition_id").select(m.lit(1).as("one")).whereRef("sf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`sf.value COLLATE NOCASE`,"=",N))}},K=(T,k)=>{return{clause:(N)=>N.exists(N.selectFrom("text_fields as tf").innerJoin("field_definitions as fd","fd.id","tf.field_definition_id").select(N.lit(1).as("one")).whereRef("tf.entity_id","=","doc.id").where("fd.name","=",T.key).where((D)=>D.or([D("fd.store_id","=",k),D("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("tf.value","=",T.values[0]))}},q=(T,k,N,D)=>{if(!N?.isVersionScoped){if(T.op==="!="){let V=T.values[0];return{clause:(l)=>l.not(l.exists(l.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(l.lit(1).as("one")).whereRef("orf.entity_id","=","doc.id").where("fd.name","=",T.key).where((s)=>s.or([s("fd.store_id","=",k),s("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",V)))}}if(T.values.length>1)return{clause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","in",T.values))};return{clause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ref_ent.object_id","=",T.values[0]))}}let m=N.id;if(T.op==="!="){let V=T.values[0];return{filtersOnlyClause:(l)=>l("doc.id","not in",l.selectFrom("obj_ref_fields as lpv").innerJoin("obj_ref_fields as orf","orf.entity_id","lpv.target_entity_id").select("lpv.entity_id").where("lpv.field_definition_id","in",D).where("orf.field_definition_id","=",m).where("orf.target_entity_id","=",l.selectFrom("entities").select("id").where("store_id","=",k).where("object_id","=",V).where("deleted_at","is",null))),ftsFirstClause:(l)=>l.not(l.exists(l.selectFrom("obj_ref_fields as orf").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(l.lit(1).as("one")).whereRef("orf.entity_id","=","ver.id").where("orf.field_definition_id","=",m).where("ref_ent.object_id","=",V).where("ref_ent.deleted_at","is",null)))}}if(T.values.length>1)return{filtersOnlyClause:(V)=>V("doc.id","in",V.selectFrom("obj_ref_fields as lpv").innerJoin("obj_ref_fields as orf","orf.entity_id","lpv.target_entity_id").select("lpv.entity_id").where("lpv.field_definition_id","in",D).where("orf.field_definition_id","=",m).where("orf.target_entity_id","in",V.selectFrom("entities").select("id").where("store_id","=",k).where("object_id","in",T.values).where("deleted_at","is",null))),ftsFirstClause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","ver.id").where("orf.field_definition_id","=",m).where("ref_ent.object_id","in",T.values).where("ref_ent.deleted_at","is",null))};return{filtersOnlyClause:(V)=>V("doc.id","in",V.selectFrom("obj_ref_fields as lpv").innerJoin("obj_ref_fields as orf","orf.entity_id","lpv.target_entity_id").select("lpv.entity_id").where("lpv.field_definition_id","in",D).where("orf.field_definition_id","=",m).where("orf.target_entity_id","=",V.selectFrom("entities").select("id").where("store_id","=",k).where("object_id","=",T.values[0]).where("deleted_at","is",null))),ftsFirstClause:(V)=>V.exists(V.selectFrom("obj_ref_fields as orf").innerJoin("entities as ref_ent","ref_ent.id","orf.target_entity_id").select(V.lit(1).as("one")).whereRef("orf.entity_id","=","ver.id").where("orf.field_definition_id","=",m).where("ref_ent.object_id","=",T.values[0]).where("ref_ent.deleted_at","is",null))}},w=(T,k)=>{if(T.values.length>1){if(T.op!=="=")throw P.validation(`Multi-value not supported for '${T.op}' operator on filter '${T.key}'`,"INVALID_FILTER_VALUE");let m=T.values.map((V)=>{let l=parseInt(V,10);if(isNaN(l)||!Number.isInteger(l)||String(l)!==V)throw P.validation(`Invalid integer value '${V}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");return l});return{clause:(V)=>V.exists(V.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(V.lit(1).as("one")).whereRef("inf.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","in",m))}}let N=T.values[0],D=parseInt(N,10);if(isNaN(D)||!Number.isInteger(D)||String(D)!==N)throw P.validation(`Invalid integer value '${N}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");if(T.op==="!=")return{clause:(m)=>m.not(m.exists(m.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(m.lit(1).as("one")).whereRef("inf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value","=",D)))};return{clause:(m)=>m.exists(m.selectFrom("int_fields as inf").innerJoin("field_definitions as fd","fd.id","inf.field_definition_id").select(m.lit(1).as("one")).whereRef("inf.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("inf.value",T.op,D))}},Y=(T,k)=>{if(T.values.length>1){if(T.op!=="=")throw P.validation(`Multi-value not supported for '${T.op}' operator on filter '${T.key}'`,"INVALID_FILTER_VALUE");let m=T.values.map((V)=>{let l=parseFloat(V);if(isNaN(l)||!isFinite(l))throw P.validation(`Invalid numeric value '${V}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");return l});return{clause:(V)=>V.exists(V.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(V.lit(1).as("one")).whereRef("ff.entity_id","=","doc.id").where("fd.name","=",T.key).where((l)=>l.or([l("fd.store_id","=",k),l("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","in",m))}}let N=T.values[0],D=parseFloat(N);if(isNaN(D)||!isFinite(D))throw P.validation(`Invalid numeric value '${N}' for filter '${T.key}'`,"INVALID_FILTER_VALUE");if(T.op==="!=")return{clause:(m)=>m.not(m.exists(m.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(m.lit(1).as("one")).whereRef("ff.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value","=",D)))};return{clause:(m)=>m.exists(m.selectFrom("float_fields as ff").innerJoin("field_definitions as fd","fd.id","ff.field_definition_id").select(m.lit(1).as("one")).whereRef("ff.entity_id","=","doc.id").where("fd.name","=",T.key).where((V)=>V.or([V("fd.store_id","=",k),V("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where("ff.value",T.op,D))}},W=(T,k)=>{if(T.values.length>1){if(T.op!=="=")throw P.validation(`Multi-value not supported for '${T.op}' operator on filter '${T.key}'`,"INVALID_FILTER_VALUE");for(let D of T.values)if(!Rc.test(D))throw P.validation(`Invalid date format '${D}' for filter '${T.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");return{clause:(D)=>D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where((m)=>m.or(T.values.map((V)=>UH(V)?m(C_`date(df.value)`,"=",V):m(C_`datetime(df.value)`,"=",C_`datetime(${V})`)))))}}let N=T.values[0];if(!Rc.test(N))throw P.validation(`Invalid date format '${N}' for filter '${T.key}'. Expected ISO 8601`,"INVALID_FILTER_VALUE");if(T.op==="!=")if(UH(N))return{clause:(D)=>D.not(D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",N)))};else return{clause:(D)=>D.not(D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,"=",C_`datetime(${N})`)))};if(T.op==="="&&UH(N))return{clause:(D)=>D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`date(df.value)`,"=",N))};return{clause:(D)=>D.exists(D.selectFrom("date_fields as df").innerJoin("field_definitions as fd","fd.id","df.field_definition_id").select(D.lit(1).as("one")).whereRef("df.entity_id","=","doc.id").where("fd.name","=",T.key).where((m)=>m.or([m("fd.store_id","=",k),m("fd.store_id","is",null)])).where("fd.owner_entity_id","is",null).where(C_`datetime(df.value)`,T.op,C_`datetime(${N})`))}},z=async(T,k,N)=>{let D=await T.selectFrom("field_definitions").select(["id","primitive_type",C_`EXISTS (
|
|
834
834
|
SELECT 1 FROM class_field_defs AS cfd
|
|
835
835
|
JOIN entity_types AS et ON et.id = cfd.class_type_id
|
|
836
836
|
WHERE cfd.field_definition_id = field_definitions.id
|