@contractspec/app.cli-contractspec 1.46.0 → 1.46.1

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/bun/cli.js CHANGED
@@ -1329,7 +1329,7 @@ Values:
1329
1329
  deps: ${J}}`};var px1={keyword:"dependencies",type:"object",schemaType:"object",error:LH6.error,code($){let[X,J]=ix1($);wH6($,X),OH6($,J)}};function ix1({schema:$}){let X={},J={};for(let W in $){if(W==="__proto__")continue;let G=Array.isArray($[W])?X:J;G[W]=$[W]}return[X,J]}function wH6($,X=$.schema){let{gen:J,data:W,it:G}=$;if(Object.keys(X).length===0)return;let B=J.let("missing");for(let F in X){let A=X[F];if(A.length===0)continue;let I=(0,dQ0.propertyInData)(J,W,F,G.opts.ownProperties);if($.setParams({property:F,depsCount:A.length,deps:A.join(", ")}),G.allErrors)J.if(I,()=>{for(let E of A)(0,dQ0.checkReportMissingProp)($,E)});else J.if(tQ$._`${I} && (${(0,dQ0.checkMissingProp)($,A,B)})`),(0,dQ0.reportMissingProp)($,B),J.else()}}LH6.validatePropertyDeps=wH6;function OH6($,X=$.schema){let{gen:J,data:W,keyword:G,it:B}=$,F=J.name("valid");for(let A in X){if((0,cx1.alwaysValidSchema)(B,X[A]))continue;J.if((0,dQ0.propertyInData)(J,W,A,B.opts.ownProperties),()=>{let I=$.subschema({keyword:G,schemaProp:A},F);$.mergeValidEvaluated(I,F)},()=>J.var(F,!0)),$.ok(F)}}LH6.validateSchemaDeps=OH6;LH6.default=px1});var RH6=Q6((NH6)=>{Object.defineProperty(NH6,"__esModule",{value:!0});var jH6=$J(),ox1=a3(),ax1={message:"property name must be valid",params:({params:$})=>jH6._`{propertyName: ${$.propertyName}}`},sx1={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:ax1,code($){let{gen:X,schema:J,data:W,it:G}=$;if((0,ox1.alwaysValidSchema)(G,J))return;let B=X.name("valid");X.forIn("key",W,(F)=>{$.setParams({propertyName:F}),$.subschema({keyword:"propertyNames",data:F,dataTypes:["string"],propertyName:F,compositeRule:!0},B),X.if((0,jH6.not)(B),()=>{if($.error(!0),!G.allErrors)X.break()})}),$.ok(B)}};NH6.default=sx1});var eQ$=Q6((PH6)=>{Object.defineProperty(PH6,"__esModule",{value:!0});var xC0=sM(),eR=$J(),ex1=Fv(),yC0=a3(),$y1={message:"must NOT have additional properties",params:({params:$})=>eR._`{additionalProperty: ${$.additionalProperty}}`},Dy1={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:$y1,code($){let{gen:X,schema:J,parentSchema:W,data:G,errsCount:B,it:F}=$;if(!B)throw Error("ajv implementation error");let{allErrors:A,opts:I}=F;if(F.props=!0,I.removeAdditional!=="all"&&(0,yC0.alwaysValidSchema)(F,J))return;let E=(0,xC0.allSchemaProperties)(W.properties),T=(0,xC0.allSchemaProperties)(W.patternProperties);_(),$.ok(eR._`${B} === ${ex1.default.errors}`);function _(){X.forIn("key",G,(Z0)=>{if(!E.length&&!T.length)c(Z0);else X.if(S(Z0),()=>c(Z0))})}function S(Z0){let I0;if(E.length>8){let C0=(0,yC0.schemaRefOrVal)(F,W.properties,"properties");I0=(0,xC0.isOwnProperty)(X,C0,Z0)}else if(E.length)I0=(0,eR.or)(...E.map((C0)=>eR._`${Z0} === ${C0}`));else I0=eR.nil;if(T.length)I0=(0,eR.or)(I0,...T.map((C0)=>eR._`${(0,xC0.usePattern)($,C0)}.test(${Z0})`));return(0,eR.not)(I0)}function h(Z0){X.code(eR._`delete ${G}[${Z0}]`)}function c(Z0){if(I.removeAdditional==="all"||I.removeAdditional&&J===!1){h(Z0);return}if(J===!1){if($.setParams({additionalProperty:Z0}),$.error(),!A)X.break();return}if(typeof J=="object"&&!(0,yC0.alwaysValidSchema)(F,J)){let I0=X.name("valid");if(I.removeAdditional==="failing")l(Z0,I0,!1),X.if((0,eR.not)(I0),()=>{$.reset(),h(Z0)});else if(l(Z0,I0),!A)X.if((0,eR.not)(I0),()=>X.break())}}function l(Z0,I0,C0){let T0={keyword:"additionalProperties",dataProp:Z0,dataPropType:yC0.Type.Str};if(C0===!1)Object.assign(T0,{compositeRule:!0,createErrors:!1,allErrors:!1});$.subschema(T0,I0)}}};PH6.default=Dy1});var SH6=Q6((bH6)=>{Object.defineProperty(bH6,"__esModule",{value:!0});var Yy1=SQ0(),CH6=sM(),$H$=a3(),TH6=eQ$(),Jy1={keyword:"properties",type:"object",schemaType:"object",code($){let{gen:X,schema:J,parentSchema:W,data:G,it:B}=$;if(B.opts.removeAdditional==="all"&&W.additionalProperties===void 0)TH6.default.code(new Yy1.KeywordCxt(B,TH6.default,"additionalProperties"));let F=(0,CH6.allSchemaProperties)(J);for(let _ of F)B.definedProperties.add(_);if(B.opts.unevaluated&&F.length&&B.props!==!0)B.props=$H$.mergeEvaluated.props(X,(0,$H$.toHash)(F),B.props);let A=F.filter((_)=>!(0,$H$.alwaysValidSchema)(B,J[_]));if(A.length===0)return;let I=X.name("valid");for(let _ of A){if(E(_))T(_);else{if(X.if((0,CH6.propertyInData)(X,G,_,B.opts.ownProperties)),T(_),!B.allErrors)X.else().var(I,!0);X.endIf()}$.it.definedProperties.add(_),$.ok(I)}function E(_){return B.opts.useDefaults&&!B.compositeRule&&J[_].default!==void 0}function T(_){$.subschema({keyword:"properties",schemaProp:_,dataProp:_},I)}}};bH6.default=Jy1});var yH6=Q6((xH6)=>{Object.defineProperty(xH6,"__esModule",{value:!0});var _H6=sM(),fC0=$J(),kH6=a3(),vH6=a3(),Qy1={keyword:"patternProperties",type:"object",schemaType:"object",code($){let{gen:X,schema:J,data:W,parentSchema:G,it:B}=$,{opts:F}=B,A=(0,_H6.allSchemaProperties)(J),I=A.filter((l)=>(0,kH6.alwaysValidSchema)(B,J[l]));if(A.length===0||I.length===A.length&&(!B.opts.unevaluated||B.props===!0))return;let E=F.strictSchema&&!F.allowMatchingProperties&&G.properties,T=X.name("valid");if(B.props!==!0&&!(B.props instanceof fC0.Name))B.props=(0,vH6.evaluatedPropsToName)(X,B.props);let{props:_}=B;S();function S(){for(let l of A){if(E)h(l);if(B.allErrors)c(l);else X.var(T,!0),c(l),X.if(T)}}function h(l){for(let Z0 in E)if(new RegExp(l).test(Z0))(0,kH6.checkStrictMode)(B,`property ${Z0} matches pattern ${l} (use allowMatchingProperties)`)}function c(l){X.forIn("key",W,(Z0)=>{X.if(fC0._`${(0,_H6.usePattern)($,l)}.test(${Z0})`,()=>{let I0=I.includes(l);if(!I0)$.subschema({keyword:"patternProperties",schemaProp:l,dataProp:Z0,dataPropType:vH6.Type.Str},T);if(B.opts.unevaluated&&_!==!0)X.assign(fC0._`${_}[${Z0}]`,!0);else if(!I0&&!B.allErrors)X.if((0,fC0.not)(T),()=>X.break())})})}}};xH6.default=Qy1});var hH6=Q6((fH6)=>{Object.defineProperty(fH6,"__esModule",{value:!0});var Gy1=a3(),zy1={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code($){let{gen:X,schema:J,it:W}=$;if((0,Gy1.alwaysValidSchema)(W,J)){$.fail();return}let G=X.name("valid");$.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},G),$.failResult(G,()=>$.reset(),()=>$.error())},error:{message:"must NOT be valid"}};fH6.default=zy1});var uH6=Q6((gH6)=>{Object.defineProperty(gH6,"__esModule",{value:!0});var Zy1=sM(),Uy1={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:Zy1.validateUnion,error:{message:"must match a schema in anyOf"}};gH6.default=Uy1});var dH6=Q6((mH6)=>{Object.defineProperty(mH6,"__esModule",{value:!0});var hC0=$J(),Fy1=a3(),Ky1={message:"must match exactly one schema in oneOf",params:({params:$})=>hC0._`{passingSchemas: ${$.passing}}`},Vy1={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:Ky1,code($){let{gen:X,schema:J,parentSchema:W,it:G}=$;if(!Array.isArray(J))throw Error("ajv implementation error");if(G.opts.discriminator&&W.discriminator)return;let B=J,F=X.let("valid",!1),A=X.let("passing",null),I=X.name("_valid");$.setParams({passing:A}),X.block(E),$.result(F,()=>$.reset(),()=>$.error(!0));function E(){B.forEach((T,_)=>{let S;if((0,Fy1.alwaysValidSchema)(G,T))X.var(I,!0);else S=$.subschema({keyword:"oneOf",schemaProp:_,compositeRule:!0},I);if(_>0)X.if(hC0._`${I} && ${F}`).assign(F,!1).assign(A,hC0._`[${A}, ${_}]`).else();X.if(I,()=>{if(X.assign(F,!0),X.assign(A,_),S)$.mergeEvaluated(S,hC0.Name)})})}}};mH6.default=Vy1});var cH6=Q6((lH6)=>{Object.defineProperty(lH6,"__esModule",{value:!0});var wy1=a3(),Oy1={keyword:"allOf",schemaType:"array",code($){let{gen:X,schema:J,it:W}=$;if(!Array.isArray(J))throw Error("ajv implementation error");let G=X.name("valid");J.forEach((B,F)=>{if((0,wy1.alwaysValidSchema)(W,B))return;let A=$.subschema({keyword:"allOf",schemaProp:F},G);$.ok(G),$.mergeEvaluated(A)})}};lH6.default=Oy1});var rH6=Q6((nH6)=>{Object.defineProperty(nH6,"__esModule",{value:!0});var gC0=$J(),iH6=a3(),Iy1={message:({params:$})=>gC0.str`must match "${$.ifClause}" schema`,params:({params:$})=>gC0._`{failingKeyword: ${$.ifClause}}`},Ey1={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:Iy1,code($){let{gen:X,parentSchema:J,it:W}=$;if(J.then===void 0&&J.else===void 0)(0,iH6.checkStrictMode)(W,'"if" without "then" and "else" is ignored');let G=pH6(W,"then"),B=pH6(W,"else");if(!G&&!B)return;let F=X.let("valid",!0),A=X.name("_valid");if(I(),$.reset(),G&&B){let T=X.let("ifClause");$.setParams({ifClause:T}),X.if(A,E("then",T),E("else",T))}else if(G)X.if(A,E("then"));else X.if((0,gC0.not)(A),E("else"));$.pass(F,()=>$.error(!0));function I(){let T=$.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},A);$.mergeEvaluated(T)}function E(T,_){return()=>{let S=$.subschema({keyword:T},A);if(X.assign(F,A),$.mergeValidEvaluated(S,F),_)X.assign(_,gC0._`${T}`);else $.setParams({ifClause:T})}}}};function pH6($,X){let J=$.schema[X];return J!==void 0&&!(0,iH6.alwaysValidSchema)($,J)}nH6.default=Ey1});var aH6=Q6((oH6)=>{Object.defineProperty(oH6,"__esModule",{value:!0});var jy1=a3(),Ny1={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:$,parentSchema:X,it:J}){if(X.if===void 0)(0,jy1.checkStrictMode)(J,`"${$}" without "if" is ignored`)}};oH6.default=Ny1});var tH6=Q6((sH6)=>{Object.defineProperty(sH6,"__esModule",{value:!0});var Py1=aQ$(),Cy1=UH6(),Ty1=sQ$(),by1=KH6(),Sy1=AH6(),_y1=MH6(),ky1=RH6(),vy1=eQ$(),xy1=SH6(),yy1=yH6(),fy1=hH6(),hy1=uH6(),gy1=dH6(),uy1=cH6(),my1=rH6(),dy1=aH6();function ly1($=!1){let X=[fy1.default,hy1.default,gy1.default,uy1.default,my1.default,dy1.default,ky1.default,vy1.default,_y1.default,xy1.default,yy1.default];if($)X.push(Cy1.default,by1.default);else X.push(Py1.default,Ty1.default);return X.push(Sy1.default),X}sH6.default=ly1});var $G6=Q6((eH6)=>{Object.defineProperty(eH6,"__esModule",{value:!0});var wZ=$J(),py1={message:({schemaCode:$})=>wZ.str`must match format "${$}"`,params:({schemaCode:$})=>wZ._`{format: ${$}}`},iy1={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:py1,code($,X){let{gen:J,data:W,$data:G,schema:B,schemaCode:F,it:A}=$,{opts:I,errSchemaPath:E,schemaEnv:T,self:_}=A;if(!I.validateFormats)return;if(G)S();else h();function S(){let c=J.scopeValue("formats",{ref:_.formats,code:I.code.formats}),l=J.const("fDef",wZ._`${c}[${F}]`),Z0=J.let("fType"),I0=J.let("format");J.if(wZ._`typeof ${l} == "object" && !(${l} instanceof RegExp)`,()=>J.assign(Z0,wZ._`${l}.type || "string"`).assign(I0,wZ._`${l}.validate`),()=>J.assign(Z0,wZ._`"string"`).assign(I0,l)),$.fail$data((0,wZ.or)(C0(),T0()));function C0(){if(I.strictSchema===!1)return wZ.nil;return wZ._`${F} && !${I0}`}function T0(){let e0=T.$async?wZ._`(${l}.async ? await ${I0}(${W}) : ${I0}(${W}))`:wZ._`${I0}(${W})`,d0=wZ._`(typeof ${I0} == "function" ? ${e0} : ${I0}.test(${W}))`;return wZ._`${I0} && ${I0} !== true && ${Z0} === ${X} && !${d0}`}}function h(){let c=_.formats[B];if(!c){C0();return}if(c===!0)return;let[l,Z0,I0]=T0(c);if(l===X)$.pass(e0());function C0(){if(I.strictSchema===!1){_.logger.warn(d0());return}throw Error(d0());function d0(){return`unknown format "${B}" ignored in schema at path "${E}"`}}function T0(d0){let l0=d0 instanceof RegExp?(0,wZ.regexpCode)(d0):I.code.formats?wZ._`${I.code.formats}${(0,wZ.getProperty)(B)}`:void 0,t0=J.scopeValue("formats",{key:B,ref:d0,code:l0});if(typeof d0=="object"&&!(d0 instanceof RegExp))return[d0.type||"string",d0.validate,wZ._`${t0}.validate`];return["string",d0,t0]}function e0(){if(typeof c=="object"&&!(c instanceof RegExp)&&c.async){if(!T.$async)throw Error("async format in sync schema");return wZ._`await ${I0}(${W})`}return typeof Z0=="function"?wZ._`${I0}(${W})`:wZ._`${I0}.test(${W})`}}}};eH6.default=iy1});var XG6=Q6((DG6)=>{Object.defineProperty(DG6,"__esModule",{value:!0});var ry1=$G6(),oy1=[ry1.default];DG6.default=oy1});var WG6=Q6((YG6)=>{Object.defineProperty(YG6,"__esModule",{value:!0});YG6.contentVocabulary=YG6.metadataVocabulary=void 0;YG6.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];YG6.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var GG6=Q6((HG6)=>{Object.defineProperty(HG6,"__esModule",{value:!0});var ty1=bQ6(),ey1=YH6(),$f1=tH6(),Df1=XG6(),QG6=WG6(),Xf1=[ty1.default,ey1.default,(0,$f1.default)(),Df1.default,QG6.metadataVocabulary,QG6.contentVocabulary];HG6.default=Xf1});var UG6=Q6((BG6)=>{Object.defineProperty(BG6,"__esModule",{value:!0});BG6.DiscrError=void 0;var zG6;(function($){$.Tag="tag",$.Mapping="mapping"})(zG6||(BG6.DiscrError=zG6={}))});var KG6=Q6((FG6)=>{Object.defineProperty(FG6,"__esModule",{value:!0});var l00=$J(),DH$=UG6(),qG6=jC0(),Jf1=_Q0(),Wf1=a3(),Qf1={message:({params:{discrError:$,tagName:X}})=>$===DH$.DiscrError.Tag?`tag "${X}" must be string`:`value of tag "${X}" must be in oneOf`,params:({params:{discrError:$,tag:X,tagName:J}})=>l00._`{error: ${$}, tag: ${J}, tagValue: ${X}}`},Hf1={keyword:"discriminator",type:"object",schemaType:"object",error:Qf1,code($){let{gen:X,data:J,schema:W,parentSchema:G,it:B}=$,{oneOf:F}=G;if(!B.opts.discriminator)throw Error("discriminator: requires discriminator option");let A=W.propertyName;if(typeof A!="string")throw Error("discriminator: requires propertyName");if(W.mapping)throw Error("discriminator: mapping is not supported");if(!F)throw Error("discriminator: requires oneOf keyword");let I=X.let("valid",!1),E=X.const("tag",l00._`${J}${(0,l00.getProperty)(A)}`);X.if(l00._`typeof ${E} == "string"`,()=>T(),()=>$.error(!1,{discrError:DH$.DiscrError.Tag,tag:E,tagName:A})),$.ok(I);function T(){let h=S();X.if(!1);for(let c in h)X.elseIf(l00._`${E} === ${c}`),X.assign(I,_(h[c]));X.else(),$.error(!1,{discrError:DH$.DiscrError.Mapping,tag:E,tagName:A}),X.endIf()}function _(h){let c=X.name("valid"),l=$.subschema({keyword:"oneOf",schemaProp:h},c);return $.mergeEvaluated(l,l00.Name),c}function S(){var h;let c={},l=I0(G),Z0=!0;for(let e0=0;e0<F.length;e0++){let d0=F[e0];if((d0===null||d0===void 0?void 0:d0.$ref)&&!(0,Wf1.schemaHasRulesButRef)(d0,B.self.RULES)){let t0=d0.$ref;if(d0=qG6.resolveRef.call(B.self,B.schemaEnv.root,B.baseId,t0),d0 instanceof qG6.SchemaEnv)d0=d0.schema;if(d0===void 0)throw new Jf1.default(B.opts.uriResolver,B.baseId,t0)}let l0=(h=d0===null||d0===void 0?void 0:d0.properties)===null||h===void 0?void 0:h[A];if(typeof l0!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${A}"`);Z0=Z0&&(l||I0(d0)),C0(l0,e0)}if(!Z0)throw Error(`discriminator: "${A}" must be required`);return c;function I0({required:e0}){return Array.isArray(e0)&&e0.includes(A)}function C0(e0,d0){if(e0.const)T0(e0.const,d0);else if(e0.enum)for(let l0 of e0.enum)T0(l0,d0);else throw Error(`discriminator: "properties/${A}" must have "const" or "enum"`)}function T0(e0,d0){if(typeof e0!="string"||e0 in c)throw Error(`discriminator: "${A}" values must be unique strings`);c[e0]=d0}}}};FG6.default=Hf1});var VG6=Q6((zhD,zf1)=>{zf1.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var wG6=Q6((VO,XH$)=>{Object.defineProperty(VO,"__esModule",{value:!0});VO.MissingRefError=VO.ValidationError=VO.CodeGen=VO.Name=VO.nil=VO.stringify=VO.str=VO._=VO.KeywordCxt=VO.Ajv=void 0;var Bf1=LQ6(),Zf1=GG6(),Uf1=KG6(),AG6=VG6(),qf1=["/properties"],uC0="http://json-schema.org/draft-07/schema";class lQ0 extends Bf1.default{_addVocabularies(){if(super._addVocabularies(),Zf1.default.forEach(($)=>this.addVocabulary($)),this.opts.discriminator)this.addKeyword(Uf1.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let $=this.opts.$data?this.$dataMetaSchema(AG6,qf1):AG6;this.addMetaSchema($,uC0,!1),this.refs["http://json-schema.org/schema"]=uC0}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(uC0)?uC0:void 0)}}VO.Ajv=lQ0;XH$.exports=VO=lQ0;XH$.exports.Ajv=lQ0;Object.defineProperty(VO,"__esModule",{value:!0});VO.default=lQ0;var Ff1=SQ0();Object.defineProperty(VO,"KeywordCxt",{enumerable:!0,get:function(){return Ff1.KeywordCxt}});var c00=$J();Object.defineProperty(VO,"_",{enumerable:!0,get:function(){return c00._}});Object.defineProperty(VO,"str",{enumerable:!0,get:function(){return c00.str}});Object.defineProperty(VO,"stringify",{enumerable:!0,get:function(){return c00.stringify}});Object.defineProperty(VO,"nil",{enumerable:!0,get:function(){return c00.nil}});Object.defineProperty(VO,"Name",{enumerable:!0,get:function(){return c00.Name}});Object.defineProperty(VO,"CodeGen",{enumerable:!0,get:function(){return c00.CodeGen}});var Kf1=EC0();Object.defineProperty(VO,"ValidationError",{enumerable:!0,get:function(){return Kf1.default}});var Vf1=_Q0();Object.defineProperty(VO,"MissingRefError",{enumerable:!0,get:function(){return Vf1.default}})});var LG6=Q6((OG6)=>{Object.defineProperty(OG6,"__esModule",{value:!0});OG6.formatLimitDefinition=void 0;var Of1=wG6(),$P=$J(),lh=$P.operators,mC0={formatMaximum:{okStr:"<=",ok:lh.LTE,fail:lh.GT},formatMinimum:{okStr:">=",ok:lh.GTE,fail:lh.LT},formatExclusiveMaximum:{okStr:"<",ok:lh.LT,fail:lh.GTE},formatExclusiveMinimum:{okStr:">",ok:lh.GT,fail:lh.LTE}},Lf1={message:({keyword:$,schemaCode:X})=>$P.str`should be ${mC0[$].okStr} ${X}`,params:({keyword:$,schemaCode:X})=>$P._`{comparison: ${mC0[$].okStr}, limit: ${X}}`};OG6.formatLimitDefinition={keyword:Object.keys(mC0),type:"string",schemaType:"string",$data:!0,error:Lf1,code($){let{gen:X,data:J,schemaCode:W,keyword:G,it:B}=$,{opts:F,self:A}=B;if(!F.validateFormats)return;let I=new Of1.KeywordCxt(B,A.RULES.all.format.definition,"format");if(I.$data)E();else T();function E(){let S=X.scopeValue("formats",{ref:A.formats,code:F.code.formats}),h=X.const("fmt",$P._`${S}[${I.schemaCode}]`);$.fail$data((0,$P.or)($P._`typeof ${h} != "object"`,$P._`${h} instanceof RegExp`,$P._`typeof ${h}.compare != "function"`,_(h)))}function T(){let S=I.schema,h=A.formats[S];if(!h||h===!0)return;if(typeof h!="object"||h instanceof RegExp||typeof h.compare!="function")throw Error(`"${G}": format "${S}" does not define "compare" function`);let c=X.scopeValue("formats",{key:S,ref:h,code:F.code.formats?$P._`${F.code.formats}${(0,$P.getProperty)(S)}`:void 0});$.fail$data(_(c))}function _(S){return $P._`${S}.compare(${J}, ${W}) ${mC0[G].fail} 0`}},dependencies:["format"]};var If1=($)=>{return $.addKeyword(OG6.formatLimitDefinition),$};OG6.default=If1});var jG6=Q6((cQ0,MG6)=>{Object.defineProperty(cQ0,"__esModule",{value:!0});var p00=V36(),Mf1=LG6(),JH$=$J(),IG6=new JH$.Name("fullFormats"),jf1=new JH$.Name("fastFormats"),WH$=($,X={keywords:!0})=>{if(Array.isArray(X))return EG6($,X,p00.fullFormats,IG6),$;let[J,W]=X.mode==="fast"?[p00.fastFormats,jf1]:[p00.fullFormats,IG6],G=X.formats||p00.formatNames;if(EG6($,G,J,W),X.keywords)(0,Mf1.default)($);return $};WH$.get=($,X="full")=>{let W=(X==="fast"?p00.fastFormats:p00.fullFormats)[$];if(!W)throw Error(`Unknown format "${$}"`);return W};function EG6($,X,J,W){var G,B;(G=(B=$.opts.code).formats)!==null&&G!==void 0||(B.formats=JH$._`require("ajv-formats/dist/formats").${W}`);for(let F of X)$.addFormat(F,J[F])}MG6.exports=cQ0=WH$;Object.defineProperty(cQ0,"__esModule",{value:!0});cQ0.default=WH$});var Nf1,Rf1;var NG6=y0(()=>{Nf1=xW(Q36(),1),Rf1=xW(jG6(),1)});var RG6=y0(()=>{i76();OP0();NG6();iW0()});var PG6;var CG6=y0(()=>{(function($){$.Completable="McpCompletable"})(PG6||(PG6={}))});class Av{static isTemplate($){return/\{[^}\s]+\}/.test($)}static validateLength($,X,J){if($.length>X)throw Error(`${J} exceeds maximum length of ${X} characters (got ${$.length})`)}get variableNames(){return this.parts.flatMap(($)=>typeof $==="string"?[]:$.names)}constructor($){Av.validateLength($,1e6,"Template"),this.template=$,this.parts=this.parse($)}toString(){return this.template}parse($){let X=[],J="",W=0,G=0;while(W<$.length)if($[W]==="{"){if(J)X.push(J),J="";let B=$.indexOf("}",W);if(B===-1)throw Error("Unclosed template expression");if(G++,G>1e4)throw Error("Template contains too many expressions (max 10000)");let F=$.slice(W+1,B),A=this.getOperator(F),I=F.includes("*"),E=this.getNames(F),T=E[0];for(let _ of E)Av.validateLength(_,1e6,"Variable name");X.push({name:T,operator:A,names:E,exploded:I}),W=B+1}else J+=$[W],W++;if(J)X.push(J);return X}getOperator($){return["+","#",".","/","?","&"].find((J)=>$.startsWith(J))||""}getNames($){let X=this.getOperator($);return $.slice(X.length).split(",").map((J)=>J.replace("*","").trim()).filter((J)=>J.length>0)}encodeValue($,X){if(Av.validateLength($,1e6,"Variable value"),X==="+"||X==="#")return encodeURI($);return encodeURIComponent($)}expandPart($,X){if($.operator==="?"||$.operator==="&"){let B=$.names.map((A)=>{let I=X[A];if(I===void 0)return"";let E=Array.isArray(I)?I.map((T)=>this.encodeValue(T,$.operator)).join(","):this.encodeValue(I.toString(),$.operator);return`${A}=${E}`}).filter((A)=>A.length>0);if(B.length===0)return"";return($.operator==="?"?"?":"&")+B.join("&")}if($.names.length>1){let B=$.names.map((F)=>X[F]).filter((F)=>F!==void 0);if(B.length===0)return"";return B.map((F)=>Array.isArray(F)?F[0]:F).join(",")}let J=X[$.name];if(J===void 0)return"";let G=(Array.isArray(J)?J:[J]).map((B)=>this.encodeValue(B,$.operator));switch($.operator){case"":return G.join(",");case"+":return G.join(",");case"#":return"#"+G.join(",");case".":return"."+G.join(".");case"/":return"/"+G.join("/");default:return G.join(",")}}expand($){let X="",J=!1;for(let W of this.parts){if(typeof W==="string"){X+=W;continue}let G=this.expandPart(W,$);if(!G)continue;if((W.operator==="?"||W.operator==="&")&&J)X+=G.replace("?","&");else X+=G;if(W.operator==="?"||W.operator==="&")J=!0}return X}escapeRegExp($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}partToRegExp($){let X=[];for(let G of $.names)Av.validateLength(G,1e6,"Variable name");if($.operator==="?"||$.operator==="&"){for(let G=0;G<$.names.length;G++){let B=$.names[G],F=G===0?"\\"+$.operator:"&";X.push({pattern:F+this.escapeRegExp(B)+"=([^&]+)",name:B})}return X}let J,W=$.name;switch($.operator){case"":J=$.exploded?"([^/]+(?:,[^/]+)*)":"([^/,]+)";break;case"+":case"#":J="(.+)";break;case".":J="\\.([^/,]+)";break;case"/":J="/"+($.exploded?"([^/]+(?:,[^/]+)*)":"([^/,]+)");break;default:J="([^/]+)"}return X.push({pattern:J,name:W}),X}match($){Av.validateLength($,1e6,"URI");let X="^",J=[];for(let F of this.parts)if(typeof F==="string")X+=this.escapeRegExp(F);else{let A=this.partToRegExp(F);for(let{pattern:I,name:E}of A)X+=I,J.push({name:E,exploded:F.exploded})}X+="$",Av.validateLength(X,1e6,"Generated regex pattern");let W=new RegExp(X),G=$.match(W);if(!G)return null;let B={};for(let F=0;F<J.length;F++){let{name:A,exploded:I}=J[F],E=G[F+1],T=A.replace("*","");if(I&&E.includes(","))B[T]=E.split(",");else B[T]=E}return B}}var TG6=()=>{};class QH${constructor($,X){this._callbacks=X,this._uriTemplate=typeof $==="string"?new Av($):$}get uriTemplate(){return this._uriTemplate}get listCallback(){return this._callbacks.list}completeCallback($){return this._callbacks.complete?.[$]}}var HH$=y0(()=>{RG6();iW0();VW$();OP0();CG6();TG6()});import{Buffer as Pf1}from"buffer";function Cf1($){return{title:$.meta.title,description:$.meta.description,mimeType:$.meta.mimeType,_meta:{tags:$.meta.tags??[]}}}function bG6($,X,J){for(let W of X.listTemplates())J.logger.info("Registering resource: "+W.meta.uriTemplate),$.registerResource(W.meta.uriTemplate,new QH$(W.meta.uriTemplate,{list:void 0}),Cf1(W),async(G,B)=>{let F=W.input.parse(B),A=await W.resolve(F,J.resourceCtx());if(typeof A.data==="string")return{contents:[{uri:A.uri,mimeType:A.mimeType??W.meta.mimeType,text:A.data}]};return{contents:[{uri:A.uri,mimeType:A.mimeType??W.meta.mimeType,blob:Pf1.from(A.data).toString("base64")}]}}),J.logger.info("Registered resource: "+W.meta.uriTemplate)}var SG6=y0(()=>{HH$()});function Tf1($){let X={};for(let J of $)X[J.name]=J.schema;return X}function _G6($,X,J){for(let W of X.list()){let G=ER0(W.meta.key);$.registerPrompt(G,{title:W.meta.title,description:W.meta.description,argsSchema:Tf1(W.args)},async(B)=>{let F=(A,I)=>{let E=A;for(let[T,_]of Object.entries(I))E=E.replace(new RegExp(`\\{${T}\\}`,"g"),encodeURIComponent(String(_)));return E};return{messages:[{role:"assistant",content:{type:"text",text:(await W.render(W.input.parse(B),{...J.promptCtx(),link:F})).map((A)=>A.type==="text"?A.text:`See resource: ${A.title??A.uri}
1330
1330
  URI: ${A.uri}`).join(`
1331
1331
 
1332
- `)}}],description:W.meta.description}})}}var kG6=y0(()=>{tk()});function vG6($){if(!$||typeof $!=="object")return!1;return"body"in $&&typeof $.body==="string"}function xG6($,X){if(!X.presentations?.count())return;let J=Sc(bc(Tc()));for(let W of X.presentations.list()){let G=VW0(`presentation_${W.meta.key}_v${W.meta.version}`),B=`presentation://${W.meta.key}/v${W.meta.version}`;X.logger.info(`Registering presentation ${B} for ${G}`),$.registerResource(G,B,{title:`${W.meta.key} v${W.meta.version}`,description:W.meta.description??"Presentation",mimeType:"application/json"},async()=>{return{contents:[{uri:B,mimeType:"application/json",text:JSON.stringify({meta:W.meta,source:W.source,targets:W.targets},null,2)}]}});for(let F of[{ext:".md",target:"markdown"},{ext:".json",target:"application/json"},{ext:".xml",target:"application/xml"}]){let A=`${G}${F.ext}`,I=`${B}${F.ext}`;$.registerResource(A,I,{title:`${W.meta.key} v${W.meta.version} (${F.ext})`,description:`${W.meta.description??"Presentation"} (${F.ext})`},async()=>{let E=await J.render(F.target,W);return{contents:[{uri:I,mimeType:vG6(E)&&E.mimeType?E.mimeType:F.target==="markdown"?"text/markdown":F.target,text:vG6(E)&&typeof E.body==="string"?E.body:String(E)}]}})}}}var yG6=y0(()=>{UW0();tN0();tk()});function dC0($,X,J,W,G){return G.logger.info("Creating MCP server"),F76($,X,{toolCtx:G.toolCtx}),bG6($,J,{logger:G.logger,resourceCtx:G.resourceCtx}),xG6($,{logger:G.logger,presentations:G.presentations}),_G6($,W,{promptCtx:G.promptCtx}),$}var lC0=y0(()=>{K76();SG6();kG6();yG6()});function pQ0($){let X={};if(X["access-control-allow-origin"]=typeof $==="object"?$.origin??"*":"*",X.vary="Origin",typeof $==="object"){if($.methods)X["access-control-allow-methods"]=$.methods.join(", ");if($.headers)X["access-control-allow-headers"]=$.headers.join(", ");if($.credentials)X["access-control-allow-credentials"]="true";if(typeof $.maxAge==="number")X["access-control-max-age"]=String($.maxAge)}else X["access-control-allow-methods"]="GET,POST,OPTIONS",X["access-control-allow-headers"]="content-type,x-idempotency-key,x-trace-id";return X}function bf1($,X){return`${($??"").replace(/\/+$/g,"")}/${X.replace(/^\/+/g,"")}`.replace(/\/{2,}/g,"/")}function DP($,X,J){let W={basePath:J?.basePath??"",cors:J?.cors??!1,prettyJson:J?.prettyJson??!1,onError:J?.onError},G=$.list().map((A)=>({method:A.transport?.rest?.method??(A.meta.kind==="query"?"GET":"POST"),path:bf1(W.basePath,A.transport?.rest?.path??W00(A.meta.key,A.meta.version)),name:A.meta.key,version:A.meta.version})),B=new Map;for(let A of G)B.set(`${A.method} ${A.path}`,A);let F=(A,I,E)=>{let T=W.prettyJson?JSON.stringify(I,null,W.prettyJson):JSON.stringify(I),_={"content-type":"application/json; charset=utf-8"};return new Response(T,{status:A,headers:E?{..._,...E}:_})};return async function(I){let E=new URL(I.url),T=`${I.method.toUpperCase()} ${E.pathname}`;if(W.cors&&I.method.toUpperCase()==="OPTIONS"){let S=pQ0(W.cors===!0?{}:W.cors);return new Response(null,{status:204,headers:{...S,"content-length":"0"}})}let _=B.get(T);if(!_){let S={};if(W.cors)Object.assign(S,pQ0(W.cors===!0?{}:W.cors));return F(404,{error:"NotFound",path:E.pathname},S)}try{let S={};if(_.method==="GET")if(E.searchParams.has("input")){let Z0=E.searchParams.get("input");S=Z0?JSON.parse(Z0):{}}else{let Z0={};for(let[I0,C0]of E.searchParams.entries())Z0[I0]=C0;S=Z0}else{let Z0=I.headers.get("content-type")||"";if(Z0.includes("application/json"))S=await I.json();else if(Z0.includes("application/x-www-form-urlencoded")){let I0=await I.formData();S=Object.fromEntries(I0.entries())}else if(!Z0)S={};else return F(415,{error:"UnsupportedMediaType",contentType:Z0})}let h=X(I),c=await $.execute(_.name,_.version,S,h),l={};if(W.cors)Object.assign(l,pQ0(W.cors===!0?{}:W.cors));return F(200,c,l)}catch(S){if(W.onError){let c=W.onError(S),l={};if(W.cors)Object.assign(l,pQ0(W.cors===!0?{}:W.cors));return F(c.status,c.body,l)}let h={};if(W.cors)Object.assign(h,pQ0(W.cors===!0?{}:W.cors));if(S?.issues)return F(400,{error:"ValidationError",issues:S.issues},h);if(typeof S?.message==="string"&&S.message.startsWith("PolicyDenied"))return F(403,{error:"PolicyDenied"},h);return F(500,{error:"InternalError"},h)}}}var Up=y0(()=>{tk()});function GH$($,X,J,W){let G=DP(X,(B)=>J({request:B,store:$.store}),W);for(let B of X.list()){let F=B.transport?.rest?.method??(B.meta.kind==="query"?"GET":"POST"),A=(W?.basePath??"")+(B.transport?.rest?.path??`/${B.meta.key.replace(/\./g,"/")}/v${B.meta.version}`);$[F.toLowerCase()](A,({request:I})=>G(I))}if(W?.cors)$.options("*",({request:B})=>G(B));return $}var zH$=y0(()=>{Up()});function BH$($,X,J,W){let G=$.Router();for(let B of X.list()){let F=B.transport?.rest?.method??(B.meta.kind==="query"?"GET":"POST"),A=(W?.basePath??"")+(B.transport?.rest?.path??`/${B.meta.key.replace(/\./g,"/")}/v${B.meta.version}`);G[F.toLowerCase()](A,async(I,E)=>{let T=new URL(`${I.protocol}://${I.get("host")}${I.originalUrl}`),_=new Request(T.toString(),{method:F,headers:Object.fromEntries(Object.entries(I.headers).map(([c,l])=>[c,String(l)])),body:F==="POST"?JSON.stringify(I.body??{}):void 0}),S=await DP(X,()=>J(I),W)(_);E.status(S.status),S.headers.forEach((c,l)=>E.setHeader(l,c));let h=await S.text();E.send(h)})}if(W?.cors)G.options("*",(B,F)=>{let A=new Headers;new Response(null,{status:204}).headers.forEach((I,E)=>A.set(E,I)),F.status(204).send()});return G}var ZH$=y0(()=>{Up()});function UH$($,X,J){let W=DP($,X,J);return async function(B){return W(B)}}var qH$=y0(()=>{Up()});function FH$($,X,J){return async function(G,B){let F=`${G.headers["x-forwarded-proto"]??"http"}://${G.headers.host}${G.url}`,A=G.method?.toUpperCase()||"GET",I=new Request(F,{method:A,headers:Object.fromEntries(Object.entries(G.headers).map(([_,S])=>[_,String(S)])),body:A==="POST"?JSON.stringify(G.body??{}):void 0}),E=await DP($,()=>X(G),J)(I);B.status(E.status),E.headers.forEach((_,S)=>B.setHeader(S,_));let T=await E.text();B.send(T)}}var KH$=y0(()=>{Up()});var fG6=y0(()=>{lC0()});var hG6=y0(()=>{N3$();lC0();fG6();Up();zH$();ZH$();qH$();KH$()});function Sf1($,X){if($.key!==X.key)return!1;if(X.version!=null&&$.version!==X.version)return!1;return!0}function wH$($){return VH$($.meta.key,$.meta.version)}function OH$($){return $}var VH$=($,X)=>`${$}.v${X}`,AH$=class{items=new Map;register($){let X=VH$($.meta.key,$.meta.version);if(this.items.has(X))throw Error(`Duplicate capability ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()]}get($,X){if(X!=null)return this.items.get(VH$($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||RB(W.meta.version,J.meta.version)>0)J=W}return J}satisfies($,X){if($.optional)return!0;if(X?.some((W)=>Sf1(W,$)))return!0;let J=$.version?this.get($.key,$.version):this.get($.key);if(!J)return!1;if($.kind&&J.meta.kind!==$.kind)return!1;if($.version!=null&&J.meta.version!==$.version)return!1;return!0}};var LH$=y0(()=>{jR()});var L5,ch,gG6,IH$,uG6;var OZ=y0(()=>{L5={Idea:"idea",InCreation:"in_creation",Experimental:"experimental",Beta:"beta",Stable:"stable",Deprecated:"deprecated"},ch={PlatformCore:"platform.core",PlatformSigil:"platform.sigil",PlatformMarketplace:"platform.marketplace",PlatformMessaging:"platform.messaging",PlatformContent:"platform.content",PlatformFeatureFlags:"platform.featureflags",PlatformFinance:"platform.finance"},gG6=ch,IH$={Spots:"spots",Collectivity:"collectivity",Marketplace:"marketplace",Sellers:"sellers",Auth:"auth",Login:"login",Signup:"signup",Guide:"guide",Docs:"docs",I18n:"i18n",Incident:"incident",Automation:"automation",Hygiene:"hygiene"},uG6=IH$});function jH$($){return $.register(cC0).register(pC0).register(iC0)}var EH$,MH$,cC0,pC0,iC0;var NH$=y0(()=>{OZ();EH$=["platform.finance"],MH$=["open-banking","finance"],cC0={meta:{key:"openbanking.accounts.read",version:"1.0.0",kind:"integration",title:"Open Banking Accounts (Read)",description:"Provides read-only access to linked bank accounts, including account summaries and metadata.",domain:"finance",owners:[...EH$],tags:[...MH$],stability:L5.Experimental},provides:[{surface:"operation",key:"openbanking.accounts.list",version:"1.0.0",description:"List bank accounts linked to a Powens open banking connection."},{surface:"operation",key:"openbanking.accounts.get",version:"1.0.0",description:"Retrieve the canonical bank account record for a specific account."},{surface:"operation",key:"openbanking.accounts.sync",version:"1.0.0",description:"Trigger a refresh of bank account metadata from the open banking provider."}]},pC0={meta:{key:"openbanking.transactions.read",version:"1.0.0",kind:"integration",title:"Open Banking Transactions (Read)",description:"Enables retrieval of transaction history for linked bank accounts via open banking providers.",domain:"finance",owners:[...EH$],tags:[...MH$,"transactions"],stability:L5.Experimental},provides:[{surface:"operation",key:"openbanking.transactions.list",version:"1.0.0",description:"List transactions for a given bank account with optional date filtering."},{surface:"operation",key:"openbanking.transactions.sync",version:"1.0.0",description:"Synchronise transactions from the open banking provider into the canonical ledger."}]},iC0={meta:{key:"openbanking.balances.read",version:"1.0.0",kind:"integration",title:"Open Banking Balances (Read)",description:"Allows querying of current and available balances for linked bank accounts via open banking providers.",domain:"finance",owners:[...EH$],tags:[...MH$,"balances"],stability:L5.Experimental},provides:[{surface:"operation",key:"openbanking.balances.get",version:"1.0.0",description:"Retrieve the latest known balances for a specified bank account."},{surface:"operation",key:"openbanking.balances.refresh",version:"1.0.0",description:"Force a balance refresh from the open banking provider."}]}});var mG6=y0(()=>{LH$();NH$()});var _f1,nC0,rC0,oC0,RH$;var PH$=y0(()=>{OZ();wK();_f1=["contractspec:operation","contractspec:event","contractspec:presentation","contractspec:form","contractspec:feature","contractspec:workflow","contractspec:template","contractspec:integration","contractspec:data-view","contractspec:migration","contractspec:telemetry","contractspec:experiment","contractspec:app-config","contractspec:knowledge"],nC0=n3.enum(_f1),rC0=n3.object({path:n3.string().min(1),type:n3.string().min(1),content:n3.string().optional()}),oC0=n3.object({key:n3.string().min(1),type:nC0,version:n3.string(),title:n3.string().min(1),description:n3.string().min(1),meta:n3.object({stability:n3.enum([L5.Idea,L5.InCreation,L5.Experimental,L5.Beta,L5.Stable,L5.Deprecated]),owners:n3.array(n3.string().min(1)).default([]),tags:n3.array(n3.string().min(1)).default([])}),dependencies:n3.array(n3.string().min(1)).optional(),registryDependencies:n3.array(n3.string().min(1)).optional(),files:n3.array(rC0).min(1),schema:n3.object({input:n3.unknown().optional(),output:n3.unknown().optional()}).optional()}),RH$=n3.object({$schema:n3.string().min(1).optional(),name:n3.string().min(1),homepage:n3.string().min(1).optional(),items:n3.array(oC0)})});var dG6=y0(()=>{PH$()});var XP=($)=>("ref"in $),cz=($)=>({...$,meta:{...$.meta,kind:"command"},policy:{...$.policy,idempotent:$.policy?.policy?.idempotent??!1}}),gK=($)=>({...$,meta:{...$.meta,kind:"query"},policy:{...$.policy,idempotent:!0}});var YP=()=>{};function ph($,X){return`${$}.v${X}`}var uK;var aC0=y0(()=>{sw();_7$();YP();uK=class extends fG{handlers=new Map;constructor($){super("operation",$)}bind($,X){let J=ph($.meta.key,$.meta.version);if(!this.items.has(J))throw Error(`Cannot bind; spec not found: ${J}`);if(this.handlers.has(J))throw Error(`Handler already bound for ${J}`);return this.handlers.set(J,X),this}getHandler($,X){let J=this.get($,X);if(!J)return;return this.handlers.get(ph(J.meta.key,J.meta.version))}listBound(){let $=[];for(let[X,J]of this.items.entries()){let W=this.handlers.get(X);if(W)$.push({spec:J,handler:W})}return $}async execute($,X,J,W){let G=this.get($,X);if(!G)throw Error(`Spec not found for ${$}${X?`.v${X}`:""}`);let B=await W.specVariantResolver?.resolve({name:G.meta.key,version:G.meta.version,kind:G.meta.kind},W)??G,F=ph(B.meta.key,B.meta.version),A=this.handlers.get(F);if(!A){let l=ph(G.meta.key,G.meta.version);A=this.handlers.get(l),F=l}if(!A)throw Error(`No handler bound for ${F}`);let I=B.io.input?.getZod().parse(J);if(W.decide){let[l,Z0]=B.meta.key.split(".");if(!l||!Z0)throw Error(`Invalid spec name: ${B.meta.key}`);let I0=await W.decide({service:l,command:Z0,version:B.meta.version,actor:W.actor??"anonymous",channel:W.channel,roles:W.roles,organizationId:W.organizationId,userId:W.userId,flags:[]});if(I0.effect==="deny")throw Error(`PolicyDenied: ${B.meta.key}.v${B.meta.version}`);if(I0.rateLimit&&W.rateLimit){let C0=I0.rateLimit.key??"default",T0=I0.rateLimit.rpm??60;await W.rateLimit(C0,1,T0)}}let E=new Map;if(B.sideEffects?.emits)for(let l of B.sideEffects.emits)if(XP(l)){let Z0=W.eventSpecResolver?.get(l.ref.key,l.ref.version);if(Z0)E.set(`${l.ref.key}.v${l.ref.version}`,Z0.payload)}else E.set(`${l.key}.v${l.version}`,l.payload);let T=async(l,Z0,I0)=>{let C0=Oj0(l,Z0),T0=E.get(C0);if(!T0)throw Error(`UndeclaredEvent: ${C0} not allowed by ${ph(B.meta.key,B.meta.version)}`);let e0=T0.getZod().parse(I0);await W.eventPublisher?.({key:l,version:Z0,payload:e0,traceId:W.traceId})};if(W.appConfig){if(!W.branding)W.branding=W.appConfig.branding;if(!W.translation)W.translation={config:W.appConfig.translation};else if(!W.translation.config)W.translation={...W.translation,config:W.appConfig.translation}}let _=W.telemetry,S=async(l,Z0)=>{if(!_||!l?.event)return;try{let I0=l.properties?.(Z0)??{};await _.track(l.event.key,l.event.version??"1.0.0",I0,{tenantId:W.organizationId??void 0,organizationId:W.organizationId,userId:W.userId,actor:W.actor,channel:W.channel,metadata:W.traceId?{traceId:W.traceId}:void 0})}catch(I0){}},h;try{h=await A(I,{...W,__emitGuard__:T})}catch(l){if(B.telemetry?.failure)await S(B.telemetry.failure,{input:I??J,error:l});throw l}if(B.telemetry?.success)await S(B.telemetry.success,{input:I??J,output:h});let c=B.io.output;if(c?.getZod)return c.getZod().parse(h);return h}}});function lG6($,X){return{ref:async(J,W)=>{await X.__emitGuard__?.(J.meta.key,J.meta.version,W)},key:async(J,W,G)=>{await X.__emitGuard__?.(J,W,G)},object:async(J)=>{await X.__emitGuard__?.(J.key,J.version,J.payload)}}}function CH$($,X,J){return $.register(X).bind(X,J)}function cG6($,X){return{spec:$,handler:X,install:(J)=>CH$(J,$,X)}}var pG6=y0(()=>{aC0()});function nG6($,X){return`${$.replace(/\./g,"_")}_v${X}`}function iG6($,X,J){return`${$}_${nG6(X,J)}`}function kf1($,X){return(X??($==="query"?"GET":"POST")).toLowerCase()}function vf1($){let X=$.transport?.rest?.path??W00($.meta.key,$.meta.version);return X.startsWith("/")?X:`/${X}`}function i00($,X={}){let J=$.list().filter((G)=>G.meta.kind==="command"||G.meta.kind==="query").slice().sort((G,B)=>{let F=G.meta.key.localeCompare(B.meta.key);return F!==0?F:RB(G.meta.version,B.meta.version)}),W={openapi:"3.1.0",info:{title:X.title??"ContractSpec API",version:X.version??"0.0.0",...X.description?{description:X.description}:{}},...X.servers?{servers:X.servers}:{},paths:{},components:{schemas:{}}};for(let G of J){let B=vc(G),F=kf1(G.meta.kind,G.transport?.rest?.method),A=vf1(G),I=nG6(G.meta.key,G.meta.version),E=W.paths[A]??={},T={operationId:I,summary:G.meta.description??G.meta.key,description:G.meta.description,tags:G.meta.tags??[],"x-contractspec":{name:G.meta.key,version:G.meta.version,kind:G.meta.kind},responses:{}};if(B.input){let S=iG6("Input",G.meta.key,G.meta.version);W.components.schemas[S]=B.input,T.requestBody={required:!0,content:{"application/json":{schema:{$ref:`#/components/schemas/${S}`}}}}}let _={};if(B.output){let S=iG6("Output",G.meta.key,G.meta.version);W.components.schemas[S]=B.output,_["200"]={description:"OK",content:{"application/json":{schema:{$ref:`#/components/schemas/${S}`}}}}}else _["200"]={description:"OK"};T.responses=_,E[F]=T}return W}var rG6=y0(()=>{tk();jR()});function oG6($){return $}var aG6=()=>{};var sG6=class{prompts=new Map;register($){let X=`${$.meta.key}-v${$.meta.version}`;if(this.prompts.has(X))throw Error(`Duplicate prompt ${X}`);return this.prompts.set(X,$),this}list(){return[...this.prompts.values()]}get($,X){if(X!=null)return this.prompts.get(`${$}-v${X}`);let J;for(let[W,G]of this.prompts.entries()){if(!W.startsWith(`${$}.v`))continue;if(!J||RB(G.meta.version,J.meta.version)>0)J=G}return J}};var tG6=y0(()=>{jR()});var JP=y0(()=>{YP();aC0()});function eG6($){return $}function Dz6($,X){return{kind:"resource_ref",uriTemplate:$,varName:X.varName??"id",graphQLType:X.graphQLType,many:X.many}}function Xz6($){let X=$;return!!X&&X.kind==="resource_ref"&&typeof X.uriTemplate==="string"}var $z6=class{templates=[];register($){return this.templates.push($),this}listTemplates(){return[...this.templates]}match($){for(let X of this.templates){let J=new RegExp("^"+X.meta.uriTemplate.replace(/\{[^}]+\}/g,"([^/]+)")+"$"),W=$.match(J);if(!W)continue;let G=[...X.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map((F)=>F[1]),B={};return G.forEach((F,A)=>{let I=W[A+1];if(F&&I)B[F]=decodeURIComponent(I)}),{tmpl:X,params:B}}}};var Yz6=()=>{};function xf1($){if(QI($))return $.config.name;return"AnonymousSchema_"+Math.random().toString(36).substring(7)}var Jz6=class{items=new Map;constructor($){if($)$.forEach((X)=>this.register(X))}register($){let X=xf1($);if(this.items.has(X))throw Error(`Duplicate contract \`model\` ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()]}get($){return this.items.get($)}};var Wz6=y0(()=>{$O()});var TH$,bH$,Qz6,SH$,Hz6,_H$,Gz6,kH$,vH$,zz6;var Bz6=y0(()=>{OZ();YP();JP();$O();TH$=new O5({name:"SaveOnboardingDraftInput",description:"Input for saving onboarding draft",fields:{data:{type:O1.JSON(),isOptional:!1}}}),bH$=new O5({name:"SaveOnboardingDraftOutput",description:"Output for saving onboarding draft",fields:{id:{type:O1.ID(),isOptional:!1},organizationId:{type:O1.ID(),isOptional:!1}}}),Qz6=cz({meta:{key:"base.onboarding.saveDraft",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding","draft"],description:"Save or update onboarding draft for active organization",goal:"Persist onboarding progress incrementally for resumption and safety",context:"Auto-saves every few seconds during onboarding; enables users to leave and resume"},io:{input:TH$,output:bH$},policy:{auth:"user",escalate:null},transport:{gql:{field:"saveOnboardingDraft"},rest:{method:"POST"}}}),SH$=new O5({name:"GetOnboardingDraftOutput",description:"Onboarding draft payload",fields:{id:{type:O1.ID(),isOptional:!0},organizationId:{type:O1.ID(),isOptional:!0},data:{type:O1.JSON(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!0},updatedAt:{type:O1.DateTime(),isOptional:!0}}}),Hz6=gK({meta:{key:"base.onboarding.getDraft",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding","draft"],description:"Get onboarding draft for active organization",goal:"Retrieve saved onboarding progress",context:"Called on mount to restore in-progress onboarding"},io:{input:null,output:SH$},policy:{auth:"user",escalate:null},transport:{gql:{field:"getOnboardingDraft"},rest:{method:"GET"}}}),_H$=new O5({name:"DeleteOnboardingDraftOutput",description:"Result of delete operation",fields:{ok:{type:O1.Boolean(),isOptional:!1}}}),Gz6=cz({meta:{key:"base.onboarding.deleteDraft",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding","draft"],description:"Delete onboarding draft for active organization",goal:"Clear draft after completion or if user wants to restart",context:"Called after successful onboarding or explicit user reset"},io:{input:null,output:_H$},policy:{auth:"user",escalate:null},transport:{gql:{field:"deleteOnboardingDraft"},rest:{method:"POST"}}}),kH$=new O5({name:"CompleteOnboardingBaseInput",description:"Input for completing onboarding",fields:{data:{type:O1.JSON(),isOptional:!1}}}),vH$=new O5({name:"CompleteOnboardingBaseOutput",description:"Result of onboarding completion",fields:{success:{type:O1.Boolean(),isOptional:!1},userId:{type:O1.ID(),isOptional:!0},organizationId:{type:O1.ID(),isOptional:!0}}}),zz6=cz({meta:{key:"base.onboarding.complete",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding"],description:"Complete onboarding and finalize user/organization setup",goal:"Transition from draft to active profile",context:"Validates all required fields, creates/updates entities, marks onboarding complete"},io:{input:kH$,output:vH$},policy:{auth:"user",escalate:null},transport:{gql:{field:"completeOnboarding"},rest:{method:"POST"}}})});function xH$($){return $}var yH$=()=>{};function fH$($){return`${$.meta.key}.v${$.meta.version}`}var hH$;var gH$=y0(()=>{sw();hH$=class extends fG{constructor($){super("data-view",$)}}});var Zz6=y0(()=>{yH$();gH$()});var uH$;var sC0=y0(()=>{sw();uH$=class extends fG{constructor($){super("policy",$)}}});function yf1($){if($.startsWith("write"))return"write";return"read"}function Uz6($,X){let J=$.subject;if(!J)return!0;if(J.roles?.length){let W=X.roles??[];if(!J.roles.some((G)=>W.includes(G)))return!1}if(J.attributes){let W=X.attributes??{};if(!Kz6(J.attributes,W))return!1}return!0}function qz6($,X){let J=$.resource;if(!J)return!0;if(J.type&&J.type!==X.type)return!1;if(J.fields?.length){let W=X.fields??[];if(!J.fields.some((G)=>W.includes(G)))return!1}if(J.attributes){let W=X.attributes??{};if(!Kz6(J.attributes,W))return!1}return!0}function ff1($,X){if(!$.flags?.length)return!0;let J=new Set;if(X.flags)for(let G of X.flags)J.add(G);let W=X.subject.attributes?.featureFlags;if(Array.isArray(W))for(let G of W)J.add(G);return $.flags.every((G)=>J.has(G))}function hf1($,X){if(!$||$.length===0)return!0;let J=X.subject.relationships??[],W=cf1(X.resource),G=X.resource.type;return $.every((B)=>J.some((F)=>{if(F.relation!==B.relation)return!1;if(!(!B.objectType||F.objectType===B.objectType||B.objectType===G))return!1;if(!B.objectId)return!0;if(B.objectId==="$resource"){if(W)return F.object===W;return F.object===G||F.objectType===G}return F.object===B.objectId}))}function Fz6($,X){if(!$.conditions||$.conditions.length===0)return!0;return $.conditions.every((J)=>df1(J.expression,X))}function Kz6($,X){for(let[J,W]of Object.entries($)){let G=X[J];if(W.exists&&typeof G>"u")return!1;if(typeof W.equals<"u"){if(G!==W.equals)return!1}if(W.oneOf&&!W.oneOf.includes(G))return!1}return!0}function gf1($,X,J){if(!$.requiresConsent?.length)return[];let W=new Set(J.consents??[]),G=$.requiresConsent.filter((B)=>!W.has(B));if(G.length===0)return[];return uf1(X,G)}function uf1($,X){let J=$.consents??[];return X.map((W)=>{return J.find((G)=>G.id===W)??{id:W,scope:"unspecified",purpose:"unspecified",description:`Consent "${W}" required by ${$.meta.key}`,required:!0}})}function mf1($,X,J){if(!$.rateLimit)return;let W=typeof $.rateLimit==="string"?(X.rateLimits??[]).find((G)=>G.id===$.rateLimit):$.rateLimit;if(!W)throw Error(`PolicyEngine: rate limit "${String($.rateLimit)}" not declared in ${X.meta.key}`);return{rpm:W.rpm,key:W.key??J.resource.type,windowSeconds:W.windowSeconds,burst:W.burst}}function df1($,X){let J=$.trim();if(!J)return!0;let W={subject:X.subject,resource:X.resource,context:X.context??{}};try{let G=Function("subject","resource","context",`return (${lf1(J)});`)(W.subject,W.resource,W.context);return Boolean(G)}catch(G){return!1}}function lf1($){return $.replace(/&&/g,"&&").replace(/\|\|/g,"||")}function cf1($){if($.id)return $.id;let X=$.attributes?.id;if(typeof X==="string")return X;if(typeof X==="number")return String(X)}var mH$=class{constructor($){this.registry=$}decide($){let X=this.resolvePolicies($.policies),J,W,G;for(let A of X){let I=this.matchRuleSet(A,$);if(!I)continue;if(I.rule.effect==="deny")return{effect:"deny",reason:I.rule.reason??A.meta.key,requiredConsents:I.missingConsents.length?I.missingConsents:void 0,evaluatedBy:"engine"};if(I.rule.effect==="allow"){if(I.missingConsents.length)return{effect:"deny",reason:"consent_required",requiredConsents:I.missingConsents,evaluatedBy:"engine"};if(!J)J=I.rule.reason??A.meta.key;if(!W&&I.rateLimit)W=I.rateLimit;if(!G&&I.rule.escalate)G=I.rule.escalate}}let B=this.evaluateFields(X,$),F=X.find((A)=>A.pii)?.pii;return{effect:J?"allow":"deny",reason:J,rateLimit:W,escalate:typeof G>"u"?void 0:G,fieldDecisions:B.length?B:void 0,pii:F,evaluatedBy:"engine"}}resolvePolicies($){let X=[];for(let J of $){let W=this.registry.get(J.key,J.version);if(!W)throw Error(`PolicyEngine: policy not found ${J.key}.v${J.version}`);X.push(W)}return X}matchRuleSet($,X){let J;for(let W of $.rules){if(!W.actions.includes(X.action))continue;if(!Uz6(W,X.subject))continue;if(!qz6(W,X.resource))continue;if(!ff1(W,X))continue;if(!hf1(W.relationships,X))continue;if(!Fz6(W,X))continue;let G={rule:W,missingConsents:gf1(W,$,X),rateLimit:mf1(W,$,X)};if(W.effect==="deny")return G;if(W.effect==="allow"&&!J)J=G}return J}evaluateFields($,X){let J=new Map;for(let W of $){if(!W.fieldPolicies)continue;for(let G of W.fieldPolicies){if(!G.actions.includes(yf1(X.action)))continue;if(!Uz6(G,X.subject))continue;if(!qz6(G,X.resource))continue;if(!Fz6(G,X))continue;let B=J.get(G.field);if(G.effect==="deny")J.set(G.field,{field:G.field,effect:"deny",reason:G.reason??W.meta.key});else if(!B)J.set(G.field,{field:G.field,effect:"allow",reason:G.reason??W.meta.key})}}return[...J.values()]}};var dH$=y0(()=>{sC0()});function tC0($,X,J){return{context:$,decision:J,policies:X.map((W)=>({meta:W.meta,rules:W.rules,fieldPolicies:W.fieldPolicies,pii:W.pii,relationships:W.relationships,consents:W.consents,rateLimits:W.rateLimits}))}}function pf1($,X,J){if(J.length===0)return X;let W=new Set(X.map((B)=>B.id)),G=[...X];for(let B of J){if(W.has(B))continue;let F=if1($,B);if(F)G.push(F),W.add(F.id)}return G}function if1($,X){for(let J of $){let W=J.consents?.find((G)=>G.id===X);if(W)return W}return{id:X,scope:"unspecified",purpose:"unspecified",description:`Consent "${X}" returned by OPA`,required:!0}}var lH$=class{constructor($,X){this.client=$,this.options=X}async evaluate($,X,J){let W=tC0($,X,J),G=await this.client.evaluate(this.options.decisionPath,W),B=this.options.mapResult?this.options.mapResult(G):G;if(!B)return{...J,evaluatedBy:J.evaluatedBy??"engine"};let F=B,A=pf1(X,J.requiredConsents??[],F.requiredConsents??[]);return{...J,effect:F.effect??J.effect,reason:F.reason??J.reason,fieldDecisions:F.fieldDecisions??J.fieldDecisions,requiredConsents:A.length?A:void 0,evaluatedBy:"opa"}}};var cH$=()=>{};var Vz6=y0(()=>{sC0();dH$();cH$()});function wz6($){return{key:$.meta.key,version:$.meta.version}}var Az6;var Oz6=y0(()=>{sw();Az6=class extends fG{constructor($){super("theme",$)}}});var Lz6=($,X)=>`${$}.v${X}`,Iz6=class{items=new Map;register($){let X=Lz6($.meta.key,$.meta.version);if(this.items.has(X))throw Error(`Duplicate migration ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()].sort(($,X)=>{let J=$.meta.key.localeCompare(X.meta.key);return J!==0?J:RB($.meta.version,X.meta.version)})}get($,X){if(X!=null)return this.items.get(Lz6($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||RB(W.meta.version,J.meta.version)>0)J=W}return J}};var Ez6=y0(()=>{jR()});function iH$($){return nf1($)}var nf1=($)=>`${$.key}.v${$.version}`,pH$;var nH$=y0(()=>{sw();jR();pH$=class extends fG{eventsByKey=new Map;specByEventKey=new Map;constructor($){super("telemetry",$);if($)$.forEach((X)=>this.indexEvents(X))}register($){return super.register($),this.indexEvents($),this}indexEvents($){for(let X of $.events)this.eventsByKey.set(`${X.key}.v${X.version}`,X),this.specByEventKey.set(`${X.key}.v${X.version}`,$)}findEventDef($,X){if(X!=null)return this.eventsByKey.get(`${$}.v${X}`);let J;for(let W of this.eventsByKey.values()){if(W.key!==$)continue;if(!J||RB(W.version,J.version)>0)J=W}return J}getSpecForEvent($,X){return this.specByEventKey.get(`${$}.v${X}`)}}});import{randomUUID as rf1}from"crypto";var of1=($)=>{if($==null)return $;if(typeof $==="string")return"REDACTED";if(typeof $==="number")return 0;if(typeof $==="boolean")return!1;if(Array.isArray($))return $.map(()=>"REDACTED");if(typeof $==="object")return Object.fromEntries(Object.keys($).map((X)=>[X,"REDACTED"]));return"REDACTED"},rH$=class{providers=new Map;registry;anomalyMonitor;random;clock;constructor($){this.registry=$.registry,this.anomalyMonitor=$.anomalyMonitor,this.random=$.random??Math.random,this.clock=$.clock??(()=>new Date);for(let X of $.providers??[])this.providers.set(X.id,X)}registerProvider($){this.providers.set($.id,$)}unregisterProvider($){this.providers.delete($)}async track($,X,J,W={}){let G=this.registry.findEventDef($,X);if(!G)return!1;let B=this.registry.getSpecForEvent(G.key,G.version);if(!B)return!1;if(!this.shouldSample(G.sampling??B.config?.defaultSamplingRate))return!1;let F=this.redactProperties(G,J),A={id:rf1(),name:G.key,version:G.version,occurredAt:this.clock().toISOString(),properties:F,privacy:G.privacy,context:W,tags:G.tags,spec:B,definition:G};return await Promise.all([...this.providers.values()].map((I)=>I.send(A))),this.anomalyMonitor?.observe(A),!0}shouldSample($){if(typeof $==="number")return this.random()<$;if(!$)return!0;return this.random()<$.rate}redactProperties($,X){let J={};for(let[W,G]of Object.entries(X)){let B=$.properties[W];if(!B){J[W]=G;continue}if(B.redact||B.pii||$.privacy==="sensitive")J[W]=of1(G);else J[W]=G}return J}};var oH$=()=>{};var aH$=class{onAnomaly;now;samples=new Map;constructor($={}){this.onAnomaly=$.onAnomaly,this.now=$.now??(()=>new Date)}observe($){let X=$.definition.anomalyDetection;if(!X?.enabled)return;if(!X.thresholds?.length)return;let J=`${$.name}.v${$.version}`,W=(this.samples.get(J)??0)+1;if(this.samples.set(J,W),typeof X.minimumSample==="number"&&W<X.minimumSample)return;for(let G of X.thresholds){let B=this.extractMetric($,G.metric);if(typeof B!=="number")continue;if(typeof G.min==="number"&&B<G.min)this.emit($,X,G.metric,B,"min");if(typeof G.max==="number"&&B>G.max)this.emit($,X,G.metric,B,"max")}}extractMetric($,X){let J=$.properties[X];if(typeof J==="number")return J;if(typeof J==="object"&&J!==null&&"value"in J){let W=J.value;return typeof W==="number"?W:void 0}}emit($,X,J,W,G){this.onAnomaly?.({dispatch:$,threshold:X,metric:J,value:W,type:G})}reset(){this.samples.clear()}};var sH$=()=>{};var Mz6=y0(()=>{nH$();oH$();sH$()});function eH$($){return jz6($)}var jz6=($)=>`${$.key}.v${$.version}`,tH$=class{items=new Map;register($){let X=jz6($.meta);if(this.items.has(X))throw Error(`Duplicate TestSpec registration for ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()]}get($,X){if(X!=null)return this.items.get(`${$}.v${X}`);let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||RB(W.meta.version,J.meta.version)>0)J=W}return J}};var $G$=y0(()=>{jR()});import{deepStrictEqual as af1}from"assert";var n00=class{constructor($){this.config=$}async run($){let X=[],J=0,W=0;for(let G of $.scenarios){await this.config.beforeEach?.(G);let B=await this.runScenario($,G);if(X.push(B),B.status==="passed")J+=1;else W+=1;await this.config.afterEach?.(G,B)}return{spec:$,scenarios:X,passed:J,failed:W}}async runScenario($,X){let J=[];try{let W=await this.createContext(),G=[...$.fixtures??[],...X.given??[]],B=[];for(let I of G)await this.executeOperation(I,W,B);let F=await this.executeOperation(X.when,W,B),A=X.then??[];for(let I of A){let E=this.evaluateAssertion(I,F,B);J.push(E)}return{scenario:X,status:J.some((I)=>I.status==="failed")?"failed":"passed",assertionResults:J}}catch(W){return{scenario:X,status:"failed",error:W,assertionResults:J}}}async createContext(){return{...await this.config.createContext?.()??{}}}async executeOperation($,X,J){let W={...X,eventPublisher:async(G)=>{J.push({key:G.key,version:G.version,payload:G.payload}),await X.eventPublisher?.(G)}};try{return{output:await this.config.registry.execute($.operation.key,$.operation.version,$.input??null,W),events:J}}catch(G){return{error:G,events:J}}}evaluateAssertion($,X,J){switch($.type){case"expectOutput":return this.evaluateOutputAssertion($,X);case"expectError":return this.evaluateErrorAssertion($,X);case"expectEvents":return this.evaluateEventsAssertion($,J);default:return{assertion:$,status:"failed",message:`Unknown assertion type ${$.type}`}}}evaluateOutputAssertion($,X){if(X.error)return{assertion:$,status:"failed",message:`Expected output but operation threw error: ${X.error.message}`};try{return af1(X.output,$.match),{assertion:$,status:"passed"}}catch(J){return{assertion:$,status:"failed",message:J instanceof Error?J.message:"Output assertion failed"}}}evaluateErrorAssertion($,X){if(!X.error)return{assertion:$,status:"failed",message:"Expected an error but operation completed successfully"};if($.messageIncludes&&!X.error.message.includes($.messageIncludes))return{assertion:$,status:"failed",message:`Error message "${X.error.message}" did not include expected substring "${$.messageIncludes}"`};return{assertion:$,status:"passed"}}evaluateEventsAssertion($,X){let J=[];for(let W of $.events){let G=X.filter((B)=>B.key===W.key&&B.version===W.version).length;if(typeof W.min==="number"&&G<W.min||typeof W.max==="number"&&G>W.max)J.push(`Event ${W.key}.v${W.version} occurred ${G} times (expected ${W.min??0} - ${W.max??"\u221E"})`);else if(typeof W.min>"u"&&typeof W.max>"u"&&G===0)J.push(`Event ${W.key}.v${W.version} did not occur`)}if(J.length>0)return{assertion:$,status:"failed",message:J.join("; ")};return{assertion:$,status:"passed"}}};var DG$=y0(()=>{LI()});var XG$=y0(()=>{$G$();DG$()});function Rz6($){return sf1($)}var sf1=($)=>`${$.key}.v${$.version}`,Nz6;var Pz6=y0(()=>{sw();Nz6=class extends fG{constructor($){super("experiment",$)}}});import{createHash as tf1}from"crypto";var Cz6=class{registry;policyChecker;expressionEvaluator;constructor($){this.registry=$.registry,this.policyChecker=$.policyChecker,this.expressionEvaluator=$.expressionEvaluator}async chooseVariant($){let X=this.registry.get($.experiment,$.version);if(!X)return null;let J=X.variants.find((W)=>W.id===X.controlVariant);if(!J)throw Error(`Experiment ${X.meta.key} missing control variant ${X.controlVariant}`);switch(X.allocation.type){case"random":return{variant:this.pickByWeight(X,this.randomSeed($,X.allocation.salt)),reason:"random"};case"sticky":return{variant:this.pickByWeight(X,this.stickySeed($,X.allocation.attribute,X.allocation.salt)),reason:"sticky"};case"targeted":{let W=await this.evaluateTargeting(X,$,X.allocation.rules);if(W)return{variant:W,reason:"targeted"};if(X.allocation.fallback==="random")return{variant:this.pickByWeight(X,this.randomSeed($)),reason:"random"};return{variant:J,reason:"control"}}default:return{variant:J,reason:"control"}}}pickByWeight($,X){let J=$.variants,W=X*J.reduce((B,F)=>B+(F.weight??1),0),G=0;for(let B of J)if(G+=B.weight??1,W<=G)return B;return J[J.length-1]}randomSeed($,X=""){let J=$.sessionId??$.userId??$.organizationId??`${Date.now()}-${Math.random()}`;return this.hashToUnitInterval(J+X)}stickySeed($,X,J=""){let W=$[X];if(!W)return this.randomSeed($,J);return this.hashToUnitInterval(`${W}-${J}`)}hashToUnitInterval($){let X=tf1("sha256").update($).digest("hex").slice(0,15);return parseInt(X,16)%1e6/1e6}async evaluateTargeting($,X,J){for(let W of J){if(!await this.matchesRule(W,X))continue;let G=$.variants.find((B)=>B.id===W.variantId);if(!G)continue;if(typeof W.percentage==="number"){if(this.randomSeed(X,`rule-${W.variantId}`)>W.percentage)continue}return G}return null}async matchesRule($,X){if($.policy&&this.policyChecker){if(!await this.policyChecker($.policy,X))return!1}if($.expression){if(this.expressionEvaluator)return Boolean(this.expressionEvaluator($.expression,X));try{let J=Function("context",`return (${$.expression});`);return Boolean(J(X))}catch(J){return!1}}return!0}};var Tz6=()=>{};function Sz6($){return ef1($)}var ef1=($)=>`${$.key}.v${$.version}`,bz6;var _z6=y0(()=>{sw();bz6=class extends fG{constructor($){super("app-config",$)}}});function iQ0($,X,J={}){let W=$h1($.capabilities,X.capabilities),G=Dh1($.features,X.features),B=kz6($.dataViews??{},X.dataViewOverrides),F=kz6($.workflows??{},X.workflowOverrides),A=Xh1($.policies??[],X.additionalPolicies??[]),I=Yh1($.theme,X.themeOverride),E=Jh1($.telemetry,X.telemetryOverride),T=Wh1($.experiments,X.experiments),_=Gh1($.featureFlags??[],X.featureFlags??[]),S=zh1($.routes??[],X.routeOverrides??[]),{resolved:h}=yz6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs),c=Zh1(X.knowledge,J.knowledgeSpaces,J.knowledgeSources),l=Qh1($.branding,X),Z0=Hh1($.translationCatalog,X.locales,X.translationOverrides);return{appId:$.meta.appId,tenantId:X.meta.tenantId,environment:X.meta.environment,blueprintName:$.meta.key,blueprintVersion:$.meta.version,configVersion:X.meta.version,capabilities:W,features:G,dataViews:B,workflows:F,policies:A,theme:I,telemetry:E,experiments:T,featureFlags:_,routes:S,integrations:h,knowledge:c,translation:Z0,branding:l,notes:X.notes??$.notes}}function xz6($,X,J,W={}){let G=iQ0($,X,J),B=[],F=yz6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs);G.integrations=F.resolved,B.push(...F.missing),B.push(...Uh1(X.knowledge??[],J.knowledgeSpaces,J.knowledgeSources));let A=qh1(G.capabilities.enabled,J.capabilities,B),I=Fh1(G.features.include,J.features,B),E=vz6(G.dataViews,J.dataViews,"dataView",B),T=vz6(G.workflows,J.workflows,"workflow",B),_=Kh1(G.policies,J.policies,B),{theme:S,fallbacks:h,themeMissing:c}=Vh1(G.theme,J.themes);B.push(...c);let{telemetry:l,telemetryMissing:Z0}=Ah1(G.telemetry,J.telemetry);B.push(...Z0);let I0=wh1(G.experiments,J.experiments,B);if(W.strict&&B.length>0){let C0=B.map((T0)=>`${T0.type}:${T0.identifier}`).join(", ");throw Error(`composeAppConfig: missing references -> ${C0}`)}return{resolved:G,capabilities:A,features:I,dataViews:E,workflows:T,policies:_,theme:S,themeFallbacks:h,telemetry:l,experiments:I0,integrations:G.integrations,knowledge:G.knowledge,missing:B}}function $h1($,X){let J=ih([...$?.enabled??[],...X?.enable??[]],r00),W=ih([...$?.disabled??[],...X?.disable??[]],r00),G=new Set(W.map(r00));return{enabled:J.filter((B)=>!G.has(r00(B))),disabled:W}}function Dh1($,X){let J=ih([...$?.include??[],...X?.include??[]],eC0),W=ih([...$?.exclude??[],...X?.exclude??[]],eC0),G=new Set(W.map(eC0));return{include:J.filter((B)=>!G.has(eC0(B))),exclude:W}}function kz6($,X){let J={...$};if(!X)return J;for(let W of X){if(!W)continue;if(!W.pointer)delete J[W.slot];else J[W.slot]=W.pointer}return J}function Xh1($,X){return ih([...$,...X],YG$)}function Yh1($,X){if(!$&&!X)return;let J=X?.primary??$?.primary;if(!J)return;return{primary:J,fallbacks:X?.fallbacks??$?.fallbacks??[]}}function Jh1($,X){if(!$&&!X)return;let J={spec:$?.spec,disabledEvents:$?.disabledEvents?[...$.disabledEvents]:void 0,samplingOverrides:$?.samplingOverrides?{...$.samplingOverrides}:void 0};if(X?.spec!==void 0)J.spec=X.spec??void 0;if(X?.disabledEvents)J.disabledEvents=fz6([...J.disabledEvents??[],...X.disabledEvents]);if(X?.samplingOverrides)J.samplingOverrides={...J.samplingOverrides??{},...X.samplingOverrides};if(!J.spec&&!J.disabledEvents?.length)return;return J}function Wh1($,X){let J=$?.active??[],W=$?.paused??[],G=X?.active,B=X?.paused,F=G&&G.length>0?G:J,A=B&&B.length>0?B:W,I=ih(F,qp),E=ih(A,qp),T=new Set(I.map(qp));return E=E.filter((_)=>!T.has(qp(_))),{catalog:ih([...J,...W,...G??[],...B??[]],qp),active:I,paused:E}}function Qh1($,X){let{branding:J,meta:W}=X,G="app.localhost",B=J?.customDomain??(J?.subdomain?`${J.subdomain}.app.localhost`:`${W.tenantId}.app.localhost`),F=[];if(X.locales?.defaultLocale)F.push(X.locales.defaultLocale);if(J?.appName)F.push("default","en");let A;if(J?.appName){for(let S of F){let h=J.appName[S];if(h){A=h;break}}if(!A){let[,S]=Object.entries(J.appName)[0]??[];if(typeof S==="string")A=S}}if(!A)A=$?.appNameKey??W.appId;let I=new Map,E=(S)=>{if(!S)return;for(let h of S){if(!h?.type)continue;if("url"in h&&h.url)I.set(h.type,h.url)}};E($?.assets),E(J?.assets);let T={logo:I.get("logo"),logoDark:I.get("logo-dark"),favicon:I.get("favicon"),ogImage:I.get("og-image")},_={primary:J?.colors?.primary??$?.colorTokens?.primary??"#1f2937",secondary:J?.colors?.secondary??$?.colorTokens?.secondary??"#4b5563"};return{appName:A,assets:T,colors:_,domain:B}}function Hh1($,X,J){let W=X?.defaultLocale??"en";return{defaultLocale:W,supportedLocales:fz6([W,...X?.enabledLocales??[]]),blueprintCatalog:$,tenantOverrides:J?.entries??[]}}function Gh1($,X){let J=new Map;for(let W of $)J.set(W.key,{...W});for(let W of X)J.set(W.key,{...W});return[...J.values()]}function zh1($,X){let J=new Map;for(let W of $)J.set(W.path,{...W});for(let W of X){let G=J.get(W.path)??{path:W.path};if(W.label!==void 0)if(W.label===null)delete G.label;else G.label=W.label;if(W.dataView!==void 0)if(W.dataView===null)delete G.dataView;else G.dataView=W.dataView;if(W.workflow!==void 0)if(W.workflow===null)delete G.workflow;else G.workflow=W.workflow;if(W.guard!==void 0)if(W.guard===null)delete G.guard;else G.guard=W.guard;if(W.featureFlag!==void 0)if(W.featureFlag===null)delete G.featureFlag;else G.featureFlag=W.featureFlag;if(W.experiment!==void 0)if(W.experiment===null)delete G.experiment;else G.experiment=W.experiment;J.set(G.path,G)}return[...J.values()]}function yz6($,X,J,W){let G=[],B=[],F=new Set,A=(S)=>{let h=`${S.type}:${S.identifier}`;if(F.has(h))return;F.add(h),B.push(S)},I=$??[],E=new Map;for(let S of I)E.set(S.slotId,S);let T=new Map;for(let S of X??[]){if(!E.get(S.slotId)){A({type:"integrationSlot",identifier:`slot:${S.slotId}`});continue}let h=T.get(S.slotId);if(h)h.push(S);else T.set(S.slotId,[S])}for(let S of I){let h=T.get(S.slotId)??[];if(S.required&&h.length===0)A({type:"integrationSlot",identifier:`slot:${S.slotId}`})}if(!J||!W)return{resolved:G,missing:B};let _=new Map;for(let S of J)_.set(S.meta.id,S);for(let S of I){let h=T.get(S.slotId)??[];if(h.length===0)continue;let c=[...h].sort((Z0,I0)=>{let C0=Z0.priority??Number.MAX_SAFE_INTEGER,T0=I0.priority??Number.MAX_SAFE_INTEGER;if(C0===T0)return 0;return C0<T0?-1:1}),l=!1;for(let Z0 of c){let I0=_.get(Z0.connectionId);if(!I0){A({type:"integrationConnection",identifier:`connection:${Z0.connectionId}`});continue}let C0=W.get(I0.meta.integrationKey,I0.meta.integrationVersion);if(!C0){A({type:"integrationSpec",identifier:`spec:${I0.meta.integrationKey}.v${I0.meta.integrationVersion}`});continue}if(C0.meta.category!==S.requiredCategory){A({type:"integrationSpec",identifier:`spec:${C0.meta.key}.category`});continue}if(!C0.supportedModes.includes(I0.ownershipMode)){A({type:"integrationSpec",identifier:`spec:${C0.meta.key}.mode:${I0.ownershipMode}`});continue}if(S.allowedModes&&S.allowedModes.length>0&&!S.allowedModes.includes(I0.ownershipMode)){A({type:"integrationConnection",identifier:`connection:${I0.meta.id}:mode`});continue}if(S.requiredCapabilities&&!S.requiredCapabilities.every((T0)=>Bh1(C0,T0))){A({type:"integrationSpec",identifier:`spec:${C0.meta.key}.capabilities`});continue}G.push({slot:S,binding:Z0,connection:I0,spec:C0}),l=!0;break}if(!l&&S.required)A({type:"integrationSlot",identifier:`slot:${S.slotId}`})}return{resolved:G,missing:B}}function Bh1($,X){return $.capabilities.provides.some((J)=>{if(J.key!==X.key)return!1;if(X.version==null)return!0;return J.version===X.version})}function Zh1($,X,J){if(!$?.length||!X)return[];let W=J??[];return $.map((G)=>{let B=X.get(G.spaceKey,G.spaceVersion);if(!B)return null;return{binding:G,space:B,sources:W.filter((F)=>{if(F.meta.spaceKey!==G.spaceKey)return!1;if(G.spaceVersion!=null)return F.meta.spaceVersion===G.spaceVersion;return!0})}}).filter((G)=>G!==null)}function Uh1($,X,J){if(!$.length||!X)return[];let W=[],G=J??[];for(let B of $){if(!X.get(B.spaceKey,B.spaceVersion)){W.push({type:"knowledgeSpace",identifier:B.spaceVersion?`${B.spaceKey}@${B.spaceVersion}`:B.spaceKey});continue}if(J){if(G.filter((F)=>{if(F.meta.spaceKey!==B.spaceKey)return!1;if(B.spaceVersion!=null)return F.meta.spaceVersion===B.spaceVersion;return!0}).length===0)W.push({type:"knowledgeSource",identifier:B.spaceVersion?`${B.spaceKey}@${B.spaceVersion}`:B.spaceKey})}}return W}function qh1($,X,J){if(!X){if($.length>0)for(let G of $)J.push({type:"capability",identifier:r00(G)});return[]}let W=[];for(let G of $){let B=X.get(G.key,G.version);if(!B){J.push({type:"capability",identifier:r00(G)});continue}W.push(B)}return W}function Fh1($,X,J){if(!X){if($.length>0)for(let G of $)J.push({type:"feature",identifier:G.key});return[]}let W=[];for(let G of $){let B=X.get(G.key);if(!B){J.push({type:"feature",identifier:G.key});continue}W.push(B)}return W}function vz6($,X,J,W){if(!X){if(Object.keys($).length>0)for(let[B,F]of Object.entries($))W.push({type:J,identifier:`${B} -> ${$T0(F)}`});return{}}let G={};for(let[B,F]of Object.entries($)){let A=X.get(F.key,F.version);if(!A){W.push({type:J,identifier:`${B} -> ${$T0(F)}`});continue}G[B]=A}return G}function Kh1($,X,J){if(!X){if($.length>0)for(let G of $)J.push({type:"policy",identifier:YG$(G)});return[]}let W=[];for(let G of $){let B=X.get(G.key,G.version);if(!B){J.push({type:"policy",identifier:YG$(G)});continue}W.push(B)}return W}function Vh1($,X){let J=[];if(!$)return{theme:void 0,fallbacks:[],themeMissing:J};if(!X){J.push({type:"theme",identifier:`${$.primary.key}.v${$.primary.version}`});for(let B of $.fallbacks??[])J.push({type:"theme",identifier:`${B.key}.v${B.version}`});return{theme:void 0,fallbacks:[],themeMissing:J}}let W=X.get($.primary.key,$.primary.version);if(!W)J.push({type:"theme",identifier:`${$.primary.key}.v${$.primary.version}`});let G=[];for(let B of $.fallbacks??[]){let F=X.get(B.key,B.version);if(!F){J.push({type:"theme",identifier:`${B.key}.v${B.version}`});continue}G.push(F)}return{theme:W??void 0,fallbacks:G,themeMissing:J}}function Ah1($,X){let J=[];if(!$?.spec)return{telemetry:void 0,telemetryMissing:J};if(!X)return J.push({type:"telemetry",identifier:$T0($.spec)}),{telemetry:void 0,telemetryMissing:J};let W=X.get($.spec.key,$.spec.version);if(!W)J.push({type:"telemetry",identifier:$T0($.spec)});return{telemetry:W??void 0,telemetryMissing:J}}function wh1($,X,J){let W=(G)=>{if(G.length===0)return[];if(!X){for(let F of G)J.push({type:"experiment",identifier:qp(F)});return[]}let B=[];for(let F of G){let A=X.get(F.key,F.version);if(!A){J.push({type:"experiment",identifier:qp(F)});continue}B.push(A)}return B};return{active:W($.active),paused:W($.paused)}}function r00($){return`${$.key}${$.version?`.v${$.version}`:""}`}function eC0($){return $.key}function $T0($){return`${$.key}${$.version?`.v${$.version}`:""}`}function YG$($){return`${$.key}${$.version?`.v${$.version}`:""}`}function qp($){return`${$.key}${$.version?`.v${$.version}`:""}`}function ih($,X){let J=new Map;for(let W of $)J.set(X(W),W);return[...J.values()]}function fz6($){return[...new Set($)]}var hz6=()=>{};function JG$($){return Oh1($)}var Oh1=($)=>`${$.key}.v${$.version}`,nQ0;var DT0=y0(()=>{sw();nQ0=class extends fG{constructor($){super("integration",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function o00($){return $.register(rQ0)}var rQ0;var oQ0=y0(()=>{OZ();rQ0={meta:{key:"payments.stripe",version:"1.0.0",category:"payments",title:"Stripe Payments",description:"Stripe integration for payment processing, charges, and payouts.",domain:"payments",owners:["platform.payments"],tags:["payments","psp"],stability:L5.Stable},supportedModes:["managed","byok"],capabilities:{provides:[{key:"payments.psp",version:"1.0.0"}],requires:[{key:"platform.webhooks",optional:!0,reason:"Recommended for reliable event ingestion"}]},configSchema:{schema:{type:"object",properties:{accountId:{type:"string",description:"Connected account ID when using Stripe Connect (BYOK)."},region:{type:"string",description:"Optional Stripe region or data residency hint."}}},example:{accountId:"acct_123",region:"us-east-1"}},secretSchema:{schema:{type:"object",required:["apiKey","webhookSecret"],properties:{apiKey:{type:"string",description:"Stripe secret API key (sk_live_... or sk_test_...)."},webhookSecret:{type:"string",description:"Signing secret for webhook verification."}}},example:{apiKey:"sk_live_***",webhookSecret:"whsec_***"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://stripe.com/docs/api",constraints:{rateLimit:{rpm:1000,rph:20000}},byokSetup:{setupInstructions:"Create a restricted Stripe API key with write access to Charges and provide a webhook signing secret.",requiredScopes:["charges:write","customers:read"]}}});function a00($){return $.register(aQ0)}var aQ0;var sQ0=y0(()=>{OZ();aQ0={meta:{key:"email.postmark",version:"1.0.0",category:"email",title:"Postmark Transactional Email",description:"Postmark integration for transactional email delivery.",domain:"communications",owners:["platform.messaging"],tags:["email","transactional"],stability:L5.Stable},supportedModes:["managed","byok"],capabilities:{provides:[{key:"email.transactional",version:"1.0.0"}],requires:[{key:"platform.webhooks",optional:!0,reason:"Optional for inbound bounce handling"}]},configSchema:{schema:{type:"object",properties:{messageStream:{type:"string",description:"Optional message stream identifier (e.g., transactional)."},fromEmail:{type:"string",description:"Default From address used for outbound messages."}}},example:{messageStream:"outbound",fromEmail:"notifications@example.com"}},secretSchema:{schema:{type:"object",required:["serverToken"],properties:{serverToken:{type:"string",description:"Server token for the Postmark account."}}},example:{serverToken:"server-***"}},healthCheck:{method:"ping",timeoutMs:3000},docsUrl:"https://postmarkapp.com/developer",constraints:{rateLimit:{rpm:500}},byokSetup:{setupInstructions:"Create a Postmark server token with outbound send permissions and configure allowed from addresses."}}});function s00($){return $.register(tQ0)}var tQ0;var eQ0=y0(()=>{OZ();tQ0={meta:{key:"vectordb.qdrant",version:"1.0.0",category:"vector-db",title:"Qdrant Vector Database",description:"Qdrant integration for vector search and embeddings storage.",domain:"ai",owners:["platform.ai"],tags:["vector-db","search"],stability:L5.Experimental},supportedModes:["managed","byok"],capabilities:{provides:[{key:"vector-db.search",version:"1.0.0"},{key:"vector-db.storage",version:"1.0.0"}],requires:[{key:"ai.embeddings",optional:!0,reason:"Required if vectors are generated via hosted embedding services"}]},configSchema:{schema:{type:"object",properties:{apiUrl:{type:"string",description:"Base URL for the Qdrant instance (e.g., https://qdrant.example.com)."},collectionPrefix:{type:"string",description:"Prefix applied to all collection names for this tenant."}}},example:{apiUrl:"https://qdrant.example.com",collectionPrefix:"tenant_"}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string",description:"API key or token when authentication is enabled."}}},example:{apiKey:"qdrant-api-key"}},healthCheck:{method:"ping",timeoutMs:4000},docsUrl:"https://qdrant.tech/documentation/quick-start/",constraints:{quotas:{collections:100,pointsPerCollection:1e6}},byokSetup:{setupInstructions:"Provide the HTTPS endpoint of your Qdrant cluster and generate an API key with read/write access to the collections that will be managed."}}});function t00($){return $.register($H0)}var $H0;var DH0=y0(()=>{OZ();$H0={meta:{key:"ai-llm.mistral",version:"1.0.0",category:"ai-llm",title:"Mistral Large Language Model",description:"Mistral integration providing chat completions and embedding generation.",domain:"ai",owners:["platform.ai"],tags:["ai","llm","embeddings"],stability:L5.Experimental},supportedModes:["managed","byok"],capabilities:{provides:[{key:"ai.chat",version:"1.0.0"},{key:"ai.embeddings",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"Default chat completion model (e.g., mistral-large-latest)."},embeddingModel:{type:"string",description:"Embedding model identifier."}}},example:{model:"mistral-large-latest",embeddingModel:"mistral-embed"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Mistral API key with access to chat and embeddings endpoints."}}},example:{apiKey:"mistral-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.mistral.ai/platform/endpoints",constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:"Generate an API key within the Mistral console and ensure the selected models are enabled for the account."}}});function e00($){return $.register(XH0)}var XH0;var YH0=y0(()=>{OZ();XH0={meta:{key:"ai-voice.elevenlabs",version:"1.0.0",category:"ai-voice",title:"ElevenLabs Text-to-Speech",description:"ElevenLabs integration for neural voice synthesis and voice catalog access.",domain:"ai",owners:["platform.ai"],tags:["voice","tts"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"ai.voice.synthesis",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultVoiceId:{type:"string",description:"Optional default voice identifier for synthesis requests."}}},example:{defaultVoiceId:"pNInz6obpgDQGcFmaJgB"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"ElevenLabs API key with text-to-speech permissions."}}},example:{apiKey:"eleven-***"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://elevenlabs.io/docs/api-reference/text-to-speech",constraints:{rateLimit:{rpm:120}},byokSetup:{setupInstructions:"Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope."}}});function $$0($){return $.register(JH0)}var JH0;var WH0=y0(()=>{OZ();JH0={meta:{key:"email.gmail",version:"1.0.0",category:"email",title:"Google Gmail API",description:"Gmail integration supporting inbound thread ingestion and outbound transactional email.",domain:"communications",owners:["platform.messaging"],tags:["email","gmail"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"email.inbound",version:"1.0.0"},{key:"email.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{labelIds:{type:"array",items:{type:"string"},description:"Optional list of label IDs to scope inbound sync."},includeSpamTrash:{type:"boolean",description:"Whether to include spam or trash messages during sync."}}},example:{labelIds:["INBOX"],includeSpamTrash:!1}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret","refreshToken"],properties:{clientId:{type:"string",description:"OAuth client ID for the Google Cloud project."},clientSecret:{type:"string",description:"OAuth client secret for the Google Cloud project."},refreshToken:{type:"string",description:"OAuth refresh token for delegated Gmail access."},redirectUri:{type:"string",description:"Optional redirect URI used when issuing the refresh token."}}},example:{clientId:"xxx.apps.googleusercontent.com",clientSecret:"secret",refreshToken:"refresh-token"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.google.com/gmail/api",constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:"Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token."}}});function D$0($){return $.register(QH0)}var QH0;var HH0=y0(()=>{OZ();QH0={meta:{key:"calendar.google",version:"1.0.0",category:"calendar",title:"Google Calendar API",description:"Google Calendar integration for event creation, updates, and scheduling automations.",domain:"productivity",owners:["platform.messaging"],tags:["calendar","google"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"calendar.events",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{calendarId:{type:"string",description:"Default calendar identifier (defaults to primary)."}}},example:{calendarId:"primary"}},secretSchema:{schema:{type:"object",required:["clientEmail","privateKey"],properties:{clientEmail:{type:"string",description:"Service account client email."},privateKey:{type:"string",description:"Service account private key."},projectId:{type:"string",description:"Google Cloud project ID."}}},example:{clientEmail:"svc-calendar@example.iam.gserviceaccount.com",privateKey:"-----BEGIN PRIVATE KEY-----...",projectId:"calendar-project"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.google.com/calendar/api",constraints:{},byokSetup:{setupInstructions:"Create a Google service account with Calendar access and share the target calendars with the service account email."}}});function X$0($){return $.register(GH0)}var GH0;var zH0=y0(()=>{OZ();GH0={meta:{key:"sms.twilio",version:"1.0.0",category:"sms",title:"Twilio Messaging",description:"Twilio SMS integration for transactional and notification messaging.",domain:"communications",owners:["platform.messaging"],tags:["sms","messaging"],stability:L5.Stable},supportedModes:["managed","byok"],capabilities:{provides:[{key:"sms.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{fromNumber:{type:"string",description:"Default Twilio phone number used as sender."}}},example:{fromNumber:"+15551234567"}},secretSchema:{schema:{type:"object",required:["accountSid","authToken"],properties:{accountSid:{type:"string",description:"Twilio Account SID."},authToken:{type:"string",description:"Twilio Auth Token."}}},example:{accountSid:"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",authToken:"auth-token"}},healthCheck:{method:"custom",timeoutMs:3000},docsUrl:"https://www.twilio.com/docs/sms/api",constraints:{rateLimit:{rpm:200}},byokSetup:{setupInstructions:"Provide a Twilio account SID, auth token, and verify the outbound sending numbers used by the integration."}}});function Y$0($){return $.register(BH0)}var BH0;var ZH0=y0(()=>{OZ();BH0={meta:{key:"storage.gcs",version:"1.0.0",category:"storage",title:"Google Cloud Storage Buckets",description:"Google Cloud Storage integration for object storage and retrieval.",domain:"infrastructure",owners:["platform.infrastructure"],tags:["storage","gcs","google-cloud"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"storage.objects",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["bucket"],properties:{bucket:{type:"string",description:"Primary bucket name used for storing objects."},prefix:{type:"string",description:"Optional prefix applied to object keys."}}},example:{bucket:"pfo-tenant-assets",prefix:"documents/"}},secretSchema:{schema:{type:"object",properties:{type:{type:"string",description:"Service account type field from Google credentials JSON (if provided)."},client_email:{type:"string"},private_key:{type:"string"},project_id:{type:"string"}}},example:{type:"service_account",client_email:"svc-account@example.iam.gserviceaccount.com",private_key:"-----BEGIN PRIVATE KEY-----...",project_id:"example-project"}},healthCheck:{method:"ping",timeoutMs:4000},docsUrl:"https://cloud.google.com/storage/docs/apis",constraints:{quotas:{storageGb:5120}},byokSetup:{setupInstructions:"Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store."}}});function J$0($){return $.register(UH0)}var UH0;var qH0=y0(()=>{OZ();UH0={meta:{key:"openbanking.powens",version:"1.0.0",category:"open-banking",title:"Powens Open Banking (Read)",description:"Read-only Open Banking integration powered by Powens, exposing accounts, transactions, and balances.",domain:"finance",owners:["platform.finance"],tags:["open-banking","powens","finance"],stability:L5.Experimental},supportedModes:["byok"],capabilities:{provides:[{key:"openbanking.accounts.read",version:"1.0.0"},{key:"openbanking.transactions.read",version:"1.0.0"},{key:"openbanking.balances.read",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["environment"],properties:{environment:{type:"string",enum:["sandbox","production"],description:"Powens environment to target. Sandbox uses Powens test API base URL, production uses live endpoints."},baseUrl:{type:"string",description:"Optional override for the Powens API base URL. Defaults to Powens environment defaults."},region:{type:"string",description:"Optional Powens region identifier when targeting a specific data residency cluster."},pollingIntervalMs:{type:"number",description:"Optional custom polling interval in milliseconds for background sync jobs (defaults to platform standard)."}}},example:{environment:"sandbox",baseUrl:"https://api-sandbox.powens.com/v2",region:"eu-west-1",pollingIntervalMs:300000}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string",description:"Powens OAuth client identifier obtained from the Powens Console (BYOK project)."},clientSecret:{type:"string",description:"Powens OAuth client secret used to exchange for access tokens."},apiKey:{type:"string",description:"Optional Powens API key (if the tenant project exposes a dedicated API token)."},webhookSecret:{type:"string",description:"Optional webhook signing secret used to verify Powens webhook payloads."}}},example:{clientId:"powens-client-id",clientSecret:"powens-client-secret",apiKey:"powens-api-key",webhookSecret:"powens-webhook-secret"}},healthCheck:{method:"ping",timeoutMs:8000},docsUrl:"https://docs.powens.com/",constraints:{rateLimit:{rph:1e4,rpm:600}},byokSetup:{setupInstructions:"Create a Powens BYOK project, generate OAuth credentials, and optionally configure webhook delivery for account/transaction updates.",requiredScopes:["accounts:read","transactions:read","balances:read"]}}});function XT0(){let $=new nQ0;return o00($),a00($),s00($),t00($),e00($),$$0($),D$0($),X$0($),Y$0($),J$0($),$}var YT0=y0(()=>{DT0();oQ0();sQ0();eQ0();DH0();YH0();WH0();HH0();zH0();ZH0();qH0()});var W$0,FH0,Q$0;var H$0=y0(()=>{$O();W$0=new O5({name:"BankAccountRecord",description:"Canonical representation of a bank account synced from an open banking provider.",fields:{id:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},userId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!1},externalId:{type:O1.NonEmptyString(),isOptional:!1},institutionId:{type:O1.NonEmptyString(),isOptional:!1},institutionName:{type:O1.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:O1.URL(),isOptional:!0},iban:{type:O1.String_unsecure(),isOptional:!0},bic:{type:O1.String_unsecure(),isOptional:!0},accountType:{type:O1.NonEmptyString(),isOptional:!1},currency:{type:O1.Currency(),isOptional:!1},displayName:{type:O1.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:O1.String_unsecure(),isOptional:!0},productCode:{type:O1.String_unsecure(),isOptional:!0},balance:{type:O1.Float_unsecure(),isOptional:!0},availableBalance:{type:O1.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:O1.DateTime(),isOptional:!1},createdAt:{type:O1.DateTime(),isOptional:!1},updatedAt:{type:O1.DateTime(),isOptional:!1},metadata:{type:O1.JSONObject(),isOptional:!0}}}),FH0=new O5({name:"BankTransactionRecord",description:"Canonical transaction entry mapped from Powens into the open banking ledger.",fields:{id:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!1},externalId:{type:O1.NonEmptyString(),isOptional:!1},amount:{type:O1.Float_unsecure(),isOptional:!1},currency:{type:O1.Currency(),isOptional:!1},date:{type:O1.DateTime(),isOptional:!1},bookingDate:{type:O1.DateTime(),isOptional:!0},valueDate:{type:O1.DateTime(),isOptional:!0},description:{type:O1.String_unsecure(),isOptional:!0},counterpartyName:{type:O1.String_unsecure(),isOptional:!0},counterpartyAccount:{type:O1.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:O1.String_unsecure(),isOptional:!0},rawCategory:{type:O1.String_unsecure(),isOptional:!0},standardizedCategory:{type:O1.String_unsecure(),isOptional:!0},transactionType:{type:O1.NonEmptyString(),isOptional:!1},status:{type:O1.NonEmptyString(),isOptional:!1},runningBalance:{type:O1.Float_unsecure(),isOptional:!0},metadata:{type:O1.JSONObject(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!1},updatedAt:{type:O1.DateTime(),isOptional:!1}}}),Q$0=new O5({name:"AccountBalanceRecord",description:"Canonical balance snapshot computed from Powens balance payloads.",fields:{id:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!1},balanceType:{type:O1.NonEmptyString(),isOptional:!1},currentBalance:{type:O1.Float_unsecure(),isOptional:!1},availableBalance:{type:O1.Float_unsecure(),isOptional:!0},currency:{type:O1.Currency(),isOptional:!1},lastUpdatedAt:{type:O1.DateTime(),isOptional:!1},createdAt:{type:O1.DateTime(),isOptional:!1},metadata:{type:O1.JSONObject(),isOptional:!0}}})});function KH0($){let X={};for(let[J,W]of Object.entries($))if(JT0.includes(J))X[J]=Lh1(W);else if(Array.isArray(W))X[J]=W.map((G)=>typeof G==="object"&&G!==null?KH0(G):G);else if(typeof W==="object"&&W!==null)X[J]=KH0(W);else X[J]=W;return X}function Lh1($){if($==null)return"";let X=String($);if(X.length<=4)return"*".repeat(X.length);return`${"*".repeat(Math.max(X.length-4,0))}${X.slice(-4)}`}var JT0,eM;var G$0=y0(()=>{JT0=["iban","bic","accountNumberMasked","accountNumber","counterpartyName","counterpartyAccount","description","merchantName","merchantCategoryCode","reference"],eM={accountsSynced:"openbanking.accounts.synced",accountsSyncFailed:"openbanking.accounts.sync_failed",transactionsSynced:"openbanking.transactions.synced",transactionsSyncFailed:"openbanking.transactions.sync_failed",balancesRefreshed:"openbanking.balances.refreshed",balancesRefreshFailed:"openbanking.balances.refresh_failed",overviewGenerated:"openbanking.overview.generated"}});function gz6($){return $.register(VH0).register(AH0).register(wH0)}var Ih1,Eh1,Mh1,jh1,Nh1,VH0,AH0,wH0;var WT0=y0(()=>{YP();JP();H$0();G$0();$O();Ih1=new O5({name:"OpenBankingListAccountsInput",description:"Parameters for listing bank accounts through the open banking provider.",fields:{tenantId:{type:O1.ID(),isOptional:!1},userId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!0},includeBalances:{type:O1.Boolean(),isOptional:!0},institutionId:{type:O1.String_unsecure(),isOptional:!0},cursor:{type:O1.String_unsecure(),isOptional:!0},pageSize:{type:O1.Int_unsecure(),isOptional:!0}}}),Eh1=new O5({name:"OpenBankingListAccountsOutput",description:"Paginated list of bank accounts available to the tenant and user.",fields:{accounts:{type:W$0,isOptional:!1,isArray:!0},nextCursor:{type:O1.String_unsecure(),isOptional:!0},hasMore:{type:O1.Boolean(),isOptional:!0}}}),Mh1=new O5({name:"OpenBankingGetAccountInput",description:"Parameters for retrieving a specific bank account.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},includeBalances:{type:O1.Boolean(),isOptional:!0},includeLatestTransactions:{type:O1.Boolean(),isOptional:!0}}}),jh1=new O5({name:"OpenBankingSyncAccountsInput",description:"Command payload to trigger an account synchronisation against the open banking provider.",fields:{tenantId:{type:O1.ID(),isOptional:!1},userId:{type:O1.ID(),isOptional:!0},connectionId:{type:O1.ID(),isOptional:!1},accountIds:{type:O1.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:O1.Boolean(),isOptional:!0},triggerWorkflows:{type:O1.Boolean(),isOptional:!0}}}),Nh1=new O5({name:"OpenBankingSyncAccountsOutput",description:"Result of a bank account synchronisation run.",fields:{synced:{type:O1.Int_unsecure(),isOptional:!1},failed:{type:O1.Int_unsecure(),isOptional:!1},errors:{type:O1.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:O1.DateTime(),isOptional:!0}}}),VH0=gK({meta:{key:"openbanking.accounts.list",version:"1.0.0",description:"List bank accounts available to a tenant/user via Powens Open Banking.",goal:"Provide downstream workflows with the set of accounts accessible via the configured open banking connection.",context:"Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.",owners:["@platform.finance"],tags:["open-banking","powens","accounts"],stability:"experimental"},io:{input:Ih1,output:Eh1},policy:{auth:"user"}}),AH0=gK({meta:{key:"openbanking.accounts.get",version:"1.0.0",description:"Retrieve the canonical bank account record for the given account identifier.",goal:"Allow user-facing experiences and automations to display up-to-date account metadata.",context:"Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.",owners:["@platform.finance"],tags:["open-banking","powens","accounts"],stability:"experimental"},io:{input:Mh1,output:W$0},policy:{auth:"user"}}),wH0=cz({meta:{key:"openbanking.accounts.sync",version:"1.0.0",description:"Initiate a synchronisation run to refresh bank account metadata from Powens.",goal:"Keep canonical bank account records aligned with the external open banking provider.",context:"Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.",owners:["@platform.finance"],tags:["open-banking","powens","accounts"],stability:"experimental"},io:{input:jh1,output:Nh1},policy:{auth:"admin"},telemetry:{success:{event:{key:eM.accountsSynced},properties:({input:$,output:X})=>{let J=$,W=X;return{tenantId:J?.tenantId,connectionId:J?.connectionId,synced:W?.synced,failed:W?.failed}}},failure:{event:{key:eM.accountsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,connectionId:J?.connectionId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function uz6($){return $.register(OH0).register(LH0)}var Rh1,Ph1,Ch1,Th1,OH0,LH0;var QT0=y0(()=>{YP();JP();H$0();G$0();$O();Rh1=new O5({name:"OpenBankingListTransactionsInput",description:"Parameters for listing bank transactions from the canonical ledger.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},from:{type:O1.DateTime(),isOptional:!0},to:{type:O1.DateTime(),isOptional:!0},cursor:{type:O1.String_unsecure(),isOptional:!0},pageSize:{type:O1.Int_unsecure(),isOptional:!0},direction:{type:O1.String_unsecure(),isOptional:!0},minimumAmount:{type:O1.Float_unsecure(),isOptional:!0},maximumAmount:{type:O1.Float_unsecure(),isOptional:!0},category:{type:O1.String_unsecure(),isOptional:!0}}}),Ph1=new O5({name:"OpenBankingListTransactionsOutput",description:"Paginated list of transactions for a bank account.",fields:{transactions:{type:FH0,isOptional:!1,isArray:!0},nextCursor:{type:O1.String_unsecure(),isOptional:!0},hasMore:{type:O1.Boolean(),isOptional:!0}}}),Ch1=new O5({name:"OpenBankingSyncTransactionsInput",description:"Command payload to synchronise transactions from the open banking provider into the canonical ledger.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},from:{type:O1.DateTime(),isOptional:!0},to:{type:O1.DateTime(),isOptional:!0},connectionId:{type:O1.ID(),isOptional:!0},includePending:{type:O1.Boolean(),isOptional:!0},backfillDays:{type:O1.Int_unsecure(),isOptional:!0}}}),Th1=new O5({name:"OpenBankingSyncTransactionsOutput",description:"Result of a transaction synchronisation run.",fields:{synced:{type:O1.Int_unsecure(),isOptional:!1},failed:{type:O1.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:O1.DateTime(),isOptional:!0},latestSyncedAt:{type:O1.DateTime(),isOptional:!0},nextSinceToken:{type:O1.String_unsecure(),isOptional:!0},errors:{type:O1.String_unsecure(),isArray:!0,isOptional:!0}}}),OH0=gK({meta:{key:"openbanking.transactions.list",version:"1.0.0",description:"List bank transactions that have been normalised into the canonical ledger.",goal:"Allow downstream analytics and UI surfaces to page through canonical bank transactions.",context:"Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.",owners:["@platform.finance"],tags:["open-banking","powens","transactions"],stability:"experimental"},io:{input:Rh1,output:Ph1},policy:{auth:"user"}}),LH0=cz({meta:{key:"openbanking.transactions.sync",version:"1.0.0",description:"Synchronise transactions for a bank account by calling the configured open banking provider.",goal:"Ensure the canonical transaction ledger stays aligned with the external provider.",context:"Triggered by scheduled workflows or on-demand actions when activity is expected on an account.",owners:["@platform.finance"],tags:["open-banking","powens","transactions"],stability:"experimental"},io:{input:Ch1,output:Th1},policy:{auth:"admin"},telemetry:{success:{event:{key:eM.transactionsSynced},properties:({input:$,output:X})=>{let J=$,W=X;return{tenantId:J?.tenantId,accountId:J?.accountId,synced:W?.synced,failed:W?.failed,earliestSyncedAt:W?.earliestSyncedAt,latestSyncedAt:W?.latestSyncedAt}}},failure:{event:{key:eM.transactionsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function mz6($){return $.register(IH0).register(EH0)}var bh1,Sh1,_h1,kh1,IH0,EH0;var HT0=y0(()=>{YP();JP();H$0();G$0();$O();bh1=new O5({name:"OpenBankingGetBalancesInput",description:"Parameters for retrieving bank account balances from the canonical ledger.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},balanceTypes:{type:O1.String_unsecure(),isArray:!0,isOptional:!0}}}),Sh1=new O5({name:"OpenBankingGetBalancesOutput",description:"Canonical balances for a bank account.",fields:{balances:{type:Q$0,isOptional:!1,isArray:!0},asOf:{type:O1.DateTime(),isOptional:!0}}}),_h1=new O5({name:"OpenBankingRefreshBalancesInput",description:"Command payload to refresh balances for a bank account via the open banking provider.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!0},balanceTypes:{type:O1.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:O1.Boolean(),isOptional:!0}}}),kh1=new O5({name:"OpenBankingRefreshBalancesOutput",description:"Result of a balance refresh against the open banking provider.",fields:{balances:{type:Q$0,isOptional:!1,isArray:!0},refreshedAt:{type:O1.DateTime(),isOptional:!1},errors:{type:O1.String_unsecure(),isArray:!0,isOptional:!0}}}),IH0=gK({meta:{key:"openbanking.balances.get",version:"1.0.0",description:"Retrieve the latest cached balances for a bank account.",goal:"Expose current and available balances required by dashboards and analytics.",context:"Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.",owners:["@platform.finance"],tags:["open-banking","powens","balances"],stability:"experimental"},io:{input:bh1,output:Sh1},policy:{auth:"user"}}),EH0=cz({meta:{key:"openbanking.balances.refresh",version:"1.0.0",description:"Refresh balances for a bank account via the configured open banking provider.",goal:"Ensure canonical balance records reflect the latest values from Powens.",context:"Triggered by scheduled workflows before generating summaries or forecasting cashflow.",owners:["@platform.finance"],tags:["open-banking","powens","balances"],stability:"experimental"},io:{input:_h1,output:kh1},policy:{auth:"admin"},telemetry:{success:{event:{key:eM.balancesRefreshed},properties:({input:$,output:X})=>{let J=$,W=X;return{tenantId:J?.tenantId,accountId:J?.accountId,refreshedAt:W?.refreshedAt,balanceCount:Array.isArray(W?.balances)?W?.balances.length:void 0}}},failure:{event:{key:eM.balancesRefreshFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});var GT0;var zT0=y0(()=>{GT0={meta:{key:"openbanking",version:"1.0.0",title:"Open Banking Integration",description:"Open banking account sync, balance refresh, and transaction synchronization",domain:"integrations",owners:["@platform.finance"],tags:["open-banking","powens","finance","banking"],stability:"experimental"},operations:[{key:"openbanking.accounts.sync",version:"1.0.0"},{key:"openbanking.accounts.list",version:"1.0.0"},{key:"openbanking.accounts.get",version:"1.0.0"},{key:"openbanking.balances.refresh",version:"1.0.0"},{key:"openbanking.balances.get",version:"1.0.0"},{key:"openbanking.transactions.sync",version:"1.0.0"},{key:"openbanking.transactions.list",version:"1.0.0"}],events:[],presentations:[],opToPresentation:[],presentationsTargets:[],capabilities:{provides:[{key:"openbanking",version:"1.0.0"}],requires:[{key:"identity",version:"1.0.0"}]}}});function WG$($){return mz6(uz6(gz6($)))}var QG$=y0(()=>{WT0();QT0();HT0();zT0()});function BT0($){let X=$.integrations.find((W)=>W.slot.slotId==="primaryOpenBanking");if(!X)return{ok:!1,error:"primaryOpenBanking slot is not bound in the resolved app config."};let J=X.connection.status;if(J==="error"||J==="disconnected")return{ok:!1,integration:X,error:`primaryOpenBanking connection is in status "${J}".`};if(J==="unknown")return{ok:!1,integration:X,error:"primaryOpenBanking connection health is unknown."};return{ok:!0,integration:X}}function HG$($){let X=BT0($);if(!X.ok)throw Error(X.error??"Open banking integration not available.");if(!X.integration)throw Error(X.error??"Open banking integration not available.");return X.integration}var GG$=()=>{};var dz6=y0(()=>{oQ0();sQ0();eQ0();DH0();YH0();WH0();HH0();zH0();ZH0();qH0();YT0()});var lz6=y0(()=>{DT0();oQ0();sQ0();eQ0();DH0();YH0();WH0();HH0();zH0();ZH0();qH0();YT0();dz6();H$0();G$0();WT0();QT0();HT0();zT0();QG$();GG$()});function BG$($){return`${$.key}.v${$.version}`}var zG$;var ZG$=y0(()=>{sw();zG$=class extends fG{constructor($){super("knowledge-space",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function ZT0($){return $.register(MH0)}var MH0;var UT0=y0(()=>{OZ();MH0={meta:{key:"knowledge.product-canon",version:"1.0.0",category:"canonical",title:"Product Canon Knowledge Space",description:"Authoritative product knowledge covering strategy, roadmap, and delivery canon.",domain:"product",owners:["platform.product"],tags:["knowledge","product"],stability:L5.Stable},retention:{ttlDays:null},access:{policy:{key:"knowledge.access.product-canon",version:"1.0.0"},trustLevel:"high",automationWritable:!1},indexing:{embeddingModel:"text-embedding-3-large",chunkSize:800,vectorDbIntegration:"vectordb.qdrant"},description:"Single source of truth for product canon, principles, and strategic narratives."}});function qT0($){return $.register(jH0)}var jH0;var FT0=y0(()=>{OZ();jH0={meta:{key:"knowledge.support-faq",version:"1.0.0",category:"operational",title:"Support & Success FAQ",description:"Operational knowledge base for customer support and success.",domain:"support",owners:["platform.support"],tags:["knowledge","support"],stability:L5.Beta},retention:{ttlDays:365,archiveAfterDays:180},access:{policy:{key:"knowledge.access.support",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"text-embedding-3-small",chunkSize:700,vectorDbIntegration:"vectordb.qdrant"},description:"Operational FAQs, runbooks, and customer success playbooks augmented with automation updates."}});function KT0($){return $.register(NH0)}var NH0;var VT0=y0(()=>{OZ();NH0={meta:{key:"knowledge.email-threads",version:"1.0.0",category:"operational",title:"Operational Email Threads",description:"Indexed copies of operational email threads used for support, onboarding, and workflows.",domain:"operations",owners:["platform.operations"],tags:["email","operations"],stability:L5.Beta},retention:{ttlDays:365},access:{policy:{key:"knowledge.access.email-threads",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:600,vectorDbIntegration:"vectordb.qdrant"},description:"Operational email threads synchronized from Gmail to support automations and contextual assistance."}});function AT0($){return $.register(RH0)}var RH0;var wT0=y0(()=>{OZ();RH0={meta:{key:"knowledge.uploaded-docs",version:"1.0.0",category:"external",title:"Uploaded Knowledge Assets",description:"Documents uploaded by households, including invoices, contracts, and reference files.",domain:"operations",owners:["platform.operations"],tags:["documents","storage"],stability:L5.Beta},retention:{ttlDays:null},access:{policy:{key:"knowledge.access.uploaded-docs",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:900,vectorDbIntegration:"vectordb.qdrant"},description:"User-provided documents normalized and embedded for retrieval augmented workflows."}});function OT0($){return $.register(PH0)}var PH0;var LT0=y0(()=>{OZ();PH0={meta:{key:"knowledge.financial-docs",version:"1.0.0",category:"canonical",title:"Household Financial Documents",description:"Invoices, bills, and contracts powering Pocket Family Office financial automation.",domain:"finance",owners:["platform.finance"],tags:["finance","documents"],stability:L5.Beta},retention:{ttlDays:null},access:{policy:{key:"knowledge.access.financial-docs",version:"1.0.0"},trustLevel:"high",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:700,vectorDbIntegration:"vectordb.qdrant"},description:"Normalized financial documents enabling bill pay automation, reminders, and summaries."}});function IT0($){return $.register(CH0)}var CH0;var ET0=y0(()=>{OZ();CH0={meta:{key:"knowledge.financial-overview",version:"1.0.0",category:"operational",title:"Derived Financial Summaries",description:"Aggregated cashflow summaries, category breakdowns, and balance trends derived from open banking data.",domain:"finance",owners:["platform.finance"],tags:["open-banking","summaries","cashflow"],stability:L5.Experimental},retention:{ttlDays:180},access:{policy:{key:"knowledge.access.financial-overview",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:600,vectorDbIntegration:"vectordb.qdrant"},description:"Derived knowledge space containing weekly/monthly cashflow rollups and account health summaries. Raw transactions are excluded to respect privacy guardrails."}});var cz6=y0(()=>{UT0();FT0();VT0();wT0();LT0();ET0()});var pz6=y0(()=>{ZG$();UT0();FT0();VT0();wT0();LT0();ET0();cz6()});function nz6($){return $.register(MT0).register(jT0).register(NT0).register(RT0).register(PT0)}var UG$,vh1,xh1,yh1,fh1,hh1,gh1,uh1,mh1,MT0,jT0,NT0,RT0,PT0,iz6;var rz6=y0(()=>{YP();JP();$O();UG$=new O5({name:"IntegrationConnectionRecord",fields:{id:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},integrationKey:{type:O1.NonEmptyString(),isOptional:!1},integrationVersion:{type:O1.Int_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},ownershipMode:{type:O1.String_unsecure(),isOptional:!1},externalAccountId:{type:O1.String_unsecure(),isOptional:!0},secretProvider:{type:O1.String_unsecure(),isOptional:!1},secretRef:{type:O1.String_unsecure(),isOptional:!1},status:{type:O1.String_unsecure(),isOptional:!1},environment:{type:O1.String_unsecure(),isOptional:!0},healthStatus:{type:O1.String_unsecure(),isOptional:!0},healthCheckedAt:{type:O1.DateTime(),isOptional:!0},healthLatencyMs:{type:O1.Float_unsecure(),isOptional:!0},healthErrorCode:{type:O1.String_unsecure(),isOptional:!0},healthErrorMessage:{type:O1.String_unsecure(),isOptional:!0},usageRequestCount:{type:O1.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:O1.Int_unsecure(),isOptional:!0},usageErrorCount:{type:O1.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:O1.DateTime(),isOptional:!0},usageLastErrorAt:{type:O1.DateTime(),isOptional:!0},usageLastErrorCode:{type:O1.String_unsecure(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!0},updatedAt:{type:O1.DateTime(),isOptional:!0}}}),vh1=new O5({name:"CreateIntegrationConnectionInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},integrationKey:{type:O1.NonEmptyString(),isOptional:!1},integrationVersion:{type:O1.Int_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},ownershipMode:{type:O1.String_unsecure(),isOptional:!1},externalAccountId:{type:O1.String_unsecure(),isOptional:!0},secretProvider:{type:O1.String_unsecure(),isOptional:!1},secretRef:{type:O1.String_unsecure(),isOptional:!1},environment:{type:O1.String_unsecure(),isOptional:!0},config:{type:O1.JSONObject(),isOptional:!1}}}),xh1=new O5({name:"UpdateIntegrationConnectionInput",fields:{connectionId:{type:O1.ID(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!0},status:{type:O1.String_unsecure(),isOptional:!0},ownershipMode:{type:O1.String_unsecure(),isOptional:!0},externalAccountId:{type:O1.String_unsecure(),isOptional:!0},secretProvider:{type:O1.String_unsecure(),isOptional:!0},secretRef:{type:O1.String_unsecure(),isOptional:!0},config:{type:O1.JSONObject(),isOptional:!0}}}),yh1=new O5({name:"DeleteIntegrationConnectionInput",fields:{connectionId:{type:O1.ID(),isOptional:!1}}}),fh1=new O5({name:"ListIntegrationConnectionsInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},category:{type:O1.String_unsecure(),isOptional:!0},status:{type:O1.String_unsecure(),isOptional:!0}}}),hh1=new O5({name:"ListIntegrationConnectionsOutput",fields:{connections:{type:UG$,isOptional:!1,isArray:!0}}}),gh1=new O5({name:"TestIntegrationConnectionInput",fields:{connectionId:{type:O1.ID(),isOptional:!1}}}),uh1=new O5({name:"TestIntegrationConnectionOutput",fields:{success:{type:O1.Boolean(),isOptional:!1},status:{type:O1.String_unsecure(),isOptional:!0},latencyMs:{type:O1.Float_unsecure(),isOptional:!0},error:{type:O1.String_unsecure(),isOptional:!0},errorCode:{type:O1.String_unsecure(),isOptional:!0}}}),mh1=new O5({name:"DeleteIntegrationConnectionOutput",fields:{success:{type:O1.Boolean(),isOptional:!1}}}),MT0=cz({meta:{key:"integrations.connection.create",title:"Create Integration Connection",version:"1.0.0",description:"Create a new integration connection for a tenant.",goal:"Provision a tenant-scoped connection to an external provider.",context:"Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:vh1,output:UG$},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),jT0=cz({meta:{key:"integrations.connection.update",title:"Update Integration Connection",version:"1.0.0",description:"Update metadata or credentials for an integration connection.",goal:"Allow secure rotation of credentials and metadata adjustments.",context:"Supports rotating API keys, toggling status, or updating labels for tenant integrations.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:xh1,output:UG$},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),NT0=cz({meta:{key:"integrations.connection.delete",title:"Delete Integration Connection",version:"1.0.0",description:"Delete an integration connection for a tenant.",goal:"Safely remove credentials and disable connector usage.",context:"Ensures connections are de-provisioned when no longer needed or breached.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:yh1,output:mh1},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),RT0=gK({meta:{key:"integrations.connection.list",title:"List Integration Connections",version:"1.0.0",description:"List integration connections for a tenant.",goal:"Provide visibility into configured integrations and their status.",context:"Used by the App Studio and Ops flows to show bindings and health.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:fh1,output:hh1},policy:{auth:"admin",policies:[{key:"platform.integration.read",version:"1.0.0"}]}}),PT0=cz({meta:{key:"integrations.connection.test",title:"Test Integration Connection",version:"1.0.0",description:"Run a health check against a configured integration connection.",goal:"Validate credentials and connectivity for external providers.",context:"Triggered manually or by background monitors to confirm provider availability.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:gh1,output:uh1},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),iz6={CreateIntegrationConnection:MT0,UpdateIntegrationConnection:jT0,DeleteIntegrationConnection:NT0,ListIntegrationConnections:RT0,TestIntegrationConnection:PT0}});function az6($){return $.register(CT0).register(TT0).register(bT0).register(ST0).register(_T0)}var qG$,FG$,dh1,lh1,ch1,ph1,ih1,nh1,rh1,oh1,CT0,TT0,bT0,ST0,_T0,oz6;var sz6=y0(()=>{YP();JP();$O();qG$=new O5({name:"KnowledgeSyncSchedule",fields:{enabled:{type:O1.Boolean(),isOptional:!1},cron:{type:O1.String_unsecure(),isOptional:!0},intervalMs:{type:O1.Int_unsecure(),isOptional:!0}}}),FG$=new O5({name:"KnowledgeSourceRecord",fields:{id:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},spaceKey:{type:O1.NonEmptyString(),isOptional:!1},spaceVersion:{type:O1.String_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},sourceType:{type:O1.String_unsecure(),isOptional:!1},syncSchedule:{type:qG$,isOptional:!0},lastSyncStatus:{type:O1.String_unsecure(),isOptional:!0},lastSyncAt:{type:O1.DateTime(),isOptional:!0},itemsProcessed:{type:O1.Int_unsecure(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!0},updatedAt:{type:O1.DateTime(),isOptional:!0}}}),dh1=new O5({name:"CreateKnowledgeSourceInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},spaceKey:{type:O1.NonEmptyString(),isOptional:!1},spaceVersion:{type:O1.String_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},sourceType:{type:O1.NonEmptyString(),isOptional:!1},config:{type:O1.JSONObject(),isOptional:!1},syncSchedule:{type:qG$,isOptional:!0}}}),lh1=new O5({name:"UpdateKnowledgeSourceInput",fields:{sourceId:{type:O1.ID(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!0},config:{type:O1.JSONObject(),isOptional:!0},syncSchedule:{type:qG$,isOptional:!0}}}),ch1=new O5({name:"DeleteKnowledgeSourceInput",fields:{sourceId:{type:O1.ID(),isOptional:!1}}}),ph1=new O5({name:"DeleteKnowledgeSourceOutput",fields:{success:{type:O1.Boolean(),isOptional:!1}}}),ih1=new O5({name:"ListKnowledgeSourcesInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},spaceKey:{type:O1.NonEmptyString(),isOptional:!0}}}),nh1=new O5({name:"ListKnowledgeSourcesOutput",fields:{sources:{type:FG$,isOptional:!1,isArray:!0}}}),rh1=new O5({name:"TriggerKnowledgeSyncInput",fields:{sourceId:{type:O1.ID(),isOptional:!1}}}),oh1=new O5({name:"TriggerKnowledgeSyncOutput",fields:{success:{type:O1.Boolean(),isOptional:!1},itemsProcessed:{type:O1.Int_unsecure(),isOptional:!0},error:{type:O1.String_unsecure(),isOptional:!0}}}),CT0=cz({meta:{key:"knowledge.source.create",title:"Create Knowledge Source",version:"1.0.0",description:"Create a knowledge source binding for a tenant.",goal:"Onboard a new knowledge ingestion source such as Notion or uploads.",context:"Used by Ops and App Studio to configure knowledge ingestion per tenant and space.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:dh1,output:FG$},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),TT0=cz({meta:{key:"knowledge.source.update",title:"Update Knowledge Source",version:"1.0.0",description:"Update metadata or configuration for a knowledge source.",goal:"Allow rotation of credentials, sync schedules, and labels.",context:"Supports editing how a tenant ingests knowledge (e.g., toggling sync cadence).",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:lh1,output:FG$},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),bT0=cz({meta:{key:"knowledge.source.delete",title:"Delete Knowledge Source",version:"1.0.0",description:"Delete a knowledge source binding for a tenant.",goal:"Remove obsolete or compromised knowledge ingestion paths.",context:"Ensures ephemeral or external sources can be removed cleanly without leaving residual bindings.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:ch1,output:ph1},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),ST0=gK({meta:{key:"knowledge.source.list",title:"List Knowledge Sources",version:"1.0.0",description:"List knowledge sources configured for a tenant.",goal:"Provide visibility into knowledge ingest configuration and schedules.",context:"Used by App Studio and Ops flows to surface knowledge sources and their health.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:ih1,output:nh1},policy:{auth:"admin",policies:[{key:"platform.knowledge.read",version:"1.0.0"}]}}),_T0=cz({meta:{key:"knowledge.source.triggerSync",title:"Trigger Knowledge Source Sync",version:"1.0.0",description:"Trigger an immediate sync for a knowledge source.",goal:"Support manual or automated sync retries for knowledge ingestion.",context:"Invoked by Ops tooling or monitors when knowledge content must be refreshed or reprocessed.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:rh1,output:oh1},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),oz6={CreateKnowledgeSource:CT0,UpdateKnowledgeSource:TT0,DeleteKnowledgeSource:bT0,ListKnowledgeSources:ST0,TriggerKnowledgeSourceSync:_T0}});function bH0($,X,J){return{type:"telemetry",contextId:$,signal:ah1(X,J)}}function SH0($,X,J){return{type:"error",contextId:$,signal:sh1(X,J)}}function _H0($,X,J){return{type:"behavior",contextId:$,signal:th1(X,J)}}function ah1($,X){return{...$,windowStart:TH0($.windowStart,X),windowEnd:TH0($.windowEnd,X)}}function sh1($,X){return{...$,occurredAt:TH0($.occurredAt,X)}}function th1($,X){return{...$,windowStart:TH0($.windowStart,X),windowEnd:TH0($.windowEnd,X)}}function TH0($,X){if($ instanceof Date)return $;let J=new Date($);if(Number.isNaN(J.getTime()))return X();return J}var kT0=()=>{};var eh1=($)=>new Promise((X)=>setTimeout(X,$)),$g1=60000,Dg1=300000,Fp=class{contexts;lastPoll=new Map;timer;running=!1;pollInterval;batchDuration;clock;constructor($){if(this.options=$,this.contexts=new Map($.contexts.map((X)=>[X.id,X])),this.pollInterval=$.pollIntervalMs??$g1,this.batchDuration=$.batchDurationMs??Dg1,this.clock=$.clock??(()=>new Date),this.options.rules.length===0)throw Error("RegeneratorService requires at least one rule")}start(){if(this.running)return;this.running=!0,this.tick(),this.timer=setInterval(()=>{this.tick()},this.pollInterval)}stop(){if(!this.running)return;if(this.running=!1,this.timer)clearInterval(this.timer),this.timer=void 0}async runOnce(){await this.tick()}async tick(){let $=this.clock(),X=new Date($.getTime()-this.batchDuration);for(let J of this.contexts.values()){let W=this.lastPoll.get(J.id)??X;await this.evaluateContext(J,W,$),this.lastPoll.set(J.id,$)}}async evaluateContext($,X,J){let W=await this.collectSignals($,X,J);if(W.length===0)return;for(let G of this.options.rules){let B=[];try{B=await G.evaluate($,W)}catch(F){console.error(`[regenerator] rule ${G.id} failed`,F instanceof Error?F:Error(String(F)));continue}await this.flushProposals($,B)}}async collectSignals($,X,J){let W=[],{adapters:G}=this.options;if(G.telemetry){let B=await G.telemetry.pollTelemetry($,X,J);W.push(...B.map((F)=>bH0($.id,F,this.clock)))}if(G.errors){let B=await G.errors.pollErrors($,X,J);W.push(...B.map((F)=>SH0($.id,F,this.clock)))}if(G.behavior){let B=await G.behavior.pollBehavior($,X,J);W.push(...B.map((F)=>_H0($.id,F,this.clock)))}return W}async flushProposals($,X){for(let J of X){if(J.signalIds.length===0)continue;if(await this.options.sink.submit($,J),X.length>10)await eh1(0)}}};var KG$=y0(()=>{kT0()});function Xg1($){if($.some((X)=>X.status==="failed"))return"failed";if($.some((X)=>X.status==="success")&&$.some((X)=>X.status==="skipped"))return"partial";if($.every((X)=>X.status==="skipped"))return"partial";return"success"}var Kp=class{constructor($={}){this.deps=$}async execute($,X,J={}){let W=new Date,G=[];for(let[A,I]of X.actions.entries()){let E=await this.executeAction({index:A,action:I,context:$,proposal:X,options:J});G.push(E)}let B=new Date,F=Xg1(G);return{proposalId:X.id,contextId:$.id,startedAt:W,finishedAt:B,status:F,actions:G}}async executeAction({index:$,action:X,context:J,proposal:W,options:G}){let B=new Date,F=G.dryRun??!1,A=(I,E={})=>({index:$,action:X,status:I,startedAt:B,finishedAt:new Date,reason:E.reason,output:E.output,error:E.error});if(F)return A("skipped",{reason:"dry_run"});try{switch(X.kind){case"update_blueprint":{let I=this.deps.blueprintUpdater;if(!I)return A("skipped",{reason:"missing_blueprint_updater"});return A("success",{output:await I.applyBlueprintUpdate(J,W,X)})}case"update_tenant_config":{let I=this.deps.tenantConfigUpdater;if(!I)return A("skipped",{reason:"missing_tenant_config_updater"});return A("success",{output:await I.applyTenantConfigUpdate(J,W,X)})}case"run_tests":{let I=this.deps.testExecutor;if(!I)return A("skipped",{reason:"missing_test_executor"});return A("success",{output:await I.runTests(J,W,X)})}case"run_migrations":{let I=this.deps.migrationExecutor;if(!I)return A("skipped",{reason:"missing_migration_executor"});return A("success",{output:await I.runMigrations(J,W,X)})}case"trigger_regeneration":{let I=this.deps.regenerationTrigger;if(!I)return A("skipped",{reason:"missing_regeneration_trigger"});return A("success",{output:await I.triggerRegeneration(J,W,X)})}default:return A("skipped",{reason:"unknown_action"})}}catch(I){return A("failed",{error:I instanceof Error?I:Error(String(I))})}}};var VG$=()=>{};var kH0=class{constructor($,X={}){this.executor=$,this.options=X}async submit($,X){let J=this.options.dryRun??!1;try{let W=await this.executor.execute($,X,{dryRun:J});if(this.options.logger?.info)this.options.logger.info("[regenerator] proposal executed",{proposalId:X.id,contextId:$.id,status:W.status});if(this.options.onResult)await this.options.onResult({context:$,proposal:X,result:W})}catch(W){if(this.options.logger?.error)this.options.logger.error("[regenerator] proposal execution failed",W instanceof Error?W:Error(String(W)),{proposalId:X.id,contextId:$.id});throw W instanceof Error?W:Error(String(W))}}};var AG$=()=>{};var wG$=y0(()=>{kT0();KG$();VG$();AG$()});var vH0,vT0,xT0,yT0,Yg1,OG$,fT0,Jg1,Wg1,Qg1,Hg1,Gg1,zg1,hT0,gT0,uT0,mT0,dT0,lT0,cT0,pT0,Bg1,Zg1,Ug1,$j,qg1,tz6,Fg1,Kg1,z$0,xH0;var LG$=y0(()=>{wK();vH0=A5(["contractspec","zod","json-schema","graphql"]),vT0=e8({name:b6(),url:_l().optional(),file:b6().optional(),syncMode:A5(["import","sync","validate"]).default("validate"),tags:W9(b6()).optional(),exclude:W9(b6()).optional(),include:W9(b6()).optional(),prefix:b6().optional(),defaultStability:A5(["experimental","beta","stable","deprecated"]).optional(),defaultAuth:A5(["anonymous","user","admin"]).optional(),defaultOwners:W9(b6()).optional(),schemaFormat:vH0.default("contractspec")}),xT0=e8({outputPath:b6().default("./openapi.json"),format:A5(["json","yaml"]).default("json"),title:b6().optional(),version:b6().optional(),description:b6().optional(),servers:W9(e8({url:b6(),description:b6().optional()})).optional()}),yT0=e8({sources:W9(vT0).optional(),export:xT0.optional()}),Yg1=A5(["by-tag","by-owner","by-domain","by-url-path-single","by-url-path-multi","by-feature","none"]),OG$=e8({strategy:Yg1,urlPathLevel:iX().optional(),pattern:b6().optional()}),fT0=e8({models:b6().default("models"),operations:b6().default("operations/commands|queries"),events:b6().default("events"),presentations:b6().default("presentations"),forms:b6().default("forms"),groupByFeature:c5().default(!0),operationsGrouping:OG$.optional(),modelsGrouping:OG$.optional(),eventsGrouping:OG$.optional()}),Jg1=e8({enabled:c5().default(!0),template:A5(["minimal","detailed"]).default("detailed"),updateExisting:c5().default(!0)}),Wg1=e8({enabled:c5().default(!0),name:b6().default("ContractSpec Impact"),failOnBreaking:c5().default(!0),failOnChanges:c5().default(!1)}),Qg1=e8({baseline:b6().default("default-branch"),include:W9(b6()).optional(),exclude:W9(b6()).optional()}),Hg1=e8({checks:W9(b6()).default(["structure","integrity","deps"]),skipChecks:W9(b6()).optional(),failOnWarnings:c5().default(!1),uploadSarif:c5().default(!0),prComment:Jg1.optional(),checkRun:Wg1.optional(),impact:Qg1.optional()}),Gg1=e8({alias:b6(),submodule:b6(),packages:W9(b6()).optional(),autoResolve:c5().default(!0)}),zg1=e8({activeScope:b6().optional(),externalWorkspaces:W9(Gg1).optional(),crossWorkspaceSearch:c5().default(!1)}),hT0=A5(["prettier","eslint","biome","dprint","custom"]),gT0=e8({enabled:c5().default(!0),type:hT0.optional(),command:b6().optional(),args:W9(b6()).optional(),timeout:iX().default(30000)}),uT0=A5(["impact","conventional"]),mT0=A5(["keep-a-changelog","conventional","custom"]),dT0=A5(["spec","library","monorepo"]),lT0=e8({autoBump:c5().default(!1),bumpStrategy:uT0.default("impact"),integrateWithChangesets:c5().default(!1),changelogTiers:W9(dT0).default(["spec","library","monorepo"]),format:mT0.default("keep-a-changelog"),commitChanges:c5().default(!1),commitMessage:b6().default("chore: bump spec versions"),createTags:c5().default(!1),tagPrefix:b6().default("v"),include:W9(b6()).optional(),exclude:W9(b6()).optional()}),cT0=A5(["cursor","windsurf","cline","claude-code","copilot","subagent","skill"]),pT0=e8({enabled:c5().default(!1),rulesDir:b6().default("./.rules"),rules:W9(b6()).default(["**/*.rule.md"]),targets:W9(cT0).default(["cursor","windsurf"]),autoSync:c5().default(!0),ejectMode:c5().default(!1)}),Bg1=e8({enabled:c5().default(!1),apiKey:b6().optional(),model:b6().default("claude-sonnet-4-20250514"),computerUse:c5().default(!1),extendedThinking:c5().default(!1)}),Zg1=e8({enabled:c5().default(!1),serverUrl:b6().optional(),port:iX().optional(),agentType:A5(["build","plan","general","explore"]).default("general"),model:b6().optional()}),Ug1=e8({claudeAgent:Bg1.optional(),openCode:Zg1.optional()}),$j=A5(["off","warn","error"]),qg1=A5(["operation","event","presentation","feature","workflow","data-view","migration","telemetry","experiment","app-config"]),tz6=e8({"require-acceptance":$j.optional(),"require-examples":$j.optional(),"require-stability":$j.optional(),"require-owners-format":$j.optional(),"event-past-tense":$j.optional(),"no-todo":$j.optional(),"workflow-transitions":$j.optional(),"telemetry-privacy":$j.optional(),"experiment-allocation":$j.optional(),"app-config-appid":$j.optional(),"app-config-capabilities":$j.optional(),"data-view-fields":$j.optional()}),Fg1=e8({defaults:tz6.optional(),overrides:Q3(qg1,tz6).optional()}),Kg1=Q3(b6(),W9(b6())),z$0=e8({aiProvider:A5(["claude","openai","ollama","custom"]).default("claude"),aiModel:b6().optional(),agentMode:A5(["simple","cursor","claude-code","openai-codex","claude-agent-sdk","opencode-sdk"]).default("simple"),customEndpoint:_l().nullable().optional(),customApiKey:b6().nullable().optional(),outputDir:b6().default("./src"),conventions:fT0,defaultOwners:W9(b6()).default([]),defaultTags:W9(b6()).default([]),packages:W9(b6()).optional(),excludePackages:W9(b6()).optional(),recursive:c5().optional(),openapi:yT0.optional(),ci:Hg1.optional(),metaRepo:zg1.optional(),rules:Fg1.optional(),hooks:Kg1.optional(),schemaFormat:vH0.default("contractspec"),formatter:gT0.optional(),versioning:lT0.optional(),ruleSync:pT0.optional(),externalAgents:Ug1.optional()}),xH0={aiProvider:"claude",agentMode:"simple",outputDir:"./src",conventions:{models:"models",operations:"interactions/commands|queries",events:"events",presentations:"presentations",forms:"forms",groupByFeature:!0},defaultOwners:[],defaultTags:[],schemaFormat:"contractspec"}});var ez6=y0(()=>{LG$()});var IG$;var EG$=y0(()=>{sw();IG$=class extends fG{constructor($){super("workflow",$)}}});function nT0($,X={}){let J=[],{definition:W}=$;if(!W.steps.length)return J.push({level:"error",message:"Workflow must declare at least one step."}),J;let G=Vg1(W,J),B=W.entryStepId??W.steps[0]?.id??null;if(!B)J.push({level:"error",message:"Workflow requires an entry step (definition.entryStepId)."});else if(!G.has(B))J.push({level:"error",message:`Entry step "${B}" is not defined in steps.`});let F=Ag1(W,G,J);return Og1(W.steps,X,J),Lg1(B,G,F,J),Ig1(F,J),J}function MG$($,X={}){let J=nT0($,X);if(J.filter((W)=>W.level==="error").length)throw new iT0(`Workflow ${$.meta.key}.v${$.meta.version} is invalid`,J)}function Vg1($,X){let J=new Map;for(let W of $.steps){if(J.has(W.id)){X.push({level:"error",message:`Duplicate step id "${W.id}" detected.`});continue}if(J.set(W.id,W),W.type==="automation"&&!W.action?.operation)X.push({level:"warning",message:`Automation step "${W.id}" does not declare an operation.`});if(W.type==="human"&&!W.action?.form)X.push({level:"warning",message:`Human step "${W.id}" does not declare a form.`});if(W.guard&&!W.guard.value.trim())X.push({level:"error",message:`Guard for step "${W.id}" must have a non-empty value.`})}return J}function Ag1($,X,J){let W=new Map,G=new Map;for(let F of X.keys())W.set(F,new Set),G.set(F,0);for(let F of $.transitions){let A=X.get(F.from),I=X.get(F.to);if(!A){J.push({level:"error",message:`Transition refers to unknown "from" step "${F.from}".`});continue}if(!I){J.push({level:"error",message:`Transition refers to unknown "to" step "${F.to}".`});continue}W.get(F.from)?.add(F.to),G.set(F.to,(G.get(F.to)??0)+1),wg1(F,J)}let B=[...G.entries()].filter(([,F])=>F===0).map(([F])=>F);if(B.length>1)J.push({level:"warning",message:`Workflow has multiple potential entry steps: ${B.join(", ")}`});return W}function wg1($,X){if($.condition&&!$.condition.trim())X.push({level:"error",message:`Transition ${$.from} -> ${$.to} declares an empty condition.`})}function Og1($,X,J){for(let W of $){let G=W.action;if(!G)continue;if(G.operation&&X.operations){if(!X.operations.get(G.operation.key,G.operation.version))J.push({level:"error",message:`Step "${W.id}" references unknown operation ${G.operation.key}.v${G.operation.version}.`})}if(G.form&&X.forms){if(!X.forms.get(G.form.key,G.form.version))J.push({level:"error",message:`Step "${W.id}" references unknown form ${G.form.key}.v${G.form.version}.`})}}}function Lg1($,X,J,W){if(!$||!X.has($))return;let G=new Set,B=[$];G.add($);while(B.length){let F=B.shift();if(!F)continue;let A=J.get(F);if(!A)continue;for(let I of A){if(G.has(I))continue;G.add(I),B.push(I)}}for(let F of X.keys())if(!G.has(F))W.push({level:"error",message:`Step "${F}" is unreachable from entry step "${$}".`})}function Ig1($,X){let J=new Set,W=new Set,G=!1,B=(F)=>{if(W.has(F)){if(!G)X.push({level:"error",message:`Workflow contains a cycle involving step "${F}".`}),G=!0;return}if(J.has(F))return;W.add(F);let A=$.get(F);if(A)for(let I of A)B(I);W.delete(F),J.add(F)};for(let F of $.keys())B(F)}var iT0;var jG$=y0(()=>{iT0=class extends Error{constructor($,X){super($);this.issues=X,this.name="WorkflowValidationError"}}});function nh($,X){if(!$)return!0;let J=$.trim();if(!J)return!0;let W=XB6(J,"||");if(W.length>1)return W.some((B)=>nh(B,X));let G=XB6(J,"&&");if(G.length>1)return G.every((B)=>nh(B,X));return YB6(J,X)}function YB6($,X){let J=$.trim();if(!J)return!0;if(J.startsWith("!"))return!YB6(J.slice(1),X);let W=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(W){let[,F,A,I,E]=W;return Eg1(DB6(F,X,A),$B6(E),I)}let G=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);if(G){let[,F,A]=G,I=DB6(F,X,A);return Boolean(I)}let B=$B6(J);return Boolean(B)}function Eg1($,X,J){switch(J){case"===":case"==":return $===X;case"!==":case"!=":return $!==X;case">":return Number($)>Number(X);case">=":return Number($)>=Number(X);case"<":return Number($)<Number(X);case"<=":return Number($)<=Number(X);default:return!1}}function $B6($){let X=($??"").trim();if(X.startsWith('"')&&X.endsWith('"')||X.startsWith("'")&&X.endsWith("'"))return X.slice(1,-1);if(/^-?\d+(\.\d+)?$/.test(X))return Number(X);if(/^true$/i.test(X))return!0;if(/^false$/i.test(X))return!1;if(/^null$/i.test(X))return null;if(/^undefined$/i.test(X))return;return X}function DB6($,X,J){return Mg1($==="data"?X.data:$==="input"?X.input:X.output,J)}function Mg1($,X){if($==null)return;if(!X)return $;let J=X.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean),W=$;for(let G of J){if(W==null)return;W=W[G]}return W}function XB6($,X){let J=[],W="",G=!1,B=!1;for(let F=0;F<$.length;F++){let A=$[F];if(!A)continue;let I=$.slice(F,F+X.length);if(A==="'"&&!B){G=!G,W+=A;continue}if(A==='"'&&!G){B=!B,W+=A;continue}if(!G&&!B&&I===X){J.push(W.trim()),W="",F+=X.length-1;continue}W+=A}if(W.trim().length)J.push(W.trim());return J}var rT0=()=>{};import{randomUUID as jg1}from"crypto";function Ng1($){let X=$.definition.entryStepId??$.definition.steps[0]?.id??null;if(!X)throw Error(`Workflow ${$.meta.key}.v${$.meta.version} has no entry step.`);return X}function JB6($,X){let J=$.definition.steps.find((W)=>W.id===X);if(!J)throw Error(`Step "${X}" not found in workflow ${$.meta.key}.v${$.meta.version}.`);return J}function Rg1($,X){return $.definition.transitions.some((J)=>J.from===X)}function WB6($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function Pg1($){return $==="completed"||$==="failed"||$==="cancelled"}function NG$($){return`${$.key}@${$.version}`}var RG$=class{constructor($){this.config=$}async preFlightCheck($,X,J){let W=this.getSpec($,X);return this.performPreFlight(W,J)}async start($,X,J){let W=this.getSpec($,X),G=Ng1(W),B=new Date,F=jg1(),A={workflowId:F,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:G,data:{...J??{}},retryCounts:{},history:[],status:"running",createdAt:B,updatedAt:B},I=this.config.appConfigProvider?await this.config.appConfigProvider(A):void 0,E=await this.performPreFlight(W,I);if(!E.canStart)throw new oT0(E.issues);return await this.config.stateStore.create(A),this.emit("workflow.started",{workflowId:F,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:G}),F}async executeStep($,X){let J=await this.getStateOrThrow($);if(Pg1(J.status))throw Error(`Workflow ${$} is in terminal status "${J.status}".`);let W=this.getSpec(J.workflowName,J.workflowVersion),G=JB6(W,J.currentStep);if(!await this.evaluateGuard(G,J,X))throw Error(`GuardRejected: ${J.workflowName} -> ${G.id}`);let B={stepId:G.id,startedAt:new Date,status:"running",input:X},F={...J,data:{...J.data},history:[...J.history]};try{let A=await this.runStepAction(G,F,X);if(B.output=A,B.status="completed",B.completedAt=new Date,F.history.push(B),F.updatedAt=new Date,WB6(X))F.data={...F.data,...X};if(WB6(A))F.data={...F.data,...A};let I=this.pickNextStepId(W,F,G,X,A);if(I)F.currentStep=I,F.status="running";else if(!Rg1(W,G.id))F.status="completed";else throw Error(`No transition matched after executing step "${G.id}".`);await this.config.stateStore.update($,()=>F),this.emit("workflow.step_completed",{workflowId:$,workflowName:J.workflowName,stepId:G.id,status:F.status})}catch(A){if(B.status="failed",B.completedAt=new Date,B.error=A instanceof Error?A.message:String(A),F.history.push(B),F.updatedAt=new Date,G.retry){let I=J.retryCounts?.[G.id]??0;if(I<G.retry.maxAttempts){let E=G.retry.backoff??"exponential",T=G.retry.delayMs??1000,_=E==="exponential"?T*Math.pow(2,I):T,S=Math.min(_,G.retry.maxDelayMs??1/0);return F.retryCounts={...J.retryCounts??{},[G.id]:I+1},F.status="running",await this.config.stateStore.update($,()=>F),this.emit("workflow.step_retrying",{workflowId:$,workflowName:J.workflowName,stepId:G.id,attempt:I+1,delay:S,error:B.error}),await new Promise((h)=>setTimeout(h,S)),this.executeStep($,X)}}if(F.status="failed",await this.config.stateStore.update($,()=>F),this.emit("workflow.step_failed",{workflowId:$,workflowName:J.workflowName,stepId:G.id,error:B.error??"unknown"}),W.definition.compensation?.trigger==="on_failure")await this.rollback($);throw A}}async rollback($){let X=await this.getStateOrThrow($),J=this.getSpec(X.workflowName,X.workflowVersion);if(!J.definition.compensation)return;this.emit("workflow.rollback_started",{workflowId:$});let W=X.history.filter((G)=>G.status==="completed").reverse();for(let G of W){let B=J.definition.compensation.steps.find((F)=>F.stepId===G.stepId);if(B){let F={stepId:G.stepId,originalInput:G.input,originalOutput:G.output,workflowData:X.data};try{let A=JB6(J,G.stepId),I=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,E={workflow:X,step:A,resolvedAppConfig:I,integrations:I?.integrations??[],knowledge:I?.knowledge??[],branding:I?.branding,translation:I?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};await this.config.opExecutor(B.operation,F,E),this.emit("workflow.compensation_step_completed",{workflowId:$,stepId:G.stepId,compensationOp:B.operation.key})}catch(A){let I=A instanceof Error?A.message:String(A);this.emit("workflow.compensation_step_failed",{workflowId:$,stepId:G.stepId,compensationOp:B.operation.key,error:I})}}}this.emit("workflow.rollback_completed",{workflowId:$})}async getState($){return this.getStateOrThrow($)}async cancel($){let X=await this.getStateOrThrow($);if(X.status==="cancelled")return;let J={...X,status:"cancelled",updatedAt:new Date};await this.config.stateStore.update($,()=>J),this.emit("workflow.cancelled",{workflowId:$,workflowName:X.workflowName})}async performPreFlight($,X){if(!X)return{canStart:!0,issues:[]};let J=[],W=new Map;for(let B of X.integrations)W.set(B.slot.slotId,B);for(let B of $.definition.steps)for(let F of B.requiredIntegrations??[]){let A=W.get(F);if(!A){J.push({stepId:B.id,type:"integration",identifier:F,severity:"error",reason:`Integration slot "${F}" is not bound in the resolved app config.`});continue}let I=A.connection.status;if(I==="disconnected"||I==="error")J.push({stepId:B.id,type:"integration",identifier:F,severity:"error",reason:`Integration slot "${F}" is in status "${I}".`});else if(I==="unknown")J.push({stepId:B.id,type:"integration",identifier:F,severity:"warning",reason:`Integration slot "${F}" reports unknown health status.`})}let G=new Set(X.capabilities.enabled.map(NG$));for(let B of $.definition.steps)for(let F of B.requiredCapabilities??[])if(!G.has(NG$(F)))J.push({stepId:B.id,type:"capability",identifier:NG$(F),severity:"error",reason:`Capability "${F.key}@${F.version}" is not enabled.`});return{canStart:J.every((B)=>B.severity!=="error"),issues:J}}async evaluateGuard($,X,J){if(!$.guard)return!0;if(this.config.guardEvaluator)return this.config.guardEvaluator($.guard,{workflow:X,step:$,input:J});if($.guard.type==="expression")return nh($.guard.value,{data:X.data,input:J});return!0}async runStepAction($,X,J){if($.type==="automation"){let W=$.action?.operation;if(!W)throw Error(`Automation step "${$.id}" requires an operation.`);let G=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,B={workflow:X,step:$,resolvedAppConfig:G,integrations:G?.integrations??[],knowledge:G?.knowledge??[],branding:G?.branding,translation:G?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};if(this.config.enforceCapabilities)await this.config.enforceCapabilities(W,B);return this.config.opExecutor(W,J,B)}if($.type==="human")return J;return J}pickNextStepId($,X,J,W,G){let B=$.definition.transitions.filter((F)=>F.from===J.id);for(let F of B)if(nh(F.condition,{data:X.data,input:W,output:G})){let A=$.definition.steps.find((I)=>I.id===F.to);if(!A)throw Error(`Transition ${F.from} -> ${F.to} points to missing step.`);return A.id}return null}getSpec($,X){let J=this.config.registry.get($,X);if(!J)throw Error(`Workflow spec not found for ${$}${X?`.v${X}`:""}`);return J}async getStateOrThrow($){let X=await this.config.stateStore.get($);if(!X)throw Error(`Workflow state not found for ${$}`);return X}emit($,X){this.config.eventEmitter?.($,X)}},oT0;var PG$=y0(()=>{rT0();oT0=class extends Error{constructor($){super(`Workflow pre-flight failed: ${$.filter((X)=>X.severity==="error").map((X)=>`${X.type}:${X.identifier}`).join(", ")}`);this.issues=$,this.name="WorkflowPreFlightError"}}});function B$0($){return{...$,data:yH0($.data),history:$.history.map((X)=>({...X,input:yH0(X.input),output:yH0(X.output),startedAt:new Date(X.startedAt),completedAt:X.completedAt?new Date(X.completedAt):void 0})),createdAt:new Date($.createdAt),updatedAt:new Date($.updatedAt)}}function yH0($){if($ instanceof Date)return new Date($.getTime());if(Array.isArray($))return $.map((X)=>yH0(X));if($&&typeof $==="object"){let X={};for(let[J,W]of Object.entries($))X[J]=yH0(W);return X}return $}var CG$=class{items=new Map;async create($){if(this.items.has($.workflowId))throw Error(`Workflow state already exists: ${$.workflowId}`);this.items.set($.workflowId,B$0($))}async get($){let X=this.items.get($);return X?B$0(X):void 0}async update($,X){let J=this.items.get($);if(!J)throw Error(`Workflow state not found for ${$}`);let W=B$0(X(B$0(J)));return this.items.set($,W),B$0(W)}async list($){let X=[...this.items.values()];return(($?.status)?X.filter((J)=>J.status===$.status):X).map(B$0)}clear(){this.items.clear()}};var TG$=()=>{};var bG$=class{constructor($){this.prisma=$}async create($){await this.prisma.workflowState.create({data:{id:$.workflowId,name:$.workflowName,version:$.workflowVersion,status:$.status,currentStep:$.currentStep,data:$.data,history:$.history,retryCounts:$.retryCounts??{},createdAt:$.createdAt,updatedAt:$.updatedAt}})}async get($){let X=await this.prisma.workflowState.findUnique({where:{id:$}});if(!X)return;return{workflowId:X.id,workflowName:X.name,workflowVersion:X.version,currentStep:X.currentStep,data:X.data,history:X.history,retryCounts:X.retryCounts,status:X.status,createdAt:X.createdAt,updatedAt:X.updatedAt}}async update($,X){let J=await this.get($);if(!J)throw Error(`Workflow ${$} not found`);let W=X(J),G=await this.prisma.workflowState.update({where:{id:$},data:{status:W.status,currentStep:W.currentStep,data:W.data,history:W.history,retryCounts:W.retryCounts,updatedAt:W.updatedAt}});return{workflowId:G.id,workflowName:G.name,workflowVersion:G.version,currentStep:G.currentStep,data:G.data,history:G.history,retryCounts:G.retryCounts,status:G.status,createdAt:G.createdAt,updatedAt:G.updatedAt}}async list($){let X={};if($?.status)X.status=$.status;return(await this.prisma.workflowState.findMany({where:X})).map((J)=>({workflowId:J.id,workflowName:J.name,workflowVersion:J.version,currentStep:J.currentStep,data:J.data,history:J.history,retryCounts:J.retryCounts,status:J.status,createdAt:J.createdAt,updatedAt:J.updatedAt}))}};var SG$=()=>{};function _G$($){throw Error("File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.")}var kG$=()=>{};var QB6=y0(()=>{EG$();jG$();rT0();PG$();TG$();SG$();kG$()});function HB6($){if(!$.length)return"/";let X=$.startsWith("/")?$:`/${$}`;return X==="/"?"/":X.replace(/\/+$/,"")}function Tg1($,X){if($.route)return HB6($.route);let J=X??"/docs",W=$.id.replace(/^docs\.?/,"").replace(/\./g,"/").replace(/\/+/g,"/");return HB6(W.startsWith("/")?W:`${J}/${W}`)}function bg1($,X){return X?`${X}.${$.id}`:$.id}function Vp($,X){let J=X?.defaultTargets??Cg1,W=$.version??X?.defaultVersion??"1.0.0",G=$.stability??X?.defaultStability??"stable";return{meta:{key:bg1($,X?.namespace),title:$.title,version:W,description:$.summary??$.title,tags:$.tags||[],owners:$.owners||[],domain:$.domain||"",stability:G,goal:`Documentation of: ${$.summary}`,context:"Auto-generated"},policy:$.visibility&&$.visibility!=="public"?{flags:[$.visibility]}:void 0,source:{type:"blocknotejs",docJson:$.body},targets:J}}function fH0($,X){return $.map((J)=>({block:J,route:Tg1(J,X?.routePrefix),descriptor:Vp(J,X)}))}function vG$($,X){return $.map((J)=>Vp(J,X))}function xG$($){return $.map(({route:X,descriptor:J})=>[X,J])}var Cg1;var aT0=y0(()=>{Cg1=["markdown","react"]});function oX($){for(let X of $){for(let J of Sg1)if(!X[J])throw Error(`DocBlock ${X.id??"<missing id>"} missing field ${String(J)}`);rh.register(X)}}function yG$(){return rh.list().map(($)=>$.block)}function fG$($){if(!rh.get($))throw Error(`DocBlock not registered: ${$}`);return $}var sT0=class{routes=new Map;constructor($=[],X){$.forEach((J)=>this.register(J,X))}register($,X){let[J]=fH0([$],X);if(J)this.routes.set($.id,J);return this}list(){return[...this.routes.values()]}get($){return this.routes.get($)}toRouteTuples(){return this.list().map(({route:$,descriptor:X})=>[$,X])}toPresentationSpecs($){return this.list().map(({block:X})=>Vp(X,$))}},Sg1,rh;var WH=y0(()=>{aT0();Sg1=["id","title","body","kind","visibility","route"],rh=new sT0});var tT0;var hG$=y0(()=>{WH();tT0=[{id:"docs.tech.contracts.presentations-v2",title:"Presentations V2 \u2014 Unified Descriptor & Transform Engine",summary:"How PresentationSpec and TransformEngine keep docs/renderers consistent.",visibility:"public",route:"/docs/tech/contracts/presentations-v2",kind:"reference",tags:["presentations","docs","mcp"],body:`## Presentations V2 \u2014 Unified Descriptor & Transform Engine
1332
+ `)}}],description:W.meta.description}})}}var kG6=y0(()=>{tk()});function vG6($){if(!$||typeof $!=="object")return!1;return"body"in $&&typeof $.body==="string"}function xG6($,X){if(!X.presentations?.count())return;let J=Sc(bc(Tc()));for(let W of X.presentations.list()){let G=VW0(`presentation_${W.meta.key}_v${W.meta.version}`),B=`presentation://${W.meta.key}/v${W.meta.version}`;X.logger.info(`Registering presentation ${B} for ${G}`),$.registerResource(G,B,{title:`${W.meta.key} v${W.meta.version}`,description:W.meta.description??"Presentation",mimeType:"application/json"},async()=>{return{contents:[{uri:B,mimeType:"application/json",text:JSON.stringify({meta:W.meta,source:W.source,targets:W.targets},null,2)}]}});for(let F of[{ext:".md",target:"markdown"}]){let A=`${G}${F.ext}`,I=`${B}${F.ext}`;$.registerResource(A,I,{title:`${W.meta.key} v${W.meta.version} (${F.ext})`,description:`${W.meta.description??"Presentation"} (${F.ext})`},async()=>{let E=await J.render(F.target,W);return{contents:[{uri:I,mimeType:vG6(E)&&E.mimeType?E.mimeType:F.target==="markdown"?"text/markdown":F.target,text:vG6(E)&&typeof E.body==="string"?E.body:String(E)}]}})}}}var yG6=y0(()=>{UW0();tN0();tk()});function dC0($,X,J,W,G){return G.logger.info("Creating MCP server"),F76($,X,{toolCtx:G.toolCtx}),bG6($,J,{logger:G.logger,resourceCtx:G.resourceCtx}),xG6($,{logger:G.logger,presentations:G.presentations}),_G6($,W,{promptCtx:G.promptCtx}),$}var lC0=y0(()=>{K76();SG6();kG6();yG6()});function pQ0($){let X={};if(X["access-control-allow-origin"]=typeof $==="object"?$.origin??"*":"*",X.vary="Origin",typeof $==="object"){if($.methods)X["access-control-allow-methods"]=$.methods.join(", ");if($.headers)X["access-control-allow-headers"]=$.headers.join(", ");if($.credentials)X["access-control-allow-credentials"]="true";if(typeof $.maxAge==="number")X["access-control-max-age"]=String($.maxAge)}else X["access-control-allow-methods"]="GET,POST,OPTIONS",X["access-control-allow-headers"]="content-type,x-idempotency-key,x-trace-id";return X}function bf1($,X){return`${($??"").replace(/\/+$/g,"")}/${X.replace(/^\/+/g,"")}`.replace(/\/{2,}/g,"/")}function DP($,X,J){let W={basePath:J?.basePath??"",cors:J?.cors??!1,prettyJson:J?.prettyJson??!1,onError:J?.onError},G=$.list().map((A)=>({method:A.transport?.rest?.method??(A.meta.kind==="query"?"GET":"POST"),path:bf1(W.basePath,A.transport?.rest?.path??W00(A.meta.key,A.meta.version)),name:A.meta.key,version:A.meta.version})),B=new Map;for(let A of G)B.set(`${A.method} ${A.path}`,A);let F=(A,I,E)=>{let T=W.prettyJson?JSON.stringify(I,null,W.prettyJson):JSON.stringify(I),_={"content-type":"application/json; charset=utf-8"};return new Response(T,{status:A,headers:E?{..._,...E}:_})};return async function(I){let E=new URL(I.url),T=`${I.method.toUpperCase()} ${E.pathname}`;if(W.cors&&I.method.toUpperCase()==="OPTIONS"){let S=pQ0(W.cors===!0?{}:W.cors);return new Response(null,{status:204,headers:{...S,"content-length":"0"}})}let _=B.get(T);if(!_){let S={};if(W.cors)Object.assign(S,pQ0(W.cors===!0?{}:W.cors));return F(404,{error:"NotFound",path:E.pathname},S)}try{let S={};if(_.method==="GET")if(E.searchParams.has("input")){let Z0=E.searchParams.get("input");S=Z0?JSON.parse(Z0):{}}else{let Z0={};for(let[I0,C0]of E.searchParams.entries())Z0[I0]=C0;S=Z0}else{let Z0=I.headers.get("content-type")||"";if(Z0.includes("application/json"))S=await I.json();else if(Z0.includes("application/x-www-form-urlencoded")){let I0=await I.formData();S=Object.fromEntries(I0.entries())}else if(!Z0)S={};else return F(415,{error:"UnsupportedMediaType",contentType:Z0})}let h=X(I),c=await $.execute(_.name,_.version,S,h),l={};if(W.cors)Object.assign(l,pQ0(W.cors===!0?{}:W.cors));return F(200,c,l)}catch(S){if(W.onError){let c=W.onError(S),l={};if(W.cors)Object.assign(l,pQ0(W.cors===!0?{}:W.cors));return F(c.status,c.body,l)}let h={};if(W.cors)Object.assign(h,pQ0(W.cors===!0?{}:W.cors));if(S?.issues)return F(400,{error:"ValidationError",issues:S.issues},h);if(typeof S?.message==="string"&&S.message.startsWith("PolicyDenied"))return F(403,{error:"PolicyDenied"},h);return F(500,{error:"InternalError"},h)}}}var Up=y0(()=>{tk()});function GH$($,X,J,W){let G=DP(X,(B)=>J({request:B,store:$.store}),W);for(let B of X.list()){let F=B.transport?.rest?.method??(B.meta.kind==="query"?"GET":"POST"),A=(W?.basePath??"")+(B.transport?.rest?.path??`/${B.meta.key.replace(/\./g,"/")}/v${B.meta.version}`);$[F.toLowerCase()](A,({request:I})=>G(I))}if(W?.cors)$.options("*",({request:B})=>G(B));return $}var zH$=y0(()=>{Up()});function BH$($,X,J,W){let G=$.Router();for(let B of X.list()){let F=B.transport?.rest?.method??(B.meta.kind==="query"?"GET":"POST"),A=(W?.basePath??"")+(B.transport?.rest?.path??`/${B.meta.key.replace(/\./g,"/")}/v${B.meta.version}`);G[F.toLowerCase()](A,async(I,E)=>{let T=new URL(`${I.protocol}://${I.get("host")}${I.originalUrl}`),_=new Request(T.toString(),{method:F,headers:Object.fromEntries(Object.entries(I.headers).map(([c,l])=>[c,String(l)])),body:F==="POST"?JSON.stringify(I.body??{}):void 0}),S=await DP(X,()=>J(I),W)(_);E.status(S.status),S.headers.forEach((c,l)=>E.setHeader(l,c));let h=await S.text();E.send(h)})}if(W?.cors)G.options("*",(B,F)=>{let A=new Headers;new Response(null,{status:204}).headers.forEach((I,E)=>A.set(E,I)),F.status(204).send()});return G}var ZH$=y0(()=>{Up()});function UH$($,X,J){let W=DP($,X,J);return async function(B){return W(B)}}var qH$=y0(()=>{Up()});function FH$($,X,J){return async function(G,B){let F=`${G.headers["x-forwarded-proto"]??"http"}://${G.headers.host}${G.url}`,A=G.method?.toUpperCase()||"GET",I=new Request(F,{method:A,headers:Object.fromEntries(Object.entries(G.headers).map(([_,S])=>[_,String(S)])),body:A==="POST"?JSON.stringify(G.body??{}):void 0}),E=await DP($,()=>X(G),J)(I);B.status(E.status),E.headers.forEach((_,S)=>B.setHeader(S,_));let T=await E.text();B.send(T)}}var KH$=y0(()=>{Up()});var fG6=y0(()=>{lC0()});var hG6=y0(()=>{N3$();lC0();fG6();Up();zH$();ZH$();qH$();KH$()});function Sf1($,X){if($.key!==X.key)return!1;if(X.version!=null&&$.version!==X.version)return!1;return!0}function wH$($){return VH$($.meta.key,$.meta.version)}function OH$($){return $}var VH$=($,X)=>`${$}.v${X}`,AH$=class{items=new Map;register($){let X=VH$($.meta.key,$.meta.version);if(this.items.has(X))throw Error(`Duplicate capability ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()]}get($,X){if(X!=null)return this.items.get(VH$($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||RB(W.meta.version,J.meta.version)>0)J=W}return J}satisfies($,X){if($.optional)return!0;if(X?.some((W)=>Sf1(W,$)))return!0;let J=$.version?this.get($.key,$.version):this.get($.key);if(!J)return!1;if($.kind&&J.meta.kind!==$.kind)return!1;if($.version!=null&&J.meta.version!==$.version)return!1;return!0}};var LH$=y0(()=>{jR()});var L5,ch,gG6,IH$,uG6;var OZ=y0(()=>{L5={Idea:"idea",InCreation:"in_creation",Experimental:"experimental",Beta:"beta",Stable:"stable",Deprecated:"deprecated"},ch={PlatformCore:"platform.core",PlatformSigil:"platform.sigil",PlatformMarketplace:"platform.marketplace",PlatformMessaging:"platform.messaging",PlatformContent:"platform.content",PlatformFeatureFlags:"platform.featureflags",PlatformFinance:"platform.finance"},gG6=ch,IH$={Spots:"spots",Collectivity:"collectivity",Marketplace:"marketplace",Sellers:"sellers",Auth:"auth",Login:"login",Signup:"signup",Guide:"guide",Docs:"docs",I18n:"i18n",Incident:"incident",Automation:"automation",Hygiene:"hygiene"},uG6=IH$});function jH$($){return $.register(cC0).register(pC0).register(iC0)}var EH$,MH$,cC0,pC0,iC0;var NH$=y0(()=>{OZ();EH$=["platform.finance"],MH$=["open-banking","finance"],cC0={meta:{key:"openbanking.accounts.read",version:"1.0.0",kind:"integration",title:"Open Banking Accounts (Read)",description:"Provides read-only access to linked bank accounts, including account summaries and metadata.",domain:"finance",owners:[...EH$],tags:[...MH$],stability:L5.Experimental},provides:[{surface:"operation",key:"openbanking.accounts.list",version:"1.0.0",description:"List bank accounts linked to a Powens open banking connection."},{surface:"operation",key:"openbanking.accounts.get",version:"1.0.0",description:"Retrieve the canonical bank account record for a specific account."},{surface:"operation",key:"openbanking.accounts.sync",version:"1.0.0",description:"Trigger a refresh of bank account metadata from the open banking provider."}]},pC0={meta:{key:"openbanking.transactions.read",version:"1.0.0",kind:"integration",title:"Open Banking Transactions (Read)",description:"Enables retrieval of transaction history for linked bank accounts via open banking providers.",domain:"finance",owners:[...EH$],tags:[...MH$,"transactions"],stability:L5.Experimental},provides:[{surface:"operation",key:"openbanking.transactions.list",version:"1.0.0",description:"List transactions for a given bank account with optional date filtering."},{surface:"operation",key:"openbanking.transactions.sync",version:"1.0.0",description:"Synchronise transactions from the open banking provider into the canonical ledger."}]},iC0={meta:{key:"openbanking.balances.read",version:"1.0.0",kind:"integration",title:"Open Banking Balances (Read)",description:"Allows querying of current and available balances for linked bank accounts via open banking providers.",domain:"finance",owners:[...EH$],tags:[...MH$,"balances"],stability:L5.Experimental},provides:[{surface:"operation",key:"openbanking.balances.get",version:"1.0.0",description:"Retrieve the latest known balances for a specified bank account."},{surface:"operation",key:"openbanking.balances.refresh",version:"1.0.0",description:"Force a balance refresh from the open banking provider."}]}});var mG6=y0(()=>{LH$();NH$()});var _f1,nC0,rC0,oC0,RH$;var PH$=y0(()=>{OZ();wK();_f1=["contractspec:operation","contractspec:event","contractspec:presentation","contractspec:form","contractspec:feature","contractspec:workflow","contractspec:template","contractspec:integration","contractspec:data-view","contractspec:migration","contractspec:telemetry","contractspec:experiment","contractspec:app-config","contractspec:knowledge"],nC0=n3.enum(_f1),rC0=n3.object({path:n3.string().min(1),type:n3.string().min(1),content:n3.string().optional()}),oC0=n3.object({key:n3.string().min(1),type:nC0,version:n3.string(),title:n3.string().min(1),description:n3.string().min(1),meta:n3.object({stability:n3.enum([L5.Idea,L5.InCreation,L5.Experimental,L5.Beta,L5.Stable,L5.Deprecated]),owners:n3.array(n3.string().min(1)).default([]),tags:n3.array(n3.string().min(1)).default([])}),dependencies:n3.array(n3.string().min(1)).optional(),registryDependencies:n3.array(n3.string().min(1)).optional(),files:n3.array(rC0).min(1),schema:n3.object({input:n3.unknown().optional(),output:n3.unknown().optional()}).optional()}),RH$=n3.object({$schema:n3.string().min(1).optional(),name:n3.string().min(1),homepage:n3.string().min(1).optional(),items:n3.array(oC0)})});var dG6=y0(()=>{PH$()});var XP=($)=>("ref"in $),cz=($)=>({...$,meta:{...$.meta,kind:"command"},policy:{...$.policy,idempotent:$.policy?.policy?.idempotent??!1}}),gK=($)=>({...$,meta:{...$.meta,kind:"query"},policy:{...$.policy,idempotent:!0}});var YP=()=>{};function ph($,X){return`${$}.v${X}`}var uK;var aC0=y0(()=>{sw();_7$();YP();uK=class extends fG{handlers=new Map;constructor($){super("operation",$)}bind($,X){let J=ph($.meta.key,$.meta.version);if(!this.items.has(J))throw Error(`Cannot bind; spec not found: ${J}`);if(this.handlers.has(J))throw Error(`Handler already bound for ${J}`);return this.handlers.set(J,X),this}getHandler($,X){let J=this.get($,X);if(!J)return;return this.handlers.get(ph(J.meta.key,J.meta.version))}listBound(){let $=[];for(let[X,J]of this.items.entries()){let W=this.handlers.get(X);if(W)$.push({spec:J,handler:W})}return $}async execute($,X,J,W){let G=this.get($,X);if(!G)throw Error(`Spec not found for ${$}${X?`.v${X}`:""}`);let B=await W.specVariantResolver?.resolve({name:G.meta.key,version:G.meta.version,kind:G.meta.kind},W)??G,F=ph(B.meta.key,B.meta.version),A=this.handlers.get(F);if(!A){let l=ph(G.meta.key,G.meta.version);A=this.handlers.get(l),F=l}if(!A)throw Error(`No handler bound for ${F}`);let I=B.io.input?.getZod().parse(J);if(W.decide){let[l,Z0]=B.meta.key.split(".");if(!l||!Z0)throw Error(`Invalid spec name: ${B.meta.key}`);let I0=await W.decide({service:l,command:Z0,version:B.meta.version,actor:W.actor??"anonymous",channel:W.channel,roles:W.roles,organizationId:W.organizationId,userId:W.userId,flags:[]});if(I0.effect==="deny")throw Error(`PolicyDenied: ${B.meta.key}.v${B.meta.version}`);if(I0.rateLimit&&W.rateLimit){let C0=I0.rateLimit.key??"default",T0=I0.rateLimit.rpm??60;await W.rateLimit(C0,1,T0)}}let E=new Map;if(B.sideEffects?.emits)for(let l of B.sideEffects.emits)if(XP(l)){let Z0=W.eventSpecResolver?.get(l.ref.key,l.ref.version);if(Z0)E.set(`${l.ref.key}.v${l.ref.version}`,Z0.payload)}else E.set(`${l.key}.v${l.version}`,l.payload);let T=async(l,Z0,I0)=>{let C0=Oj0(l,Z0),T0=E.get(C0);if(!T0)throw Error(`UndeclaredEvent: ${C0} not allowed by ${ph(B.meta.key,B.meta.version)}`);let e0=T0.getZod().parse(I0);await W.eventPublisher?.({key:l,version:Z0,payload:e0,traceId:W.traceId})};if(W.appConfig){if(!W.branding)W.branding=W.appConfig.branding;if(!W.translation)W.translation={config:W.appConfig.translation};else if(!W.translation.config)W.translation={...W.translation,config:W.appConfig.translation}}let _=W.telemetry,S=async(l,Z0)=>{if(!_||!l?.event)return;try{let I0=l.properties?.(Z0)??{};await _.track(l.event.key,l.event.version??"1.0.0",I0,{tenantId:W.organizationId??void 0,organizationId:W.organizationId,userId:W.userId,actor:W.actor,channel:W.channel,metadata:W.traceId?{traceId:W.traceId}:void 0})}catch(I0){}},h;try{h=await A(I,{...W,__emitGuard__:T})}catch(l){if(B.telemetry?.failure)await S(B.telemetry.failure,{input:I??J,error:l});throw l}if(B.telemetry?.success)await S(B.telemetry.success,{input:I??J,output:h});let c=B.io.output;if(c?.getZod)return c.getZod().parse(h);return h}}});function lG6($,X){return{ref:async(J,W)=>{await X.__emitGuard__?.(J.meta.key,J.meta.version,W)},key:async(J,W,G)=>{await X.__emitGuard__?.(J,W,G)},object:async(J)=>{await X.__emitGuard__?.(J.key,J.version,J.payload)}}}function CH$($,X,J){return $.register(X).bind(X,J)}function cG6($,X){return{spec:$,handler:X,install:(J)=>CH$(J,$,X)}}var pG6=y0(()=>{aC0()});function nG6($,X){return`${$.replace(/\./g,"_")}_v${X}`}function iG6($,X,J){return`${$}_${nG6(X,J)}`}function kf1($,X){return(X??($==="query"?"GET":"POST")).toLowerCase()}function vf1($){let X=$.transport?.rest?.path??W00($.meta.key,$.meta.version);return X.startsWith("/")?X:`/${X}`}function i00($,X={}){let J=$.list().filter((G)=>G.meta.kind==="command"||G.meta.kind==="query").slice().sort((G,B)=>{let F=G.meta.key.localeCompare(B.meta.key);return F!==0?F:RB(G.meta.version,B.meta.version)}),W={openapi:"3.1.0",info:{title:X.title??"ContractSpec API",version:X.version??"0.0.0",...X.description?{description:X.description}:{}},...X.servers?{servers:X.servers}:{},paths:{},components:{schemas:{}}};for(let G of J){let B=vc(G),F=kf1(G.meta.kind,G.transport?.rest?.method),A=vf1(G),I=nG6(G.meta.key,G.meta.version),E=W.paths[A]??={},T={operationId:I,summary:G.meta.description??G.meta.key,description:G.meta.description,tags:G.meta.tags??[],"x-contractspec":{name:G.meta.key,version:G.meta.version,kind:G.meta.kind},responses:{}};if(B.input){let S=iG6("Input",G.meta.key,G.meta.version);W.components.schemas[S]=B.input,T.requestBody={required:!0,content:{"application/json":{schema:{$ref:`#/components/schemas/${S}`}}}}}let _={};if(B.output){let S=iG6("Output",G.meta.key,G.meta.version);W.components.schemas[S]=B.output,_["200"]={description:"OK",content:{"application/json":{schema:{$ref:`#/components/schemas/${S}`}}}}}else _["200"]={description:"OK"};T.responses=_,E[F]=T}return W}var rG6=y0(()=>{tk();jR()});function oG6($){return $}var aG6=()=>{};var sG6=class{prompts=new Map;register($){let X=`${$.meta.key}-v${$.meta.version}`;if(this.prompts.has(X))throw Error(`Duplicate prompt ${X}`);return this.prompts.set(X,$),this}list(){return[...this.prompts.values()]}get($,X){if(X!=null)return this.prompts.get(`${$}-v${X}`);let J;for(let[W,G]of this.prompts.entries()){if(!W.startsWith(`${$}.v`))continue;if(!J||RB(G.meta.version,J.meta.version)>0)J=G}return J}};var tG6=y0(()=>{jR()});var JP=y0(()=>{YP();aC0()});function eG6($){return $}function Dz6($,X){return{kind:"resource_ref",uriTemplate:$,varName:X.varName??"id",graphQLType:X.graphQLType,many:X.many}}function Xz6($){let X=$;return!!X&&X.kind==="resource_ref"&&typeof X.uriTemplate==="string"}var $z6=class{templates=[];register($){return this.templates.push($),this}listTemplates(){return[...this.templates]}match($){for(let X of this.templates){let J=new RegExp("^"+X.meta.uriTemplate.replace(/\{[^}]+\}/g,"([^/]+)")+"$"),W=$.match(J);if(!W)continue;let G=[...X.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map((F)=>F[1]),B={};return G.forEach((F,A)=>{let I=W[A+1];if(F&&I)B[F]=decodeURIComponent(I)}),{tmpl:X,params:B}}}};var Yz6=()=>{};function xf1($){if(QI($))return $.config.name;return"AnonymousSchema_"+Math.random().toString(36).substring(7)}var Jz6=class{items=new Map;constructor($){if($)$.forEach((X)=>this.register(X))}register($){let X=xf1($);if(this.items.has(X))throw Error(`Duplicate contract \`model\` ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()]}get($){return this.items.get($)}};var Wz6=y0(()=>{$O()});var TH$,bH$,Qz6,SH$,Hz6,_H$,Gz6,kH$,vH$,zz6;var Bz6=y0(()=>{OZ();YP();JP();$O();TH$=new O5({name:"SaveOnboardingDraftInput",description:"Input for saving onboarding draft",fields:{data:{type:O1.JSON(),isOptional:!1}}}),bH$=new O5({name:"SaveOnboardingDraftOutput",description:"Output for saving onboarding draft",fields:{id:{type:O1.ID(),isOptional:!1},organizationId:{type:O1.ID(),isOptional:!1}}}),Qz6=cz({meta:{key:"base.onboarding.saveDraft",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding","draft"],description:"Save or update onboarding draft for active organization",goal:"Persist onboarding progress incrementally for resumption and safety",context:"Auto-saves every few seconds during onboarding; enables users to leave and resume"},io:{input:TH$,output:bH$},policy:{auth:"user",escalate:null},transport:{gql:{field:"saveOnboardingDraft"},rest:{method:"POST"}}}),SH$=new O5({name:"GetOnboardingDraftOutput",description:"Onboarding draft payload",fields:{id:{type:O1.ID(),isOptional:!0},organizationId:{type:O1.ID(),isOptional:!0},data:{type:O1.JSON(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!0},updatedAt:{type:O1.DateTime(),isOptional:!0}}}),Hz6=gK({meta:{key:"base.onboarding.getDraft",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding","draft"],description:"Get onboarding draft for active organization",goal:"Retrieve saved onboarding progress",context:"Called on mount to restore in-progress onboarding"},io:{input:null,output:SH$},policy:{auth:"user",escalate:null},transport:{gql:{field:"getOnboardingDraft"},rest:{method:"GET"}}}),_H$=new O5({name:"DeleteOnboardingDraftOutput",description:"Result of delete operation",fields:{ok:{type:O1.Boolean(),isOptional:!1}}}),Gz6=cz({meta:{key:"base.onboarding.deleteDraft",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding","draft"],description:"Delete onboarding draft for active organization",goal:"Clear draft after completion or if user wants to restart",context:"Called after successful onboarding or explicit user reset"},io:{input:null,output:_H$},policy:{auth:"user",escalate:null},transport:{gql:{field:"deleteOnboardingDraft"},rest:{method:"POST"}}}),kH$=new O5({name:"CompleteOnboardingBaseInput",description:"Input for completing onboarding",fields:{data:{type:O1.JSON(),isOptional:!1}}}),vH$=new O5({name:"CompleteOnboardingBaseOutput",description:"Result of onboarding completion",fields:{success:{type:O1.Boolean(),isOptional:!1},userId:{type:O1.ID(),isOptional:!0},organizationId:{type:O1.ID(),isOptional:!0}}}),zz6=cz({meta:{key:"base.onboarding.complete",version:"1.0.0",stability:L5.Beta,owners:[ch.PlatformSigil],tags:["onboarding"],description:"Complete onboarding and finalize user/organization setup",goal:"Transition from draft to active profile",context:"Validates all required fields, creates/updates entities, marks onboarding complete"},io:{input:kH$,output:vH$},policy:{auth:"user",escalate:null},transport:{gql:{field:"completeOnboarding"},rest:{method:"POST"}}})});function xH$($){return $}var yH$=()=>{};function fH$($){return`${$.meta.key}.v${$.meta.version}`}var hH$;var gH$=y0(()=>{sw();hH$=class extends fG{constructor($){super("data-view",$)}}});var Zz6=y0(()=>{yH$();gH$()});var uH$;var sC0=y0(()=>{sw();uH$=class extends fG{constructor($){super("policy",$)}}});function yf1($){if($.startsWith("write"))return"write";return"read"}function Uz6($,X){let J=$.subject;if(!J)return!0;if(J.roles?.length){let W=X.roles??[];if(!J.roles.some((G)=>W.includes(G)))return!1}if(J.attributes){let W=X.attributes??{};if(!Kz6(J.attributes,W))return!1}return!0}function qz6($,X){let J=$.resource;if(!J)return!0;if(J.type&&J.type!==X.type)return!1;if(J.fields?.length){let W=X.fields??[];if(!J.fields.some((G)=>W.includes(G)))return!1}if(J.attributes){let W=X.attributes??{};if(!Kz6(J.attributes,W))return!1}return!0}function ff1($,X){if(!$.flags?.length)return!0;let J=new Set;if(X.flags)for(let G of X.flags)J.add(G);let W=X.subject.attributes?.featureFlags;if(Array.isArray(W))for(let G of W)J.add(G);return $.flags.every((G)=>J.has(G))}function hf1($,X){if(!$||$.length===0)return!0;let J=X.subject.relationships??[],W=cf1(X.resource),G=X.resource.type;return $.every((B)=>J.some((F)=>{if(F.relation!==B.relation)return!1;if(!(!B.objectType||F.objectType===B.objectType||B.objectType===G))return!1;if(!B.objectId)return!0;if(B.objectId==="$resource"){if(W)return F.object===W;return F.object===G||F.objectType===G}return F.object===B.objectId}))}function Fz6($,X){if(!$.conditions||$.conditions.length===0)return!0;return $.conditions.every((J)=>df1(J.expression,X))}function Kz6($,X){for(let[J,W]of Object.entries($)){let G=X[J];if(W.exists&&typeof G>"u")return!1;if(typeof W.equals<"u"){if(G!==W.equals)return!1}if(W.oneOf&&!W.oneOf.includes(G))return!1}return!0}function gf1($,X,J){if(!$.requiresConsent?.length)return[];let W=new Set(J.consents??[]),G=$.requiresConsent.filter((B)=>!W.has(B));if(G.length===0)return[];return uf1(X,G)}function uf1($,X){let J=$.consents??[];return X.map((W)=>{return J.find((G)=>G.id===W)??{id:W,scope:"unspecified",purpose:"unspecified",description:`Consent "${W}" required by ${$.meta.key}`,required:!0}})}function mf1($,X,J){if(!$.rateLimit)return;let W=typeof $.rateLimit==="string"?(X.rateLimits??[]).find((G)=>G.id===$.rateLimit):$.rateLimit;if(!W)throw Error(`PolicyEngine: rate limit "${String($.rateLimit)}" not declared in ${X.meta.key}`);return{rpm:W.rpm,key:W.key??J.resource.type,windowSeconds:W.windowSeconds,burst:W.burst}}function df1($,X){let J=$.trim();if(!J)return!0;let W={subject:X.subject,resource:X.resource,context:X.context??{}};try{let G=Function("subject","resource","context",`return (${lf1(J)});`)(W.subject,W.resource,W.context);return Boolean(G)}catch(G){return!1}}function lf1($){return $.replace(/&&/g,"&&").replace(/\|\|/g,"||")}function cf1($){if($.id)return $.id;let X=$.attributes?.id;if(typeof X==="string")return X;if(typeof X==="number")return String(X)}var mH$=class{constructor($){this.registry=$}decide($){let X=this.resolvePolicies($.policies),J,W,G;for(let A of X){let I=this.matchRuleSet(A,$);if(!I)continue;if(I.rule.effect==="deny")return{effect:"deny",reason:I.rule.reason??A.meta.key,requiredConsents:I.missingConsents.length?I.missingConsents:void 0,evaluatedBy:"engine"};if(I.rule.effect==="allow"){if(I.missingConsents.length)return{effect:"deny",reason:"consent_required",requiredConsents:I.missingConsents,evaluatedBy:"engine"};if(!J)J=I.rule.reason??A.meta.key;if(!W&&I.rateLimit)W=I.rateLimit;if(!G&&I.rule.escalate)G=I.rule.escalate}}let B=this.evaluateFields(X,$),F=X.find((A)=>A.pii)?.pii;return{effect:J?"allow":"deny",reason:J,rateLimit:W,escalate:typeof G>"u"?void 0:G,fieldDecisions:B.length?B:void 0,pii:F,evaluatedBy:"engine"}}resolvePolicies($){let X=[];for(let J of $){let W=this.registry.get(J.key,J.version);if(!W)throw Error(`PolicyEngine: policy not found ${J.key}.v${J.version}`);X.push(W)}return X}matchRuleSet($,X){let J;for(let W of $.rules){if(!W.actions.includes(X.action))continue;if(!Uz6(W,X.subject))continue;if(!qz6(W,X.resource))continue;if(!ff1(W,X))continue;if(!hf1(W.relationships,X))continue;if(!Fz6(W,X))continue;let G={rule:W,missingConsents:gf1(W,$,X),rateLimit:mf1(W,$,X)};if(W.effect==="deny")return G;if(W.effect==="allow"&&!J)J=G}return J}evaluateFields($,X){let J=new Map;for(let W of $){if(!W.fieldPolicies)continue;for(let G of W.fieldPolicies){if(!G.actions.includes(yf1(X.action)))continue;if(!Uz6(G,X.subject))continue;if(!qz6(G,X.resource))continue;if(!Fz6(G,X))continue;let B=J.get(G.field);if(G.effect==="deny")J.set(G.field,{field:G.field,effect:"deny",reason:G.reason??W.meta.key});else if(!B)J.set(G.field,{field:G.field,effect:"allow",reason:G.reason??W.meta.key})}}return[...J.values()]}};var dH$=y0(()=>{sC0()});function tC0($,X,J){return{context:$,decision:J,policies:X.map((W)=>({meta:W.meta,rules:W.rules,fieldPolicies:W.fieldPolicies,pii:W.pii,relationships:W.relationships,consents:W.consents,rateLimits:W.rateLimits}))}}function pf1($,X,J){if(J.length===0)return X;let W=new Set(X.map((B)=>B.id)),G=[...X];for(let B of J){if(W.has(B))continue;let F=if1($,B);if(F)G.push(F),W.add(F.id)}return G}function if1($,X){for(let J of $){let W=J.consents?.find((G)=>G.id===X);if(W)return W}return{id:X,scope:"unspecified",purpose:"unspecified",description:`Consent "${X}" returned by OPA`,required:!0}}var lH$=class{constructor($,X){this.client=$,this.options=X}async evaluate($,X,J){let W=tC0($,X,J),G=await this.client.evaluate(this.options.decisionPath,W),B=this.options.mapResult?this.options.mapResult(G):G;if(!B)return{...J,evaluatedBy:J.evaluatedBy??"engine"};let F=B,A=pf1(X,J.requiredConsents??[],F.requiredConsents??[]);return{...J,effect:F.effect??J.effect,reason:F.reason??J.reason,fieldDecisions:F.fieldDecisions??J.fieldDecisions,requiredConsents:A.length?A:void 0,evaluatedBy:"opa"}}};var cH$=()=>{};var Vz6=y0(()=>{sC0();dH$();cH$()});function wz6($){return{key:$.meta.key,version:$.meta.version}}var Az6;var Oz6=y0(()=>{sw();Az6=class extends fG{constructor($){super("theme",$)}}});var Lz6=($,X)=>`${$}.v${X}`,Iz6=class{items=new Map;register($){let X=Lz6($.meta.key,$.meta.version);if(this.items.has(X))throw Error(`Duplicate migration ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()].sort(($,X)=>{let J=$.meta.key.localeCompare(X.meta.key);return J!==0?J:RB($.meta.version,X.meta.version)})}get($,X){if(X!=null)return this.items.get(Lz6($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||RB(W.meta.version,J.meta.version)>0)J=W}return J}};var Ez6=y0(()=>{jR()});function iH$($){return nf1($)}var nf1=($)=>`${$.key}.v${$.version}`,pH$;var nH$=y0(()=>{sw();jR();pH$=class extends fG{eventsByKey=new Map;specByEventKey=new Map;constructor($){super("telemetry",$);if($)$.forEach((X)=>this.indexEvents(X))}register($){return super.register($),this.indexEvents($),this}indexEvents($){for(let X of $.events)this.eventsByKey.set(`${X.key}.v${X.version}`,X),this.specByEventKey.set(`${X.key}.v${X.version}`,$)}findEventDef($,X){if(X!=null)return this.eventsByKey.get(`${$}.v${X}`);let J;for(let W of this.eventsByKey.values()){if(W.key!==$)continue;if(!J||RB(W.version,J.version)>0)J=W}return J}getSpecForEvent($,X){return this.specByEventKey.get(`${$}.v${X}`)}}});import{randomUUID as rf1}from"crypto";var of1=($)=>{if($==null)return $;if(typeof $==="string")return"REDACTED";if(typeof $==="number")return 0;if(typeof $==="boolean")return!1;if(Array.isArray($))return $.map(()=>"REDACTED");if(typeof $==="object")return Object.fromEntries(Object.keys($).map((X)=>[X,"REDACTED"]));return"REDACTED"},rH$=class{providers=new Map;registry;anomalyMonitor;random;clock;constructor($){this.registry=$.registry,this.anomalyMonitor=$.anomalyMonitor,this.random=$.random??Math.random,this.clock=$.clock??(()=>new Date);for(let X of $.providers??[])this.providers.set(X.id,X)}registerProvider($){this.providers.set($.id,$)}unregisterProvider($){this.providers.delete($)}async track($,X,J,W={}){let G=this.registry.findEventDef($,X);if(!G)return!1;let B=this.registry.getSpecForEvent(G.key,G.version);if(!B)return!1;if(!this.shouldSample(G.sampling??B.config?.defaultSamplingRate))return!1;let F=this.redactProperties(G,J),A={id:rf1(),name:G.key,version:G.version,occurredAt:this.clock().toISOString(),properties:F,privacy:G.privacy,context:W,tags:G.tags,spec:B,definition:G};return await Promise.all([...this.providers.values()].map((I)=>I.send(A))),this.anomalyMonitor?.observe(A),!0}shouldSample($){if(typeof $==="number")return this.random()<$;if(!$)return!0;return this.random()<$.rate}redactProperties($,X){let J={};for(let[W,G]of Object.entries(X)){let B=$.properties[W];if(!B){J[W]=G;continue}if(B.redact||B.pii||$.privacy==="sensitive")J[W]=of1(G);else J[W]=G}return J}};var oH$=()=>{};var aH$=class{onAnomaly;now;samples=new Map;constructor($={}){this.onAnomaly=$.onAnomaly,this.now=$.now??(()=>new Date)}observe($){let X=$.definition.anomalyDetection;if(!X?.enabled)return;if(!X.thresholds?.length)return;let J=`${$.name}.v${$.version}`,W=(this.samples.get(J)??0)+1;if(this.samples.set(J,W),typeof X.minimumSample==="number"&&W<X.minimumSample)return;for(let G of X.thresholds){let B=this.extractMetric($,G.metric);if(typeof B!=="number")continue;if(typeof G.min==="number"&&B<G.min)this.emit($,X,G.metric,B,"min");if(typeof G.max==="number"&&B>G.max)this.emit($,X,G.metric,B,"max")}}extractMetric($,X){let J=$.properties[X];if(typeof J==="number")return J;if(typeof J==="object"&&J!==null&&"value"in J){let W=J.value;return typeof W==="number"?W:void 0}}emit($,X,J,W,G){this.onAnomaly?.({dispatch:$,threshold:X,metric:J,value:W,type:G})}reset(){this.samples.clear()}};var sH$=()=>{};var Mz6=y0(()=>{nH$();oH$();sH$()});function eH$($){return jz6($)}var jz6=($)=>`${$.key}.v${$.version}`,tH$=class{items=new Map;register($){let X=jz6($.meta);if(this.items.has(X))throw Error(`Duplicate TestSpec registration for ${X}`);return this.items.set(X,$),this}list(){return[...this.items.values()]}get($,X){if(X!=null)return this.items.get(`${$}.v${X}`);let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||RB(W.meta.version,J.meta.version)>0)J=W}return J}};var $G$=y0(()=>{jR()});import{deepStrictEqual as af1}from"assert";var n00=class{constructor($){this.config=$}async run($){let X=[],J=0,W=0;for(let G of $.scenarios){await this.config.beforeEach?.(G);let B=await this.runScenario($,G);if(X.push(B),B.status==="passed")J+=1;else W+=1;await this.config.afterEach?.(G,B)}return{spec:$,scenarios:X,passed:J,failed:W}}async runScenario($,X){let J=[];try{let W=await this.createContext(),G=[...$.fixtures??[],...X.given??[]],B=[];for(let I of G)await this.executeOperation(I,W,B);let F=await this.executeOperation(X.when,W,B),A=X.then??[];for(let I of A){let E=this.evaluateAssertion(I,F,B);J.push(E)}return{scenario:X,status:J.some((I)=>I.status==="failed")?"failed":"passed",assertionResults:J}}catch(W){return{scenario:X,status:"failed",error:W,assertionResults:J}}}async createContext(){return{...await this.config.createContext?.()??{}}}async executeOperation($,X,J){let W={...X,eventPublisher:async(G)=>{J.push({key:G.key,version:G.version,payload:G.payload}),await X.eventPublisher?.(G)}};try{return{output:await this.config.registry.execute($.operation.key,$.operation.version,$.input??null,W),events:J}}catch(G){return{error:G,events:J}}}evaluateAssertion($,X,J){switch($.type){case"expectOutput":return this.evaluateOutputAssertion($,X);case"expectError":return this.evaluateErrorAssertion($,X);case"expectEvents":return this.evaluateEventsAssertion($,J);default:return{assertion:$,status:"failed",message:`Unknown assertion type ${$.type}`}}}evaluateOutputAssertion($,X){if(X.error)return{assertion:$,status:"failed",message:`Expected output but operation threw error: ${X.error.message}`};try{return af1(X.output,$.match),{assertion:$,status:"passed"}}catch(J){return{assertion:$,status:"failed",message:J instanceof Error?J.message:"Output assertion failed"}}}evaluateErrorAssertion($,X){if(!X.error)return{assertion:$,status:"failed",message:"Expected an error but operation completed successfully"};if($.messageIncludes&&!X.error.message.includes($.messageIncludes))return{assertion:$,status:"failed",message:`Error message "${X.error.message}" did not include expected substring "${$.messageIncludes}"`};return{assertion:$,status:"passed"}}evaluateEventsAssertion($,X){let J=[];for(let W of $.events){let G=X.filter((B)=>B.key===W.key&&B.version===W.version).length;if(typeof W.min==="number"&&G<W.min||typeof W.max==="number"&&G>W.max)J.push(`Event ${W.key}.v${W.version} occurred ${G} times (expected ${W.min??0} - ${W.max??"\u221E"})`);else if(typeof W.min>"u"&&typeof W.max>"u"&&G===0)J.push(`Event ${W.key}.v${W.version} did not occur`)}if(J.length>0)return{assertion:$,status:"failed",message:J.join("; ")};return{assertion:$,status:"passed"}}};var DG$=y0(()=>{LI()});var XG$=y0(()=>{$G$();DG$()});function Rz6($){return sf1($)}var sf1=($)=>`${$.key}.v${$.version}`,Nz6;var Pz6=y0(()=>{sw();Nz6=class extends fG{constructor($){super("experiment",$)}}});import{createHash as tf1}from"crypto";var Cz6=class{registry;policyChecker;expressionEvaluator;constructor($){this.registry=$.registry,this.policyChecker=$.policyChecker,this.expressionEvaluator=$.expressionEvaluator}async chooseVariant($){let X=this.registry.get($.experiment,$.version);if(!X)return null;let J=X.variants.find((W)=>W.id===X.controlVariant);if(!J)throw Error(`Experiment ${X.meta.key} missing control variant ${X.controlVariant}`);switch(X.allocation.type){case"random":return{variant:this.pickByWeight(X,this.randomSeed($,X.allocation.salt)),reason:"random"};case"sticky":return{variant:this.pickByWeight(X,this.stickySeed($,X.allocation.attribute,X.allocation.salt)),reason:"sticky"};case"targeted":{let W=await this.evaluateTargeting(X,$,X.allocation.rules);if(W)return{variant:W,reason:"targeted"};if(X.allocation.fallback==="random")return{variant:this.pickByWeight(X,this.randomSeed($)),reason:"random"};return{variant:J,reason:"control"}}default:return{variant:J,reason:"control"}}}pickByWeight($,X){let J=$.variants,W=X*J.reduce((B,F)=>B+(F.weight??1),0),G=0;for(let B of J)if(G+=B.weight??1,W<=G)return B;return J[J.length-1]}randomSeed($,X=""){let J=$.sessionId??$.userId??$.organizationId??`${Date.now()}-${Math.random()}`;return this.hashToUnitInterval(J+X)}stickySeed($,X,J=""){let W=$[X];if(!W)return this.randomSeed($,J);return this.hashToUnitInterval(`${W}-${J}`)}hashToUnitInterval($){let X=tf1("sha256").update($).digest("hex").slice(0,15);return parseInt(X,16)%1e6/1e6}async evaluateTargeting($,X,J){for(let W of J){if(!await this.matchesRule(W,X))continue;let G=$.variants.find((B)=>B.id===W.variantId);if(!G)continue;if(typeof W.percentage==="number"){if(this.randomSeed(X,`rule-${W.variantId}`)>W.percentage)continue}return G}return null}async matchesRule($,X){if($.policy&&this.policyChecker){if(!await this.policyChecker($.policy,X))return!1}if($.expression){if(this.expressionEvaluator)return Boolean(this.expressionEvaluator($.expression,X));try{let J=Function("context",`return (${$.expression});`);return Boolean(J(X))}catch(J){return!1}}return!0}};var Tz6=()=>{};function Sz6($){return ef1($)}var ef1=($)=>`${$.key}.v${$.version}`,bz6;var _z6=y0(()=>{sw();bz6=class extends fG{constructor($){super("app-config",$)}}});function iQ0($,X,J={}){let W=$h1($.capabilities,X.capabilities),G=Dh1($.features,X.features),B=kz6($.dataViews??{},X.dataViewOverrides),F=kz6($.workflows??{},X.workflowOverrides),A=Xh1($.policies??[],X.additionalPolicies??[]),I=Yh1($.theme,X.themeOverride),E=Jh1($.telemetry,X.telemetryOverride),T=Wh1($.experiments,X.experiments),_=Gh1($.featureFlags??[],X.featureFlags??[]),S=zh1($.routes??[],X.routeOverrides??[]),{resolved:h}=yz6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs),c=Zh1(X.knowledge,J.knowledgeSpaces,J.knowledgeSources),l=Qh1($.branding,X),Z0=Hh1($.translationCatalog,X.locales,X.translationOverrides);return{appId:$.meta.appId,tenantId:X.meta.tenantId,environment:X.meta.environment,blueprintName:$.meta.key,blueprintVersion:$.meta.version,configVersion:X.meta.version,capabilities:W,features:G,dataViews:B,workflows:F,policies:A,theme:I,telemetry:E,experiments:T,featureFlags:_,routes:S,integrations:h,knowledge:c,translation:Z0,branding:l,notes:X.notes??$.notes}}function xz6($,X,J,W={}){let G=iQ0($,X,J),B=[],F=yz6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs);G.integrations=F.resolved,B.push(...F.missing),B.push(...Uh1(X.knowledge??[],J.knowledgeSpaces,J.knowledgeSources));let A=qh1(G.capabilities.enabled,J.capabilities,B),I=Fh1(G.features.include,J.features,B),E=vz6(G.dataViews,J.dataViews,"dataView",B),T=vz6(G.workflows,J.workflows,"workflow",B),_=Kh1(G.policies,J.policies,B),{theme:S,fallbacks:h,themeMissing:c}=Vh1(G.theme,J.themes);B.push(...c);let{telemetry:l,telemetryMissing:Z0}=Ah1(G.telemetry,J.telemetry);B.push(...Z0);let I0=wh1(G.experiments,J.experiments,B);if(W.strict&&B.length>0){let C0=B.map((T0)=>`${T0.type}:${T0.identifier}`).join(", ");throw Error(`composeAppConfig: missing references -> ${C0}`)}return{resolved:G,capabilities:A,features:I,dataViews:E,workflows:T,policies:_,theme:S,themeFallbacks:h,telemetry:l,experiments:I0,integrations:G.integrations,knowledge:G.knowledge,missing:B}}function $h1($,X){let J=ih([...$?.enabled??[],...X?.enable??[]],r00),W=ih([...$?.disabled??[],...X?.disable??[]],r00),G=new Set(W.map(r00));return{enabled:J.filter((B)=>!G.has(r00(B))),disabled:W}}function Dh1($,X){let J=ih([...$?.include??[],...X?.include??[]],eC0),W=ih([...$?.exclude??[],...X?.exclude??[]],eC0),G=new Set(W.map(eC0));return{include:J.filter((B)=>!G.has(eC0(B))),exclude:W}}function kz6($,X){let J={...$};if(!X)return J;for(let W of X){if(!W)continue;if(!W.pointer)delete J[W.slot];else J[W.slot]=W.pointer}return J}function Xh1($,X){return ih([...$,...X],YG$)}function Yh1($,X){if(!$&&!X)return;let J=X?.primary??$?.primary;if(!J)return;return{primary:J,fallbacks:X?.fallbacks??$?.fallbacks??[]}}function Jh1($,X){if(!$&&!X)return;let J={spec:$?.spec,disabledEvents:$?.disabledEvents?[...$.disabledEvents]:void 0,samplingOverrides:$?.samplingOverrides?{...$.samplingOverrides}:void 0};if(X?.spec!==void 0)J.spec=X.spec??void 0;if(X?.disabledEvents)J.disabledEvents=fz6([...J.disabledEvents??[],...X.disabledEvents]);if(X?.samplingOverrides)J.samplingOverrides={...J.samplingOverrides??{},...X.samplingOverrides};if(!J.spec&&!J.disabledEvents?.length)return;return J}function Wh1($,X){let J=$?.active??[],W=$?.paused??[],G=X?.active,B=X?.paused,F=G&&G.length>0?G:J,A=B&&B.length>0?B:W,I=ih(F,qp),E=ih(A,qp),T=new Set(I.map(qp));return E=E.filter((_)=>!T.has(qp(_))),{catalog:ih([...J,...W,...G??[],...B??[]],qp),active:I,paused:E}}function Qh1($,X){let{branding:J,meta:W}=X,G="app.localhost",B=J?.customDomain??(J?.subdomain?`${J.subdomain}.app.localhost`:`${W.tenantId}.app.localhost`),F=[];if(X.locales?.defaultLocale)F.push(X.locales.defaultLocale);if(J?.appName)F.push("default","en");let A;if(J?.appName){for(let S of F){let h=J.appName[S];if(h){A=h;break}}if(!A){let[,S]=Object.entries(J.appName)[0]??[];if(typeof S==="string")A=S}}if(!A)A=$?.appNameKey??W.appId;let I=new Map,E=(S)=>{if(!S)return;for(let h of S){if(!h?.type)continue;if("url"in h&&h.url)I.set(h.type,h.url)}};E($?.assets),E(J?.assets);let T={logo:I.get("logo"),logoDark:I.get("logo-dark"),favicon:I.get("favicon"),ogImage:I.get("og-image")},_={primary:J?.colors?.primary??$?.colorTokens?.primary??"#1f2937",secondary:J?.colors?.secondary??$?.colorTokens?.secondary??"#4b5563"};return{appName:A,assets:T,colors:_,domain:B}}function Hh1($,X,J){let W=X?.defaultLocale??"en";return{defaultLocale:W,supportedLocales:fz6([W,...X?.enabledLocales??[]]),blueprintCatalog:$,tenantOverrides:J?.entries??[]}}function Gh1($,X){let J=new Map;for(let W of $)J.set(W.key,{...W});for(let W of X)J.set(W.key,{...W});return[...J.values()]}function zh1($,X){let J=new Map;for(let W of $)J.set(W.path,{...W});for(let W of X){let G=J.get(W.path)??{path:W.path};if(W.label!==void 0)if(W.label===null)delete G.label;else G.label=W.label;if(W.dataView!==void 0)if(W.dataView===null)delete G.dataView;else G.dataView=W.dataView;if(W.workflow!==void 0)if(W.workflow===null)delete G.workflow;else G.workflow=W.workflow;if(W.guard!==void 0)if(W.guard===null)delete G.guard;else G.guard=W.guard;if(W.featureFlag!==void 0)if(W.featureFlag===null)delete G.featureFlag;else G.featureFlag=W.featureFlag;if(W.experiment!==void 0)if(W.experiment===null)delete G.experiment;else G.experiment=W.experiment;J.set(G.path,G)}return[...J.values()]}function yz6($,X,J,W){let G=[],B=[],F=new Set,A=(S)=>{let h=`${S.type}:${S.identifier}`;if(F.has(h))return;F.add(h),B.push(S)},I=$??[],E=new Map;for(let S of I)E.set(S.slotId,S);let T=new Map;for(let S of X??[]){if(!E.get(S.slotId)){A({type:"integrationSlot",identifier:`slot:${S.slotId}`});continue}let h=T.get(S.slotId);if(h)h.push(S);else T.set(S.slotId,[S])}for(let S of I){let h=T.get(S.slotId)??[];if(S.required&&h.length===0)A({type:"integrationSlot",identifier:`slot:${S.slotId}`})}if(!J||!W)return{resolved:G,missing:B};let _=new Map;for(let S of J)_.set(S.meta.id,S);for(let S of I){let h=T.get(S.slotId)??[];if(h.length===0)continue;let c=[...h].sort((Z0,I0)=>{let C0=Z0.priority??Number.MAX_SAFE_INTEGER,T0=I0.priority??Number.MAX_SAFE_INTEGER;if(C0===T0)return 0;return C0<T0?-1:1}),l=!1;for(let Z0 of c){let I0=_.get(Z0.connectionId);if(!I0){A({type:"integrationConnection",identifier:`connection:${Z0.connectionId}`});continue}let C0=W.get(I0.meta.integrationKey,I0.meta.integrationVersion);if(!C0){A({type:"integrationSpec",identifier:`spec:${I0.meta.integrationKey}.v${I0.meta.integrationVersion}`});continue}if(C0.meta.category!==S.requiredCategory){A({type:"integrationSpec",identifier:`spec:${C0.meta.key}.category`});continue}if(!C0.supportedModes.includes(I0.ownershipMode)){A({type:"integrationSpec",identifier:`spec:${C0.meta.key}.mode:${I0.ownershipMode}`});continue}if(S.allowedModes&&S.allowedModes.length>0&&!S.allowedModes.includes(I0.ownershipMode)){A({type:"integrationConnection",identifier:`connection:${I0.meta.id}:mode`});continue}if(S.requiredCapabilities&&!S.requiredCapabilities.every((T0)=>Bh1(C0,T0))){A({type:"integrationSpec",identifier:`spec:${C0.meta.key}.capabilities`});continue}G.push({slot:S,binding:Z0,connection:I0,spec:C0}),l=!0;break}if(!l&&S.required)A({type:"integrationSlot",identifier:`slot:${S.slotId}`})}return{resolved:G,missing:B}}function Bh1($,X){return $.capabilities.provides.some((J)=>{if(J.key!==X.key)return!1;if(X.version==null)return!0;return J.version===X.version})}function Zh1($,X,J){if(!$?.length||!X)return[];let W=J??[];return $.map((G)=>{let B=X.get(G.spaceKey,G.spaceVersion);if(!B)return null;return{binding:G,space:B,sources:W.filter((F)=>{if(F.meta.spaceKey!==G.spaceKey)return!1;if(G.spaceVersion!=null)return F.meta.spaceVersion===G.spaceVersion;return!0})}}).filter((G)=>G!==null)}function Uh1($,X,J){if(!$.length||!X)return[];let W=[],G=J??[];for(let B of $){if(!X.get(B.spaceKey,B.spaceVersion)){W.push({type:"knowledgeSpace",identifier:B.spaceVersion?`${B.spaceKey}@${B.spaceVersion}`:B.spaceKey});continue}if(J){if(G.filter((F)=>{if(F.meta.spaceKey!==B.spaceKey)return!1;if(B.spaceVersion!=null)return F.meta.spaceVersion===B.spaceVersion;return!0}).length===0)W.push({type:"knowledgeSource",identifier:B.spaceVersion?`${B.spaceKey}@${B.spaceVersion}`:B.spaceKey})}}return W}function qh1($,X,J){if(!X){if($.length>0)for(let G of $)J.push({type:"capability",identifier:r00(G)});return[]}let W=[];for(let G of $){let B=X.get(G.key,G.version);if(!B){J.push({type:"capability",identifier:r00(G)});continue}W.push(B)}return W}function Fh1($,X,J){if(!X){if($.length>0)for(let G of $)J.push({type:"feature",identifier:G.key});return[]}let W=[];for(let G of $){let B=X.get(G.key);if(!B){J.push({type:"feature",identifier:G.key});continue}W.push(B)}return W}function vz6($,X,J,W){if(!X){if(Object.keys($).length>0)for(let[B,F]of Object.entries($))W.push({type:J,identifier:`${B} -> ${$T0(F)}`});return{}}let G={};for(let[B,F]of Object.entries($)){let A=X.get(F.key,F.version);if(!A){W.push({type:J,identifier:`${B} -> ${$T0(F)}`});continue}G[B]=A}return G}function Kh1($,X,J){if(!X){if($.length>0)for(let G of $)J.push({type:"policy",identifier:YG$(G)});return[]}let W=[];for(let G of $){let B=X.get(G.key,G.version);if(!B){J.push({type:"policy",identifier:YG$(G)});continue}W.push(B)}return W}function Vh1($,X){let J=[];if(!$)return{theme:void 0,fallbacks:[],themeMissing:J};if(!X){J.push({type:"theme",identifier:`${$.primary.key}.v${$.primary.version}`});for(let B of $.fallbacks??[])J.push({type:"theme",identifier:`${B.key}.v${B.version}`});return{theme:void 0,fallbacks:[],themeMissing:J}}let W=X.get($.primary.key,$.primary.version);if(!W)J.push({type:"theme",identifier:`${$.primary.key}.v${$.primary.version}`});let G=[];for(let B of $.fallbacks??[]){let F=X.get(B.key,B.version);if(!F){J.push({type:"theme",identifier:`${B.key}.v${B.version}`});continue}G.push(F)}return{theme:W??void 0,fallbacks:G,themeMissing:J}}function Ah1($,X){let J=[];if(!$?.spec)return{telemetry:void 0,telemetryMissing:J};if(!X)return J.push({type:"telemetry",identifier:$T0($.spec)}),{telemetry:void 0,telemetryMissing:J};let W=X.get($.spec.key,$.spec.version);if(!W)J.push({type:"telemetry",identifier:$T0($.spec)});return{telemetry:W??void 0,telemetryMissing:J}}function wh1($,X,J){let W=(G)=>{if(G.length===0)return[];if(!X){for(let F of G)J.push({type:"experiment",identifier:qp(F)});return[]}let B=[];for(let F of G){let A=X.get(F.key,F.version);if(!A){J.push({type:"experiment",identifier:qp(F)});continue}B.push(A)}return B};return{active:W($.active),paused:W($.paused)}}function r00($){return`${$.key}${$.version?`.v${$.version}`:""}`}function eC0($){return $.key}function $T0($){return`${$.key}${$.version?`.v${$.version}`:""}`}function YG$($){return`${$.key}${$.version?`.v${$.version}`:""}`}function qp($){return`${$.key}${$.version?`.v${$.version}`:""}`}function ih($,X){let J=new Map;for(let W of $)J.set(X(W),W);return[...J.values()]}function fz6($){return[...new Set($)]}var hz6=()=>{};function JG$($){return Oh1($)}var Oh1=($)=>`${$.key}.v${$.version}`,nQ0;var DT0=y0(()=>{sw();nQ0=class extends fG{constructor($){super("integration",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function o00($){return $.register(rQ0)}var rQ0;var oQ0=y0(()=>{OZ();rQ0={meta:{key:"payments.stripe",version:"1.0.0",category:"payments",title:"Stripe Payments",description:"Stripe integration for payment processing, charges, and payouts.",domain:"payments",owners:["platform.payments"],tags:["payments","psp"],stability:L5.Stable},supportedModes:["managed","byok"],capabilities:{provides:[{key:"payments.psp",version:"1.0.0"}],requires:[{key:"platform.webhooks",optional:!0,reason:"Recommended for reliable event ingestion"}]},configSchema:{schema:{type:"object",properties:{accountId:{type:"string",description:"Connected account ID when using Stripe Connect (BYOK)."},region:{type:"string",description:"Optional Stripe region or data residency hint."}}},example:{accountId:"acct_123",region:"us-east-1"}},secretSchema:{schema:{type:"object",required:["apiKey","webhookSecret"],properties:{apiKey:{type:"string",description:"Stripe secret API key (sk_live_... or sk_test_...)."},webhookSecret:{type:"string",description:"Signing secret for webhook verification."}}},example:{apiKey:"sk_live_***",webhookSecret:"whsec_***"}},healthCheck:{method:"ping",timeoutMs:5000},docsUrl:"https://stripe.com/docs/api",constraints:{rateLimit:{rpm:1000,rph:20000}},byokSetup:{setupInstructions:"Create a restricted Stripe API key with write access to Charges and provide a webhook signing secret.",requiredScopes:["charges:write","customers:read"]}}});function a00($){return $.register(aQ0)}var aQ0;var sQ0=y0(()=>{OZ();aQ0={meta:{key:"email.postmark",version:"1.0.0",category:"email",title:"Postmark Transactional Email",description:"Postmark integration for transactional email delivery.",domain:"communications",owners:["platform.messaging"],tags:["email","transactional"],stability:L5.Stable},supportedModes:["managed","byok"],capabilities:{provides:[{key:"email.transactional",version:"1.0.0"}],requires:[{key:"platform.webhooks",optional:!0,reason:"Optional for inbound bounce handling"}]},configSchema:{schema:{type:"object",properties:{messageStream:{type:"string",description:"Optional message stream identifier (e.g., transactional)."},fromEmail:{type:"string",description:"Default From address used for outbound messages."}}},example:{messageStream:"outbound",fromEmail:"notifications@example.com"}},secretSchema:{schema:{type:"object",required:["serverToken"],properties:{serverToken:{type:"string",description:"Server token for the Postmark account."}}},example:{serverToken:"server-***"}},healthCheck:{method:"ping",timeoutMs:3000},docsUrl:"https://postmarkapp.com/developer",constraints:{rateLimit:{rpm:500}},byokSetup:{setupInstructions:"Create a Postmark server token with outbound send permissions and configure allowed from addresses."}}});function s00($){return $.register(tQ0)}var tQ0;var eQ0=y0(()=>{OZ();tQ0={meta:{key:"vectordb.qdrant",version:"1.0.0",category:"vector-db",title:"Qdrant Vector Database",description:"Qdrant integration for vector search and embeddings storage.",domain:"ai",owners:["platform.ai"],tags:["vector-db","search"],stability:L5.Experimental},supportedModes:["managed","byok"],capabilities:{provides:[{key:"vector-db.search",version:"1.0.0"},{key:"vector-db.storage",version:"1.0.0"}],requires:[{key:"ai.embeddings",optional:!0,reason:"Required if vectors are generated via hosted embedding services"}]},configSchema:{schema:{type:"object",properties:{apiUrl:{type:"string",description:"Base URL for the Qdrant instance (e.g., https://qdrant.example.com)."},collectionPrefix:{type:"string",description:"Prefix applied to all collection names for this tenant."}}},example:{apiUrl:"https://qdrant.example.com",collectionPrefix:"tenant_"}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string",description:"API key or token when authentication is enabled."}}},example:{apiKey:"qdrant-api-key"}},healthCheck:{method:"ping",timeoutMs:4000},docsUrl:"https://qdrant.tech/documentation/quick-start/",constraints:{quotas:{collections:100,pointsPerCollection:1e6}},byokSetup:{setupInstructions:"Provide the HTTPS endpoint of your Qdrant cluster and generate an API key with read/write access to the collections that will be managed."}}});function t00($){return $.register($H0)}var $H0;var DH0=y0(()=>{OZ();$H0={meta:{key:"ai-llm.mistral",version:"1.0.0",category:"ai-llm",title:"Mistral Large Language Model",description:"Mistral integration providing chat completions and embedding generation.",domain:"ai",owners:["platform.ai"],tags:["ai","llm","embeddings"],stability:L5.Experimental},supportedModes:["managed","byok"],capabilities:{provides:[{key:"ai.chat",version:"1.0.0"},{key:"ai.embeddings",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{model:{type:"string",description:"Default chat completion model (e.g., mistral-large-latest)."},embeddingModel:{type:"string",description:"Embedding model identifier."}}},example:{model:"mistral-large-latest",embeddingModel:"mistral-embed"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"Mistral API key with access to chat and embeddings endpoints."}}},example:{apiKey:"mistral-***"}},healthCheck:{method:"custom",timeoutMs:5000},docsUrl:"https://docs.mistral.ai/platform/endpoints",constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:"Generate an API key within the Mistral console and ensure the selected models are enabled for the account."}}});function e00($){return $.register(XH0)}var XH0;var YH0=y0(()=>{OZ();XH0={meta:{key:"ai-voice.elevenlabs",version:"1.0.0",category:"ai-voice",title:"ElevenLabs Text-to-Speech",description:"ElevenLabs integration for neural voice synthesis and voice catalog access.",domain:"ai",owners:["platform.ai"],tags:["voice","tts"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"ai.voice.synthesis",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{defaultVoiceId:{type:"string",description:"Optional default voice identifier for synthesis requests."}}},example:{defaultVoiceId:"pNInz6obpgDQGcFmaJgB"}},secretSchema:{schema:{type:"object",required:["apiKey"],properties:{apiKey:{type:"string",description:"ElevenLabs API key with text-to-speech permissions."}}},example:{apiKey:"eleven-***"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://elevenlabs.io/docs/api-reference/text-to-speech",constraints:{rateLimit:{rpm:120}},byokSetup:{setupInstructions:"Create an ElevenLabs API key and ensure the desired voices are accessible to the key scope."}}});function $$0($){return $.register(JH0)}var JH0;var WH0=y0(()=>{OZ();JH0={meta:{key:"email.gmail",version:"1.0.0",category:"email",title:"Google Gmail API",description:"Gmail integration supporting inbound thread ingestion and outbound transactional email.",domain:"communications",owners:["platform.messaging"],tags:["email","gmail"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"email.inbound",version:"1.0.0"},{key:"email.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{labelIds:{type:"array",items:{type:"string"},description:"Optional list of label IDs to scope inbound sync."},includeSpamTrash:{type:"boolean",description:"Whether to include spam or trash messages during sync."}}},example:{labelIds:["INBOX"],includeSpamTrash:!1}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret","refreshToken"],properties:{clientId:{type:"string",description:"OAuth client ID for the Google Cloud project."},clientSecret:{type:"string",description:"OAuth client secret for the Google Cloud project."},refreshToken:{type:"string",description:"OAuth refresh token for delegated Gmail access."},redirectUri:{type:"string",description:"Optional redirect URI used when issuing the refresh token."}}},example:{clientId:"xxx.apps.googleusercontent.com",clientSecret:"secret",refreshToken:"refresh-token"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.google.com/gmail/api",constraints:{rateLimit:{rpm:600}},byokSetup:{setupInstructions:"Create an OAuth consent screen and credentials within Google Cloud Console, then authorize the Gmail scopes and store the resulting refresh token."}}});function D$0($){return $.register(QH0)}var QH0;var HH0=y0(()=>{OZ();QH0={meta:{key:"calendar.google",version:"1.0.0",category:"calendar",title:"Google Calendar API",description:"Google Calendar integration for event creation, updates, and scheduling automations.",domain:"productivity",owners:["platform.messaging"],tags:["calendar","google"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"calendar.events",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{calendarId:{type:"string",description:"Default calendar identifier (defaults to primary)."}}},example:{calendarId:"primary"}},secretSchema:{schema:{type:"object",required:["clientEmail","privateKey"],properties:{clientEmail:{type:"string",description:"Service account client email."},privateKey:{type:"string",description:"Service account private key."},projectId:{type:"string",description:"Google Cloud project ID."}}},example:{clientEmail:"svc-calendar@example.iam.gserviceaccount.com",privateKey:"-----BEGIN PRIVATE KEY-----...",projectId:"calendar-project"}},healthCheck:{method:"custom",timeoutMs:4000},docsUrl:"https://developers.google.com/calendar/api",constraints:{},byokSetup:{setupInstructions:"Create a Google service account with Calendar access and share the target calendars with the service account email."}}});function X$0($){return $.register(GH0)}var GH0;var zH0=y0(()=>{OZ();GH0={meta:{key:"sms.twilio",version:"1.0.0",category:"sms",title:"Twilio Messaging",description:"Twilio SMS integration for transactional and notification messaging.",domain:"communications",owners:["platform.messaging"],tags:["sms","messaging"],stability:L5.Stable},supportedModes:["managed","byok"],capabilities:{provides:[{key:"sms.outbound",version:"1.0.0"}]},configSchema:{schema:{type:"object",properties:{fromNumber:{type:"string",description:"Default Twilio phone number used as sender."}}},example:{fromNumber:"+15551234567"}},secretSchema:{schema:{type:"object",required:["accountSid","authToken"],properties:{accountSid:{type:"string",description:"Twilio Account SID."},authToken:{type:"string",description:"Twilio Auth Token."}}},example:{accountSid:"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",authToken:"auth-token"}},healthCheck:{method:"custom",timeoutMs:3000},docsUrl:"https://www.twilio.com/docs/sms/api",constraints:{rateLimit:{rpm:200}},byokSetup:{setupInstructions:"Provide a Twilio account SID, auth token, and verify the outbound sending numbers used by the integration."}}});function Y$0($){return $.register(BH0)}var BH0;var ZH0=y0(()=>{OZ();BH0={meta:{key:"storage.gcs",version:"1.0.0",category:"storage",title:"Google Cloud Storage Buckets",description:"Google Cloud Storage integration for object storage and retrieval.",domain:"infrastructure",owners:["platform.infrastructure"],tags:["storage","gcs","google-cloud"],stability:L5.Beta},supportedModes:["managed","byok"],capabilities:{provides:[{key:"storage.objects",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["bucket"],properties:{bucket:{type:"string",description:"Primary bucket name used for storing objects."},prefix:{type:"string",description:"Optional prefix applied to object keys."}}},example:{bucket:"pfo-tenant-assets",prefix:"documents/"}},secretSchema:{schema:{type:"object",properties:{type:{type:"string",description:"Service account type field from Google credentials JSON (if provided)."},client_email:{type:"string"},private_key:{type:"string"},project_id:{type:"string"}}},example:{type:"service_account",client_email:"svc-account@example.iam.gserviceaccount.com",private_key:"-----BEGIN PRIVATE KEY-----...",project_id:"example-project"}},healthCheck:{method:"ping",timeoutMs:4000},docsUrl:"https://cloud.google.com/storage/docs/apis",constraints:{quotas:{storageGb:5120}},byokSetup:{setupInstructions:"Create a Google Cloud service account with Storage Object Admin role and upload the JSON credentials to the secret store."}}});function J$0($){return $.register(UH0)}var UH0;var qH0=y0(()=>{OZ();UH0={meta:{key:"openbanking.powens",version:"1.0.0",category:"open-banking",title:"Powens Open Banking (Read)",description:"Read-only Open Banking integration powered by Powens, exposing accounts, transactions, and balances.",domain:"finance",owners:["platform.finance"],tags:["open-banking","powens","finance"],stability:L5.Experimental},supportedModes:["byok"],capabilities:{provides:[{key:"openbanking.accounts.read",version:"1.0.0"},{key:"openbanking.transactions.read",version:"1.0.0"},{key:"openbanking.balances.read",version:"1.0.0"}]},configSchema:{schema:{type:"object",required:["environment"],properties:{environment:{type:"string",enum:["sandbox","production"],description:"Powens environment to target. Sandbox uses Powens test API base URL, production uses live endpoints."},baseUrl:{type:"string",description:"Optional override for the Powens API base URL. Defaults to Powens environment defaults."},region:{type:"string",description:"Optional Powens region identifier when targeting a specific data residency cluster."},pollingIntervalMs:{type:"number",description:"Optional custom polling interval in milliseconds for background sync jobs (defaults to platform standard)."}}},example:{environment:"sandbox",baseUrl:"https://api-sandbox.powens.com/v2",region:"eu-west-1",pollingIntervalMs:300000}},secretSchema:{schema:{type:"object",required:["clientId","clientSecret"],properties:{clientId:{type:"string",description:"Powens OAuth client identifier obtained from the Powens Console (BYOK project)."},clientSecret:{type:"string",description:"Powens OAuth client secret used to exchange for access tokens."},apiKey:{type:"string",description:"Optional Powens API key (if the tenant project exposes a dedicated API token)."},webhookSecret:{type:"string",description:"Optional webhook signing secret used to verify Powens webhook payloads."}}},example:{clientId:"powens-client-id",clientSecret:"powens-client-secret",apiKey:"powens-api-key",webhookSecret:"powens-webhook-secret"}},healthCheck:{method:"ping",timeoutMs:8000},docsUrl:"https://docs.powens.com/",constraints:{rateLimit:{rph:1e4,rpm:600}},byokSetup:{setupInstructions:"Create a Powens BYOK project, generate OAuth credentials, and optionally configure webhook delivery for account/transaction updates.",requiredScopes:["accounts:read","transactions:read","balances:read"]}}});function XT0(){let $=new nQ0;return o00($),a00($),s00($),t00($),e00($),$$0($),D$0($),X$0($),Y$0($),J$0($),$}var YT0=y0(()=>{DT0();oQ0();sQ0();eQ0();DH0();YH0();WH0();HH0();zH0();ZH0();qH0()});var W$0,FH0,Q$0;var H$0=y0(()=>{$O();W$0=new O5({name:"BankAccountRecord",description:"Canonical representation of a bank account synced from an open banking provider.",fields:{id:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},userId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!1},externalId:{type:O1.NonEmptyString(),isOptional:!1},institutionId:{type:O1.NonEmptyString(),isOptional:!1},institutionName:{type:O1.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:O1.URL(),isOptional:!0},iban:{type:O1.String_unsecure(),isOptional:!0},bic:{type:O1.String_unsecure(),isOptional:!0},accountType:{type:O1.NonEmptyString(),isOptional:!1},currency:{type:O1.Currency(),isOptional:!1},displayName:{type:O1.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:O1.String_unsecure(),isOptional:!0},productCode:{type:O1.String_unsecure(),isOptional:!0},balance:{type:O1.Float_unsecure(),isOptional:!0},availableBalance:{type:O1.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:O1.DateTime(),isOptional:!1},createdAt:{type:O1.DateTime(),isOptional:!1},updatedAt:{type:O1.DateTime(),isOptional:!1},metadata:{type:O1.JSONObject(),isOptional:!0}}}),FH0=new O5({name:"BankTransactionRecord",description:"Canonical transaction entry mapped from Powens into the open banking ledger.",fields:{id:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!1},externalId:{type:O1.NonEmptyString(),isOptional:!1},amount:{type:O1.Float_unsecure(),isOptional:!1},currency:{type:O1.Currency(),isOptional:!1},date:{type:O1.DateTime(),isOptional:!1},bookingDate:{type:O1.DateTime(),isOptional:!0},valueDate:{type:O1.DateTime(),isOptional:!0},description:{type:O1.String_unsecure(),isOptional:!0},counterpartyName:{type:O1.String_unsecure(),isOptional:!0},counterpartyAccount:{type:O1.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:O1.String_unsecure(),isOptional:!0},rawCategory:{type:O1.String_unsecure(),isOptional:!0},standardizedCategory:{type:O1.String_unsecure(),isOptional:!0},transactionType:{type:O1.NonEmptyString(),isOptional:!1},status:{type:O1.NonEmptyString(),isOptional:!1},runningBalance:{type:O1.Float_unsecure(),isOptional:!0},metadata:{type:O1.JSONObject(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!1},updatedAt:{type:O1.DateTime(),isOptional:!1}}}),Q$0=new O5({name:"AccountBalanceRecord",description:"Canonical balance snapshot computed from Powens balance payloads.",fields:{id:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!1},balanceType:{type:O1.NonEmptyString(),isOptional:!1},currentBalance:{type:O1.Float_unsecure(),isOptional:!1},availableBalance:{type:O1.Float_unsecure(),isOptional:!0},currency:{type:O1.Currency(),isOptional:!1},lastUpdatedAt:{type:O1.DateTime(),isOptional:!1},createdAt:{type:O1.DateTime(),isOptional:!1},metadata:{type:O1.JSONObject(),isOptional:!0}}})});function KH0($){let X={};for(let[J,W]of Object.entries($))if(JT0.includes(J))X[J]=Lh1(W);else if(Array.isArray(W))X[J]=W.map((G)=>typeof G==="object"&&G!==null?KH0(G):G);else if(typeof W==="object"&&W!==null)X[J]=KH0(W);else X[J]=W;return X}function Lh1($){if($==null)return"";let X=String($);if(X.length<=4)return"*".repeat(X.length);return`${"*".repeat(Math.max(X.length-4,0))}${X.slice(-4)}`}var JT0,eM;var G$0=y0(()=>{JT0=["iban","bic","accountNumberMasked","accountNumber","counterpartyName","counterpartyAccount","description","merchantName","merchantCategoryCode","reference"],eM={accountsSynced:"openbanking.accounts.synced",accountsSyncFailed:"openbanking.accounts.sync_failed",transactionsSynced:"openbanking.transactions.synced",transactionsSyncFailed:"openbanking.transactions.sync_failed",balancesRefreshed:"openbanking.balances.refreshed",balancesRefreshFailed:"openbanking.balances.refresh_failed",overviewGenerated:"openbanking.overview.generated"}});function gz6($){return $.register(VH0).register(AH0).register(wH0)}var Ih1,Eh1,Mh1,jh1,Nh1,VH0,AH0,wH0;var WT0=y0(()=>{YP();JP();H$0();G$0();$O();Ih1=new O5({name:"OpenBankingListAccountsInput",description:"Parameters for listing bank accounts through the open banking provider.",fields:{tenantId:{type:O1.ID(),isOptional:!1},userId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!0},includeBalances:{type:O1.Boolean(),isOptional:!0},institutionId:{type:O1.String_unsecure(),isOptional:!0},cursor:{type:O1.String_unsecure(),isOptional:!0},pageSize:{type:O1.Int_unsecure(),isOptional:!0}}}),Eh1=new O5({name:"OpenBankingListAccountsOutput",description:"Paginated list of bank accounts available to the tenant and user.",fields:{accounts:{type:W$0,isOptional:!1,isArray:!0},nextCursor:{type:O1.String_unsecure(),isOptional:!0},hasMore:{type:O1.Boolean(),isOptional:!0}}}),Mh1=new O5({name:"OpenBankingGetAccountInput",description:"Parameters for retrieving a specific bank account.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},includeBalances:{type:O1.Boolean(),isOptional:!0},includeLatestTransactions:{type:O1.Boolean(),isOptional:!0}}}),jh1=new O5({name:"OpenBankingSyncAccountsInput",description:"Command payload to trigger an account synchronisation against the open banking provider.",fields:{tenantId:{type:O1.ID(),isOptional:!1},userId:{type:O1.ID(),isOptional:!0},connectionId:{type:O1.ID(),isOptional:!1},accountIds:{type:O1.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:O1.Boolean(),isOptional:!0},triggerWorkflows:{type:O1.Boolean(),isOptional:!0}}}),Nh1=new O5({name:"OpenBankingSyncAccountsOutput",description:"Result of a bank account synchronisation run.",fields:{synced:{type:O1.Int_unsecure(),isOptional:!1},failed:{type:O1.Int_unsecure(),isOptional:!1},errors:{type:O1.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:O1.DateTime(),isOptional:!0}}}),VH0=gK({meta:{key:"openbanking.accounts.list",version:"1.0.0",description:"List bank accounts available to a tenant/user via Powens Open Banking.",goal:"Provide downstream workflows with the set of accounts accessible via the configured open banking connection.",context:"Used by Pocket Family Office dashboards and sync workflows to enumerate bank accounts prior to syncing balances or transactions.",owners:["@platform.finance"],tags:["open-banking","powens","accounts"],stability:"experimental"},io:{input:Ih1,output:Eh1},policy:{auth:"user"}}),AH0=gK({meta:{key:"openbanking.accounts.get",version:"1.0.0",description:"Retrieve the canonical bank account record for the given account identifier.",goal:"Allow user-facing experiences and automations to display up-to-date account metadata.",context:"Invoked by UI surfaces and workflow automation steps that require detailed metadata for a specific bank account.",owners:["@platform.finance"],tags:["open-banking","powens","accounts"],stability:"experimental"},io:{input:Mh1,output:W$0},policy:{auth:"user"}}),wH0=cz({meta:{key:"openbanking.accounts.sync",version:"1.0.0",description:"Initiate a synchronisation run to refresh bank account metadata from Powens.",goal:"Keep canonical bank account records aligned with the external open banking provider.",context:"Triggered by scheduled workflows or manual operator actions to reconcile account metadata prior to transaction/balance syncs.",owners:["@platform.finance"],tags:["open-banking","powens","accounts"],stability:"experimental"},io:{input:jh1,output:Nh1},policy:{auth:"admin"},telemetry:{success:{event:{key:eM.accountsSynced},properties:({input:$,output:X})=>{let J=$,W=X;return{tenantId:J?.tenantId,connectionId:J?.connectionId,synced:W?.synced,failed:W?.failed}}},failure:{event:{key:eM.accountsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,connectionId:J?.connectionId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function uz6($){return $.register(OH0).register(LH0)}var Rh1,Ph1,Ch1,Th1,OH0,LH0;var QT0=y0(()=>{YP();JP();H$0();G$0();$O();Rh1=new O5({name:"OpenBankingListTransactionsInput",description:"Parameters for listing bank transactions from the canonical ledger.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},from:{type:O1.DateTime(),isOptional:!0},to:{type:O1.DateTime(),isOptional:!0},cursor:{type:O1.String_unsecure(),isOptional:!0},pageSize:{type:O1.Int_unsecure(),isOptional:!0},direction:{type:O1.String_unsecure(),isOptional:!0},minimumAmount:{type:O1.Float_unsecure(),isOptional:!0},maximumAmount:{type:O1.Float_unsecure(),isOptional:!0},category:{type:O1.String_unsecure(),isOptional:!0}}}),Ph1=new O5({name:"OpenBankingListTransactionsOutput",description:"Paginated list of transactions for a bank account.",fields:{transactions:{type:FH0,isOptional:!1,isArray:!0},nextCursor:{type:O1.String_unsecure(),isOptional:!0},hasMore:{type:O1.Boolean(),isOptional:!0}}}),Ch1=new O5({name:"OpenBankingSyncTransactionsInput",description:"Command payload to synchronise transactions from the open banking provider into the canonical ledger.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},from:{type:O1.DateTime(),isOptional:!0},to:{type:O1.DateTime(),isOptional:!0},connectionId:{type:O1.ID(),isOptional:!0},includePending:{type:O1.Boolean(),isOptional:!0},backfillDays:{type:O1.Int_unsecure(),isOptional:!0}}}),Th1=new O5({name:"OpenBankingSyncTransactionsOutput",description:"Result of a transaction synchronisation run.",fields:{synced:{type:O1.Int_unsecure(),isOptional:!1},failed:{type:O1.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:O1.DateTime(),isOptional:!0},latestSyncedAt:{type:O1.DateTime(),isOptional:!0},nextSinceToken:{type:O1.String_unsecure(),isOptional:!0},errors:{type:O1.String_unsecure(),isArray:!0,isOptional:!0}}}),OH0=gK({meta:{key:"openbanking.transactions.list",version:"1.0.0",description:"List bank transactions that have been normalised into the canonical ledger.",goal:"Allow downstream analytics and UI surfaces to page through canonical bank transactions.",context:"Used by Pocket Family Office dashboards, reconciliation workflows, and analytics data views.",owners:["@platform.finance"],tags:["open-banking","powens","transactions"],stability:"experimental"},io:{input:Rh1,output:Ph1},policy:{auth:"user"}}),LH0=cz({meta:{key:"openbanking.transactions.sync",version:"1.0.0",description:"Synchronise transactions for a bank account by calling the configured open banking provider.",goal:"Ensure the canonical transaction ledger stays aligned with the external provider.",context:"Triggered by scheduled workflows or on-demand actions when activity is expected on an account.",owners:["@platform.finance"],tags:["open-banking","powens","transactions"],stability:"experimental"},io:{input:Ch1,output:Th1},policy:{auth:"admin"},telemetry:{success:{event:{key:eM.transactionsSynced},properties:({input:$,output:X})=>{let J=$,W=X;return{tenantId:J?.tenantId,accountId:J?.accountId,synced:W?.synced,failed:W?.failed,earliestSyncedAt:W?.earliestSyncedAt,latestSyncedAt:W?.latestSyncedAt}}},failure:{event:{key:eM.transactionsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function mz6($){return $.register(IH0).register(EH0)}var bh1,Sh1,_h1,kh1,IH0,EH0;var HT0=y0(()=>{YP();JP();H$0();G$0();$O();bh1=new O5({name:"OpenBankingGetBalancesInput",description:"Parameters for retrieving bank account balances from the canonical ledger.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},balanceTypes:{type:O1.String_unsecure(),isArray:!0,isOptional:!0}}}),Sh1=new O5({name:"OpenBankingGetBalancesOutput",description:"Canonical balances for a bank account.",fields:{balances:{type:Q$0,isOptional:!1,isArray:!0},asOf:{type:O1.DateTime(),isOptional:!0}}}),_h1=new O5({name:"OpenBankingRefreshBalancesInput",description:"Command payload to refresh balances for a bank account via the open banking provider.",fields:{tenantId:{type:O1.ID(),isOptional:!1},accountId:{type:O1.ID(),isOptional:!1},connectionId:{type:O1.ID(),isOptional:!0},balanceTypes:{type:O1.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:O1.Boolean(),isOptional:!0}}}),kh1=new O5({name:"OpenBankingRefreshBalancesOutput",description:"Result of a balance refresh against the open banking provider.",fields:{balances:{type:Q$0,isOptional:!1,isArray:!0},refreshedAt:{type:O1.DateTime(),isOptional:!1},errors:{type:O1.String_unsecure(),isArray:!0,isOptional:!0}}}),IH0=gK({meta:{key:"openbanking.balances.get",version:"1.0.0",description:"Retrieve the latest cached balances for a bank account.",goal:"Expose current and available balances required by dashboards and analytics.",context:"Used by Pocket Family Office UI surfaces and automation steps that require balance totals prior to generating summaries.",owners:["@platform.finance"],tags:["open-banking","powens","balances"],stability:"experimental"},io:{input:bh1,output:Sh1},policy:{auth:"user"}}),EH0=cz({meta:{key:"openbanking.balances.refresh",version:"1.0.0",description:"Refresh balances for a bank account via the configured open banking provider.",goal:"Ensure canonical balance records reflect the latest values from Powens.",context:"Triggered by scheduled workflows before generating summaries or forecasting cashflow.",owners:["@platform.finance"],tags:["open-banking","powens","balances"],stability:"experimental"},io:{input:_h1,output:kh1},policy:{auth:"admin"},telemetry:{success:{event:{key:eM.balancesRefreshed},properties:({input:$,output:X})=>{let J=$,W=X;return{tenantId:J?.tenantId,accountId:J?.accountId,refreshedAt:W?.refreshedAt,balanceCount:Array.isArray(W?.balances)?W?.balances.length:void 0}}},failure:{event:{key:eM.balancesRefreshFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});var GT0;var zT0=y0(()=>{GT0={meta:{key:"openbanking",version:"1.0.0",title:"Open Banking Integration",description:"Open banking account sync, balance refresh, and transaction synchronization",domain:"integrations",owners:["@platform.finance"],tags:["open-banking","powens","finance","banking"],stability:"experimental"},operations:[{key:"openbanking.accounts.sync",version:"1.0.0"},{key:"openbanking.accounts.list",version:"1.0.0"},{key:"openbanking.accounts.get",version:"1.0.0"},{key:"openbanking.balances.refresh",version:"1.0.0"},{key:"openbanking.balances.get",version:"1.0.0"},{key:"openbanking.transactions.sync",version:"1.0.0"},{key:"openbanking.transactions.list",version:"1.0.0"}],events:[],presentations:[],opToPresentation:[],presentationsTargets:[],capabilities:{provides:[{key:"openbanking",version:"1.0.0"}],requires:[{key:"identity",version:"1.0.0"}]}}});function WG$($){return mz6(uz6(gz6($)))}var QG$=y0(()=>{WT0();QT0();HT0();zT0()});function BT0($){let X=$.integrations.find((W)=>W.slot.slotId==="primaryOpenBanking");if(!X)return{ok:!1,error:"primaryOpenBanking slot is not bound in the resolved app config."};let J=X.connection.status;if(J==="error"||J==="disconnected")return{ok:!1,integration:X,error:`primaryOpenBanking connection is in status "${J}".`};if(J==="unknown")return{ok:!1,integration:X,error:"primaryOpenBanking connection health is unknown."};return{ok:!0,integration:X}}function HG$($){let X=BT0($);if(!X.ok)throw Error(X.error??"Open banking integration not available.");if(!X.integration)throw Error(X.error??"Open banking integration not available.");return X.integration}var GG$=()=>{};var dz6=y0(()=>{oQ0();sQ0();eQ0();DH0();YH0();WH0();HH0();zH0();ZH0();qH0();YT0()});var lz6=y0(()=>{DT0();oQ0();sQ0();eQ0();DH0();YH0();WH0();HH0();zH0();ZH0();qH0();YT0();dz6();H$0();G$0();WT0();QT0();HT0();zT0();QG$();GG$()});function BG$($){return`${$.key}.v${$.version}`}var zG$;var ZG$=y0(()=>{sw();zG$=class extends fG{constructor($){super("knowledge-space",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function ZT0($){return $.register(MH0)}var MH0;var UT0=y0(()=>{OZ();MH0={meta:{key:"knowledge.product-canon",version:"1.0.0",category:"canonical",title:"Product Canon Knowledge Space",description:"Authoritative product knowledge covering strategy, roadmap, and delivery canon.",domain:"product",owners:["platform.product"],tags:["knowledge","product"],stability:L5.Stable},retention:{ttlDays:null},access:{policy:{key:"knowledge.access.product-canon",version:"1.0.0"},trustLevel:"high",automationWritable:!1},indexing:{embeddingModel:"text-embedding-3-large",chunkSize:800,vectorDbIntegration:"vectordb.qdrant"},description:"Single source of truth for product canon, principles, and strategic narratives."}});function qT0($){return $.register(jH0)}var jH0;var FT0=y0(()=>{OZ();jH0={meta:{key:"knowledge.support-faq",version:"1.0.0",category:"operational",title:"Support & Success FAQ",description:"Operational knowledge base for customer support and success.",domain:"support",owners:["platform.support"],tags:["knowledge","support"],stability:L5.Beta},retention:{ttlDays:365,archiveAfterDays:180},access:{policy:{key:"knowledge.access.support",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"text-embedding-3-small",chunkSize:700,vectorDbIntegration:"vectordb.qdrant"},description:"Operational FAQs, runbooks, and customer success playbooks augmented with automation updates."}});function KT0($){return $.register(NH0)}var NH0;var VT0=y0(()=>{OZ();NH0={meta:{key:"knowledge.email-threads",version:"1.0.0",category:"operational",title:"Operational Email Threads",description:"Indexed copies of operational email threads used for support, onboarding, and workflows.",domain:"operations",owners:["platform.operations"],tags:["email","operations"],stability:L5.Beta},retention:{ttlDays:365},access:{policy:{key:"knowledge.access.email-threads",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:600,vectorDbIntegration:"vectordb.qdrant"},description:"Operational email threads synchronized from Gmail to support automations and contextual assistance."}});function AT0($){return $.register(RH0)}var RH0;var wT0=y0(()=>{OZ();RH0={meta:{key:"knowledge.uploaded-docs",version:"1.0.0",category:"external",title:"Uploaded Knowledge Assets",description:"Documents uploaded by households, including invoices, contracts, and reference files.",domain:"operations",owners:["platform.operations"],tags:["documents","storage"],stability:L5.Beta},retention:{ttlDays:null},access:{policy:{key:"knowledge.access.uploaded-docs",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:900,vectorDbIntegration:"vectordb.qdrant"},description:"User-provided documents normalized and embedded for retrieval augmented workflows."}});function OT0($){return $.register(PH0)}var PH0;var LT0=y0(()=>{OZ();PH0={meta:{key:"knowledge.financial-docs",version:"1.0.0",category:"canonical",title:"Household Financial Documents",description:"Invoices, bills, and contracts powering Pocket Family Office financial automation.",domain:"finance",owners:["platform.finance"],tags:["finance","documents"],stability:L5.Beta},retention:{ttlDays:null},access:{policy:{key:"knowledge.access.financial-docs",version:"1.0.0"},trustLevel:"high",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:700,vectorDbIntegration:"vectordb.qdrant"},description:"Normalized financial documents enabling bill pay automation, reminders, and summaries."}});function IT0($){return $.register(CH0)}var CH0;var ET0=y0(()=>{OZ();CH0={meta:{key:"knowledge.financial-overview",version:"1.0.0",category:"operational",title:"Derived Financial Summaries",description:"Aggregated cashflow summaries, category breakdowns, and balance trends derived from open banking data.",domain:"finance",owners:["platform.finance"],tags:["open-banking","summaries","cashflow"],stability:L5.Experimental},retention:{ttlDays:180},access:{policy:{key:"knowledge.access.financial-overview",version:"1.0.0"},trustLevel:"medium",automationWritable:!0},indexing:{embeddingModel:"mistral-embed",chunkSize:600,vectorDbIntegration:"vectordb.qdrant"},description:"Derived knowledge space containing weekly/monthly cashflow rollups and account health summaries. Raw transactions are excluded to respect privacy guardrails."}});var cz6=y0(()=>{UT0();FT0();VT0();wT0();LT0();ET0()});var pz6=y0(()=>{ZG$();UT0();FT0();VT0();wT0();LT0();ET0();cz6()});function nz6($){return $.register(MT0).register(jT0).register(NT0).register(RT0).register(PT0)}var UG$,vh1,xh1,yh1,fh1,hh1,gh1,uh1,mh1,MT0,jT0,NT0,RT0,PT0,iz6;var rz6=y0(()=>{YP();JP();$O();UG$=new O5({name:"IntegrationConnectionRecord",fields:{id:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},integrationKey:{type:O1.NonEmptyString(),isOptional:!1},integrationVersion:{type:O1.Int_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},ownershipMode:{type:O1.String_unsecure(),isOptional:!1},externalAccountId:{type:O1.String_unsecure(),isOptional:!0},secretProvider:{type:O1.String_unsecure(),isOptional:!1},secretRef:{type:O1.String_unsecure(),isOptional:!1},status:{type:O1.String_unsecure(),isOptional:!1},environment:{type:O1.String_unsecure(),isOptional:!0},healthStatus:{type:O1.String_unsecure(),isOptional:!0},healthCheckedAt:{type:O1.DateTime(),isOptional:!0},healthLatencyMs:{type:O1.Float_unsecure(),isOptional:!0},healthErrorCode:{type:O1.String_unsecure(),isOptional:!0},healthErrorMessage:{type:O1.String_unsecure(),isOptional:!0},usageRequestCount:{type:O1.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:O1.Int_unsecure(),isOptional:!0},usageErrorCount:{type:O1.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:O1.DateTime(),isOptional:!0},usageLastErrorAt:{type:O1.DateTime(),isOptional:!0},usageLastErrorCode:{type:O1.String_unsecure(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!0},updatedAt:{type:O1.DateTime(),isOptional:!0}}}),vh1=new O5({name:"CreateIntegrationConnectionInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},integrationKey:{type:O1.NonEmptyString(),isOptional:!1},integrationVersion:{type:O1.Int_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},ownershipMode:{type:O1.String_unsecure(),isOptional:!1},externalAccountId:{type:O1.String_unsecure(),isOptional:!0},secretProvider:{type:O1.String_unsecure(),isOptional:!1},secretRef:{type:O1.String_unsecure(),isOptional:!1},environment:{type:O1.String_unsecure(),isOptional:!0},config:{type:O1.JSONObject(),isOptional:!1}}}),xh1=new O5({name:"UpdateIntegrationConnectionInput",fields:{connectionId:{type:O1.ID(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!0},status:{type:O1.String_unsecure(),isOptional:!0},ownershipMode:{type:O1.String_unsecure(),isOptional:!0},externalAccountId:{type:O1.String_unsecure(),isOptional:!0},secretProvider:{type:O1.String_unsecure(),isOptional:!0},secretRef:{type:O1.String_unsecure(),isOptional:!0},config:{type:O1.JSONObject(),isOptional:!0}}}),yh1=new O5({name:"DeleteIntegrationConnectionInput",fields:{connectionId:{type:O1.ID(),isOptional:!1}}}),fh1=new O5({name:"ListIntegrationConnectionsInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},category:{type:O1.String_unsecure(),isOptional:!0},status:{type:O1.String_unsecure(),isOptional:!0}}}),hh1=new O5({name:"ListIntegrationConnectionsOutput",fields:{connections:{type:UG$,isOptional:!1,isArray:!0}}}),gh1=new O5({name:"TestIntegrationConnectionInput",fields:{connectionId:{type:O1.ID(),isOptional:!1}}}),uh1=new O5({name:"TestIntegrationConnectionOutput",fields:{success:{type:O1.Boolean(),isOptional:!1},status:{type:O1.String_unsecure(),isOptional:!0},latencyMs:{type:O1.Float_unsecure(),isOptional:!0},error:{type:O1.String_unsecure(),isOptional:!0},errorCode:{type:O1.String_unsecure(),isOptional:!0}}}),mh1=new O5({name:"DeleteIntegrationConnectionOutput",fields:{success:{type:O1.Boolean(),isOptional:!1}}}),MT0=cz({meta:{key:"integrations.connection.create",title:"Create Integration Connection",version:"1.0.0",description:"Create a new integration connection for a tenant.",goal:"Provision a tenant-scoped connection to an external provider.",context:"Used by Ops or the App Studio to configure external integrations such as Stripe or Qdrant.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:vh1,output:UG$},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),jT0=cz({meta:{key:"integrations.connection.update",title:"Update Integration Connection",version:"1.0.0",description:"Update metadata or credentials for an integration connection.",goal:"Allow secure rotation of credentials and metadata adjustments.",context:"Supports rotating API keys, toggling status, or updating labels for tenant integrations.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:xh1,output:UG$},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),NT0=cz({meta:{key:"integrations.connection.delete",title:"Delete Integration Connection",version:"1.0.0",description:"Delete an integration connection for a tenant.",goal:"Safely remove credentials and disable connector usage.",context:"Ensures connections are de-provisioned when no longer needed or breached.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:yh1,output:mh1},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),RT0=gK({meta:{key:"integrations.connection.list",title:"List Integration Connections",version:"1.0.0",description:"List integration connections for a tenant.",goal:"Provide visibility into configured integrations and their status.",context:"Used by the App Studio and Ops flows to show bindings and health.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:fh1,output:hh1},policy:{auth:"admin",policies:[{key:"platform.integration.read",version:"1.0.0"}]}}),PT0=cz({meta:{key:"integrations.connection.test",title:"Test Integration Connection",version:"1.0.0",description:"Run a health check against a configured integration connection.",goal:"Validate credentials and connectivity for external providers.",context:"Triggered manually or by background monitors to confirm provider availability.",owners:["@platform.integrations"],tags:["integration","connections"],stability:"experimental"},io:{input:gh1,output:uh1},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),iz6={CreateIntegrationConnection:MT0,UpdateIntegrationConnection:jT0,DeleteIntegrationConnection:NT0,ListIntegrationConnections:RT0,TestIntegrationConnection:PT0}});function az6($){return $.register(CT0).register(TT0).register(bT0).register(ST0).register(_T0)}var qG$,FG$,dh1,lh1,ch1,ph1,ih1,nh1,rh1,oh1,CT0,TT0,bT0,ST0,_T0,oz6;var sz6=y0(()=>{YP();JP();$O();qG$=new O5({name:"KnowledgeSyncSchedule",fields:{enabled:{type:O1.Boolean(),isOptional:!1},cron:{type:O1.String_unsecure(),isOptional:!0},intervalMs:{type:O1.Int_unsecure(),isOptional:!0}}}),FG$=new O5({name:"KnowledgeSourceRecord",fields:{id:{type:O1.ID(),isOptional:!1},tenantId:{type:O1.ID(),isOptional:!1},spaceKey:{type:O1.NonEmptyString(),isOptional:!1},spaceVersion:{type:O1.String_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},sourceType:{type:O1.String_unsecure(),isOptional:!1},syncSchedule:{type:qG$,isOptional:!0},lastSyncStatus:{type:O1.String_unsecure(),isOptional:!0},lastSyncAt:{type:O1.DateTime(),isOptional:!0},itemsProcessed:{type:O1.Int_unsecure(),isOptional:!0},createdAt:{type:O1.DateTime(),isOptional:!0},updatedAt:{type:O1.DateTime(),isOptional:!0}}}),dh1=new O5({name:"CreateKnowledgeSourceInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},spaceKey:{type:O1.NonEmptyString(),isOptional:!1},spaceVersion:{type:O1.String_unsecure(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!1},sourceType:{type:O1.NonEmptyString(),isOptional:!1},config:{type:O1.JSONObject(),isOptional:!1},syncSchedule:{type:qG$,isOptional:!0}}}),lh1=new O5({name:"UpdateKnowledgeSourceInput",fields:{sourceId:{type:O1.ID(),isOptional:!1},label:{type:O1.String_unsecure(),isOptional:!0},config:{type:O1.JSONObject(),isOptional:!0},syncSchedule:{type:qG$,isOptional:!0}}}),ch1=new O5({name:"DeleteKnowledgeSourceInput",fields:{sourceId:{type:O1.ID(),isOptional:!1}}}),ph1=new O5({name:"DeleteKnowledgeSourceOutput",fields:{success:{type:O1.Boolean(),isOptional:!1}}}),ih1=new O5({name:"ListKnowledgeSourcesInput",fields:{tenantId:{type:O1.ID(),isOptional:!1},spaceKey:{type:O1.NonEmptyString(),isOptional:!0}}}),nh1=new O5({name:"ListKnowledgeSourcesOutput",fields:{sources:{type:FG$,isOptional:!1,isArray:!0}}}),rh1=new O5({name:"TriggerKnowledgeSyncInput",fields:{sourceId:{type:O1.ID(),isOptional:!1}}}),oh1=new O5({name:"TriggerKnowledgeSyncOutput",fields:{success:{type:O1.Boolean(),isOptional:!1},itemsProcessed:{type:O1.Int_unsecure(),isOptional:!0},error:{type:O1.String_unsecure(),isOptional:!0}}}),CT0=cz({meta:{key:"knowledge.source.create",title:"Create Knowledge Source",version:"1.0.0",description:"Create a knowledge source binding for a tenant.",goal:"Onboard a new knowledge ingestion source such as Notion or uploads.",context:"Used by Ops and App Studio to configure knowledge ingestion per tenant and space.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:dh1,output:FG$},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),TT0=cz({meta:{key:"knowledge.source.update",title:"Update Knowledge Source",version:"1.0.0",description:"Update metadata or configuration for a knowledge source.",goal:"Allow rotation of credentials, sync schedules, and labels.",context:"Supports editing how a tenant ingests knowledge (e.g., toggling sync cadence).",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:lh1,output:FG$},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),bT0=cz({meta:{key:"knowledge.source.delete",title:"Delete Knowledge Source",version:"1.0.0",description:"Delete a knowledge source binding for a tenant.",goal:"Remove obsolete or compromised knowledge ingestion paths.",context:"Ensures ephemeral or external sources can be removed cleanly without leaving residual bindings.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:ch1,output:ph1},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),ST0=gK({meta:{key:"knowledge.source.list",title:"List Knowledge Sources",version:"1.0.0",description:"List knowledge sources configured for a tenant.",goal:"Provide visibility into knowledge ingest configuration and schedules.",context:"Used by App Studio and Ops flows to surface knowledge sources and their health.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:ih1,output:nh1},policy:{auth:"admin",policies:[{key:"platform.knowledge.read",version:"1.0.0"}]}}),_T0=cz({meta:{key:"knowledge.source.triggerSync",title:"Trigger Knowledge Source Sync",version:"1.0.0",description:"Trigger an immediate sync for a knowledge source.",goal:"Support manual or automated sync retries for knowledge ingestion.",context:"Invoked by Ops tooling or monitors when knowledge content must be refreshed or reprocessed.",owners:["@platform.knowledge"],tags:["knowledge","sources"],stability:"experimental"},io:{input:rh1,output:oh1},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),oz6={CreateKnowledgeSource:CT0,UpdateKnowledgeSource:TT0,DeleteKnowledgeSource:bT0,ListKnowledgeSources:ST0,TriggerKnowledgeSourceSync:_T0}});function bH0($,X,J){return{type:"telemetry",contextId:$,signal:ah1(X,J)}}function SH0($,X,J){return{type:"error",contextId:$,signal:sh1(X,J)}}function _H0($,X,J){return{type:"behavior",contextId:$,signal:th1(X,J)}}function ah1($,X){return{...$,windowStart:TH0($.windowStart,X),windowEnd:TH0($.windowEnd,X)}}function sh1($,X){return{...$,occurredAt:TH0($.occurredAt,X)}}function th1($,X){return{...$,windowStart:TH0($.windowStart,X),windowEnd:TH0($.windowEnd,X)}}function TH0($,X){if($ instanceof Date)return $;let J=new Date($);if(Number.isNaN(J.getTime()))return X();return J}var kT0=()=>{};var eh1=($)=>new Promise((X)=>setTimeout(X,$)),$g1=60000,Dg1=300000,Fp=class{contexts;lastPoll=new Map;timer;running=!1;pollInterval;batchDuration;clock;constructor($){if(this.options=$,this.contexts=new Map($.contexts.map((X)=>[X.id,X])),this.pollInterval=$.pollIntervalMs??$g1,this.batchDuration=$.batchDurationMs??Dg1,this.clock=$.clock??(()=>new Date),this.options.rules.length===0)throw Error("RegeneratorService requires at least one rule")}start(){if(this.running)return;this.running=!0,this.tick(),this.timer=setInterval(()=>{this.tick()},this.pollInterval)}stop(){if(!this.running)return;if(this.running=!1,this.timer)clearInterval(this.timer),this.timer=void 0}async runOnce(){await this.tick()}async tick(){let $=this.clock(),X=new Date($.getTime()-this.batchDuration);for(let J of this.contexts.values()){let W=this.lastPoll.get(J.id)??X;await this.evaluateContext(J,W,$),this.lastPoll.set(J.id,$)}}async evaluateContext($,X,J){let W=await this.collectSignals($,X,J);if(W.length===0)return;for(let G of this.options.rules){let B=[];try{B=await G.evaluate($,W)}catch(F){console.error(`[regenerator] rule ${G.id} failed`,F instanceof Error?F:Error(String(F)));continue}await this.flushProposals($,B)}}async collectSignals($,X,J){let W=[],{adapters:G}=this.options;if(G.telemetry){let B=await G.telemetry.pollTelemetry($,X,J);W.push(...B.map((F)=>bH0($.id,F,this.clock)))}if(G.errors){let B=await G.errors.pollErrors($,X,J);W.push(...B.map((F)=>SH0($.id,F,this.clock)))}if(G.behavior){let B=await G.behavior.pollBehavior($,X,J);W.push(...B.map((F)=>_H0($.id,F,this.clock)))}return W}async flushProposals($,X){for(let J of X){if(J.signalIds.length===0)continue;if(await this.options.sink.submit($,J),X.length>10)await eh1(0)}}};var KG$=y0(()=>{kT0()});function Xg1($){if($.some((X)=>X.status==="failed"))return"failed";if($.some((X)=>X.status==="success")&&$.some((X)=>X.status==="skipped"))return"partial";if($.every((X)=>X.status==="skipped"))return"partial";return"success"}var Kp=class{constructor($={}){this.deps=$}async execute($,X,J={}){let W=new Date,G=[];for(let[A,I]of X.actions.entries()){let E=await this.executeAction({index:A,action:I,context:$,proposal:X,options:J});G.push(E)}let B=new Date,F=Xg1(G);return{proposalId:X.id,contextId:$.id,startedAt:W,finishedAt:B,status:F,actions:G}}async executeAction({index:$,action:X,context:J,proposal:W,options:G}){let B=new Date,F=G.dryRun??!1,A=(I,E={})=>({index:$,action:X,status:I,startedAt:B,finishedAt:new Date,reason:E.reason,output:E.output,error:E.error});if(F)return A("skipped",{reason:"dry_run"});try{switch(X.kind){case"update_blueprint":{let I=this.deps.blueprintUpdater;if(!I)return A("skipped",{reason:"missing_blueprint_updater"});return A("success",{output:await I.applyBlueprintUpdate(J,W,X)})}case"update_tenant_config":{let I=this.deps.tenantConfigUpdater;if(!I)return A("skipped",{reason:"missing_tenant_config_updater"});return A("success",{output:await I.applyTenantConfigUpdate(J,W,X)})}case"run_tests":{let I=this.deps.testExecutor;if(!I)return A("skipped",{reason:"missing_test_executor"});return A("success",{output:await I.runTests(J,W,X)})}case"run_migrations":{let I=this.deps.migrationExecutor;if(!I)return A("skipped",{reason:"missing_migration_executor"});return A("success",{output:await I.runMigrations(J,W,X)})}case"trigger_regeneration":{let I=this.deps.regenerationTrigger;if(!I)return A("skipped",{reason:"missing_regeneration_trigger"});return A("success",{output:await I.triggerRegeneration(J,W,X)})}default:return A("skipped",{reason:"unknown_action"})}}catch(I){return A("failed",{error:I instanceof Error?I:Error(String(I))})}}};var VG$=()=>{};var kH0=class{constructor($,X={}){this.executor=$,this.options=X}async submit($,X){let J=this.options.dryRun??!1;try{let W=await this.executor.execute($,X,{dryRun:J});if(this.options.logger?.info)this.options.logger.info("[regenerator] proposal executed",{proposalId:X.id,contextId:$.id,status:W.status});if(this.options.onResult)await this.options.onResult({context:$,proposal:X,result:W})}catch(W){if(this.options.logger?.error)this.options.logger.error("[regenerator] proposal execution failed",W instanceof Error?W:Error(String(W)),{proposalId:X.id,contextId:$.id});throw W instanceof Error?W:Error(String(W))}}};var AG$=()=>{};var wG$=y0(()=>{kT0();KG$();VG$();AG$()});var vH0,vT0,xT0,yT0,Yg1,OG$,fT0,Jg1,Wg1,Qg1,Hg1,Gg1,zg1,hT0,gT0,uT0,mT0,dT0,lT0,cT0,pT0,Bg1,Zg1,Ug1,$j,qg1,tz6,Fg1,Kg1,z$0,xH0;var LG$=y0(()=>{wK();vH0=A5(["contractspec","zod","json-schema","graphql"]),vT0=e8({name:b6(),url:_l().optional(),file:b6().optional(),syncMode:A5(["import","sync","validate"]).default("validate"),tags:W9(b6()).optional(),exclude:W9(b6()).optional(),include:W9(b6()).optional(),prefix:b6().optional(),defaultStability:A5(["experimental","beta","stable","deprecated"]).optional(),defaultAuth:A5(["anonymous","user","admin"]).optional(),defaultOwners:W9(b6()).optional(),schemaFormat:vH0.default("contractspec")}),xT0=e8({outputPath:b6().default("./openapi.json"),format:A5(["json","yaml"]).default("json"),title:b6().optional(),version:b6().optional(),description:b6().optional(),servers:W9(e8({url:b6(),description:b6().optional()})).optional()}),yT0=e8({sources:W9(vT0).optional(),export:xT0.optional()}),Yg1=A5(["by-tag","by-owner","by-domain","by-url-path-single","by-url-path-multi","by-feature","none"]),OG$=e8({strategy:Yg1,urlPathLevel:iX().optional(),pattern:b6().optional()}),fT0=e8({models:b6().default("models"),operations:b6().default("operations/commands|queries"),events:b6().default("events"),presentations:b6().default("presentations"),forms:b6().default("forms"),groupByFeature:c5().default(!0),operationsGrouping:OG$.optional(),modelsGrouping:OG$.optional(),eventsGrouping:OG$.optional()}),Jg1=e8({enabled:c5().default(!0),template:A5(["minimal","detailed"]).default("detailed"),updateExisting:c5().default(!0)}),Wg1=e8({enabled:c5().default(!0),name:b6().default("ContractSpec Impact"),failOnBreaking:c5().default(!0),failOnChanges:c5().default(!1)}),Qg1=e8({baseline:b6().default("default-branch"),include:W9(b6()).optional(),exclude:W9(b6()).optional()}),Hg1=e8({checks:W9(b6()).default(["structure","integrity","deps"]),skipChecks:W9(b6()).optional(),failOnWarnings:c5().default(!1),uploadSarif:c5().default(!0),prComment:Jg1.optional(),checkRun:Wg1.optional(),impact:Qg1.optional()}),Gg1=e8({alias:b6(),submodule:b6(),packages:W9(b6()).optional(),autoResolve:c5().default(!0)}),zg1=e8({activeScope:b6().optional(),externalWorkspaces:W9(Gg1).optional(),crossWorkspaceSearch:c5().default(!1)}),hT0=A5(["prettier","eslint","biome","dprint","custom"]),gT0=e8({enabled:c5().default(!0),type:hT0.optional(),command:b6().optional(),args:W9(b6()).optional(),timeout:iX().default(30000)}),uT0=A5(["impact","conventional"]),mT0=A5(["keep-a-changelog","conventional","custom"]),dT0=A5(["spec","library","monorepo"]),lT0=e8({autoBump:c5().default(!1),bumpStrategy:uT0.default("impact"),integrateWithChangesets:c5().default(!1),changelogTiers:W9(dT0).default(["spec","library","monorepo"]),format:mT0.default("keep-a-changelog"),commitChanges:c5().default(!1),commitMessage:b6().default("chore: bump spec versions"),createTags:c5().default(!1),tagPrefix:b6().default("v"),include:W9(b6()).optional(),exclude:W9(b6()).optional()}),cT0=A5(["cursor","windsurf","cline","claude-code","copilot","subagent","skill"]),pT0=e8({enabled:c5().default(!1),rulesDir:b6().default("./.rules"),rules:W9(b6()).default(["**/*.rule.md"]),targets:W9(cT0).default(["cursor","windsurf"]),autoSync:c5().default(!0),ejectMode:c5().default(!1)}),Bg1=e8({enabled:c5().default(!1),apiKey:b6().optional(),model:b6().default("claude-sonnet-4-20250514"),computerUse:c5().default(!1),extendedThinking:c5().default(!1)}),Zg1=e8({enabled:c5().default(!1),serverUrl:b6().optional(),port:iX().optional(),agentType:A5(["build","plan","general","explore"]).default("general"),model:b6().optional()}),Ug1=e8({claudeAgent:Bg1.optional(),openCode:Zg1.optional()}),$j=A5(["off","warn","error"]),qg1=A5(["operation","event","presentation","feature","workflow","data-view","migration","telemetry","experiment","app-config"]),tz6=e8({"require-acceptance":$j.optional(),"require-examples":$j.optional(),"require-stability":$j.optional(),"require-owners-format":$j.optional(),"event-past-tense":$j.optional(),"no-todo":$j.optional(),"workflow-transitions":$j.optional(),"telemetry-privacy":$j.optional(),"experiment-allocation":$j.optional(),"app-config-appid":$j.optional(),"app-config-capabilities":$j.optional(),"data-view-fields":$j.optional()}),Fg1=e8({defaults:tz6.optional(),overrides:Q3(qg1,tz6).optional()}),Kg1=Q3(b6(),W9(b6())),z$0=e8({aiProvider:A5(["claude","openai","ollama","custom"]).default("claude"),aiModel:b6().optional(),agentMode:A5(["simple","cursor","claude-code","openai-codex","claude-agent-sdk","opencode-sdk"]).default("simple"),customEndpoint:_l().nullable().optional(),customApiKey:b6().nullable().optional(),outputDir:b6().default("./src"),conventions:fT0,defaultOwners:W9(b6()).default([]),defaultTags:W9(b6()).default([]),packages:W9(b6()).optional(),excludePackages:W9(b6()).optional(),recursive:c5().optional(),openapi:yT0.optional(),ci:Hg1.optional(),metaRepo:zg1.optional(),rules:Fg1.optional(),hooks:Kg1.optional(),schemaFormat:vH0.default("contractspec"),formatter:gT0.optional(),versioning:lT0.optional(),ruleSync:pT0.optional(),externalAgents:Ug1.optional()}),xH0={aiProvider:"claude",agentMode:"simple",outputDir:"./src",conventions:{models:"models",operations:"interactions/commands|queries",events:"events",presentations:"presentations",forms:"forms",groupByFeature:!0},defaultOwners:[],defaultTags:[],schemaFormat:"contractspec"}});var ez6=y0(()=>{LG$()});var IG$;var EG$=y0(()=>{sw();IG$=class extends fG{constructor($){super("workflow",$)}}});function nT0($,X={}){let J=[],{definition:W}=$;if(!W.steps.length)return J.push({level:"error",message:"Workflow must declare at least one step."}),J;let G=Vg1(W,J),B=W.entryStepId??W.steps[0]?.id??null;if(!B)J.push({level:"error",message:"Workflow requires an entry step (definition.entryStepId)."});else if(!G.has(B))J.push({level:"error",message:`Entry step "${B}" is not defined in steps.`});let F=Ag1(W,G,J);return Og1(W.steps,X,J),Lg1(B,G,F,J),Ig1(F,J),J}function MG$($,X={}){let J=nT0($,X);if(J.filter((W)=>W.level==="error").length)throw new iT0(`Workflow ${$.meta.key}.v${$.meta.version} is invalid`,J)}function Vg1($,X){let J=new Map;for(let W of $.steps){if(J.has(W.id)){X.push({level:"error",message:`Duplicate step id "${W.id}" detected.`});continue}if(J.set(W.id,W),W.type==="automation"&&!W.action?.operation)X.push({level:"warning",message:`Automation step "${W.id}" does not declare an operation.`});if(W.type==="human"&&!W.action?.form)X.push({level:"warning",message:`Human step "${W.id}" does not declare a form.`});if(W.guard&&!W.guard.value.trim())X.push({level:"error",message:`Guard for step "${W.id}" must have a non-empty value.`})}return J}function Ag1($,X,J){let W=new Map,G=new Map;for(let F of X.keys())W.set(F,new Set),G.set(F,0);for(let F of $.transitions){let A=X.get(F.from),I=X.get(F.to);if(!A){J.push({level:"error",message:`Transition refers to unknown "from" step "${F.from}".`});continue}if(!I){J.push({level:"error",message:`Transition refers to unknown "to" step "${F.to}".`});continue}W.get(F.from)?.add(F.to),G.set(F.to,(G.get(F.to)??0)+1),wg1(F,J)}let B=[...G.entries()].filter(([,F])=>F===0).map(([F])=>F);if(B.length>1)J.push({level:"warning",message:`Workflow has multiple potential entry steps: ${B.join(", ")}`});return W}function wg1($,X){if($.condition&&!$.condition.trim())X.push({level:"error",message:`Transition ${$.from} -> ${$.to} declares an empty condition.`})}function Og1($,X,J){for(let W of $){let G=W.action;if(!G)continue;if(G.operation&&X.operations){if(!X.operations.get(G.operation.key,G.operation.version))J.push({level:"error",message:`Step "${W.id}" references unknown operation ${G.operation.key}.v${G.operation.version}.`})}if(G.form&&X.forms){if(!X.forms.get(G.form.key,G.form.version))J.push({level:"error",message:`Step "${W.id}" references unknown form ${G.form.key}.v${G.form.version}.`})}}}function Lg1($,X,J,W){if(!$||!X.has($))return;let G=new Set,B=[$];G.add($);while(B.length){let F=B.shift();if(!F)continue;let A=J.get(F);if(!A)continue;for(let I of A){if(G.has(I))continue;G.add(I),B.push(I)}}for(let F of X.keys())if(!G.has(F))W.push({level:"error",message:`Step "${F}" is unreachable from entry step "${$}".`})}function Ig1($,X){let J=new Set,W=new Set,G=!1,B=(F)=>{if(W.has(F)){if(!G)X.push({level:"error",message:`Workflow contains a cycle involving step "${F}".`}),G=!0;return}if(J.has(F))return;W.add(F);let A=$.get(F);if(A)for(let I of A)B(I);W.delete(F),J.add(F)};for(let F of $.keys())B(F)}var iT0;var jG$=y0(()=>{iT0=class extends Error{constructor($,X){super($);this.issues=X,this.name="WorkflowValidationError"}}});function nh($,X){if(!$)return!0;let J=$.trim();if(!J)return!0;let W=XB6(J,"||");if(W.length>1)return W.some((B)=>nh(B,X));let G=XB6(J,"&&");if(G.length>1)return G.every((B)=>nh(B,X));return YB6(J,X)}function YB6($,X){let J=$.trim();if(!J)return!0;if(J.startsWith("!"))return!YB6(J.slice(1),X);let W=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(W){let[,F,A,I,E]=W;return Eg1(DB6(F,X,A),$B6(E),I)}let G=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);if(G){let[,F,A]=G,I=DB6(F,X,A);return Boolean(I)}let B=$B6(J);return Boolean(B)}function Eg1($,X,J){switch(J){case"===":case"==":return $===X;case"!==":case"!=":return $!==X;case">":return Number($)>Number(X);case">=":return Number($)>=Number(X);case"<":return Number($)<Number(X);case"<=":return Number($)<=Number(X);default:return!1}}function $B6($){let X=($??"").trim();if(X.startsWith('"')&&X.endsWith('"')||X.startsWith("'")&&X.endsWith("'"))return X.slice(1,-1);if(/^-?\d+(\.\d+)?$/.test(X))return Number(X);if(/^true$/i.test(X))return!0;if(/^false$/i.test(X))return!1;if(/^null$/i.test(X))return null;if(/^undefined$/i.test(X))return;return X}function DB6($,X,J){return Mg1($==="data"?X.data:$==="input"?X.input:X.output,J)}function Mg1($,X){if($==null)return;if(!X)return $;let J=X.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean),W=$;for(let G of J){if(W==null)return;W=W[G]}return W}function XB6($,X){let J=[],W="",G=!1,B=!1;for(let F=0;F<$.length;F++){let A=$[F];if(!A)continue;let I=$.slice(F,F+X.length);if(A==="'"&&!B){G=!G,W+=A;continue}if(A==='"'&&!G){B=!B,W+=A;continue}if(!G&&!B&&I===X){J.push(W.trim()),W="",F+=X.length-1;continue}W+=A}if(W.trim().length)J.push(W.trim());return J}var rT0=()=>{};import{randomUUID as jg1}from"crypto";function Ng1($){let X=$.definition.entryStepId??$.definition.steps[0]?.id??null;if(!X)throw Error(`Workflow ${$.meta.key}.v${$.meta.version} has no entry step.`);return X}function JB6($,X){let J=$.definition.steps.find((W)=>W.id===X);if(!J)throw Error(`Step "${X}" not found in workflow ${$.meta.key}.v${$.meta.version}.`);return J}function Rg1($,X){return $.definition.transitions.some((J)=>J.from===X)}function WB6($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function Pg1($){return $==="completed"||$==="failed"||$==="cancelled"}function NG$($){return`${$.key}@${$.version}`}var RG$=class{constructor($){this.config=$}async preFlightCheck($,X,J){let W=this.getSpec($,X);return this.performPreFlight(W,J)}async start($,X,J){let W=this.getSpec($,X),G=Ng1(W),B=new Date,F=jg1(),A={workflowId:F,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:G,data:{...J??{}},retryCounts:{},history:[],status:"running",createdAt:B,updatedAt:B},I=this.config.appConfigProvider?await this.config.appConfigProvider(A):void 0,E=await this.performPreFlight(W,I);if(!E.canStart)throw new oT0(E.issues);return await this.config.stateStore.create(A),this.emit("workflow.started",{workflowId:F,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:G}),F}async executeStep($,X){let J=await this.getStateOrThrow($);if(Pg1(J.status))throw Error(`Workflow ${$} is in terminal status "${J.status}".`);let W=this.getSpec(J.workflowName,J.workflowVersion),G=JB6(W,J.currentStep);if(!await this.evaluateGuard(G,J,X))throw Error(`GuardRejected: ${J.workflowName} -> ${G.id}`);let B={stepId:G.id,startedAt:new Date,status:"running",input:X},F={...J,data:{...J.data},history:[...J.history]};try{let A=await this.runStepAction(G,F,X);if(B.output=A,B.status="completed",B.completedAt=new Date,F.history.push(B),F.updatedAt=new Date,WB6(X))F.data={...F.data,...X};if(WB6(A))F.data={...F.data,...A};let I=this.pickNextStepId(W,F,G,X,A);if(I)F.currentStep=I,F.status="running";else if(!Rg1(W,G.id))F.status="completed";else throw Error(`No transition matched after executing step "${G.id}".`);await this.config.stateStore.update($,()=>F),this.emit("workflow.step_completed",{workflowId:$,workflowName:J.workflowName,stepId:G.id,status:F.status})}catch(A){if(B.status="failed",B.completedAt=new Date,B.error=A instanceof Error?A.message:String(A),F.history.push(B),F.updatedAt=new Date,G.retry){let I=J.retryCounts?.[G.id]??0;if(I<G.retry.maxAttempts){let E=G.retry.backoff??"exponential",T=G.retry.delayMs??1000,_=E==="exponential"?T*Math.pow(2,I):T,S=Math.min(_,G.retry.maxDelayMs??1/0);return F.retryCounts={...J.retryCounts??{},[G.id]:I+1},F.status="running",await this.config.stateStore.update($,()=>F),this.emit("workflow.step_retrying",{workflowId:$,workflowName:J.workflowName,stepId:G.id,attempt:I+1,delay:S,error:B.error}),await new Promise((h)=>setTimeout(h,S)),this.executeStep($,X)}}if(F.status="failed",await this.config.stateStore.update($,()=>F),this.emit("workflow.step_failed",{workflowId:$,workflowName:J.workflowName,stepId:G.id,error:B.error??"unknown"}),W.definition.compensation?.trigger==="on_failure")await this.rollback($);throw A}}async rollback($){let X=await this.getStateOrThrow($),J=this.getSpec(X.workflowName,X.workflowVersion);if(!J.definition.compensation)return;this.emit("workflow.rollback_started",{workflowId:$});let W=X.history.filter((G)=>G.status==="completed").reverse();for(let G of W){let B=J.definition.compensation.steps.find((F)=>F.stepId===G.stepId);if(B){let F={stepId:G.stepId,originalInput:G.input,originalOutput:G.output,workflowData:X.data};try{let A=JB6(J,G.stepId),I=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,E={workflow:X,step:A,resolvedAppConfig:I,integrations:I?.integrations??[],knowledge:I?.knowledge??[],branding:I?.branding,translation:I?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};await this.config.opExecutor(B.operation,F,E),this.emit("workflow.compensation_step_completed",{workflowId:$,stepId:G.stepId,compensationOp:B.operation.key})}catch(A){let I=A instanceof Error?A.message:String(A);this.emit("workflow.compensation_step_failed",{workflowId:$,stepId:G.stepId,compensationOp:B.operation.key,error:I})}}}this.emit("workflow.rollback_completed",{workflowId:$})}async getState($){return this.getStateOrThrow($)}async cancel($){let X=await this.getStateOrThrow($);if(X.status==="cancelled")return;let J={...X,status:"cancelled",updatedAt:new Date};await this.config.stateStore.update($,()=>J),this.emit("workflow.cancelled",{workflowId:$,workflowName:X.workflowName})}async performPreFlight($,X){if(!X)return{canStart:!0,issues:[]};let J=[],W=new Map;for(let B of X.integrations)W.set(B.slot.slotId,B);for(let B of $.definition.steps)for(let F of B.requiredIntegrations??[]){let A=W.get(F);if(!A){J.push({stepId:B.id,type:"integration",identifier:F,severity:"error",reason:`Integration slot "${F}" is not bound in the resolved app config.`});continue}let I=A.connection.status;if(I==="disconnected"||I==="error")J.push({stepId:B.id,type:"integration",identifier:F,severity:"error",reason:`Integration slot "${F}" is in status "${I}".`});else if(I==="unknown")J.push({stepId:B.id,type:"integration",identifier:F,severity:"warning",reason:`Integration slot "${F}" reports unknown health status.`})}let G=new Set(X.capabilities.enabled.map(NG$));for(let B of $.definition.steps)for(let F of B.requiredCapabilities??[])if(!G.has(NG$(F)))J.push({stepId:B.id,type:"capability",identifier:NG$(F),severity:"error",reason:`Capability "${F.key}@${F.version}" is not enabled.`});return{canStart:J.every((B)=>B.severity!=="error"),issues:J}}async evaluateGuard($,X,J){if(!$.guard)return!0;if(this.config.guardEvaluator)return this.config.guardEvaluator($.guard,{workflow:X,step:$,input:J});if($.guard.type==="expression")return nh($.guard.value,{data:X.data,input:J});return!0}async runStepAction($,X,J){if($.type==="automation"){let W=$.action?.operation;if(!W)throw Error(`Automation step "${$.id}" requires an operation.`);let G=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,B={workflow:X,step:$,resolvedAppConfig:G,integrations:G?.integrations??[],knowledge:G?.knowledge??[],branding:G?.branding,translation:G?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};if(this.config.enforceCapabilities)await this.config.enforceCapabilities(W,B);return this.config.opExecutor(W,J,B)}if($.type==="human")return J;return J}pickNextStepId($,X,J,W,G){let B=$.definition.transitions.filter((F)=>F.from===J.id);for(let F of B)if(nh(F.condition,{data:X.data,input:W,output:G})){let A=$.definition.steps.find((I)=>I.id===F.to);if(!A)throw Error(`Transition ${F.from} -> ${F.to} points to missing step.`);return A.id}return null}getSpec($,X){let J=this.config.registry.get($,X);if(!J)throw Error(`Workflow spec not found for ${$}${X?`.v${X}`:""}`);return J}async getStateOrThrow($){let X=await this.config.stateStore.get($);if(!X)throw Error(`Workflow state not found for ${$}`);return X}emit($,X){this.config.eventEmitter?.($,X)}},oT0;var PG$=y0(()=>{rT0();oT0=class extends Error{constructor($){super(`Workflow pre-flight failed: ${$.filter((X)=>X.severity==="error").map((X)=>`${X.type}:${X.identifier}`).join(", ")}`);this.issues=$,this.name="WorkflowPreFlightError"}}});function B$0($){return{...$,data:yH0($.data),history:$.history.map((X)=>({...X,input:yH0(X.input),output:yH0(X.output),startedAt:new Date(X.startedAt),completedAt:X.completedAt?new Date(X.completedAt):void 0})),createdAt:new Date($.createdAt),updatedAt:new Date($.updatedAt)}}function yH0($){if($ instanceof Date)return new Date($.getTime());if(Array.isArray($))return $.map((X)=>yH0(X));if($&&typeof $==="object"){let X={};for(let[J,W]of Object.entries($))X[J]=yH0(W);return X}return $}var CG$=class{items=new Map;async create($){if(this.items.has($.workflowId))throw Error(`Workflow state already exists: ${$.workflowId}`);this.items.set($.workflowId,B$0($))}async get($){let X=this.items.get($);return X?B$0(X):void 0}async update($,X){let J=this.items.get($);if(!J)throw Error(`Workflow state not found for ${$}`);let W=B$0(X(B$0(J)));return this.items.set($,W),B$0(W)}async list($){let X=[...this.items.values()];return(($?.status)?X.filter((J)=>J.status===$.status):X).map(B$0)}clear(){this.items.clear()}};var TG$=()=>{};var bG$=class{constructor($){this.prisma=$}async create($){await this.prisma.workflowState.create({data:{id:$.workflowId,name:$.workflowName,version:$.workflowVersion,status:$.status,currentStep:$.currentStep,data:$.data,history:$.history,retryCounts:$.retryCounts??{},createdAt:$.createdAt,updatedAt:$.updatedAt}})}async get($){let X=await this.prisma.workflowState.findUnique({where:{id:$}});if(!X)return;return{workflowId:X.id,workflowName:X.name,workflowVersion:X.version,currentStep:X.currentStep,data:X.data,history:X.history,retryCounts:X.retryCounts,status:X.status,createdAt:X.createdAt,updatedAt:X.updatedAt}}async update($,X){let J=await this.get($);if(!J)throw Error(`Workflow ${$} not found`);let W=X(J),G=await this.prisma.workflowState.update({where:{id:$},data:{status:W.status,currentStep:W.currentStep,data:W.data,history:W.history,retryCounts:W.retryCounts,updatedAt:W.updatedAt}});return{workflowId:G.id,workflowName:G.name,workflowVersion:G.version,currentStep:G.currentStep,data:G.data,history:G.history,retryCounts:G.retryCounts,status:G.status,createdAt:G.createdAt,updatedAt:G.updatedAt}}async list($){let X={};if($?.status)X.status=$.status;return(await this.prisma.workflowState.findMany({where:X})).map((J)=>({workflowId:J.id,workflowName:J.name,workflowVersion:J.version,currentStep:J.currentStep,data:J.data,history:J.history,retryCounts:J.retryCounts,status:J.status,createdAt:J.createdAt,updatedAt:J.updatedAt}))}};var SG$=()=>{};function _G$($){throw Error("File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.")}var kG$=()=>{};var QB6=y0(()=>{EG$();jG$();rT0();PG$();TG$();SG$();kG$()});function HB6($){if(!$.length)return"/";let X=$.startsWith("/")?$:`/${$}`;return X==="/"?"/":X.replace(/\/+$/,"")}function Tg1($,X){if($.route)return HB6($.route);let J=X??"/docs",W=$.id.replace(/^docs\.?/,"").replace(/\./g,"/").replace(/\/+/g,"/");return HB6(W.startsWith("/")?W:`${J}/${W}`)}function bg1($,X){return X?`${X}.${$.id}`:$.id}function Vp($,X){let J=X?.defaultTargets??Cg1,W=$.version??X?.defaultVersion??"1.0.0",G=$.stability??X?.defaultStability??"stable";return{meta:{key:bg1($,X?.namespace),title:$.title,version:W,description:$.summary??$.title,tags:$.tags||[],owners:$.owners||[],domain:$.domain||"",stability:G,goal:`Documentation of: ${$.summary}`,context:"Auto-generated"},policy:$.visibility&&$.visibility!=="public"?{flags:[$.visibility]}:void 0,source:{type:"blocknotejs",docJson:$.body},targets:J}}function fH0($,X){return $.map((J)=>({block:J,route:Tg1(J,X?.routePrefix),descriptor:Vp(J,X)}))}function vG$($,X){return $.map((J)=>Vp(J,X))}function xG$($){return $.map(({route:X,descriptor:J})=>[X,J])}var Cg1;var aT0=y0(()=>{Cg1=["markdown","react"]});function oX($){for(let X of $){for(let J of Sg1)if(!X[J])throw Error(`DocBlock ${X.id??"<missing id>"} missing field ${String(J)}`);rh.register(X)}}function yG$(){return rh.list().map(($)=>$.block)}function fG$($){if(!rh.get($))throw Error(`DocBlock not registered: ${$}`);return $}var sT0=class{routes=new Map;constructor($=[],X){$.forEach((J)=>this.register(J,X))}register($,X){let[J]=fH0([$],X);if(J)this.routes.set($.id,J);return this}list(){return[...this.routes.values()]}get($){return this.routes.get($)}toRouteTuples(){return this.list().map(({route:$,descriptor:X})=>[$,X])}toPresentationSpecs($){return this.list().map(({block:X})=>Vp(X,$))}},Sg1,rh;var WH=y0(()=>{aT0();Sg1=["id","title","body","kind","visibility","route"],rh=new sT0});var tT0;var hG$=y0(()=>{WH();tT0=[{id:"docs.tech.contracts.presentations",title:"Presentations \u2014 Unified Descriptor & Transform Engine",summary:"How PresentationSpec and TransformEngine keep docs/renderers consistent.",visibility:"public",route:"/docs/tech/contracts/presentations",kind:"reference",tags:["presentations","docs","mcp"],body:`## Presentations V2 \u2014 Unified Descriptor & Transform Engine
1333
1333
 
1334
1334
  ### Purpose
1335
1335
 
@@ -6768,5 +6768,5 @@ ${A.summary}`))}),X.command("list").description("List available hooks from confi
6768
6768
  \u274C Error:`),X instanceof Error?X.message:String(X)),process.exit(1)}});s3.command("regenerator").description("Operate the Regenerator daemon").argument("<blueprint-file>","Path to AppBlueprintSpec file").argument("<tenant-file>","Path to TenantAppConfig file").argument("<rules-file>","Path to module exporting regenerator rules").argument("<sink-file>",'Path to module exporting a proposal sink (use "auto" with --executor)').option("-p, --poll-interval <ms>","Polling interval in ms (default 60000)",($)=>Number.parseInt($,10)).option("-b, --batch-duration <ms>","Lookback duration in ms (default 300000)",($)=>Number.parseInt($,10)).option("--once","Run a single evaluation cycle then exit").option("--contexts <path>","Optional file exporting an array of RegenerationContext overrides").option("--executor <path>",'Module exporting a ProposalExecutor instance, factory, or deps (required when sink is "auto")').option("--dry-run","Execute proposals in dry-run mode when using executor sink").action(async($,X,J,W,G)=>{try{let B=await lG(),F=KP(B,G);await fw6($,X,J,W,G,F)}catch(B){console.error(N0.red(`
6769
6769
  \u274C Error:`),B instanceof Error?B.message:String(B)),process.exit(1)}});function lL6(){s3.parse()}lL6();
6770
6770
 
6771
- //# debugId=AAF0BE9EDFA4DC7664756E2164756E21
6771
+ //# debugId=6BAB0EA0DC8C779364756E2164756E21
6772
6772
  //# sourceMappingURL=cli.js.map