@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/CHANGELOG.md +16 -0
- package/dist/bun/cli.js +2 -2
- package/dist/node/cli.js +2 -2
- package/package.json +12 -12
package/dist/node/cli.js
CHANGED
|
@@ -1481,7 +1481,7 @@ Values:
|
|
|
1481
1481
|
deps: ${J}}`};var EZD={keyword:"dependencies",type:"object",schemaType:"object",error:cA6.error,code($){let[X,J]=MZD($);dA6($,X),lA6($,J)}};function MZD({schema:$}){let X={},J={};for(let W in $){if(W==="__proto__")continue;let Q=Array.isArray($[W])?X:J;Q[W]=$[W]}return[X,J]}function dA6($,X=$.schema){let{gen:J,data:W,it:Q}=$;if(Object.keys(X).length===0)return;let z=J.let("missing");for(let Z in X){let K=X[Z];if(K.length===0)continue;let I=(0,nU$.propertyInData)(J,W,Z,Q.opts.ownProperties);if($.setParams({property:Z,depsCount:K.length,deps:K.join(", ")}),Q.allErrors)J.if(I,()=>{for(let j of K)(0,nU$.checkReportMissingProp)($,j)});else J.if(tZ0._`${I} && (${(0,nU$.checkMissingProp)($,K,z)})`),(0,nU$.reportMissingProp)($,z),J.else()}}cA6.validatePropertyDeps=dA6;function lA6($,X=$.schema){let{gen:J,data:W,keyword:Q,it:z}=$,Z=J.name("valid");for(let K in X){if((0,jZD.alwaysValidSchema)(z,X[K]))continue;J.if((0,nU$.propertyInData)(J,W,K,z.opts.ownProperties),()=>{let I=$.subschema({keyword:Q,schemaProp:K},Z);$.mergeValidEvaluated(I,Z)},()=>J.var(Z,!0)),$.ok(Z)}}cA6.validateSchemaDeps=lA6;cA6.default=EZD});var aA6=q0((oA6)=>{Object.defineProperty(oA6,"__esModule",{value:!0});var rA6=s5(),bZD=zH(),RZD={message:"property name must be valid",params:({params:$})=>rA6._`{propertyName: ${$.propertyName}}`},CZD={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:RZD,code($){let{gen:X,schema:J,data:W,it:Q}=$;if((0,bZD.alwaysValidSchema)(Q,J))return;let z=X.name("valid");X.forIn("key",W,(Z)=>{$.setParams({propertyName:Z}),$.subschema({keyword:"propertyNames",data:Z,dataTypes:["string"],propertyName:Z,compositeRule:!0},z),X.if((0,rA6.not)(z),()=>{if($.error(!0),!Q.allErrors)X.break()})}),$.ok(z)}};oA6.default=CZD});var sZ0=q0((tA6)=>{Object.defineProperty(tA6,"__esModule",{value:!0});var pS$=Db(),ZT=s5(),SZD=Bu(),nS$=zH(),_ZD={message:"must NOT have additional properties",params:({params:$})=>ZT._`{additionalProperty: ${$.additionalProperty}}`},vZD={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:_ZD,code($){let{gen:X,schema:J,parentSchema:W,data:Q,errsCount:z,it:Z}=$;if(!z)throw Error("ajv implementation error");let{allErrors:K,opts:I}=Z;if(Z.props=!0,I.removeAdditional!=="all"&&(0,nS$.alwaysValidSchema)(Z,J))return;let j=(0,pS$.allSchemaProperties)(W.properties),b=(0,pS$.allSchemaProperties)(W.patternProperties);_(),$.ok(ZT._`${z} === ${SZD.default.errors}`);function _(){X.forIn("key",Q,(Z$)=>{if(!j.length&&!b.length)n(Z$);else X.if(T(Z$),()=>n(Z$))})}function T(Z$){let M$;if(j.length>8){let T$=(0,nS$.schemaRefOrVal)(Z,W.properties,"properties");M$=(0,pS$.isOwnProperty)(X,T$,Z$)}else if(j.length)M$=(0,ZT.or)(...j.map((T$)=>ZT._`${Z$} === ${T$}`));else M$=ZT.nil;if(b.length)M$=(0,ZT.or)(M$,...b.map((T$)=>ZT._`${(0,pS$.usePattern)($,T$)}.test(${Z$})`));return(0,ZT.not)(M$)}function x(Z$){X.code(ZT._`delete ${Q}[${Z$}]`)}function n(Z$){if(I.removeAdditional==="all"||I.removeAdditional&&J===!1){x(Z$);return}if(J===!1){if($.setParams({additionalProperty:Z$}),$.error(),!K)X.break();return}if(typeof J=="object"&&!(0,nS$.alwaysValidSchema)(Z,J)){let M$=X.name("valid");if(I.removeAdditional==="failing")i(Z$,M$,!1),X.if((0,ZT.not)(M$),()=>{$.reset(),x(Z$)});else if(i(Z$,M$),!K)X.if((0,ZT.not)(M$),()=>X.break())}}function i(Z$,M$,T$){let _$={keyword:"additionalProperties",dataProp:Z$,dataPropType:nS$.Type.Str};if(T$===!1)Object.assign(_$,{compositeRule:!0,createErrors:!1,allErrors:!1});$.subschema(_$,M$)}}};tA6.default=vZD});var DI6=q0(($I6)=>{Object.defineProperty($I6,"__esModule",{value:!0});var yZD=xU$(),sA6=Db(),eZ0=zH(),eA6=sZ0(),xZD={keyword:"properties",type:"object",schemaType:"object",code($){let{gen:X,schema:J,parentSchema:W,data:Q,it:z}=$;if(z.opts.removeAdditional==="all"&&W.additionalProperties===void 0)eA6.default.code(new yZD.KeywordCxt(z,eA6.default,"additionalProperties"));let Z=(0,sA6.allSchemaProperties)(J);for(let _ of Z)z.definedProperties.add(_);if(z.opts.unevaluated&&Z.length&&z.props!==!0)z.props=eZ0.mergeEvaluated.props(X,(0,eZ0.toHash)(Z),z.props);let K=Z.filter((_)=>!(0,eZ0.alwaysValidSchema)(z,J[_]));if(K.length===0)return;let I=X.name("valid");for(let _ of K){if(j(_))b(_);else{if(X.if((0,sA6.propertyInData)(X,Q,_,z.opts.ownProperties)),b(_),!z.allErrors)X.else().var(I,!0);X.endIf()}$.it.definedProperties.add(_),$.ok(I)}function j(_){return z.opts.useDefaults&&!z.compositeRule&&J[_].default!==void 0}function b(_){$.subschema({keyword:"properties",schemaProp:_,dataProp:_},I)}}};$I6.default=xZD});var QI6=q0((WI6)=>{Object.defineProperty(WI6,"__esModule",{value:!0});var XI6=Db(),rS$=s5(),YI6=zH(),JI6=zH(),uZD={keyword:"patternProperties",type:"object",schemaType:"object",code($){let{gen:X,schema:J,data:W,parentSchema:Q,it:z}=$,{opts:Z}=z,K=(0,XI6.allSchemaProperties)(J),I=K.filter((i)=>(0,YI6.alwaysValidSchema)(z,J[i]));if(K.length===0||I.length===K.length&&(!z.opts.unevaluated||z.props===!0))return;let j=Z.strictSchema&&!Z.allowMatchingProperties&&Q.properties,b=X.name("valid");if(z.props!==!0&&!(z.props instanceof rS$.Name))z.props=(0,JI6.evaluatedPropsToName)(X,z.props);let{props:_}=z;T();function T(){for(let i of K){if(j)x(i);if(z.allErrors)n(i);else X.var(b,!0),n(i),X.if(b)}}function x(i){for(let Z$ in j)if(new RegExp(i).test(Z$))(0,YI6.checkStrictMode)(z,`property ${Z$} matches pattern ${i} (use allowMatchingProperties)`)}function n(i){X.forIn("key",W,(Z$)=>{X.if(rS$._`${(0,XI6.usePattern)($,i)}.test(${Z$})`,()=>{let M$=I.includes(i);if(!M$)$.subschema({keyword:"patternProperties",schemaProp:i,dataProp:Z$,dataPropType:JI6.Type.Str},b);if(z.opts.unevaluated&&_!==!0)X.assign(rS$._`${_}[${Z$}]`,!0);else if(!M$&&!z.allErrors)X.if((0,rS$.not)(b),()=>X.break())})})}}};WI6.default=uZD});var GI6=q0((HI6)=>{Object.defineProperty(HI6,"__esModule",{value:!0});var hZD=zH(),mZD={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code($){let{gen:X,schema:J,it:W}=$;if((0,hZD.alwaysValidSchema)(W,J)){$.fail();return}let Q=X.name("valid");$.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},Q),$.failResult(Q,()=>$.reset(),()=>$.error())},error:{message:"must NOT be valid"}};HI6.default=mZD});var UI6=q0((zI6)=>{Object.defineProperty(zI6,"__esModule",{value:!0});var lZD=Db(),cZD={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:lZD.validateUnion,error:{message:"must match a schema in anyOf"}};zI6.default=cZD});var ZI6=q0((BI6)=>{Object.defineProperty(BI6,"__esModule",{value:!0});var oS$=s5(),pZD=zH(),nZD={message:"must match exactly one schema in oneOf",params:({params:$})=>oS$._`{passingSchemas: ${$.passing}}`},rZD={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:nZD,code($){let{gen:X,schema:J,parentSchema:W,it:Q}=$;if(!Array.isArray(J))throw Error("ajv implementation error");if(Q.opts.discriminator&&W.discriminator)return;let z=J,Z=X.let("valid",!1),K=X.let("passing",null),I=X.name("_valid");$.setParams({passing:K}),X.block(j),$.result(Z,()=>$.reset(),()=>$.error(!0));function j(){z.forEach((b,_)=>{let T;if((0,pZD.alwaysValidSchema)(Q,b))X.var(I,!0);else T=$.subschema({keyword:"oneOf",schemaProp:_,compositeRule:!0},I);if(_>0)X.if(oS$._`${I} && ${Z}`).assign(Z,!1).assign(K,oS$._`[${K}, ${_}]`).else();X.if(I,()=>{if(X.assign(Z,!0),X.assign(K,_),T)$.mergeEvaluated(T,oS$.Name)})})}}};BI6.default=rZD});var qI6=q0((OI6)=>{Object.defineProperty(OI6,"__esModule",{value:!0});var aZD=zH(),tZD={keyword:"allOf",schemaType:"array",code($){let{gen:X,schema:J,it:W}=$;if(!Array.isArray(J))throw Error("ajv implementation error");let Q=X.name("valid");J.forEach((z,Z)=>{if((0,aZD.alwaysValidSchema)(W,z))return;let K=$.subschema({keyword:"allOf",schemaProp:Z},Q);$.ok(Q),$.mergeEvaluated(K)})}};OI6.default=tZD});var wI6=q0((VI6)=>{Object.defineProperty(VI6,"__esModule",{value:!0});var aS$=s5(),KI6=zH(),eZD={message:({params:$})=>aS$.str`must match "${$.ifClause}" schema`,params:({params:$})=>aS$._`{failingKeyword: ${$.ifClause}}`},$2D={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:eZD,code($){let{gen:X,parentSchema:J,it:W}=$;if(J.then===void 0&&J.else===void 0)(0,KI6.checkStrictMode)(W,'"if" without "then" and "else" is ignored');let Q=FI6(W,"then"),z=FI6(W,"else");if(!Q&&!z)return;let Z=X.let("valid",!0),K=X.name("_valid");if(I(),$.reset(),Q&&z){let b=X.let("ifClause");$.setParams({ifClause:b}),X.if(K,j("then",b),j("else",b))}else if(Q)X.if(K,j("then"));else X.if((0,aS$.not)(K),j("else"));$.pass(Z,()=>$.error(!0));function I(){let b=$.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},K);$.mergeEvaluated(b)}function j(b,_){return()=>{let T=$.subschema({keyword:b},K);if(X.assign(Z,K),$.mergeValidEvaluated(T,Z),_)X.assign(_,aS$._`${b}`);else $.setParams({ifClause:b})}}}};function FI6($,X){let J=$.schema[X];return J!==void 0&&!(0,KI6.alwaysValidSchema)($,J)}VI6.default=$2D});var II6=q0((AI6)=>{Object.defineProperty(AI6,"__esModule",{value:!0});var X2D=zH(),Y2D={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:$,parentSchema:X,it:J}){if(X.if===void 0)(0,X2D.checkStrictMode)(J,`"${$}" without "if" is ignored`)}};AI6.default=Y2D});var jI6=q0((LI6)=>{Object.defineProperty(LI6,"__esModule",{value:!0});var W2D=oZ0(),Q2D=xA6(),H2D=aZ0(),G2D=gA6(),z2D=mA6(),U2D=nA6(),B2D=aA6(),Z2D=sZ0(),O2D=DI6(),q2D=QI6(),F2D=GI6(),K2D=UI6(),V2D=ZI6(),w2D=qI6(),A2D=wI6(),I2D=II6();function L2D($=!1){let X=[F2D.default,K2D.default,V2D.default,w2D.default,A2D.default,I2D.default,B2D.default,Z2D.default,U2D.default,O2D.default,q2D.default];if($)X.push(Q2D.default,G2D.default);else X.push(W2D.default,H2D.default);return X.push(z2D.default),X}LI6.default=L2D});var MI6=q0((EI6)=>{Object.defineProperty(EI6,"__esModule",{value:!0});var hO=s5(),E2D={message:({schemaCode:$})=>hO.str`must match format "${$}"`,params:({schemaCode:$})=>hO._`{format: ${$}}`},M2D={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:E2D,code($,X){let{gen:J,data:W,$data:Q,schema:z,schemaCode:Z,it:K}=$,{opts:I,errSchemaPath:j,schemaEnv:b,self:_}=K;if(!I.validateFormats)return;if(Q)T();else x();function T(){let n=J.scopeValue("formats",{ref:_.formats,code:I.code.formats}),i=J.const("fDef",hO._`${n}[${Z}]`),Z$=J.let("fType"),M$=J.let("format");J.if(hO._`typeof ${i} == "object" && !(${i} instanceof RegExp)`,()=>J.assign(Z$,hO._`${i}.type || "string"`).assign(M$,hO._`${i}.validate`),()=>J.assign(Z$,hO._`"string"`).assign(M$,i)),$.fail$data((0,hO.or)(T$(),_$()));function T$(){if(I.strictSchema===!1)return hO.nil;return hO._`${Z} && !${M$}`}function _$(){let D0=b.$async?hO._`(${i}.async ? await ${M$}(${W}) : ${M$}(${W}))`:hO._`${M$}(${W})`,o$=hO._`(typeof ${M$} == "function" ? ${D0} : ${M$}.test(${W}))`;return hO._`${M$} && ${M$} !== true && ${Z$} === ${X} && !${o$}`}}function x(){let n=_.formats[z];if(!n){T$();return}if(n===!0)return;let[i,Z$,M$]=_$(n);if(i===X)$.pass(D0());function T$(){if(I.strictSchema===!1){_.logger.warn(o$());return}throw Error(o$());function o$(){return`unknown format "${z}" ignored in schema at path "${j}"`}}function _$(o$){let t$=o$ instanceof RegExp?(0,hO.regexpCode)(o$):I.code.formats?hO._`${I.code.formats}${(0,hO.getProperty)(z)}`:void 0,W0=J.scopeValue("formats",{key:z,ref:o$,code:t$});if(typeof o$=="object"&&!(o$ instanceof RegExp))return[o$.type||"string",o$.validate,hO._`${W0}.validate`];return["string",o$,W0]}function D0(){if(typeof n=="object"&&!(n instanceof RegExp)&&n.async){if(!b.$async)throw Error("async format in sync schema");return hO._`await ${M$}(${W})`}return typeof Z$=="function"?hO._`${M$}(${W})`:hO._`${M$}.test(${W})`}}}};EI6.default=M2D});var NI6=q0((PI6)=>{Object.defineProperty(PI6,"__esModule",{value:!0});var N2D=MI6(),b2D=[N2D.default];PI6.default=b2D});var CI6=q0((bI6)=>{Object.defineProperty(bI6,"__esModule",{value:!0});bI6.contentVocabulary=bI6.metadataVocabulary=void 0;bI6.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];bI6.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var _I6=q0((SI6)=>{Object.defineProperty(SI6,"__esModule",{value:!0});var T2D=$A6(),S2D=bA6(),_2D=jI6(),v2D=NI6(),TI6=CI6(),k2D=[T2D.default,S2D.default,(0,_2D.default)(),v2D.default,TI6.metadataVocabulary,TI6.contentVocabulary];SI6.default=k2D});var xI6=q0((kI6)=>{Object.defineProperty(kI6,"__esModule",{value:!0});kI6.DiscrError=void 0;var vI6;(function($){$.Tag="tag",$.Mapping="mapping"})(vI6||(kI6.DiscrError=vI6={}))});var gI6=q0((uI6)=>{Object.defineProperty(uI6,"__esModule",{value:!0});var zD$=s5(),$20=xI6(),fI6=yS$(),x2D=fU$(),f2D=zH(),u2D={message:({params:{discrError:$,tagName:X}})=>$===$20.DiscrError.Tag?`tag "${X}" must be string`:`value of tag "${X}" must be in oneOf`,params:({params:{discrError:$,tag:X,tagName:J}})=>zD$._`{error: ${$}, tag: ${J}, tagValue: ${X}}`},g2D={keyword:"discriminator",type:"object",schemaType:"object",error:u2D,code($){let{gen:X,data:J,schema:W,parentSchema:Q,it:z}=$,{oneOf:Z}=Q;if(!z.opts.discriminator)throw Error("discriminator: requires discriminator option");let K=W.propertyName;if(typeof K!="string")throw Error("discriminator: requires propertyName");if(W.mapping)throw Error("discriminator: mapping is not supported");if(!Z)throw Error("discriminator: requires oneOf keyword");let I=X.let("valid",!1),j=X.const("tag",zD$._`${J}${(0,zD$.getProperty)(K)}`);X.if(zD$._`typeof ${j} == "string"`,()=>b(),()=>$.error(!1,{discrError:$20.DiscrError.Tag,tag:j,tagName:K})),$.ok(I);function b(){let x=T();X.if(!1);for(let n in x)X.elseIf(zD$._`${j} === ${n}`),X.assign(I,_(x[n]));X.else(),$.error(!1,{discrError:$20.DiscrError.Mapping,tag:j,tagName:K}),X.endIf()}function _(x){let n=X.name("valid"),i=$.subschema({keyword:"oneOf",schemaProp:x},n);return $.mergeEvaluated(i,zD$.Name),n}function T(){var x;let n={},i=M$(Q),Z$=!0;for(let D0=0;D0<Z.length;D0++){let o$=Z[D0];if((o$===null||o$===void 0?void 0:o$.$ref)&&!(0,f2D.schemaHasRulesButRef)(o$,z.self.RULES)){let W0=o$.$ref;if(o$=fI6.resolveRef.call(z.self,z.schemaEnv.root,z.baseId,W0),o$ instanceof fI6.SchemaEnv)o$=o$.schema;if(o$===void 0)throw new x2D.default(z.opts.uriResolver,z.baseId,W0)}let t$=(x=o$===null||o$===void 0?void 0:o$.properties)===null||x===void 0?void 0:x[K];if(typeof t$!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${K}"`);Z$=Z$&&(i||M$(o$)),T$(t$,D0)}if(!Z$)throw Error(`discriminator: "${K}" must be required`);return n;function M$({required:D0}){return Array.isArray(D0)&&D0.includes(K)}function T$(D0,o$){if(D0.const)_$(D0.const,o$);else if(D0.enum)for(let t$ of D0.enum)_$(t$,o$);else throw Error(`discriminator: "properties/${K}" must have "const" or "enum"`)}function _$(D0,o$){if(typeof D0!="string"||D0 in n)throw Error(`discriminator: "${K}" values must be unique strings`);n[D0]=o$}}}};uI6.default=g2D});var hI6=q0((g24,m2D)=>{m2D.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 dI6=q0((Hj,D20)=>{Object.defineProperty(Hj,"__esModule",{value:!0});Hj.MissingRefError=Hj.ValidationError=Hj.CodeGen=Hj.Name=Hj.nil=Hj.stringify=Hj.str=Hj._=Hj.KeywordCxt=Hj.Ajv=void 0;var d2D=cw6(),l2D=_I6(),c2D=gI6(),mI6=hI6(),i2D=["/properties"],tS$="http://json-schema.org/draft-07/schema";class rU$ extends d2D.default{_addVocabularies(){if(super._addVocabularies(),l2D.default.forEach(($)=>this.addVocabulary($)),this.opts.discriminator)this.addKeyword(c2D.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let $=this.opts.$data?this.$dataMetaSchema(mI6,i2D):mI6;this.addMetaSchema($,tS$,!1),this.refs["http://json-schema.org/schema"]=tS$}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(tS$)?tS$:void 0)}}Hj.Ajv=rU$;D20.exports=Hj=rU$;D20.exports.Ajv=rU$;Object.defineProperty(Hj,"__esModule",{value:!0});Hj.default=rU$;var p2D=xU$();Object.defineProperty(Hj,"KeywordCxt",{enumerable:!0,get:function(){return p2D.KeywordCxt}});var UD$=s5();Object.defineProperty(Hj,"_",{enumerable:!0,get:function(){return UD$._}});Object.defineProperty(Hj,"str",{enumerable:!0,get:function(){return UD$.str}});Object.defineProperty(Hj,"stringify",{enumerable:!0,get:function(){return UD$.stringify}});Object.defineProperty(Hj,"nil",{enumerable:!0,get:function(){return UD$.nil}});Object.defineProperty(Hj,"Name",{enumerable:!0,get:function(){return UD$.Name}});Object.defineProperty(Hj,"CodeGen",{enumerable:!0,get:function(){return UD$.CodeGen}});var n2D=vS$();Object.defineProperty(Hj,"ValidationError",{enumerable:!0,get:function(){return n2D.default}});var r2D=fU$();Object.defineProperty(Hj,"MissingRefError",{enumerable:!0,get:function(){return r2D.default}})});var cI6=q0((lI6)=>{Object.defineProperty(lI6,"__esModule",{value:!0});lI6.formatLimitDefinition=void 0;var t2D=dI6(),OT=s5(),td=OT.operators,sS$={formatMaximum:{okStr:"<=",ok:td.LTE,fail:td.GT},formatMinimum:{okStr:">=",ok:td.GTE,fail:td.LT},formatExclusiveMaximum:{okStr:"<",ok:td.LT,fail:td.GTE},formatExclusiveMinimum:{okStr:">",ok:td.GT,fail:td.LTE}},s2D={message:({keyword:$,schemaCode:X})=>OT.str`should be ${sS$[$].okStr} ${X}`,params:({keyword:$,schemaCode:X})=>OT._`{comparison: ${sS$[$].okStr}, limit: ${X}}`};lI6.formatLimitDefinition={keyword:Object.keys(sS$),type:"string",schemaType:"string",$data:!0,error:s2D,code($){let{gen:X,data:J,schemaCode:W,keyword:Q,it:z}=$,{opts:Z,self:K}=z;if(!Z.validateFormats)return;let I=new t2D.KeywordCxt(z,K.RULES.all.format.definition,"format");if(I.$data)j();else b();function j(){let T=X.scopeValue("formats",{ref:K.formats,code:Z.code.formats}),x=X.const("fmt",OT._`${T}[${I.schemaCode}]`);$.fail$data((0,OT.or)(OT._`typeof ${x} != "object"`,OT._`${x} instanceof RegExp`,OT._`typeof ${x}.compare != "function"`,_(x)))}function b(){let T=I.schema,x=K.formats[T];if(!x||x===!0)return;if(typeof x!="object"||x instanceof RegExp||typeof x.compare!="function")throw Error(`"${Q}": format "${T}" does not define "compare" function`);let n=X.scopeValue("formats",{key:T,ref:x,code:Z.code.formats?OT._`${Z.code.formats}${(0,OT.getProperty)(T)}`:void 0});$.fail$data(_(n))}function _(T){return OT._`${T}.compare(${J}, ${W}) ${sS$[Q].fail} 0`}},dependencies:["format"]};var e2D=($)=>{return $.addKeyword(lI6.formatLimitDefinition),$};lI6.default=e2D});var rI6=q0((oU$,nI6)=>{Object.defineProperty(oU$,"__esModule",{value:!0});var BD$=hK6(),DOD=cI6(),Y20=s5(),iI6=new Y20.Name("fullFormats"),XOD=new Y20.Name("fastFormats"),J20=($,X={keywords:!0})=>{if(Array.isArray(X))return pI6($,X,BD$.fullFormats,iI6),$;let[J,W]=X.mode==="fast"?[BD$.fastFormats,XOD]:[BD$.fullFormats,iI6],Q=X.formats||BD$.formatNames;if(pI6($,Q,J,W),X.keywords)(0,DOD.default)($);return $};J20.get=($,X="full")=>{let W=(X==="fast"?BD$.fastFormats:BD$.fullFormats)[$];if(!W)throw Error(`Unknown format "${$}"`);return W};function pI6($,X,J,W){var Q,z;(Q=(z=$.opts.code).formats)!==null&&Q!==void 0||(z.formats=Y20._`require("ajv-formats/dist/formats").${W}`);for(let Z of X)$.addFormat(Z,J[Z])}nI6.exports=oU$=J20;Object.defineProperty(oU$,"__esModule",{value:!0});oU$.default=J20});var YOD,JOD;var oI6=l$(()=>{YOD=XY(TK6(),1),JOD=XY(rI6(),1)});var aI6=l$(()=>{KO6();TT$();oI6();tz$()});var tI6;var sI6=l$(()=>{(function($){$.Completable="McpCompletable"})(tI6||(tI6={}))});class qu{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($){qu.validateLength($,1e6,"Template"),this.template=$,this.parts=this.parse($)}toString(){return this.template}parse($){let X=[],J="",W=0,Q=0;while(W<$.length)if($[W]==="{"){if(J)X.push(J),J="";let z=$.indexOf("}",W);if(z===-1)throw Error("Unclosed template expression");if(Q++,Q>1e4)throw Error("Template contains too many expressions (max 10000)");let Z=$.slice(W+1,z),K=this.getOperator(Z),I=Z.includes("*"),j=this.getNames(Z),b=j[0];for(let _ of j)qu.validateLength(_,1e6,"Variable name");X.push({name:b,operator:K,names:j,exploded:I}),W=z+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(qu.validateLength($,1e6,"Variable value"),X==="+"||X==="#")return encodeURI($);return encodeURIComponent($)}expandPart($,X){if($.operator==="?"||$.operator==="&"){let z=$.names.map((K)=>{let I=X[K];if(I===void 0)return"";let j=Array.isArray(I)?I.map((b)=>this.encodeValue(b,$.operator)).join(","):this.encodeValue(I.toString(),$.operator);return`${K}=${j}`}).filter((K)=>K.length>0);if(z.length===0)return"";return($.operator==="?"?"?":"&")+z.join("&")}if($.names.length>1){let z=$.names.map((Z)=>X[Z]).filter((Z)=>Z!==void 0);if(z.length===0)return"";return z.map((Z)=>Array.isArray(Z)?Z[0]:Z).join(",")}let J=X[$.name];if(J===void 0)return"";let Q=(Array.isArray(J)?J:[J]).map((z)=>this.encodeValue(z,$.operator));switch($.operator){case"":return Q.join(",");case"+":return Q.join(",");case"#":return"#"+Q.join(",");case".":return"."+Q.join(".");case"/":return"/"+Q.join("/");default:return Q.join(",")}}expand($){let X="",J=!1;for(let W of this.parts){if(typeof W==="string"){X+=W;continue}let Q=this.expandPart(W,$);if(!Q)continue;if((W.operator==="?"||W.operator==="&")&&J)X+=Q.replace("?","&");else X+=Q;if(W.operator==="?"||W.operator==="&")J=!0}return X}escapeRegExp($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}partToRegExp($){let X=[];for(let Q of $.names)qu.validateLength(Q,1e6,"Variable name");if($.operator==="?"||$.operator==="&"){for(let Q=0;Q<$.names.length;Q++){let z=$.names[Q],Z=Q===0?"\\"+$.operator:"&";X.push({pattern:Z+this.escapeRegExp(z)+"=([^&]+)",name:z})}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($){qu.validateLength($,1e6,"URI");let X="^",J=[];for(let Z of this.parts)if(typeof Z==="string")X+=this.escapeRegExp(Z);else{let K=this.partToRegExp(Z);for(let{pattern:I,name:j}of K)X+=I,J.push({name:j,exploded:Z.exploded})}X+="$",qu.validateLength(X,1e6,"Generated regex pattern");let W=new RegExp(X),Q=$.match(W);if(!Q)return null;let z={};for(let Z=0;Z<J.length;Z++){let{name:K,exploded:I}=J[Z],j=Q[Z+1],b=K.replace("*","");if(I&&j.includes(","))z[b]=j.split(",");else z[b]=j}return z}}var eI6=()=>{};class W20{constructor($,X){this._callbacks=X,this._uriTemplate=typeof $==="string"?new qu($):$}get uriTemplate(){return this._uriTemplate}get listCallback(){return this._callbacks.list}completeCallback($){return this._callbacks.complete?.[$]}}var Q20=l$(()=>{aI6();tz$();FB0();TT$();sI6();eI6()});import{Buffer as WOD}from"node:buffer";function QOD($){return{title:$.meta.title,description:$.meta.description,mimeType:$.meta.mimeType,_meta:{tags:$.meta.tags??[]}}}function $L6($,X,J){for(let W of X.listTemplates())J.logger.info("Registering resource: "+W.meta.uriTemplate),$.registerResource(W.meta.uriTemplate,new W20(W.meta.uriTemplate,{list:void 0}),QOD(W),async(Q,z)=>{let Z=W.input.parse(z),K=await W.resolve(Z,J.resourceCtx());if(typeof K.data==="string")return{contents:[{uri:K.uri,mimeType:K.mimeType??W.meta.mimeType,text:K.data}]};return{contents:[{uri:K.uri,mimeType:K.mimeType??W.meta.mimeType,blob:WOD.from(K.data).toString("base64")}]}}),J.logger.info("Registered resource: "+W.meta.uriTemplate)}var DL6=l$(()=>{Q20()});function HOD($){let X={};for(let J of $)X[J.name]=J.schema;return X}function XL6($,X,J){for(let W of X.list()){let Q=vC$(W.meta.key);$.registerPrompt(Q,{title:W.meta.title,description:W.meta.description,argsSchema:HOD(W.args)},async(z)=>{let Z=(K,I)=>{let j=K;for(let[b,_]of Object.entries(I))j=j.replace(new RegExp(`\\{${b}\\}`,"g"),encodeURIComponent(String(_)));return j};return{messages:[{role:"assistant",content:{type:"text",text:(await W.render(W.input.parse(z),{...J.promptCtx(),link:Z})).map((K)=>K.type==="text"?K.text:`See resource: ${K.title??K.uri}
|
|
1482
1482
|
URI: ${K.uri}`).join(`
|
|
1483
1483
|
|
|
1484
|
-
`)}}],description:W.meta.description}})}}var YL6=l$(()=>{of()});function JL6($){if(!$||typeof $!=="object")return!1;return"body"in $&&typeof $.body==="string"}function WL6($,X){if(!X.presentations?.count())return;let J=vr(_r(Sr()));for(let W of X.presentations.list()){let Q=Lz$(`presentation_${W.meta.key}_v${W.meta.version}`),z=`presentation://${W.meta.key}/v${W.meta.version}`;X.logger.info(`Registering presentation ${z} for ${Q}`),$.registerResource(Q,z,{title:`${W.meta.key} v${W.meta.version}`,description:W.meta.description??"Presentation",mimeType:"application/json"},async()=>{return{contents:[{uri:z,mimeType:"application/json",text:JSON.stringify({meta:W.meta,source:W.source,targets:W.targets},null,2)}]}});for(let Z of[{ext:".md",target:"markdown"},{ext:".json",target:"application/json"},{ext:".xml",target:"application/xml"}]){let K=`${Q}${Z.ext}`,I=`${z}${Z.ext}`;$.registerResource(K,I,{title:`${W.meta.key} v${W.meta.version} (${Z.ext})`,description:`${W.meta.description??"Presentation"} (${Z.ext})`},async()=>{let j=await J.render(Z.target,W);return{contents:[{uri:I,mimeType:JL6(j)&&j.mimeType?j.mimeType:Z.target==="markdown"?"text/markdown":Z.target,text:JL6(j)&&typeof j.body==="string"?j.body:String(j)}]}})}}}var QL6=l$(()=>{Vz$();zC$();of()});function eS$($,X,J,W,Q){return Q.logger.info("Creating MCP server"),u26($,X,{toolCtx:Q.toolCtx}),$L6($,J,{logger:Q.logger,resourceCtx:Q.resourceCtx}),WL6($,{logger:Q.logger,presentations:Q.presentations}),XL6($,W,{promptCtx:Q.promptCtx}),$}var $_$=l$(()=>{g26();DL6();YL6();QL6()});function aU$($){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 GOD($,X){return`${($??"").replace(/\/+$/g,"")}/${X.replace(/^\/+/g,"")}`.replace(/\/{2,}/g,"/")}function qT($,X,J){let W={basePath:J?.basePath??"",cors:J?.cors??!1,prettyJson:J?.prettyJson??!1,onError:J?.onError},Q=$.list().map((K)=>({method:K.transport?.rest?.method??(K.meta.kind==="query"?"GET":"POST"),path:GOD(W.basePath,K.transport?.rest?.path??P1$(K.meta.key,K.meta.version)),name:K.meta.key,version:K.meta.version})),z=new Map;for(let K of Q)z.set(`${K.method} ${K.path}`,K);let Z=(K,I,j)=>{let b=W.prettyJson?JSON.stringify(I,null,W.prettyJson):JSON.stringify(I),_={"content-type":"application/json; charset=utf-8"};return new Response(b,{status:K,headers:j?{..._,...j}:_})};return async function(I){let j=new URL(I.url),b=`${I.method.toUpperCase()} ${j.pathname}`;if(W.cors&&I.method.toUpperCase()==="OPTIONS"){let T=aU$(W.cors===!0?{}:W.cors);return new Response(null,{status:204,headers:{...T,"content-length":"0"}})}let _=z.get(b);if(!_){let T={};if(W.cors)Object.assign(T,aU$(W.cors===!0?{}:W.cors));return Z(404,{error:"NotFound",path:j.pathname},T)}try{let T={};if(_.method==="GET")if(j.searchParams.has("input")){let Z$=j.searchParams.get("input");T=Z$?JSON.parse(Z$):{}}else{let Z$={};for(let[M$,T$]of j.searchParams.entries())Z$[M$]=T$;T=Z$}else{let Z$=I.headers.get("content-type")||"";if(Z$.includes("application/json"))T=await I.json();else if(Z$.includes("application/x-www-form-urlencoded")){let M$=await I.formData();T=Object.fromEntries(M$.entries())}else if(!Z$)T={};else return Z(415,{error:"UnsupportedMediaType",contentType:Z$})}let x=X(I),n=await $.execute(_.name,_.version,T,x),i={};if(W.cors)Object.assign(i,aU$(W.cors===!0?{}:W.cors));return Z(200,n,i)}catch(T){if(W.onError){let n=W.onError(T),i={};if(W.cors)Object.assign(i,aU$(W.cors===!0?{}:W.cors));return Z(n.status,n.body,i)}let x={};if(W.cors)Object.assign(x,aU$(W.cors===!0?{}:W.cors));if(T?.issues)return Z(400,{error:"ValidationError",issues:T.issues},x);if(typeof T?.message==="string"&&T.message.startsWith("PolicyDenied"))return Z(403,{error:"PolicyDenied"},x);return Z(500,{error:"InternalError"},x)}}}var qo=l$(()=>{of()});function H20($,X,J,W){let Q=qT(X,(z)=>J({request:z,store:$.store}),W);for(let z of X.list()){let Z=z.transport?.rest?.method??(z.meta.kind==="query"?"GET":"POST"),K=(W?.basePath??"")+(z.transport?.rest?.path??`/${z.meta.key.replace(/\./g,"/")}/v${z.meta.version}`);$[Z.toLowerCase()](K,({request:I})=>Q(I))}if(W?.cors)$.options("*",({request:z})=>Q(z));return $}var G20=l$(()=>{qo()});function z20($,X,J,W){let Q=$.Router();for(let z of X.list()){let Z=z.transport?.rest?.method??(z.meta.kind==="query"?"GET":"POST"),K=(W?.basePath??"")+(z.transport?.rest?.path??`/${z.meta.key.replace(/\./g,"/")}/v${z.meta.version}`);Q[Z.toLowerCase()](K,async(I,j)=>{let b=new URL(`${I.protocol}://${I.get("host")}${I.originalUrl}`),_=new Request(b.toString(),{method:Z,headers:Object.fromEntries(Object.entries(I.headers).map(([n,i])=>[n,String(i)])),body:Z==="POST"?JSON.stringify(I.body??{}):void 0}),T=await qT(X,()=>J(I),W)(_);j.status(T.status),T.headers.forEach((n,i)=>j.setHeader(i,n));let x=await T.text();j.send(x)})}if(W?.cors)Q.options("*",(z,Z)=>{let K=new Headers;new Response(null,{status:204}).headers.forEach((I,j)=>K.set(j,I)),Z.status(204).send()});return Q}var U20=l$(()=>{qo()});function B20($,X,J){let W=qT($,X,J);return async function(z){return W(z)}}var Z20=l$(()=>{qo()});function O20($,X,J){return async function(Q,z){let Z=`${Q.headers["x-forwarded-proto"]??"http"}://${Q.headers.host}${Q.url}`,K=Q.method?.toUpperCase()||"GET",I=new Request(Z,{method:K,headers:Object.fromEntries(Object.entries(Q.headers).map(([_,T])=>[_,String(T)])),body:K==="POST"?JSON.stringify(Q.body??{}):void 0}),j=await qT($,()=>X(Q),J)(I);z.status(j.status),j.headers.forEach((_,T)=>z.setHeader(T,_));let b=await j.text();z.send(b)}}var q20=l$(()=>{qo()});var HL6=l$(()=>{$_$()});var GL6=l$(()=>{MU0();$_$();HL6();qo();G20();U20();Z20();q20()});function zOD($,X){if($.key!==X.key)return!1;if(X.version!=null&&$.version!==X.version)return!1;return!0}function V20($){return F20($.meta.key,$.meta.version)}function w20($){return $}var zL6,F20=($,X)=>`${$}.v${X}`,K20=class{items=new Map;register($){let X=F20($.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(F20($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||zL6.compareVersions(W.meta.version,J.meta.version)>0)J=W}return J}satisfies($,X){if($.optional)return!0;if(X?.some((W)=>zOD(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 A20=l$(()=>{zL6=XY(kC(),1)});var DJ,sd,UL6,I20,BL6;var mO=l$(()=>{DJ={Idea:"idea",InCreation:"in_creation",Experimental:"experimental",Beta:"beta",Stable:"stable",Deprecated:"deprecated"},sd={PlatformCore:"platform.core",PlatformSigil:"platform.sigil",PlatformMarketplace:"platform.marketplace",PlatformMessaging:"platform.messaging",PlatformContent:"platform.content",PlatformFeatureFlags:"platform.featureflags",PlatformFinance:"platform.finance"},UL6=sd,I20={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"},BL6=I20});function E20($){return $.register(D_$).register(X_$).register(Y_$)}var L20,j20,D_$,X_$,Y_$;var M20=l$(()=>{mO();L20=["platform.finance"],j20=["open-banking","finance"],D_$={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:[...L20],tags:[...j20],stability:DJ.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."}]},X_$={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:[...L20],tags:[...j20,"transactions"],stability:DJ.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."}]},Y_$={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:[...L20],tags:[...j20,"balances"],stability:DJ.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 ZL6=l$(()=>{A20();M20()});var UOD,J_$,W_$,Q_$,P20;var N20=l$(()=>{mO();sE();UOD=["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"],J_$=JH.enum(UOD),W_$=JH.object({path:JH.string().min(1),type:JH.string().min(1),content:JH.string().optional()}),Q_$=JH.object({key:JH.string().min(1),type:J_$,version:JH.string(),title:JH.string().min(1),description:JH.string().min(1),meta:JH.object({stability:JH.enum([DJ.Idea,DJ.InCreation,DJ.Experimental,DJ.Beta,DJ.Stable,DJ.Deprecated]),owners:JH.array(JH.string().min(1)).default([]),tags:JH.array(JH.string().min(1)).default([])}),dependencies:JH.array(JH.string().min(1)).optional(),registryDependencies:JH.array(JH.string().min(1)).optional(),files:JH.array(W_$).min(1),schema:JH.object({input:JH.unknown().optional(),output:JH.unknown().optional()}).optional()}),P20=JH.object({$schema:JH.string().min(1).optional(),name:JH.string().min(1),homepage:JH.string().min(1).optional(),items:JH.array(Q_$)})});var OL6=l$(()=>{N20()});var FT=($)=>("ref"in $),aZ=($)=>({...$,meta:{...$.meta,kind:"command"},policy:{...$.policy,idempotent:$.policy?.policy?.idempotent??!1}}),Nw=($)=>({...$,meta:{...$.meta,kind:"query"},policy:{...$.policy,idempotent:!0}});var KT=()=>{};function ed($,X){return`${$}.v${X}`}var bw;var H_$=l$(()=>{mL();xQ0();KT();bw=class extends vB{handlers=new Map;constructor($){super("operation",$)}bind($,X){let J=ed($.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(ed(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 Q=this.get($,X);if(!Q)throw Error(`Spec not found for ${$}${X?`.v${X}`:""}`);let z=await W.specVariantResolver?.resolve({name:Q.meta.key,version:Q.meta.version,kind:Q.meta.kind},W)??Q,Z=ed(z.meta.key,z.meta.version),K=this.handlers.get(Z);if(!K){let i=ed(Q.meta.key,Q.meta.version);K=this.handlers.get(i),Z=i}if(!K)throw Error(`No handler bound for ${Z}`);let I=z.io.input?.getZod().parse(J);if(W.decide){let[i,Z$]=z.meta.key.split(".");if(!i||!Z$)throw Error(`Invalid spec name: ${z.meta.key}`);let M$=await W.decide({service:i,command:Z$,version:z.meta.version,actor:W.actor??"anonymous",channel:W.channel,roles:W.roles,organizationId:W.organizationId,userId:W.userId,flags:[]});if(M$.effect==="deny")throw Error(`PolicyDenied: ${z.meta.key}.v${z.meta.version}`);if(M$.rateLimit&&W.rateLimit){let T$=M$.rateLimit.key??"default",_$=M$.rateLimit.rpm??60;await W.rateLimit(T$,1,_$)}}let j=new Map;if(z.sideEffects?.emits)for(let i of z.sideEffects.emits)if(FT(i)){let Z$=W.eventSpecResolver?.get(i.ref.key,i.ref.version);if(Z$)j.set(`${i.ref.key}.v${i.ref.version}`,Z$.payload)}else j.set(`${i.key}.v${i.version}`,i.payload);let b=async(i,Z$,M$)=>{let T$=wR$(i,Z$),_$=j.get(T$);if(!_$)throw Error(`UndeclaredEvent: ${T$} not allowed by ${ed(z.meta.key,z.meta.version)}`);let D0=_$.getZod().parse(M$);await W.eventPublisher?.({key:i,version:Z$,payload:D0,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,T=async(i,Z$)=>{if(!_||!i?.event)return;try{let M$=i.properties?.(Z$)??{};await _.track(i.event.key,i.event.version??"1.0.0",M$,{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(M$){}},x;try{x=await K(I,{...W,__emitGuard__:b})}catch(i){if(z.telemetry?.failure)await T(z.telemetry.failure,{input:I??J,error:i});throw i}if(z.telemetry?.success)await T(z.telemetry.success,{input:I??J,output:x});let n=z.io.output;if(n?.getZod)return n.getZod().parse(x);return x}}});function qL6($,X){return{ref:async(J,W)=>{await X.__emitGuard__?.(J.meta.key,J.meta.version,W)},key:async(J,W,Q)=>{await X.__emitGuard__?.(J,W,Q)},object:async(J)=>{await X.__emitGuard__?.(J.key,J.version,J.payload)}}}function b20($,X,J){return $.register(X).bind(X,J)}function FL6($,X){return{spec:$,handler:X,install:(J)=>b20(J,$,X)}}var KL6=l$(()=>{H_$()});function AL6($,X){return`${$.replace(/\./g,"_")}_v${X}`}function VL6($,X,J){return`${$}_${AL6(X,J)}`}function BOD($,X){return(X??($==="query"?"GET":"POST")).toLowerCase()}function ZOD($){let X=$.transport?.rest?.path??P1$($.meta.key,$.meta.version);return X.startsWith("/")?X:`/${X}`}function ZD$($,X={}){let J=$.list().filter((Q)=>Q.meta.kind==="command"||Q.meta.kind==="query").slice().sort((Q,z)=>{let Z=Q.meta.key.localeCompare(z.meta.key);return Z!==0?Z:wL6.compareVersions(Q.meta.version,z.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 Q of J){let z=xr(Q),Z=BOD(Q.meta.kind,Q.transport?.rest?.method),K=ZOD(Q),I=AL6(Q.meta.key,Q.meta.version),j=W.paths[K]??={},b={operationId:I,summary:Q.meta.description??Q.meta.key,description:Q.meta.description,tags:Q.meta.tags??[],"x-contractspec":{name:Q.meta.key,version:Q.meta.version,kind:Q.meta.kind},responses:{}};if(z.input){let T=VL6("Input",Q.meta.key,Q.meta.version);W.components.schemas[T]=z.input,b.requestBody={required:!0,content:{"application/json":{schema:{$ref:`#/components/schemas/${T}`}}}}}let _={};if(z.output){let T=VL6("Output",Q.meta.key,Q.meta.version);W.components.schemas[T]=z.output,_["200"]={description:"OK",content:{"application/json":{schema:{$ref:`#/components/schemas/${T}`}}}}}else _["200"]={description:"OK"};b.responses=_,j[Z]=b}return W}var wL6;var IL6=l$(()=>{of();wL6=XY(kC(),1)});function LL6($){return $}var jL6=()=>{};var EL6,ML6=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,Q]of this.prompts.entries()){if(!W.startsWith(`${$}.v`))continue;if(!J||EL6.compareVersions(Q.meta.version,J.meta.version)>0)J=Q}return J}};var PL6=l$(()=>{EL6=XY(kC(),1)});var VT=l$(()=>{KT();H_$()});function NL6($){return $}function RL6($,X){return{kind:"resource_ref",uriTemplate:$,varName:X.varName??"id",graphQLType:X.graphQLType,many:X.many}}function CL6($){let X=$;return!!X&&X.kind==="resource_ref"&&typeof X.uriTemplate==="string"}var bL6=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 Q=[...X.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map((Z)=>Z[1]),z={};return Q.forEach((Z,K)=>{let I=W[K+1];if(Z&&I)z[Z]=decodeURIComponent(I)}),{tmpl:X,params:z}}}};var TL6=()=>{};function OOD($){if(YM($))return $.config.name;return"AnonymousSchema_"+Math.random().toString(36).substring(7)}var SL6=class{items=new Map;constructor($){if($)$.forEach((X)=>this.register(X))}register($){let X=OOD($);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 _L6=l$(()=>{iL()});var R20,C20,vL6,T20,kL6,S20,yL6,_20,v20,xL6;var fL6=l$(()=>{mO();KT();VT();iL();R20=new $J({name:"SaveOnboardingDraftInput",description:"Input for saving onboarding draft",fields:{data:{type:v1.JSON(),isOptional:!1}}}),C20=new $J({name:"SaveOnboardingDraftOutput",description:"Output for saving onboarding draft",fields:{id:{type:v1.ID(),isOptional:!1},organizationId:{type:v1.ID(),isOptional:!1}}}),vL6=aZ({meta:{key:"base.onboarding.saveDraft",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:R20,output:C20},policy:{auth:"user",escalate:null},transport:{gql:{field:"saveOnboardingDraft"},rest:{method:"POST"}}}),T20=new $J({name:"GetOnboardingDraftOutput",description:"Onboarding draft payload",fields:{id:{type:v1.ID(),isOptional:!0},organizationId:{type:v1.ID(),isOptional:!0},data:{type:v1.JSON(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!0},updatedAt:{type:v1.DateTime(),isOptional:!0}}}),kL6=Nw({meta:{key:"base.onboarding.getDraft",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:T20},policy:{auth:"user",escalate:null},transport:{gql:{field:"getOnboardingDraft"},rest:{method:"GET"}}}),S20=new $J({name:"DeleteOnboardingDraftOutput",description:"Result of delete operation",fields:{ok:{type:v1.Boolean(),isOptional:!1}}}),yL6=aZ({meta:{key:"base.onboarding.deleteDraft",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:S20},policy:{auth:"user",escalate:null},transport:{gql:{field:"deleteOnboardingDraft"},rest:{method:"POST"}}}),_20=new $J({name:"CompleteOnboardingBaseInput",description:"Input for completing onboarding",fields:{data:{type:v1.JSON(),isOptional:!1}}}),v20=new $J({name:"CompleteOnboardingBaseOutput",description:"Result of onboarding completion",fields:{success:{type:v1.Boolean(),isOptional:!1},userId:{type:v1.ID(),isOptional:!0},organizationId:{type:v1.ID(),isOptional:!0}}}),xL6=aZ({meta:{key:"base.onboarding.complete",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:_20,output:v20},policy:{auth:"user",escalate:null},transport:{gql:{field:"completeOnboarding"},rest:{method:"POST"}}})});function k20($){return $}var y20=()=>{};function x20($){return`${$.meta.key}.v${$.meta.version}`}var f20;var u20=l$(()=>{mL();f20=class extends vB{constructor($){super("data-view",$)}}});var uL6=l$(()=>{y20();u20()});var g20;var G_$=l$(()=>{mL();g20=class extends vB{constructor($){super("policy",$)}}});function qOD($){if($.startsWith("write"))return"write";return"read"}function gL6($,X){let J=$.subject;if(!J)return!0;if(J.roles?.length){let W=X.roles??[];if(!J.roles.some((Q)=>W.includes(Q)))return!1}if(J.attributes){let W=X.attributes??{};if(!dL6(J.attributes,W))return!1}return!0}function hL6($,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((Q)=>W.includes(Q)))return!1}if(J.attributes){let W=X.attributes??{};if(!dL6(J.attributes,W))return!1}return!0}function FOD($,X){if(!$.flags?.length)return!0;let J=new Set;if(X.flags)for(let Q of X.flags)J.add(Q);let W=X.subject.attributes?.featureFlags;if(Array.isArray(W))for(let Q of W)J.add(Q);return $.flags.every((Q)=>J.has(Q))}function KOD($,X){if(!$||$.length===0)return!0;let J=X.subject.relationships??[],W=jOD(X.resource),Q=X.resource.type;return $.every((z)=>J.some((Z)=>{if(Z.relation!==z.relation)return!1;if(!(!z.objectType||Z.objectType===z.objectType||z.objectType===Q))return!1;if(!z.objectId)return!0;if(z.objectId==="$resource"){if(W)return Z.object===W;return Z.object===Q||Z.objectType===Q}return Z.object===z.objectId}))}function mL6($,X){if(!$.conditions||$.conditions.length===0)return!0;return $.conditions.every((J)=>IOD(J.expression,X))}function dL6($,X){for(let[J,W]of Object.entries($)){let Q=X[J];if(W.exists&&typeof Q>"u")return!1;if(typeof W.equals<"u"){if(Q!==W.equals)return!1}if(W.oneOf&&!W.oneOf.includes(Q))return!1}return!0}function VOD($,X,J){if(!$.requiresConsent?.length)return[];let W=new Set(J.consents??[]),Q=$.requiresConsent.filter((z)=>!W.has(z));if(Q.length===0)return[];return wOD(X,Q)}function wOD($,X){let J=$.consents??[];return X.map((W)=>{return J.find((Q)=>Q.id===W)??{id:W,scope:"unspecified",purpose:"unspecified",description:`Consent "${W}" required by ${$.meta.key}`,required:!0}})}function AOD($,X,J){if(!$.rateLimit)return;let W=typeof $.rateLimit==="string"?(X.rateLimits??[]).find((Q)=>Q.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 IOD($,X){let J=$.trim();if(!J)return!0;let W={subject:X.subject,resource:X.resource,context:X.context??{}};try{let Q=Function("subject","resource","context",`return (${LOD(J)});`)(W.subject,W.resource,W.context);return Boolean(Q)}catch(Q){return!1}}function LOD($){return $.replace(/&&/g,"&&").replace(/\|\|/g,"||")}function jOD($){if($.id)return $.id;let X=$.attributes?.id;if(typeof X==="string")return X;if(typeof X==="number")return String(X)}var h20=class{constructor($){this.registry=$}decide($){let X=this.resolvePolicies($.policies),J,W,Q;for(let K of X){let I=this.matchRuleSet(K,$);if(!I)continue;if(I.rule.effect==="deny")return{effect:"deny",reason:I.rule.reason??K.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??K.meta.key;if(!W&&I.rateLimit)W=I.rateLimit;if(!Q&&I.rule.escalate)Q=I.rule.escalate}}let z=this.evaluateFields(X,$),Z=X.find((K)=>K.pii)?.pii;return{effect:J?"allow":"deny",reason:J,rateLimit:W,escalate:typeof Q>"u"?void 0:Q,fieldDecisions:z.length?z:void 0,pii:Z,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(!gL6(W,X.subject))continue;if(!hL6(W,X.resource))continue;if(!FOD(W,X))continue;if(!KOD(W.relationships,X))continue;if(!mL6(W,X))continue;let Q={rule:W,missingConsents:VOD(W,$,X),rateLimit:AOD(W,$,X)};if(W.effect==="deny")return Q;if(W.effect==="allow"&&!J)J=Q}return J}evaluateFields($,X){let J=new Map;for(let W of $){if(!W.fieldPolicies)continue;for(let Q of W.fieldPolicies){if(!Q.actions.includes(qOD(X.action)))continue;if(!gL6(Q,X.subject))continue;if(!hL6(Q,X.resource))continue;if(!mL6(Q,X))continue;let z=J.get(Q.field);if(Q.effect==="deny")J.set(Q.field,{field:Q.field,effect:"deny",reason:Q.reason??W.meta.key});else if(!z)J.set(Q.field,{field:Q.field,effect:"allow",reason:Q.reason??W.meta.key})}}return[...J.values()]}};var m20=l$(()=>{G_$()});function z_$($,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 EOD($,X,J){if(J.length===0)return X;let W=new Set(X.map((z)=>z.id)),Q=[...X];for(let z of J){if(W.has(z))continue;let Z=MOD($,z);if(Z)Q.push(Z),W.add(Z.id)}return Q}function MOD($,X){for(let J of $){let W=J.consents?.find((Q)=>Q.id===X);if(W)return W}return{id:X,scope:"unspecified",purpose:"unspecified",description:`Consent "${X}" returned by OPA`,required:!0}}var d20=class{constructor($,X){this.client=$,this.options=X}async evaluate($,X,J){let W=z_$($,X,J),Q=await this.client.evaluate(this.options.decisionPath,W),z=this.options.mapResult?this.options.mapResult(Q):Q;if(!z)return{...J,evaluatedBy:J.evaluatedBy??"engine"};let Z=z,K=EOD(X,J.requiredConsents??[],Z.requiredConsents??[]);return{...J,effect:Z.effect??J.effect,reason:Z.reason??J.reason,fieldDecisions:Z.fieldDecisions??J.fieldDecisions,requiredConsents:K.length?K:void 0,evaluatedBy:"opa"}}};var l20=()=>{};var lL6=l$(()=>{G_$();m20();l20()});function iL6($){return{key:$.meta.key,version:$.meta.version}}var cL6;var pL6=l$(()=>{mL();cL6=class extends vB{constructor($){super("theme",$)}}});var c20,nL6=($,X)=>`${$}.v${X}`,rL6=class{items=new Map;register($){let X=nL6($.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:c20.compareVersions($.meta.version,X.meta.version)})}get($,X){if(X!=null)return this.items.get(nL6($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||c20.compareVersions(W.meta.version,J.meta.version)>0)J=W}return J}};var oL6=l$(()=>{c20=XY(kC(),1)});function p20($){return POD($)}var aL6,POD=($)=>`${$.key}.v${$.version}`,i20;var n20=l$(()=>{mL();aL6=XY(kC(),1),i20=class extends vB{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||aL6.compareVersions(W.version,J.version)>0)J=W}return J}getSpecForEvent($,X){return this.specByEventKey.get(`${$}.v${X}`)}}});import{randomUUID as NOD}from"crypto";var bOD=($)=>{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"},r20=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 Q=this.registry.findEventDef($,X);if(!Q)return!1;let z=this.registry.getSpecForEvent(Q.key,Q.version);if(!z)return!1;if(!this.shouldSample(Q.sampling??z.config?.defaultSamplingRate))return!1;let Z=this.redactProperties(Q,J),K={id:NOD(),name:Q.key,version:Q.version,occurredAt:this.clock().toISOString(),properties:Z,privacy:Q.privacy,context:W,tags:Q.tags,spec:z,definition:Q};return await Promise.all([...this.providers.values()].map((I)=>I.send(K))),this.anomalyMonitor?.observe(K),!0}shouldSample($){if(typeof $==="number")return this.random()<$;if(!$)return!0;return this.random()<$.rate}redactProperties($,X){let J={};for(let[W,Q]of Object.entries(X)){let z=$.properties[W];if(!z){J[W]=Q;continue}if(z.redact||z.pii||$.privacy==="sensitive")J[W]=bOD(Q);else J[W]=Q}return J}};var o20=()=>{};var a20=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 Q of X.thresholds){let z=this.extractMetric($,Q.metric);if(typeof z!=="number")continue;if(typeof Q.min==="number"&&z<Q.min)this.emit($,X,Q.metric,z,"min");if(typeof Q.max==="number"&&z>Q.max)this.emit($,X,Q.metric,z,"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,Q){this.onAnomaly?.({dispatch:$,threshold:X,metric:J,value:W,type:Q})}reset(){this.samples.clear()}};var t20=()=>{};var tL6=l$(()=>{n20();o20();t20()});function e20($){return eL6($)}var sL6,eL6=($)=>`${$.key}.v${$.version}`,s20=class{items=new Map;register($){let X=eL6($.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||sL6.compareVersions(W.meta.version,J.meta.version)>0)J=W}return J}};var $O0=l$(()=>{sL6=XY(kC(),1)});import{deepStrictEqual as ROD}from"assert";var OD$=class{constructor($){this.config=$}async run($){let X=[],J=0,W=0;for(let Q of $.scenarios){await this.config.beforeEach?.(Q);let z=await this.runScenario($,Q);if(X.push(z),z.status==="passed")J+=1;else W+=1;await this.config.afterEach?.(Q,z)}return{spec:$,scenarios:X,passed:J,failed:W}}async runScenario($,X){let J=[];try{let W=await this.createContext(),Q=[...$.fixtures??[],...X.given??[]],z=[];for(let I of Q)await this.executeOperation(I,W,z);let Z=await this.executeOperation(X.when,W,z),K=X.then??[];for(let I of K){let j=this.evaluateAssertion(I,Z,z);J.push(j)}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(Q)=>{J.push({key:Q.key,version:Q.version,payload:Q.payload}),await X.eventPublisher?.(Q)}};try{return{output:await this.config.registry.execute($.operation.key,$.operation.version,$.input??null,W),events:J}}catch(Q){return{error:Q,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 ROD(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 Q=X.filter((z)=>z.key===W.key&&z.version===W.version).length;if(typeof W.min==="number"&&Q<W.min||typeof W.max==="number"&&Q>W.max)J.push(`Event ${W.key}.v${W.version} occurred ${Q} times (expected ${W.min??0} - ${W.max??"∞"})`);else if(typeof W.min>"u"&&typeof W.max>"u"&&Q===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 DO0=l$(()=>{ZM()});var XO0=l$(()=>{$O0();DO0()});function Dj6($){return COD($)}var COD=($)=>`${$.key}.v${$.version}`,$j6;var Xj6=l$(()=>{mL();$j6=class extends vB{constructor($){super("experiment",$)}}});import{createHash as TOD}from"node:crypto";var Yj6=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((z,Z)=>z+(Z.weight??1),0),Q=0;for(let z of J)if(Q+=z.weight??1,W<=Q)return z;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=TOD("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 Q=$.variants.find((z)=>z.id===W.variantId);if(!Q)continue;if(typeof W.percentage==="number"){if(this.randomSeed(X,`rule-${W.variantId}`)>W.percentage)continue}return Q}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 Jj6=()=>{};function Qj6($){return SOD($)}var SOD=($)=>`${$.key}.v${$.version}`,Wj6;var Hj6=l$(()=>{mL();Wj6=class extends vB{constructor($){super("app-config",$)}}});function tU$($,X,J={}){let W=_OD($.capabilities,X.capabilities),Q=vOD($.features,X.features),z=Gj6($.dataViews??{},X.dataViewOverrides),Z=Gj6($.workflows??{},X.workflowOverrides),K=kOD($.policies??[],X.additionalPolicies??[]),I=yOD($.theme,X.themeOverride),j=xOD($.telemetry,X.telemetryOverride),b=fOD($.experiments,X.experiments),_=hOD($.featureFlags??[],X.featureFlags??[]),T=mOD($.routes??[],X.routeOverrides??[]),{resolved:x}=Bj6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs),n=lOD(X.knowledge,J.knowledgeSpaces,J.knowledgeSources),i=uOD($.branding,X),Z$=gOD($.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:Q,dataViews:z,workflows:Z,policies:K,theme:I,telemetry:j,experiments:b,featureFlags:_,routes:T,integrations:x,knowledge:n,translation:Z$,branding:i,notes:X.notes??$.notes}}function Uj6($,X,J,W={}){let Q=tU$($,X,J),z=[],Z=Bj6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs);Q.integrations=Z.resolved,z.push(...Z.missing),z.push(...cOD(X.knowledge??[],J.knowledgeSpaces,J.knowledgeSources));let K=iOD(Q.capabilities.enabled,J.capabilities,z),I=pOD(Q.features.include,J.features,z),j=zj6(Q.dataViews,J.dataViews,"dataView",z),b=zj6(Q.workflows,J.workflows,"workflow",z),_=nOD(Q.policies,J.policies,z),{theme:T,fallbacks:x,themeMissing:n}=rOD(Q.theme,J.themes);z.push(...n);let{telemetry:i,telemetryMissing:Z$}=oOD(Q.telemetry,J.telemetry);z.push(...Z$);let M$=aOD(Q.experiments,J.experiments,z);if(W.strict&&z.length>0){let T$=z.map((_$)=>`${_$.type}:${_$.identifier}`).join(", ");throw Error(`composeAppConfig: missing references -> ${T$}`)}return{resolved:Q,capabilities:K,features:I,dataViews:j,workflows:b,policies:_,theme:T,themeFallbacks:x,telemetry:i,experiments:M$,integrations:Q.integrations,knowledge:Q.knowledge,missing:z}}function _OD($,X){let J=$l([...$?.enabled??[],...X?.enable??[]],qD$),W=$l([...$?.disabled??[],...X?.disable??[]],qD$),Q=new Set(W.map(qD$));return{enabled:J.filter((z)=>!Q.has(qD$(z))),disabled:W}}function vOD($,X){let J=$l([...$?.include??[],...X?.include??[]],U_$),W=$l([...$?.exclude??[],...X?.exclude??[]],U_$),Q=new Set(W.map(U_$));return{include:J.filter((z)=>!Q.has(U_$(z))),exclude:W}}function Gj6($,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 kOD($,X){return $l([...$,...X],YO0)}function yOD($,X){if(!$&&!X)return;let J=X?.primary??$?.primary;if(!J)return;return{primary:J,fallbacks:X?.fallbacks??$?.fallbacks??[]}}function xOD($,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=Zj6([...J.disabledEvents??[],...X.disabledEvents]);if(X?.samplingOverrides)J.samplingOverrides={...J.samplingOverrides??{},...X.samplingOverrides};if(!J.spec&&!J.disabledEvents?.length)return;return J}function fOD($,X){let J=$?.active??[],W=$?.paused??[],Q=X?.active,z=X?.paused,Z=Q&&Q.length>0?Q:J,K=z&&z.length>0?z:W,I=$l(Z,Fo),j=$l(K,Fo),b=new Set(I.map(Fo));return j=j.filter((_)=>!b.has(Fo(_))),{catalog:$l([...J,...W,...Q??[],...z??[]],Fo),active:I,paused:j}}function uOD($,X){let{branding:J,meta:W}=X,Q="app.localhost",z=J?.customDomain??(J?.subdomain?`${J.subdomain}.app.localhost`:`${W.tenantId}.app.localhost`),Z=[];if(X.locales?.defaultLocale)Z.push(X.locales.defaultLocale);if(J?.appName)Z.push("default","en");let K;if(J?.appName){for(let T of Z){let x=J.appName[T];if(x){K=x;break}}if(!K){let[,T]=Object.entries(J.appName)[0]??[];if(typeof T==="string")K=T}}if(!K)K=$?.appNameKey??W.appId;let I=new Map,j=(T)=>{if(!T)return;for(let x of T){if(!x?.type)continue;if("url"in x&&x.url)I.set(x.type,x.url)}};j($?.assets),j(J?.assets);let b={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:K,assets:b,colors:_,domain:z}}function gOD($,X,J){let W=X?.defaultLocale??"en";return{defaultLocale:W,supportedLocales:Zj6([W,...X?.enabledLocales??[]]),blueprintCatalog:$,tenantOverrides:J?.entries??[]}}function hOD($,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 mOD($,X){let J=new Map;for(let W of $)J.set(W.path,{...W});for(let W of X){let Q=J.get(W.path)??{path:W.path};if(W.label!==void 0)if(W.label===null)delete Q.label;else Q.label=W.label;if(W.dataView!==void 0)if(W.dataView===null)delete Q.dataView;else Q.dataView=W.dataView;if(W.workflow!==void 0)if(W.workflow===null)delete Q.workflow;else Q.workflow=W.workflow;if(W.guard!==void 0)if(W.guard===null)delete Q.guard;else Q.guard=W.guard;if(W.featureFlag!==void 0)if(W.featureFlag===null)delete Q.featureFlag;else Q.featureFlag=W.featureFlag;if(W.experiment!==void 0)if(W.experiment===null)delete Q.experiment;else Q.experiment=W.experiment;J.set(Q.path,Q)}return[...J.values()]}function Bj6($,X,J,W){let Q=[],z=[],Z=new Set,K=(T)=>{let x=`${T.type}:${T.identifier}`;if(Z.has(x))return;Z.add(x),z.push(T)},I=$??[],j=new Map;for(let T of I)j.set(T.slotId,T);let b=new Map;for(let T of X??[]){if(!j.get(T.slotId)){K({type:"integrationSlot",identifier:`slot:${T.slotId}`});continue}let x=b.get(T.slotId);if(x)x.push(T);else b.set(T.slotId,[T])}for(let T of I){let x=b.get(T.slotId)??[];if(T.required&&x.length===0)K({type:"integrationSlot",identifier:`slot:${T.slotId}`})}if(!J||!W)return{resolved:Q,missing:z};let _=new Map;for(let T of J)_.set(T.meta.id,T);for(let T of I){let x=b.get(T.slotId)??[];if(x.length===0)continue;let n=[...x].sort((Z$,M$)=>{let T$=Z$.priority??Number.MAX_SAFE_INTEGER,_$=M$.priority??Number.MAX_SAFE_INTEGER;if(T$===_$)return 0;return T$<_$?-1:1}),i=!1;for(let Z$ of n){let M$=_.get(Z$.connectionId);if(!M$){K({type:"integrationConnection",identifier:`connection:${Z$.connectionId}`});continue}let T$=W.get(M$.meta.integrationKey,M$.meta.integrationVersion);if(!T$){K({type:"integrationSpec",identifier:`spec:${M$.meta.integrationKey}.v${M$.meta.integrationVersion}`});continue}if(T$.meta.category!==T.requiredCategory){K({type:"integrationSpec",identifier:`spec:${T$.meta.key}.category`});continue}if(!T$.supportedModes.includes(M$.ownershipMode)){K({type:"integrationSpec",identifier:`spec:${T$.meta.key}.mode:${M$.ownershipMode}`});continue}if(T.allowedModes&&T.allowedModes.length>0&&!T.allowedModes.includes(M$.ownershipMode)){K({type:"integrationConnection",identifier:`connection:${M$.meta.id}:mode`});continue}if(T.requiredCapabilities&&!T.requiredCapabilities.every((_$)=>dOD(T$,_$))){K({type:"integrationSpec",identifier:`spec:${T$.meta.key}.capabilities`});continue}Q.push({slot:T,binding:Z$,connection:M$,spec:T$}),i=!0;break}if(!i&&T.required)K({type:"integrationSlot",identifier:`slot:${T.slotId}`})}return{resolved:Q,missing:z}}function dOD($,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 lOD($,X,J){if(!$?.length||!X)return[];let W=J??[];return $.map((Q)=>{let z=X.get(Q.spaceKey,Q.spaceVersion);if(!z)return null;return{binding:Q,space:z,sources:W.filter((Z)=>{if(Z.meta.spaceKey!==Q.spaceKey)return!1;if(Q.spaceVersion!=null)return Z.meta.spaceVersion===Q.spaceVersion;return!0})}}).filter((Q)=>Q!==null)}function cOD($,X,J){if(!$.length||!X)return[];let W=[],Q=J??[];for(let z of $){if(!X.get(z.spaceKey,z.spaceVersion)){W.push({type:"knowledgeSpace",identifier:z.spaceVersion?`${z.spaceKey}@${z.spaceVersion}`:z.spaceKey});continue}if(J){if(Q.filter((Z)=>{if(Z.meta.spaceKey!==z.spaceKey)return!1;if(z.spaceVersion!=null)return Z.meta.spaceVersion===z.spaceVersion;return!0}).length===0)W.push({type:"knowledgeSource",identifier:z.spaceVersion?`${z.spaceKey}@${z.spaceVersion}`:z.spaceKey})}}return W}function iOD($,X,J){if(!X){if($.length>0)for(let Q of $)J.push({type:"capability",identifier:qD$(Q)});return[]}let W=[];for(let Q of $){let z=X.get(Q.key,Q.version);if(!z){J.push({type:"capability",identifier:qD$(Q)});continue}W.push(z)}return W}function pOD($,X,J){if(!X){if($.length>0)for(let Q of $)J.push({type:"feature",identifier:Q.key});return[]}let W=[];for(let Q of $){let z=X.get(Q.key);if(!z){J.push({type:"feature",identifier:Q.key});continue}W.push(z)}return W}function zj6($,X,J,W){if(!X){if(Object.keys($).length>0)for(let[z,Z]of Object.entries($))W.push({type:J,identifier:`${z} -> ${B_$(Z)}`});return{}}let Q={};for(let[z,Z]of Object.entries($)){let K=X.get(Z.key,Z.version);if(!K){W.push({type:J,identifier:`${z} -> ${B_$(Z)}`});continue}Q[z]=K}return Q}function nOD($,X,J){if(!X){if($.length>0)for(let Q of $)J.push({type:"policy",identifier:YO0(Q)});return[]}let W=[];for(let Q of $){let z=X.get(Q.key,Q.version);if(!z){J.push({type:"policy",identifier:YO0(Q)});continue}W.push(z)}return W}function rOD($,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 z of $.fallbacks??[])J.push({type:"theme",identifier:`${z.key}.v${z.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 Q=[];for(let z of $.fallbacks??[]){let Z=X.get(z.key,z.version);if(!Z){J.push({type:"theme",identifier:`${z.key}.v${z.version}`});continue}Q.push(Z)}return{theme:W??void 0,fallbacks:Q,themeMissing:J}}function oOD($,X){let J=[];if(!$?.spec)return{telemetry:void 0,telemetryMissing:J};if(!X)return J.push({type:"telemetry",identifier:B_$($.spec)}),{telemetry:void 0,telemetryMissing:J};let W=X.get($.spec.key,$.spec.version);if(!W)J.push({type:"telemetry",identifier:B_$($.spec)});return{telemetry:W??void 0,telemetryMissing:J}}function aOD($,X,J){let W=(Q)=>{if(Q.length===0)return[];if(!X){for(let Z of Q)J.push({type:"experiment",identifier:Fo(Z)});return[]}let z=[];for(let Z of Q){let K=X.get(Z.key,Z.version);if(!K){J.push({type:"experiment",identifier:Fo(Z)});continue}z.push(K)}return z};return{active:W($.active),paused:W($.paused)}}function qD$($){return`${$.key}${$.version?`.v${$.version}`:""}`}function U_$($){return $.key}function B_$($){return`${$.key}${$.version?`.v${$.version}`:""}`}function YO0($){return`${$.key}${$.version?`.v${$.version}`:""}`}function Fo($){return`${$.key}${$.version?`.v${$.version}`:""}`}function $l($,X){let J=new Map;for(let W of $)J.set(X(W),W);return[...J.values()]}function Zj6($){return[...new Set($)]}var Oj6=()=>{};function JO0($){return tOD($)}var tOD=($)=>`${$.key}.v${$.version}`,sU$;var Z_$=l$(()=>{mL();sU$=class extends vB{constructor($){super("integration",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function FD$($){return $.register(eU$)}var eU$;var $B$=l$(()=>{mO();eU$={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:DJ.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 KD$($){return $.register(DB$)}var DB$;var XB$=l$(()=>{mO();DB$={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:DJ.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 VD$($){return $.register(YB$)}var YB$;var JB$=l$(()=>{mO();YB$={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:DJ.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 wD$($){return $.register(WB$)}var WB$;var QB$=l$(()=>{mO();WB$={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:DJ.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 AD$($){return $.register(HB$)}var HB$;var GB$=l$(()=>{mO();HB$={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:DJ.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 ID$($){return $.register(zB$)}var zB$;var UB$=l$(()=>{mO();zB$={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:DJ.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 LD$($){return $.register(BB$)}var BB$;var ZB$=l$(()=>{mO();BB$={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:DJ.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 jD$($){return $.register(OB$)}var OB$;var qB$=l$(()=>{mO();OB$={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:DJ.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 ED$($){return $.register(FB$)}var FB$;var KB$=l$(()=>{mO();FB$={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:DJ.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 MD$($){return $.register(VB$)}var VB$;var wB$=l$(()=>{mO();VB$={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:DJ.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 O_$(){let $=new sU$;return FD$($),KD$($),VD$($),wD$($),AD$($),ID$($),LD$($),jD$($),ED$($),MD$($),$}var q_$=l$(()=>{Z_$();$B$();XB$();JB$();QB$();GB$();UB$();ZB$();qB$();KB$();wB$()});var PD$,AB$,ND$;var bD$=l$(()=>{iL();PD$=new $J({name:"BankAccountRecord",description:"Canonical representation of a bank account synced from an open banking provider.",fields:{id:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},userId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!1},externalId:{type:v1.NonEmptyString(),isOptional:!1},institutionId:{type:v1.NonEmptyString(),isOptional:!1},institutionName:{type:v1.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:v1.URL(),isOptional:!0},iban:{type:v1.String_unsecure(),isOptional:!0},bic:{type:v1.String_unsecure(),isOptional:!0},accountType:{type:v1.NonEmptyString(),isOptional:!1},currency:{type:v1.Currency(),isOptional:!1},displayName:{type:v1.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:v1.String_unsecure(),isOptional:!0},productCode:{type:v1.String_unsecure(),isOptional:!0},balance:{type:v1.Float_unsecure(),isOptional:!0},availableBalance:{type:v1.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:v1.DateTime(),isOptional:!1},createdAt:{type:v1.DateTime(),isOptional:!1},updatedAt:{type:v1.DateTime(),isOptional:!1},metadata:{type:v1.JSONObject(),isOptional:!0}}}),AB$=new $J({name:"BankTransactionRecord",description:"Canonical transaction entry mapped from Powens into the open banking ledger.",fields:{id:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!1},externalId:{type:v1.NonEmptyString(),isOptional:!1},amount:{type:v1.Float_unsecure(),isOptional:!1},currency:{type:v1.Currency(),isOptional:!1},date:{type:v1.DateTime(),isOptional:!1},bookingDate:{type:v1.DateTime(),isOptional:!0},valueDate:{type:v1.DateTime(),isOptional:!0},description:{type:v1.String_unsecure(),isOptional:!0},counterpartyName:{type:v1.String_unsecure(),isOptional:!0},counterpartyAccount:{type:v1.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:v1.String_unsecure(),isOptional:!0},rawCategory:{type:v1.String_unsecure(),isOptional:!0},standardizedCategory:{type:v1.String_unsecure(),isOptional:!0},transactionType:{type:v1.NonEmptyString(),isOptional:!1},status:{type:v1.NonEmptyString(),isOptional:!1},runningBalance:{type:v1.Float_unsecure(),isOptional:!0},metadata:{type:v1.JSONObject(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!1},updatedAt:{type:v1.DateTime(),isOptional:!1}}}),ND$=new $J({name:"AccountBalanceRecord",description:"Canonical balance snapshot computed from Powens balance payloads.",fields:{id:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!1},balanceType:{type:v1.NonEmptyString(),isOptional:!1},currentBalance:{type:v1.Float_unsecure(),isOptional:!1},availableBalance:{type:v1.Float_unsecure(),isOptional:!0},currency:{type:v1.Currency(),isOptional:!1},lastUpdatedAt:{type:v1.DateTime(),isOptional:!1},createdAt:{type:v1.DateTime(),isOptional:!1},metadata:{type:v1.JSONObject(),isOptional:!0}}})});function IB$($){let X={};for(let[J,W]of Object.entries($))if(F_$.includes(J))X[J]=sOD(W);else if(Array.isArray(W))X[J]=W.map((Q)=>typeof Q==="object"&&Q!==null?IB$(Q):Q);else if(typeof W==="object"&&W!==null)X[J]=IB$(W);else X[J]=W;return X}function sOD($){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 F_$,Yb;var RD$=l$(()=>{F_$=["iban","bic","accountNumberMasked","accountNumber","counterpartyName","counterpartyAccount","description","merchantName","merchantCategoryCode","reference"],Yb={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 qj6($){return $.register(LB$).register(jB$).register(EB$)}var eOD,$qD,DqD,XqD,YqD,LB$,jB$,EB$;var K_$=l$(()=>{KT();VT();bD$();RD$();iL();eOD=new $J({name:"OpenBankingListAccountsInput",description:"Parameters for listing bank accounts through the open banking provider.",fields:{tenantId:{type:v1.ID(),isOptional:!1},userId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!0},includeBalances:{type:v1.Boolean(),isOptional:!0},institutionId:{type:v1.String_unsecure(),isOptional:!0},cursor:{type:v1.String_unsecure(),isOptional:!0},pageSize:{type:v1.Int_unsecure(),isOptional:!0}}}),$qD=new $J({name:"OpenBankingListAccountsOutput",description:"Paginated list of bank accounts available to the tenant and user.",fields:{accounts:{type:PD$,isOptional:!1,isArray:!0},nextCursor:{type:v1.String_unsecure(),isOptional:!0},hasMore:{type:v1.Boolean(),isOptional:!0}}}),DqD=new $J({name:"OpenBankingGetAccountInput",description:"Parameters for retrieving a specific bank account.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},includeBalances:{type:v1.Boolean(),isOptional:!0},includeLatestTransactions:{type:v1.Boolean(),isOptional:!0}}}),XqD=new $J({name:"OpenBankingSyncAccountsInput",description:"Command payload to trigger an account synchronisation against the open banking provider.",fields:{tenantId:{type:v1.ID(),isOptional:!1},userId:{type:v1.ID(),isOptional:!0},connectionId:{type:v1.ID(),isOptional:!1},accountIds:{type:v1.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:v1.Boolean(),isOptional:!0},triggerWorkflows:{type:v1.Boolean(),isOptional:!0}}}),YqD=new $J({name:"OpenBankingSyncAccountsOutput",description:"Result of a bank account synchronisation run.",fields:{synced:{type:v1.Int_unsecure(),isOptional:!1},failed:{type:v1.Int_unsecure(),isOptional:!1},errors:{type:v1.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:v1.DateTime(),isOptional:!0}}}),LB$=Nw({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:eOD,output:$qD},policy:{auth:"user"}}),jB$=Nw({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:DqD,output:PD$},policy:{auth:"user"}}),EB$=aZ({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:XqD,output:YqD},policy:{auth:"admin"},telemetry:{success:{event:{key:Yb.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:Yb.accountsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,connectionId:J?.connectionId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function Fj6($){return $.register(MB$).register(PB$)}var JqD,WqD,QqD,HqD,MB$,PB$;var V_$=l$(()=>{KT();VT();bD$();RD$();iL();JqD=new $J({name:"OpenBankingListTransactionsInput",description:"Parameters for listing bank transactions from the canonical ledger.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},from:{type:v1.DateTime(),isOptional:!0},to:{type:v1.DateTime(),isOptional:!0},cursor:{type:v1.String_unsecure(),isOptional:!0},pageSize:{type:v1.Int_unsecure(),isOptional:!0},direction:{type:v1.String_unsecure(),isOptional:!0},minimumAmount:{type:v1.Float_unsecure(),isOptional:!0},maximumAmount:{type:v1.Float_unsecure(),isOptional:!0},category:{type:v1.String_unsecure(),isOptional:!0}}}),WqD=new $J({name:"OpenBankingListTransactionsOutput",description:"Paginated list of transactions for a bank account.",fields:{transactions:{type:AB$,isOptional:!1,isArray:!0},nextCursor:{type:v1.String_unsecure(),isOptional:!0},hasMore:{type:v1.Boolean(),isOptional:!0}}}),QqD=new $J({name:"OpenBankingSyncTransactionsInput",description:"Command payload to synchronise transactions from the open banking provider into the canonical ledger.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},from:{type:v1.DateTime(),isOptional:!0},to:{type:v1.DateTime(),isOptional:!0},connectionId:{type:v1.ID(),isOptional:!0},includePending:{type:v1.Boolean(),isOptional:!0},backfillDays:{type:v1.Int_unsecure(),isOptional:!0}}}),HqD=new $J({name:"OpenBankingSyncTransactionsOutput",description:"Result of a transaction synchronisation run.",fields:{synced:{type:v1.Int_unsecure(),isOptional:!1},failed:{type:v1.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:v1.DateTime(),isOptional:!0},latestSyncedAt:{type:v1.DateTime(),isOptional:!0},nextSinceToken:{type:v1.String_unsecure(),isOptional:!0},errors:{type:v1.String_unsecure(),isArray:!0,isOptional:!0}}}),MB$=Nw({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:JqD,output:WqD},policy:{auth:"user"}}),PB$=aZ({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:QqD,output:HqD},policy:{auth:"admin"},telemetry:{success:{event:{key:Yb.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:Yb.transactionsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function Kj6($){return $.register(NB$).register(bB$)}var GqD,zqD,UqD,BqD,NB$,bB$;var w_$=l$(()=>{KT();VT();bD$();RD$();iL();GqD=new $J({name:"OpenBankingGetBalancesInput",description:"Parameters for retrieving bank account balances from the canonical ledger.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},balanceTypes:{type:v1.String_unsecure(),isArray:!0,isOptional:!0}}}),zqD=new $J({name:"OpenBankingGetBalancesOutput",description:"Canonical balances for a bank account.",fields:{balances:{type:ND$,isOptional:!1,isArray:!0},asOf:{type:v1.DateTime(),isOptional:!0}}}),UqD=new $J({name:"OpenBankingRefreshBalancesInput",description:"Command payload to refresh balances for a bank account via the open banking provider.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!0},balanceTypes:{type:v1.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:v1.Boolean(),isOptional:!0}}}),BqD=new $J({name:"OpenBankingRefreshBalancesOutput",description:"Result of a balance refresh against the open banking provider.",fields:{balances:{type:ND$,isOptional:!1,isArray:!0},refreshedAt:{type:v1.DateTime(),isOptional:!1},errors:{type:v1.String_unsecure(),isArray:!0,isOptional:!0}}}),NB$=Nw({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:GqD,output:zqD},policy:{auth:"user"}}),bB$=aZ({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:UqD,output:BqD},policy:{auth:"admin"},telemetry:{success:{event:{key:Yb.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:Yb.balancesRefreshFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});var A_$;var I_$=l$(()=>{A_$={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 WO0($){return Kj6(Fj6(qj6($)))}var QO0=l$(()=>{K_$();V_$();w_$();I_$()});function L_$($){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 HO0($){let X=L_$($);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 GO0=()=>{};var Vj6=l$(()=>{$B$();XB$();JB$();QB$();GB$();UB$();ZB$();qB$();KB$();wB$();q_$()});var wj6=l$(()=>{Z_$();$B$();XB$();JB$();QB$();GB$();UB$();ZB$();qB$();KB$();wB$();q_$();Vj6();bD$();RD$();K_$();V_$();w_$();I_$();QO0();GO0()});function UO0($){return`${$.key}.v${$.version}`}var zO0;var BO0=l$(()=>{mL();zO0=class extends vB{constructor($){super("knowledge-space",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function j_$($){return $.register(RB$)}var RB$;var E_$=l$(()=>{mO();RB$={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:DJ.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 M_$($){return $.register(CB$)}var CB$;var P_$=l$(()=>{mO();CB$={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:DJ.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 N_$($){return $.register(TB$)}var TB$;var b_$=l$(()=>{mO();TB$={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:DJ.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 R_$($){return $.register(SB$)}var SB$;var C_$=l$(()=>{mO();SB$={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:DJ.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 T_$($){return $.register(_B$)}var _B$;var S_$=l$(()=>{mO();_B$={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:DJ.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 __$($){return $.register(vB$)}var vB$;var v_$=l$(()=>{mO();vB$={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:DJ.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 Aj6=l$(()=>{E_$();P_$();b_$();C_$();S_$();v_$()});var Ij6=l$(()=>{BO0();E_$();P_$();b_$();C_$();S_$();v_$();Aj6()});function jj6($){return $.register(k_$).register(y_$).register(x_$).register(f_$).register(u_$)}var ZO0,ZqD,OqD,qqD,FqD,KqD,VqD,wqD,AqD,k_$,y_$,x_$,f_$,u_$,Lj6;var Ej6=l$(()=>{KT();VT();iL();ZO0=new $J({name:"IntegrationConnectionRecord",fields:{id:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},integrationKey:{type:v1.NonEmptyString(),isOptional:!1},integrationVersion:{type:v1.Int_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},ownershipMode:{type:v1.String_unsecure(),isOptional:!1},externalAccountId:{type:v1.String_unsecure(),isOptional:!0},secretProvider:{type:v1.String_unsecure(),isOptional:!1},secretRef:{type:v1.String_unsecure(),isOptional:!1},status:{type:v1.String_unsecure(),isOptional:!1},environment:{type:v1.String_unsecure(),isOptional:!0},healthStatus:{type:v1.String_unsecure(),isOptional:!0},healthCheckedAt:{type:v1.DateTime(),isOptional:!0},healthLatencyMs:{type:v1.Float_unsecure(),isOptional:!0},healthErrorCode:{type:v1.String_unsecure(),isOptional:!0},healthErrorMessage:{type:v1.String_unsecure(),isOptional:!0},usageRequestCount:{type:v1.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:v1.Int_unsecure(),isOptional:!0},usageErrorCount:{type:v1.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:v1.DateTime(),isOptional:!0},usageLastErrorAt:{type:v1.DateTime(),isOptional:!0},usageLastErrorCode:{type:v1.String_unsecure(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!0},updatedAt:{type:v1.DateTime(),isOptional:!0}}}),ZqD=new $J({name:"CreateIntegrationConnectionInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},integrationKey:{type:v1.NonEmptyString(),isOptional:!1},integrationVersion:{type:v1.Int_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},ownershipMode:{type:v1.String_unsecure(),isOptional:!1},externalAccountId:{type:v1.String_unsecure(),isOptional:!0},secretProvider:{type:v1.String_unsecure(),isOptional:!1},secretRef:{type:v1.String_unsecure(),isOptional:!1},environment:{type:v1.String_unsecure(),isOptional:!0},config:{type:v1.JSONObject(),isOptional:!1}}}),OqD=new $J({name:"UpdateIntegrationConnectionInput",fields:{connectionId:{type:v1.ID(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!0},status:{type:v1.String_unsecure(),isOptional:!0},ownershipMode:{type:v1.String_unsecure(),isOptional:!0},externalAccountId:{type:v1.String_unsecure(),isOptional:!0},secretProvider:{type:v1.String_unsecure(),isOptional:!0},secretRef:{type:v1.String_unsecure(),isOptional:!0},config:{type:v1.JSONObject(),isOptional:!0}}}),qqD=new $J({name:"DeleteIntegrationConnectionInput",fields:{connectionId:{type:v1.ID(),isOptional:!1}}}),FqD=new $J({name:"ListIntegrationConnectionsInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},category:{type:v1.String_unsecure(),isOptional:!0},status:{type:v1.String_unsecure(),isOptional:!0}}}),KqD=new $J({name:"ListIntegrationConnectionsOutput",fields:{connections:{type:ZO0,isOptional:!1,isArray:!0}}}),VqD=new $J({name:"TestIntegrationConnectionInput",fields:{connectionId:{type:v1.ID(),isOptional:!1}}}),wqD=new $J({name:"TestIntegrationConnectionOutput",fields:{success:{type:v1.Boolean(),isOptional:!1},status:{type:v1.String_unsecure(),isOptional:!0},latencyMs:{type:v1.Float_unsecure(),isOptional:!0},error:{type:v1.String_unsecure(),isOptional:!0},errorCode:{type:v1.String_unsecure(),isOptional:!0}}}),AqD=new $J({name:"DeleteIntegrationConnectionOutput",fields:{success:{type:v1.Boolean(),isOptional:!1}}}),k_$=aZ({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:ZqD,output:ZO0},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),y_$=aZ({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:OqD,output:ZO0},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),x_$=aZ({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:qqD,output:AqD},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),f_$=Nw({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:FqD,output:KqD},policy:{auth:"admin",policies:[{key:"platform.integration.read",version:"1.0.0"}]}}),u_$=aZ({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:VqD,output:wqD},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),Lj6={CreateIntegrationConnection:k_$,UpdateIntegrationConnection:y_$,DeleteIntegrationConnection:x_$,ListIntegrationConnections:f_$,TestIntegrationConnection:u_$}});function Pj6($){return $.register(g_$).register(h_$).register(m_$).register(d_$).register(l_$)}var OO0,qO0,IqD,LqD,jqD,EqD,MqD,PqD,NqD,bqD,g_$,h_$,m_$,d_$,l_$,Mj6;var Nj6=l$(()=>{KT();VT();iL();OO0=new $J({name:"KnowledgeSyncSchedule",fields:{enabled:{type:v1.Boolean(),isOptional:!1},cron:{type:v1.String_unsecure(),isOptional:!0},intervalMs:{type:v1.Int_unsecure(),isOptional:!0}}}),qO0=new $J({name:"KnowledgeSourceRecord",fields:{id:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},spaceKey:{type:v1.NonEmptyString(),isOptional:!1},spaceVersion:{type:v1.String_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},sourceType:{type:v1.String_unsecure(),isOptional:!1},syncSchedule:{type:OO0,isOptional:!0},lastSyncStatus:{type:v1.String_unsecure(),isOptional:!0},lastSyncAt:{type:v1.DateTime(),isOptional:!0},itemsProcessed:{type:v1.Int_unsecure(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!0},updatedAt:{type:v1.DateTime(),isOptional:!0}}}),IqD=new $J({name:"CreateKnowledgeSourceInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},spaceKey:{type:v1.NonEmptyString(),isOptional:!1},spaceVersion:{type:v1.String_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},sourceType:{type:v1.NonEmptyString(),isOptional:!1},config:{type:v1.JSONObject(),isOptional:!1},syncSchedule:{type:OO0,isOptional:!0}}}),LqD=new $J({name:"UpdateKnowledgeSourceInput",fields:{sourceId:{type:v1.ID(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!0},config:{type:v1.JSONObject(),isOptional:!0},syncSchedule:{type:OO0,isOptional:!0}}}),jqD=new $J({name:"DeleteKnowledgeSourceInput",fields:{sourceId:{type:v1.ID(),isOptional:!1}}}),EqD=new $J({name:"DeleteKnowledgeSourceOutput",fields:{success:{type:v1.Boolean(),isOptional:!1}}}),MqD=new $J({name:"ListKnowledgeSourcesInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},spaceKey:{type:v1.NonEmptyString(),isOptional:!0}}}),PqD=new $J({name:"ListKnowledgeSourcesOutput",fields:{sources:{type:qO0,isOptional:!1,isArray:!0}}}),NqD=new $J({name:"TriggerKnowledgeSyncInput",fields:{sourceId:{type:v1.ID(),isOptional:!1}}}),bqD=new $J({name:"TriggerKnowledgeSyncOutput",fields:{success:{type:v1.Boolean(),isOptional:!1},itemsProcessed:{type:v1.Int_unsecure(),isOptional:!0},error:{type:v1.String_unsecure(),isOptional:!0}}}),g_$=aZ({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:IqD,output:qO0},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),h_$=aZ({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:LqD,output:qO0},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),m_$=aZ({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:jqD,output:EqD},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),d_$=Nw({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:MqD,output:PqD},policy:{auth:"admin",policies:[{key:"platform.knowledge.read",version:"1.0.0"}]}}),l_$=aZ({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:NqD,output:bqD},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),Mj6={CreateKnowledgeSource:g_$,UpdateKnowledgeSource:h_$,DeleteKnowledgeSource:m_$,ListKnowledgeSources:d_$,TriggerKnowledgeSourceSync:l_$}});function yB$($,X,J){return{type:"telemetry",contextId:$,signal:RqD(X,J)}}function xB$($,X,J){return{type:"error",contextId:$,signal:CqD(X,J)}}function fB$($,X,J){return{type:"behavior",contextId:$,signal:TqD(X,J)}}function RqD($,X){return{...$,windowStart:kB$($.windowStart,X),windowEnd:kB$($.windowEnd,X)}}function CqD($,X){return{...$,occurredAt:kB$($.occurredAt,X)}}function TqD($,X){return{...$,windowStart:kB$($.windowStart,X),windowEnd:kB$($.windowEnd,X)}}function kB$($,X){if($ instanceof Date)return $;let J=new Date($);if(Number.isNaN(J.getTime()))return X();return J}var c_$=()=>{};var SqD=($)=>new Promise((X)=>setTimeout(X,$)),_qD=60000,vqD=300000,Ko=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??_qD,this.batchDuration=$.batchDurationMs??vqD,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 Q of this.options.rules){let z=[];try{z=await Q.evaluate($,W)}catch(Z){console.error(`[regenerator] rule ${Q.id} failed`,Z instanceof Error?Z:Error(String(Z)));continue}await this.flushProposals($,z)}}async collectSignals($,X,J){let W=[],{adapters:Q}=this.options;if(Q.telemetry){let z=await Q.telemetry.pollTelemetry($,X,J);W.push(...z.map((Z)=>yB$($.id,Z,this.clock)))}if(Q.errors){let z=await Q.errors.pollErrors($,X,J);W.push(...z.map((Z)=>xB$($.id,Z,this.clock)))}if(Q.behavior){let z=await Q.behavior.pollBehavior($,X,J);W.push(...z.map((Z)=>fB$($.id,Z,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 SqD(0)}}};var FO0=l$(()=>{c_$()});function kqD($){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 Vo=class{constructor($={}){this.deps=$}async execute($,X,J={}){let W=new Date,Q=[];for(let[K,I]of X.actions.entries()){let j=await this.executeAction({index:K,action:I,context:$,proposal:X,options:J});Q.push(j)}let z=new Date,Z=kqD(Q);return{proposalId:X.id,contextId:$.id,startedAt:W,finishedAt:z,status:Z,actions:Q}}async executeAction({index:$,action:X,context:J,proposal:W,options:Q}){let z=new Date,Z=Q.dryRun??!1,K=(I,j={})=>({index:$,action:X,status:I,startedAt:z,finishedAt:new Date,reason:j.reason,output:j.output,error:j.error});if(Z)return K("skipped",{reason:"dry_run"});try{switch(X.kind){case"update_blueprint":{let I=this.deps.blueprintUpdater;if(!I)return K("skipped",{reason:"missing_blueprint_updater"});return K("success",{output:await I.applyBlueprintUpdate(J,W,X)})}case"update_tenant_config":{let I=this.deps.tenantConfigUpdater;if(!I)return K("skipped",{reason:"missing_tenant_config_updater"});return K("success",{output:await I.applyTenantConfigUpdate(J,W,X)})}case"run_tests":{let I=this.deps.testExecutor;if(!I)return K("skipped",{reason:"missing_test_executor"});return K("success",{output:await I.runTests(J,W,X)})}case"run_migrations":{let I=this.deps.migrationExecutor;if(!I)return K("skipped",{reason:"missing_migration_executor"});return K("success",{output:await I.runMigrations(J,W,X)})}case"trigger_regeneration":{let I=this.deps.regenerationTrigger;if(!I)return K("skipped",{reason:"missing_regeneration_trigger"});return K("success",{output:await I.triggerRegeneration(J,W,X)})}default:return K("skipped",{reason:"unknown_action"})}}catch(I){return K("failed",{error:I instanceof Error?I:Error(String(I))})}}};var KO0=()=>{};var uB$=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 VO0=()=>{};var wO0=l$(()=>{c_$();FO0();KO0();VO0()});var gB$,i_$,p_$,n_$,yqD,AO0,r_$,xqD,fqD,uqD,gqD,hqD,mqD,o_$,a_$,t_$,s_$,e_$,$v$,Dv$,Xv$,dqD,lqD,cqD,Jb,iqD,bj6,pqD,nqD,CD$,hB$;var IO0=l$(()=>{sE();gB$=eY(["contractspec","zod","json-schema","graphql"]),i_$=w8({name:m6(),url:Cn().optional(),file:m6().optional(),syncMode:eY(["import","sync","validate"]).default("validate"),tags:b9(m6()).optional(),exclude:b9(m6()).optional(),include:b9(m6()).optional(),prefix:m6().optional(),defaultStability:eY(["experimental","beta","stable","deprecated"]).optional(),defaultAuth:eY(["anonymous","user","admin"]).optional(),defaultOwners:b9(m6()).optional(),schemaFormat:gB$.default("contractspec")}),p_$=w8({outputPath:m6().default("./openapi.json"),format:eY(["json","yaml"]).default("json"),title:m6().optional(),version:m6().optional(),description:m6().optional(),servers:b9(w8({url:m6(),description:m6().optional()})).optional()}),n_$=w8({sources:b9(i_$).optional(),export:p_$.optional()}),yqD=eY(["by-tag","by-owner","by-domain","by-url-path-single","by-url-path-multi","by-feature","none"]),AO0=w8({strategy:yqD,urlPathLevel:RY().optional(),pattern:m6().optional()}),r_$=w8({models:m6().default("models"),operations:m6().default("operations/commands|queries"),events:m6().default("events"),presentations:m6().default("presentations"),forms:m6().default("forms"),groupByFeature:bJ().default(!0),operationsGrouping:AO0.optional(),modelsGrouping:AO0.optional(),eventsGrouping:AO0.optional()}),xqD=w8({enabled:bJ().default(!0),template:eY(["minimal","detailed"]).default("detailed"),updateExisting:bJ().default(!0)}),fqD=w8({enabled:bJ().default(!0),name:m6().default("ContractSpec Impact"),failOnBreaking:bJ().default(!0),failOnChanges:bJ().default(!1)}),uqD=w8({baseline:m6().default("default-branch"),include:b9(m6()).optional(),exclude:b9(m6()).optional()}),gqD=w8({checks:b9(m6()).default(["structure","integrity","deps"]),skipChecks:b9(m6()).optional(),failOnWarnings:bJ().default(!1),uploadSarif:bJ().default(!0),prComment:xqD.optional(),checkRun:fqD.optional(),impact:uqD.optional()}),hqD=w8({alias:m6(),submodule:m6(),packages:b9(m6()).optional(),autoResolve:bJ().default(!0)}),mqD=w8({activeScope:m6().optional(),externalWorkspaces:b9(hqD).optional(),crossWorkspaceSearch:bJ().default(!1)}),o_$=eY(["prettier","eslint","biome","dprint","custom"]),a_$=w8({enabled:bJ().default(!0),type:o_$.optional(),command:m6().optional(),args:b9(m6()).optional(),timeout:RY().default(30000)}),t_$=eY(["impact","conventional"]),s_$=eY(["keep-a-changelog","conventional","custom"]),e_$=eY(["spec","library","monorepo"]),$v$=w8({autoBump:bJ().default(!1),bumpStrategy:t_$.default("impact"),integrateWithChangesets:bJ().default(!1),changelogTiers:b9(e_$).default(["spec","library","monorepo"]),format:s_$.default("keep-a-changelog"),commitChanges:bJ().default(!1),commitMessage:m6().default("chore: bump spec versions"),createTags:bJ().default(!1),tagPrefix:m6().default("v"),include:b9(m6()).optional(),exclude:b9(m6()).optional()}),Dv$=eY(["cursor","windsurf","cline","claude-code","copilot","subagent","skill"]),Xv$=w8({enabled:bJ().default(!1),rulesDir:m6().default("./.rules"),rules:b9(m6()).default(["**/*.rule.md"]),targets:b9(Dv$).default(["cursor","windsurf"]),autoSync:bJ().default(!0),ejectMode:bJ().default(!1)}),dqD=w8({enabled:bJ().default(!1),apiKey:m6().optional(),model:m6().default("claude-sonnet-4-20250514"),computerUse:bJ().default(!1),extendedThinking:bJ().default(!1)}),lqD=w8({enabled:bJ().default(!1),serverUrl:m6().optional(),port:RY().optional(),agentType:eY(["build","plan","general","explore"]).default("general"),model:m6().optional()}),cqD=w8({claudeAgent:dqD.optional(),openCode:lqD.optional()}),Jb=eY(["off","warn","error"]),iqD=eY(["operation","event","presentation","feature","workflow","data-view","migration","telemetry","experiment","app-config"]),bj6=w8({"require-acceptance":Jb.optional(),"require-examples":Jb.optional(),"require-stability":Jb.optional(),"require-owners-format":Jb.optional(),"event-past-tense":Jb.optional(),"no-todo":Jb.optional(),"workflow-transitions":Jb.optional(),"telemetry-privacy":Jb.optional(),"experiment-allocation":Jb.optional(),"app-config-appid":Jb.optional(),"app-config-capabilities":Jb.optional(),"data-view-fields":Jb.optional()}),pqD=w8({defaults:bj6.optional(),overrides:ZQ(iqD,bj6).optional()}),nqD=ZQ(m6(),b9(m6())),CD$=w8({aiProvider:eY(["claude","openai","ollama","custom"]).default("claude"),aiModel:m6().optional(),agentMode:eY(["simple","cursor","claude-code","openai-codex","claude-agent-sdk","opencode-sdk"]).default("simple"),customEndpoint:Cn().nullable().optional(),customApiKey:m6().nullable().optional(),outputDir:m6().default("./src"),conventions:r_$,defaultOwners:b9(m6()).default([]),defaultTags:b9(m6()).default([]),packages:b9(m6()).optional(),excludePackages:b9(m6()).optional(),recursive:bJ().optional(),openapi:n_$.optional(),ci:gqD.optional(),metaRepo:mqD.optional(),rules:pqD.optional(),hooks:nqD.optional(),schemaFormat:gB$.default("contractspec"),formatter:a_$.optional(),versioning:$v$.optional(),ruleSync:Xv$.optional(),externalAgents:cqD.optional()}),hB$={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 Rj6=l$(()=>{IO0()});var LO0;var jO0=l$(()=>{mL();LO0=class extends vB{constructor($){super("workflow",$)}}});function Jv$($,X={}){let J=[],{definition:W}=$;if(!W.steps.length)return J.push({level:"error",message:"Workflow must declare at least one step."}),J;let Q=rqD(W,J),z=W.entryStepId??W.steps[0]?.id??null;if(!z)J.push({level:"error",message:"Workflow requires an entry step (definition.entryStepId)."});else if(!Q.has(z))J.push({level:"error",message:`Entry step "${z}" is not defined in steps.`});let Z=oqD(W,Q,J);return tqD(W.steps,X,J),sqD(z,Q,Z,J),eqD(Z,J),J}function EO0($,X={}){let J=Jv$($,X);if(J.filter((W)=>W.level==="error").length)throw new Yv$(`Workflow ${$.meta.key}.v${$.meta.version} is invalid`,J)}function rqD($,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 oqD($,X,J){let W=new Map,Q=new Map;for(let Z of X.keys())W.set(Z,new Set),Q.set(Z,0);for(let Z of $.transitions){let K=X.get(Z.from),I=X.get(Z.to);if(!K){J.push({level:"error",message:`Transition refers to unknown "from" step "${Z.from}".`});continue}if(!I){J.push({level:"error",message:`Transition refers to unknown "to" step "${Z.to}".`});continue}W.get(Z.from)?.add(Z.to),Q.set(Z.to,(Q.get(Z.to)??0)+1),aqD(Z,J)}let z=[...Q.entries()].filter(([,Z])=>Z===0).map(([Z])=>Z);if(z.length>1)J.push({level:"warning",message:`Workflow has multiple potential entry steps: ${z.join(", ")}`});return W}function aqD($,X){if($.condition&&!$.condition.trim())X.push({level:"error",message:`Transition ${$.from} -> ${$.to} declares an empty condition.`})}function tqD($,X,J){for(let W of $){let Q=W.action;if(!Q)continue;if(Q.operation&&X.operations){if(!X.operations.get(Q.operation.key,Q.operation.version))J.push({level:"error",message:`Step "${W.id}" references unknown operation ${Q.operation.key}.v${Q.operation.version}.`})}if(Q.form&&X.forms){if(!X.forms.get(Q.form.key,Q.form.version))J.push({level:"error",message:`Step "${W.id}" references unknown form ${Q.form.key}.v${Q.form.version}.`})}}}function sqD($,X,J,W){if(!$||!X.has($))return;let Q=new Set,z=[$];Q.add($);while(z.length){let Z=z.shift();if(!Z)continue;let K=J.get(Z);if(!K)continue;for(let I of K){if(Q.has(I))continue;Q.add(I),z.push(I)}}for(let Z of X.keys())if(!Q.has(Z))W.push({level:"error",message:`Step "${Z}" is unreachable from entry step "${$}".`})}function eqD($,X){let J=new Set,W=new Set,Q=!1,z=(Z)=>{if(W.has(Z)){if(!Q)X.push({level:"error",message:`Workflow contains a cycle involving step "${Z}".`}),Q=!0;return}if(J.has(Z))return;W.add(Z);let K=$.get(Z);if(K)for(let I of K)z(I);W.delete(Z),J.add(Z)};for(let Z of $.keys())z(Z)}var Yv$;var MO0=l$(()=>{Yv$=class extends Error{constructor($,X){super($);this.issues=X,this.name="WorkflowValidationError"}}});function Dl($,X){if(!$)return!0;let J=$.trim();if(!J)return!0;let W=Sj6(J,"||");if(W.length>1)return W.some((z)=>Dl(z,X));let Q=Sj6(J,"&&");if(Q.length>1)return Q.every((z)=>Dl(z,X));return _j6(J,X)}function _j6($,X){let J=$.trim();if(!J)return!0;if(J.startsWith("!"))return!_j6(J.slice(1),X);let W=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(W){let[,Z,K,I,j]=W;return $3D(Tj6(Z,X,K),Cj6(j),I)}let Q=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);if(Q){let[,Z,K]=Q,I=Tj6(Z,X,K);return Boolean(I)}let z=Cj6(J);return Boolean(z)}function $3D($,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 Cj6($){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 Tj6($,X,J){return D3D($==="data"?X.data:$==="input"?X.input:X.output,J)}function D3D($,X){if($==null)return;if(!X)return $;let J=X.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean),W=$;for(let Q of J){if(W==null)return;W=W[Q]}return W}function Sj6($,X){let J=[],W="",Q=!1,z=!1;for(let Z=0;Z<$.length;Z++){let K=$[Z];if(!K)continue;let I=$.slice(Z,Z+X.length);if(K==="'"&&!z){Q=!Q,W+=K;continue}if(K==='"'&&!Q){z=!z,W+=K;continue}if(!Q&&!z&&I===X){J.push(W.trim()),W="",Z+=X.length-1;continue}W+=K}if(W.trim().length)J.push(W.trim());return J}var Wv$=()=>{};import{randomUUID as X3D}from"node:crypto";function Y3D($){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 vj6($,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 J3D($,X){return $.definition.transitions.some((J)=>J.from===X)}function kj6($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function W3D($){return $==="completed"||$==="failed"||$==="cancelled"}function PO0($){return`${$.key}@${$.version}`}var NO0=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),Q=Y3D(W),z=new Date,Z=X3D(),K={workflowId:Z,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:Q,data:{...J??{}},retryCounts:{},history:[],status:"running",createdAt:z,updatedAt:z},I=this.config.appConfigProvider?await this.config.appConfigProvider(K):void 0,j=await this.performPreFlight(W,I);if(!j.canStart)throw new Qv$(j.issues);return await this.config.stateStore.create(K),this.emit("workflow.started",{workflowId:Z,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:Q}),Z}async executeStep($,X){let J=await this.getStateOrThrow($);if(W3D(J.status))throw Error(`Workflow ${$} is in terminal status "${J.status}".`);let W=this.getSpec(J.workflowName,J.workflowVersion),Q=vj6(W,J.currentStep);if(!await this.evaluateGuard(Q,J,X))throw Error(`GuardRejected: ${J.workflowName} -> ${Q.id}`);let z={stepId:Q.id,startedAt:new Date,status:"running",input:X},Z={...J,data:{...J.data},history:[...J.history]};try{let K=await this.runStepAction(Q,Z,X);if(z.output=K,z.status="completed",z.completedAt=new Date,Z.history.push(z),Z.updatedAt=new Date,kj6(X))Z.data={...Z.data,...X};if(kj6(K))Z.data={...Z.data,...K};let I=this.pickNextStepId(W,Z,Q,X,K);if(I)Z.currentStep=I,Z.status="running";else if(!J3D(W,Q.id))Z.status="completed";else throw Error(`No transition matched after executing step "${Q.id}".`);await this.config.stateStore.update($,()=>Z),this.emit("workflow.step_completed",{workflowId:$,workflowName:J.workflowName,stepId:Q.id,status:Z.status})}catch(K){if(z.status="failed",z.completedAt=new Date,z.error=K instanceof Error?K.message:String(K),Z.history.push(z),Z.updatedAt=new Date,Q.retry){let I=J.retryCounts?.[Q.id]??0;if(I<Q.retry.maxAttempts){let j=Q.retry.backoff??"exponential",b=Q.retry.delayMs??1000,_=j==="exponential"?b*Math.pow(2,I):b,T=Math.min(_,Q.retry.maxDelayMs??1/0);return Z.retryCounts={...J.retryCounts??{},[Q.id]:I+1},Z.status="running",await this.config.stateStore.update($,()=>Z),this.emit("workflow.step_retrying",{workflowId:$,workflowName:J.workflowName,stepId:Q.id,attempt:I+1,delay:T,error:z.error}),await new Promise((x)=>setTimeout(x,T)),this.executeStep($,X)}}if(Z.status="failed",await this.config.stateStore.update($,()=>Z),this.emit("workflow.step_failed",{workflowId:$,workflowName:J.workflowName,stepId:Q.id,error:z.error??"unknown"}),W.definition.compensation?.trigger==="on_failure")await this.rollback($);throw K}}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((Q)=>Q.status==="completed").reverse();for(let Q of W){let z=J.definition.compensation.steps.find((Z)=>Z.stepId===Q.stepId);if(z){let Z={stepId:Q.stepId,originalInput:Q.input,originalOutput:Q.output,workflowData:X.data};try{let K=vj6(J,Q.stepId),I=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,j={workflow:X,step:K,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(z.operation,Z,j),this.emit("workflow.compensation_step_completed",{workflowId:$,stepId:Q.stepId,compensationOp:z.operation.key})}catch(K){let I=K instanceof Error?K.message:String(K);this.emit("workflow.compensation_step_failed",{workflowId:$,stepId:Q.stepId,compensationOp:z.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 z of X.integrations)W.set(z.slot.slotId,z);for(let z of $.definition.steps)for(let Z of z.requiredIntegrations??[]){let K=W.get(Z);if(!K){J.push({stepId:z.id,type:"integration",identifier:Z,severity:"error",reason:`Integration slot "${Z}" is not bound in the resolved app config.`});continue}let I=K.connection.status;if(I==="disconnected"||I==="error")J.push({stepId:z.id,type:"integration",identifier:Z,severity:"error",reason:`Integration slot "${Z}" is in status "${I}".`});else if(I==="unknown")J.push({stepId:z.id,type:"integration",identifier:Z,severity:"warning",reason:`Integration slot "${Z}" reports unknown health status.`})}let Q=new Set(X.capabilities.enabled.map(PO0));for(let z of $.definition.steps)for(let Z of z.requiredCapabilities??[])if(!Q.has(PO0(Z)))J.push({stepId:z.id,type:"capability",identifier:PO0(Z),severity:"error",reason:`Capability "${Z.key}@${Z.version}" is not enabled.`});return{canStart:J.every((z)=>z.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 Dl($.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 Q=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,z={workflow:X,step:$,resolvedAppConfig:Q,integrations:Q?.integrations??[],knowledge:Q?.knowledge??[],branding:Q?.branding,translation:Q?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};if(this.config.enforceCapabilities)await this.config.enforceCapabilities(W,z);return this.config.opExecutor(W,J,z)}if($.type==="human")return J;return J}pickNextStepId($,X,J,W,Q){let z=$.definition.transitions.filter((Z)=>Z.from===J.id);for(let Z of z)if(Dl(Z.condition,{data:X.data,input:W,output:Q})){let K=$.definition.steps.find((I)=>I.id===Z.to);if(!K)throw Error(`Transition ${Z.from} -> ${Z.to} points to missing step.`);return K.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)}},Qv$;var bO0=l$(()=>{Wv$();Qv$=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 TD$($){return{...$,data:mB$($.data),history:$.history.map((X)=>({...X,input:mB$(X.input),output:mB$(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 mB$($){if($ instanceof Date)return new Date($.getTime());if(Array.isArray($))return $.map((X)=>mB$(X));if($&&typeof $==="object"){let X={};for(let[J,W]of Object.entries($))X[J]=mB$(W);return X}return $}var RO0=class{items=new Map;async create($){if(this.items.has($.workflowId))throw Error(`Workflow state already exists: ${$.workflowId}`);this.items.set($.workflowId,TD$($))}async get($){let X=this.items.get($);return X?TD$(X):void 0}async update($,X){let J=this.items.get($);if(!J)throw Error(`Workflow state not found for ${$}`);let W=TD$(X(TD$(J)));return this.items.set($,W),TD$(W)}async list($){let X=[...this.items.values()];return(($?.status)?X.filter((J)=>J.status===$.status):X).map(TD$)}clear(){this.items.clear()}};var CO0=()=>{};var TO0=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),Q=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:Q.id,workflowName:Q.name,workflowVersion:Q.version,currentStep:Q.currentStep,data:Q.data,history:Q.history,retryCounts:Q.retryCounts,status:Q.status,createdAt:Q.createdAt,updatedAt:Q.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 SO0=()=>{};function _O0($){throw Error("File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.")}var vO0=()=>{};var yj6=l$(()=>{jO0();MO0();Wv$();bO0();CO0();SO0();vO0()});function xj6($){if(!$.length)return"/";let X=$.startsWith("/")?$:`/${$}`;return X==="/"?"/":X.replace(/\/+$/,"")}function H3D($,X){if($.route)return xj6($.route);let J=X??"/docs",W=$.id.replace(/^docs\.?/,"").replace(/\./g,"/").replace(/\/+/g,"/");return xj6(W.startsWith("/")?W:`${J}/${W}`)}function G3D($,X){return X?`${X}.${$.id}`:$.id}function wo($,X){let J=X?.defaultTargets??Q3D,W=$.version??X?.defaultVersion??"1.0.0",Q=$.stability??X?.defaultStability??"stable";return{meta:{key:G3D($,X?.namespace),title:$.title,version:W,description:$.summary??$.title,tags:$.tags||[],owners:$.owners||[],domain:$.domain||"",stability:Q,goal:`Documentation of: ${$.summary}`,context:"Auto-generated"},policy:$.visibility&&$.visibility!=="public"?{flags:[$.visibility]}:void 0,source:{type:"blocknotejs",docJson:$.body},targets:J}}function dB$($,X){return $.map((J)=>({block:J,route:H3D(J,X?.routePrefix),descriptor:wo(J,X)}))}function kO0($,X){return $.map((J)=>wo(J,X))}function yO0($){return $.map(({route:X,descriptor:J})=>[X,J])}var Q3D;var Hv$=l$(()=>{Q3D=["markdown","react"]});function SY($){for(let X of $){for(let J of z3D)if(!X[J])throw Error(`DocBlock ${X.id??"<missing id>"} missing field ${String(J)}`);Xl.register(X)}}function xO0(){return Xl.list().map(($)=>$.block)}function fO0($){if(!Xl.get($))throw Error(`DocBlock not registered: ${$}`);return $}var Gv$=class{routes=new Map;constructor($=[],X){$.forEach((J)=>this.register(J,X))}register($,X){let[J]=dB$([$],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})=>wo(X,$))}},z3D,Xl;var lz=l$(()=>{Hv$();z3D=["id","title","body","kind","visibility","route"],Xl=new Gv$});var zv$;var uO0=l$(()=>{lz();zv$=[{id:"docs.tech.contracts.presentations-v2",title:"Presentations V2 — 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 — Unified Descriptor & Transform Engine
|
|
1484
|
+
`)}}],description:W.meta.description}})}}var YL6=l$(()=>{of()});function JL6($){if(!$||typeof $!=="object")return!1;return"body"in $&&typeof $.body==="string"}function WL6($,X){if(!X.presentations?.count())return;let J=vr(_r(Sr()));for(let W of X.presentations.list()){let Q=Lz$(`presentation_${W.meta.key}_v${W.meta.version}`),z=`presentation://${W.meta.key}/v${W.meta.version}`;X.logger.info(`Registering presentation ${z} for ${Q}`),$.registerResource(Q,z,{title:`${W.meta.key} v${W.meta.version}`,description:W.meta.description??"Presentation",mimeType:"application/json"},async()=>{return{contents:[{uri:z,mimeType:"application/json",text:JSON.stringify({meta:W.meta,source:W.source,targets:W.targets},null,2)}]}});for(let Z of[{ext:".md",target:"markdown"}]){let K=`${Q}${Z.ext}`,I=`${z}${Z.ext}`;$.registerResource(K,I,{title:`${W.meta.key} v${W.meta.version} (${Z.ext})`,description:`${W.meta.description??"Presentation"} (${Z.ext})`},async()=>{let j=await J.render(Z.target,W);return{contents:[{uri:I,mimeType:JL6(j)&&j.mimeType?j.mimeType:Z.target==="markdown"?"text/markdown":Z.target,text:JL6(j)&&typeof j.body==="string"?j.body:String(j)}]}})}}}var QL6=l$(()=>{Vz$();zC$();of()});function eS$($,X,J,W,Q){return Q.logger.info("Creating MCP server"),u26($,X,{toolCtx:Q.toolCtx}),$L6($,J,{logger:Q.logger,resourceCtx:Q.resourceCtx}),WL6($,{logger:Q.logger,presentations:Q.presentations}),XL6($,W,{promptCtx:Q.promptCtx}),$}var $_$=l$(()=>{g26();DL6();YL6();QL6()});function aU$($){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 GOD($,X){return`${($??"").replace(/\/+$/g,"")}/${X.replace(/^\/+/g,"")}`.replace(/\/{2,}/g,"/")}function qT($,X,J){let W={basePath:J?.basePath??"",cors:J?.cors??!1,prettyJson:J?.prettyJson??!1,onError:J?.onError},Q=$.list().map((K)=>({method:K.transport?.rest?.method??(K.meta.kind==="query"?"GET":"POST"),path:GOD(W.basePath,K.transport?.rest?.path??P1$(K.meta.key,K.meta.version)),name:K.meta.key,version:K.meta.version})),z=new Map;for(let K of Q)z.set(`${K.method} ${K.path}`,K);let Z=(K,I,j)=>{let b=W.prettyJson?JSON.stringify(I,null,W.prettyJson):JSON.stringify(I),_={"content-type":"application/json; charset=utf-8"};return new Response(b,{status:K,headers:j?{..._,...j}:_})};return async function(I){let j=new URL(I.url),b=`${I.method.toUpperCase()} ${j.pathname}`;if(W.cors&&I.method.toUpperCase()==="OPTIONS"){let T=aU$(W.cors===!0?{}:W.cors);return new Response(null,{status:204,headers:{...T,"content-length":"0"}})}let _=z.get(b);if(!_){let T={};if(W.cors)Object.assign(T,aU$(W.cors===!0?{}:W.cors));return Z(404,{error:"NotFound",path:j.pathname},T)}try{let T={};if(_.method==="GET")if(j.searchParams.has("input")){let Z$=j.searchParams.get("input");T=Z$?JSON.parse(Z$):{}}else{let Z$={};for(let[M$,T$]of j.searchParams.entries())Z$[M$]=T$;T=Z$}else{let Z$=I.headers.get("content-type")||"";if(Z$.includes("application/json"))T=await I.json();else if(Z$.includes("application/x-www-form-urlencoded")){let M$=await I.formData();T=Object.fromEntries(M$.entries())}else if(!Z$)T={};else return Z(415,{error:"UnsupportedMediaType",contentType:Z$})}let x=X(I),n=await $.execute(_.name,_.version,T,x),i={};if(W.cors)Object.assign(i,aU$(W.cors===!0?{}:W.cors));return Z(200,n,i)}catch(T){if(W.onError){let n=W.onError(T),i={};if(W.cors)Object.assign(i,aU$(W.cors===!0?{}:W.cors));return Z(n.status,n.body,i)}let x={};if(W.cors)Object.assign(x,aU$(W.cors===!0?{}:W.cors));if(T?.issues)return Z(400,{error:"ValidationError",issues:T.issues},x);if(typeof T?.message==="string"&&T.message.startsWith("PolicyDenied"))return Z(403,{error:"PolicyDenied"},x);return Z(500,{error:"InternalError"},x)}}}var qo=l$(()=>{of()});function H20($,X,J,W){let Q=qT(X,(z)=>J({request:z,store:$.store}),W);for(let z of X.list()){let Z=z.transport?.rest?.method??(z.meta.kind==="query"?"GET":"POST"),K=(W?.basePath??"")+(z.transport?.rest?.path??`/${z.meta.key.replace(/\./g,"/")}/v${z.meta.version}`);$[Z.toLowerCase()](K,({request:I})=>Q(I))}if(W?.cors)$.options("*",({request:z})=>Q(z));return $}var G20=l$(()=>{qo()});function z20($,X,J,W){let Q=$.Router();for(let z of X.list()){let Z=z.transport?.rest?.method??(z.meta.kind==="query"?"GET":"POST"),K=(W?.basePath??"")+(z.transport?.rest?.path??`/${z.meta.key.replace(/\./g,"/")}/v${z.meta.version}`);Q[Z.toLowerCase()](K,async(I,j)=>{let b=new URL(`${I.protocol}://${I.get("host")}${I.originalUrl}`),_=new Request(b.toString(),{method:Z,headers:Object.fromEntries(Object.entries(I.headers).map(([n,i])=>[n,String(i)])),body:Z==="POST"?JSON.stringify(I.body??{}):void 0}),T=await qT(X,()=>J(I),W)(_);j.status(T.status),T.headers.forEach((n,i)=>j.setHeader(i,n));let x=await T.text();j.send(x)})}if(W?.cors)Q.options("*",(z,Z)=>{let K=new Headers;new Response(null,{status:204}).headers.forEach((I,j)=>K.set(j,I)),Z.status(204).send()});return Q}var U20=l$(()=>{qo()});function B20($,X,J){let W=qT($,X,J);return async function(z){return W(z)}}var Z20=l$(()=>{qo()});function O20($,X,J){return async function(Q,z){let Z=`${Q.headers["x-forwarded-proto"]??"http"}://${Q.headers.host}${Q.url}`,K=Q.method?.toUpperCase()||"GET",I=new Request(Z,{method:K,headers:Object.fromEntries(Object.entries(Q.headers).map(([_,T])=>[_,String(T)])),body:K==="POST"?JSON.stringify(Q.body??{}):void 0}),j=await qT($,()=>X(Q),J)(I);z.status(j.status),j.headers.forEach((_,T)=>z.setHeader(T,_));let b=await j.text();z.send(b)}}var q20=l$(()=>{qo()});var HL6=l$(()=>{$_$()});var GL6=l$(()=>{MU0();$_$();HL6();qo();G20();U20();Z20();q20()});function zOD($,X){if($.key!==X.key)return!1;if(X.version!=null&&$.version!==X.version)return!1;return!0}function V20($){return F20($.meta.key,$.meta.version)}function w20($){return $}var zL6,F20=($,X)=>`${$}.v${X}`,K20=class{items=new Map;register($){let X=F20($.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(F20($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||zL6.compareVersions(W.meta.version,J.meta.version)>0)J=W}return J}satisfies($,X){if($.optional)return!0;if(X?.some((W)=>zOD(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 A20=l$(()=>{zL6=XY(kC(),1)});var DJ,sd,UL6,I20,BL6;var mO=l$(()=>{DJ={Idea:"idea",InCreation:"in_creation",Experimental:"experimental",Beta:"beta",Stable:"stable",Deprecated:"deprecated"},sd={PlatformCore:"platform.core",PlatformSigil:"platform.sigil",PlatformMarketplace:"platform.marketplace",PlatformMessaging:"platform.messaging",PlatformContent:"platform.content",PlatformFeatureFlags:"platform.featureflags",PlatformFinance:"platform.finance"},UL6=sd,I20={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"},BL6=I20});function E20($){return $.register(D_$).register(X_$).register(Y_$)}var L20,j20,D_$,X_$,Y_$;var M20=l$(()=>{mO();L20=["platform.finance"],j20=["open-banking","finance"],D_$={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:[...L20],tags:[...j20],stability:DJ.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."}]},X_$={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:[...L20],tags:[...j20,"transactions"],stability:DJ.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."}]},Y_$={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:[...L20],tags:[...j20,"balances"],stability:DJ.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 ZL6=l$(()=>{A20();M20()});var UOD,J_$,W_$,Q_$,P20;var N20=l$(()=>{mO();sE();UOD=["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"],J_$=JH.enum(UOD),W_$=JH.object({path:JH.string().min(1),type:JH.string().min(1),content:JH.string().optional()}),Q_$=JH.object({key:JH.string().min(1),type:J_$,version:JH.string(),title:JH.string().min(1),description:JH.string().min(1),meta:JH.object({stability:JH.enum([DJ.Idea,DJ.InCreation,DJ.Experimental,DJ.Beta,DJ.Stable,DJ.Deprecated]),owners:JH.array(JH.string().min(1)).default([]),tags:JH.array(JH.string().min(1)).default([])}),dependencies:JH.array(JH.string().min(1)).optional(),registryDependencies:JH.array(JH.string().min(1)).optional(),files:JH.array(W_$).min(1),schema:JH.object({input:JH.unknown().optional(),output:JH.unknown().optional()}).optional()}),P20=JH.object({$schema:JH.string().min(1).optional(),name:JH.string().min(1),homepage:JH.string().min(1).optional(),items:JH.array(Q_$)})});var OL6=l$(()=>{N20()});var FT=($)=>("ref"in $),aZ=($)=>({...$,meta:{...$.meta,kind:"command"},policy:{...$.policy,idempotent:$.policy?.policy?.idempotent??!1}}),Nw=($)=>({...$,meta:{...$.meta,kind:"query"},policy:{...$.policy,idempotent:!0}});var KT=()=>{};function ed($,X){return`${$}.v${X}`}var bw;var H_$=l$(()=>{mL();xQ0();KT();bw=class extends vB{handlers=new Map;constructor($){super("operation",$)}bind($,X){let J=ed($.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(ed(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 Q=this.get($,X);if(!Q)throw Error(`Spec not found for ${$}${X?`.v${X}`:""}`);let z=await W.specVariantResolver?.resolve({name:Q.meta.key,version:Q.meta.version,kind:Q.meta.kind},W)??Q,Z=ed(z.meta.key,z.meta.version),K=this.handlers.get(Z);if(!K){let i=ed(Q.meta.key,Q.meta.version);K=this.handlers.get(i),Z=i}if(!K)throw Error(`No handler bound for ${Z}`);let I=z.io.input?.getZod().parse(J);if(W.decide){let[i,Z$]=z.meta.key.split(".");if(!i||!Z$)throw Error(`Invalid spec name: ${z.meta.key}`);let M$=await W.decide({service:i,command:Z$,version:z.meta.version,actor:W.actor??"anonymous",channel:W.channel,roles:W.roles,organizationId:W.organizationId,userId:W.userId,flags:[]});if(M$.effect==="deny")throw Error(`PolicyDenied: ${z.meta.key}.v${z.meta.version}`);if(M$.rateLimit&&W.rateLimit){let T$=M$.rateLimit.key??"default",_$=M$.rateLimit.rpm??60;await W.rateLimit(T$,1,_$)}}let j=new Map;if(z.sideEffects?.emits)for(let i of z.sideEffects.emits)if(FT(i)){let Z$=W.eventSpecResolver?.get(i.ref.key,i.ref.version);if(Z$)j.set(`${i.ref.key}.v${i.ref.version}`,Z$.payload)}else j.set(`${i.key}.v${i.version}`,i.payload);let b=async(i,Z$,M$)=>{let T$=wR$(i,Z$),_$=j.get(T$);if(!_$)throw Error(`UndeclaredEvent: ${T$} not allowed by ${ed(z.meta.key,z.meta.version)}`);let D0=_$.getZod().parse(M$);await W.eventPublisher?.({key:i,version:Z$,payload:D0,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,T=async(i,Z$)=>{if(!_||!i?.event)return;try{let M$=i.properties?.(Z$)??{};await _.track(i.event.key,i.event.version??"1.0.0",M$,{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(M$){}},x;try{x=await K(I,{...W,__emitGuard__:b})}catch(i){if(z.telemetry?.failure)await T(z.telemetry.failure,{input:I??J,error:i});throw i}if(z.telemetry?.success)await T(z.telemetry.success,{input:I??J,output:x});let n=z.io.output;if(n?.getZod)return n.getZod().parse(x);return x}}});function qL6($,X){return{ref:async(J,W)=>{await X.__emitGuard__?.(J.meta.key,J.meta.version,W)},key:async(J,W,Q)=>{await X.__emitGuard__?.(J,W,Q)},object:async(J)=>{await X.__emitGuard__?.(J.key,J.version,J.payload)}}}function b20($,X,J){return $.register(X).bind(X,J)}function FL6($,X){return{spec:$,handler:X,install:(J)=>b20(J,$,X)}}var KL6=l$(()=>{H_$()});function AL6($,X){return`${$.replace(/\./g,"_")}_v${X}`}function VL6($,X,J){return`${$}_${AL6(X,J)}`}function BOD($,X){return(X??($==="query"?"GET":"POST")).toLowerCase()}function ZOD($){let X=$.transport?.rest?.path??P1$($.meta.key,$.meta.version);return X.startsWith("/")?X:`/${X}`}function ZD$($,X={}){let J=$.list().filter((Q)=>Q.meta.kind==="command"||Q.meta.kind==="query").slice().sort((Q,z)=>{let Z=Q.meta.key.localeCompare(z.meta.key);return Z!==0?Z:wL6.compareVersions(Q.meta.version,z.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 Q of J){let z=xr(Q),Z=BOD(Q.meta.kind,Q.transport?.rest?.method),K=ZOD(Q),I=AL6(Q.meta.key,Q.meta.version),j=W.paths[K]??={},b={operationId:I,summary:Q.meta.description??Q.meta.key,description:Q.meta.description,tags:Q.meta.tags??[],"x-contractspec":{name:Q.meta.key,version:Q.meta.version,kind:Q.meta.kind},responses:{}};if(z.input){let T=VL6("Input",Q.meta.key,Q.meta.version);W.components.schemas[T]=z.input,b.requestBody={required:!0,content:{"application/json":{schema:{$ref:`#/components/schemas/${T}`}}}}}let _={};if(z.output){let T=VL6("Output",Q.meta.key,Q.meta.version);W.components.schemas[T]=z.output,_["200"]={description:"OK",content:{"application/json":{schema:{$ref:`#/components/schemas/${T}`}}}}}else _["200"]={description:"OK"};b.responses=_,j[Z]=b}return W}var wL6;var IL6=l$(()=>{of();wL6=XY(kC(),1)});function LL6($){return $}var jL6=()=>{};var EL6,ML6=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,Q]of this.prompts.entries()){if(!W.startsWith(`${$}.v`))continue;if(!J||EL6.compareVersions(Q.meta.version,J.meta.version)>0)J=Q}return J}};var PL6=l$(()=>{EL6=XY(kC(),1)});var VT=l$(()=>{KT();H_$()});function NL6($){return $}function RL6($,X){return{kind:"resource_ref",uriTemplate:$,varName:X.varName??"id",graphQLType:X.graphQLType,many:X.many}}function CL6($){let X=$;return!!X&&X.kind==="resource_ref"&&typeof X.uriTemplate==="string"}var bL6=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 Q=[...X.meta.uriTemplate.matchAll(/\{([^}]+)\}/g)].map((Z)=>Z[1]),z={};return Q.forEach((Z,K)=>{let I=W[K+1];if(Z&&I)z[Z]=decodeURIComponent(I)}),{tmpl:X,params:z}}}};var TL6=()=>{};function OOD($){if(YM($))return $.config.name;return"AnonymousSchema_"+Math.random().toString(36).substring(7)}var SL6=class{items=new Map;constructor($){if($)$.forEach((X)=>this.register(X))}register($){let X=OOD($);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 _L6=l$(()=>{iL()});var R20,C20,vL6,T20,kL6,S20,yL6,_20,v20,xL6;var fL6=l$(()=>{mO();KT();VT();iL();R20=new $J({name:"SaveOnboardingDraftInput",description:"Input for saving onboarding draft",fields:{data:{type:v1.JSON(),isOptional:!1}}}),C20=new $J({name:"SaveOnboardingDraftOutput",description:"Output for saving onboarding draft",fields:{id:{type:v1.ID(),isOptional:!1},organizationId:{type:v1.ID(),isOptional:!1}}}),vL6=aZ({meta:{key:"base.onboarding.saveDraft",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:R20,output:C20},policy:{auth:"user",escalate:null},transport:{gql:{field:"saveOnboardingDraft"},rest:{method:"POST"}}}),T20=new $J({name:"GetOnboardingDraftOutput",description:"Onboarding draft payload",fields:{id:{type:v1.ID(),isOptional:!0},organizationId:{type:v1.ID(),isOptional:!0},data:{type:v1.JSON(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!0},updatedAt:{type:v1.DateTime(),isOptional:!0}}}),kL6=Nw({meta:{key:"base.onboarding.getDraft",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:T20},policy:{auth:"user",escalate:null},transport:{gql:{field:"getOnboardingDraft"},rest:{method:"GET"}}}),S20=new $J({name:"DeleteOnboardingDraftOutput",description:"Result of delete operation",fields:{ok:{type:v1.Boolean(),isOptional:!1}}}),yL6=aZ({meta:{key:"base.onboarding.deleteDraft",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:S20},policy:{auth:"user",escalate:null},transport:{gql:{field:"deleteOnboardingDraft"},rest:{method:"POST"}}}),_20=new $J({name:"CompleteOnboardingBaseInput",description:"Input for completing onboarding",fields:{data:{type:v1.JSON(),isOptional:!1}}}),v20=new $J({name:"CompleteOnboardingBaseOutput",description:"Result of onboarding completion",fields:{success:{type:v1.Boolean(),isOptional:!1},userId:{type:v1.ID(),isOptional:!0},organizationId:{type:v1.ID(),isOptional:!0}}}),xL6=aZ({meta:{key:"base.onboarding.complete",version:"1.0.0",stability:DJ.Beta,owners:[sd.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:_20,output:v20},policy:{auth:"user",escalate:null},transport:{gql:{field:"completeOnboarding"},rest:{method:"POST"}}})});function k20($){return $}var y20=()=>{};function x20($){return`${$.meta.key}.v${$.meta.version}`}var f20;var u20=l$(()=>{mL();f20=class extends vB{constructor($){super("data-view",$)}}});var uL6=l$(()=>{y20();u20()});var g20;var G_$=l$(()=>{mL();g20=class extends vB{constructor($){super("policy",$)}}});function qOD($){if($.startsWith("write"))return"write";return"read"}function gL6($,X){let J=$.subject;if(!J)return!0;if(J.roles?.length){let W=X.roles??[];if(!J.roles.some((Q)=>W.includes(Q)))return!1}if(J.attributes){let W=X.attributes??{};if(!dL6(J.attributes,W))return!1}return!0}function hL6($,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((Q)=>W.includes(Q)))return!1}if(J.attributes){let W=X.attributes??{};if(!dL6(J.attributes,W))return!1}return!0}function FOD($,X){if(!$.flags?.length)return!0;let J=new Set;if(X.flags)for(let Q of X.flags)J.add(Q);let W=X.subject.attributes?.featureFlags;if(Array.isArray(W))for(let Q of W)J.add(Q);return $.flags.every((Q)=>J.has(Q))}function KOD($,X){if(!$||$.length===0)return!0;let J=X.subject.relationships??[],W=jOD(X.resource),Q=X.resource.type;return $.every((z)=>J.some((Z)=>{if(Z.relation!==z.relation)return!1;if(!(!z.objectType||Z.objectType===z.objectType||z.objectType===Q))return!1;if(!z.objectId)return!0;if(z.objectId==="$resource"){if(W)return Z.object===W;return Z.object===Q||Z.objectType===Q}return Z.object===z.objectId}))}function mL6($,X){if(!$.conditions||$.conditions.length===0)return!0;return $.conditions.every((J)=>IOD(J.expression,X))}function dL6($,X){for(let[J,W]of Object.entries($)){let Q=X[J];if(W.exists&&typeof Q>"u")return!1;if(typeof W.equals<"u"){if(Q!==W.equals)return!1}if(W.oneOf&&!W.oneOf.includes(Q))return!1}return!0}function VOD($,X,J){if(!$.requiresConsent?.length)return[];let W=new Set(J.consents??[]),Q=$.requiresConsent.filter((z)=>!W.has(z));if(Q.length===0)return[];return wOD(X,Q)}function wOD($,X){let J=$.consents??[];return X.map((W)=>{return J.find((Q)=>Q.id===W)??{id:W,scope:"unspecified",purpose:"unspecified",description:`Consent "${W}" required by ${$.meta.key}`,required:!0}})}function AOD($,X,J){if(!$.rateLimit)return;let W=typeof $.rateLimit==="string"?(X.rateLimits??[]).find((Q)=>Q.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 IOD($,X){let J=$.trim();if(!J)return!0;let W={subject:X.subject,resource:X.resource,context:X.context??{}};try{let Q=Function("subject","resource","context",`return (${LOD(J)});`)(W.subject,W.resource,W.context);return Boolean(Q)}catch(Q){return!1}}function LOD($){return $.replace(/&&/g,"&&").replace(/\|\|/g,"||")}function jOD($){if($.id)return $.id;let X=$.attributes?.id;if(typeof X==="string")return X;if(typeof X==="number")return String(X)}var h20=class{constructor($){this.registry=$}decide($){let X=this.resolvePolicies($.policies),J,W,Q;for(let K of X){let I=this.matchRuleSet(K,$);if(!I)continue;if(I.rule.effect==="deny")return{effect:"deny",reason:I.rule.reason??K.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??K.meta.key;if(!W&&I.rateLimit)W=I.rateLimit;if(!Q&&I.rule.escalate)Q=I.rule.escalate}}let z=this.evaluateFields(X,$),Z=X.find((K)=>K.pii)?.pii;return{effect:J?"allow":"deny",reason:J,rateLimit:W,escalate:typeof Q>"u"?void 0:Q,fieldDecisions:z.length?z:void 0,pii:Z,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(!gL6(W,X.subject))continue;if(!hL6(W,X.resource))continue;if(!FOD(W,X))continue;if(!KOD(W.relationships,X))continue;if(!mL6(W,X))continue;let Q={rule:W,missingConsents:VOD(W,$,X),rateLimit:AOD(W,$,X)};if(W.effect==="deny")return Q;if(W.effect==="allow"&&!J)J=Q}return J}evaluateFields($,X){let J=new Map;for(let W of $){if(!W.fieldPolicies)continue;for(let Q of W.fieldPolicies){if(!Q.actions.includes(qOD(X.action)))continue;if(!gL6(Q,X.subject))continue;if(!hL6(Q,X.resource))continue;if(!mL6(Q,X))continue;let z=J.get(Q.field);if(Q.effect==="deny")J.set(Q.field,{field:Q.field,effect:"deny",reason:Q.reason??W.meta.key});else if(!z)J.set(Q.field,{field:Q.field,effect:"allow",reason:Q.reason??W.meta.key})}}return[...J.values()]}};var m20=l$(()=>{G_$()});function z_$($,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 EOD($,X,J){if(J.length===0)return X;let W=new Set(X.map((z)=>z.id)),Q=[...X];for(let z of J){if(W.has(z))continue;let Z=MOD($,z);if(Z)Q.push(Z),W.add(Z.id)}return Q}function MOD($,X){for(let J of $){let W=J.consents?.find((Q)=>Q.id===X);if(W)return W}return{id:X,scope:"unspecified",purpose:"unspecified",description:`Consent "${X}" returned by OPA`,required:!0}}var d20=class{constructor($,X){this.client=$,this.options=X}async evaluate($,X,J){let W=z_$($,X,J),Q=await this.client.evaluate(this.options.decisionPath,W),z=this.options.mapResult?this.options.mapResult(Q):Q;if(!z)return{...J,evaluatedBy:J.evaluatedBy??"engine"};let Z=z,K=EOD(X,J.requiredConsents??[],Z.requiredConsents??[]);return{...J,effect:Z.effect??J.effect,reason:Z.reason??J.reason,fieldDecisions:Z.fieldDecisions??J.fieldDecisions,requiredConsents:K.length?K:void 0,evaluatedBy:"opa"}}};var l20=()=>{};var lL6=l$(()=>{G_$();m20();l20()});function iL6($){return{key:$.meta.key,version:$.meta.version}}var cL6;var pL6=l$(()=>{mL();cL6=class extends vB{constructor($){super("theme",$)}}});var c20,nL6=($,X)=>`${$}.v${X}`,rL6=class{items=new Map;register($){let X=nL6($.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:c20.compareVersions($.meta.version,X.meta.version)})}get($,X){if(X!=null)return this.items.get(nL6($,X));let J;for(let W of this.items.values()){if(W.meta.key!==$)continue;if(!J||c20.compareVersions(W.meta.version,J.meta.version)>0)J=W}return J}};var oL6=l$(()=>{c20=XY(kC(),1)});function p20($){return POD($)}var aL6,POD=($)=>`${$.key}.v${$.version}`,i20;var n20=l$(()=>{mL();aL6=XY(kC(),1),i20=class extends vB{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||aL6.compareVersions(W.version,J.version)>0)J=W}return J}getSpecForEvent($,X){return this.specByEventKey.get(`${$}.v${X}`)}}});import{randomUUID as NOD}from"crypto";var bOD=($)=>{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"},r20=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 Q=this.registry.findEventDef($,X);if(!Q)return!1;let z=this.registry.getSpecForEvent(Q.key,Q.version);if(!z)return!1;if(!this.shouldSample(Q.sampling??z.config?.defaultSamplingRate))return!1;let Z=this.redactProperties(Q,J),K={id:NOD(),name:Q.key,version:Q.version,occurredAt:this.clock().toISOString(),properties:Z,privacy:Q.privacy,context:W,tags:Q.tags,spec:z,definition:Q};return await Promise.all([...this.providers.values()].map((I)=>I.send(K))),this.anomalyMonitor?.observe(K),!0}shouldSample($){if(typeof $==="number")return this.random()<$;if(!$)return!0;return this.random()<$.rate}redactProperties($,X){let J={};for(let[W,Q]of Object.entries(X)){let z=$.properties[W];if(!z){J[W]=Q;continue}if(z.redact||z.pii||$.privacy==="sensitive")J[W]=bOD(Q);else J[W]=Q}return J}};var o20=()=>{};var a20=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 Q of X.thresholds){let z=this.extractMetric($,Q.metric);if(typeof z!=="number")continue;if(typeof Q.min==="number"&&z<Q.min)this.emit($,X,Q.metric,z,"min");if(typeof Q.max==="number"&&z>Q.max)this.emit($,X,Q.metric,z,"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,Q){this.onAnomaly?.({dispatch:$,threshold:X,metric:J,value:W,type:Q})}reset(){this.samples.clear()}};var t20=()=>{};var tL6=l$(()=>{n20();o20();t20()});function e20($){return eL6($)}var sL6,eL6=($)=>`${$.key}.v${$.version}`,s20=class{items=new Map;register($){let X=eL6($.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||sL6.compareVersions(W.meta.version,J.meta.version)>0)J=W}return J}};var $O0=l$(()=>{sL6=XY(kC(),1)});import{deepStrictEqual as ROD}from"assert";var OD$=class{constructor($){this.config=$}async run($){let X=[],J=0,W=0;for(let Q of $.scenarios){await this.config.beforeEach?.(Q);let z=await this.runScenario($,Q);if(X.push(z),z.status==="passed")J+=1;else W+=1;await this.config.afterEach?.(Q,z)}return{spec:$,scenarios:X,passed:J,failed:W}}async runScenario($,X){let J=[];try{let W=await this.createContext(),Q=[...$.fixtures??[],...X.given??[]],z=[];for(let I of Q)await this.executeOperation(I,W,z);let Z=await this.executeOperation(X.when,W,z),K=X.then??[];for(let I of K){let j=this.evaluateAssertion(I,Z,z);J.push(j)}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(Q)=>{J.push({key:Q.key,version:Q.version,payload:Q.payload}),await X.eventPublisher?.(Q)}};try{return{output:await this.config.registry.execute($.operation.key,$.operation.version,$.input??null,W),events:J}}catch(Q){return{error:Q,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 ROD(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 Q=X.filter((z)=>z.key===W.key&&z.version===W.version).length;if(typeof W.min==="number"&&Q<W.min||typeof W.max==="number"&&Q>W.max)J.push(`Event ${W.key}.v${W.version} occurred ${Q} times (expected ${W.min??0} - ${W.max??"∞"})`);else if(typeof W.min>"u"&&typeof W.max>"u"&&Q===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 DO0=l$(()=>{ZM()});var XO0=l$(()=>{$O0();DO0()});function Dj6($){return COD($)}var COD=($)=>`${$.key}.v${$.version}`,$j6;var Xj6=l$(()=>{mL();$j6=class extends vB{constructor($){super("experiment",$)}}});import{createHash as TOD}from"node:crypto";var Yj6=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((z,Z)=>z+(Z.weight??1),0),Q=0;for(let z of J)if(Q+=z.weight??1,W<=Q)return z;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=TOD("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 Q=$.variants.find((z)=>z.id===W.variantId);if(!Q)continue;if(typeof W.percentage==="number"){if(this.randomSeed(X,`rule-${W.variantId}`)>W.percentage)continue}return Q}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 Jj6=()=>{};function Qj6($){return SOD($)}var SOD=($)=>`${$.key}.v${$.version}`,Wj6;var Hj6=l$(()=>{mL();Wj6=class extends vB{constructor($){super("app-config",$)}}});function tU$($,X,J={}){let W=_OD($.capabilities,X.capabilities),Q=vOD($.features,X.features),z=Gj6($.dataViews??{},X.dataViewOverrides),Z=Gj6($.workflows??{},X.workflowOverrides),K=kOD($.policies??[],X.additionalPolicies??[]),I=yOD($.theme,X.themeOverride),j=xOD($.telemetry,X.telemetryOverride),b=fOD($.experiments,X.experiments),_=hOD($.featureFlags??[],X.featureFlags??[]),T=mOD($.routes??[],X.routeOverrides??[]),{resolved:x}=Bj6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs),n=lOD(X.knowledge,J.knowledgeSpaces,J.knowledgeSources),i=uOD($.branding,X),Z$=gOD($.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:Q,dataViews:z,workflows:Z,policies:K,theme:I,telemetry:j,experiments:b,featureFlags:_,routes:T,integrations:x,knowledge:n,translation:Z$,branding:i,notes:X.notes??$.notes}}function Uj6($,X,J,W={}){let Q=tU$($,X,J),z=[],Z=Bj6($.integrationSlots,X.integrations,J.integrationConnections,J.integrationSpecs);Q.integrations=Z.resolved,z.push(...Z.missing),z.push(...cOD(X.knowledge??[],J.knowledgeSpaces,J.knowledgeSources));let K=iOD(Q.capabilities.enabled,J.capabilities,z),I=pOD(Q.features.include,J.features,z),j=zj6(Q.dataViews,J.dataViews,"dataView",z),b=zj6(Q.workflows,J.workflows,"workflow",z),_=nOD(Q.policies,J.policies,z),{theme:T,fallbacks:x,themeMissing:n}=rOD(Q.theme,J.themes);z.push(...n);let{telemetry:i,telemetryMissing:Z$}=oOD(Q.telemetry,J.telemetry);z.push(...Z$);let M$=aOD(Q.experiments,J.experiments,z);if(W.strict&&z.length>0){let T$=z.map((_$)=>`${_$.type}:${_$.identifier}`).join(", ");throw Error(`composeAppConfig: missing references -> ${T$}`)}return{resolved:Q,capabilities:K,features:I,dataViews:j,workflows:b,policies:_,theme:T,themeFallbacks:x,telemetry:i,experiments:M$,integrations:Q.integrations,knowledge:Q.knowledge,missing:z}}function _OD($,X){let J=$l([...$?.enabled??[],...X?.enable??[]],qD$),W=$l([...$?.disabled??[],...X?.disable??[]],qD$),Q=new Set(W.map(qD$));return{enabled:J.filter((z)=>!Q.has(qD$(z))),disabled:W}}function vOD($,X){let J=$l([...$?.include??[],...X?.include??[]],U_$),W=$l([...$?.exclude??[],...X?.exclude??[]],U_$),Q=new Set(W.map(U_$));return{include:J.filter((z)=>!Q.has(U_$(z))),exclude:W}}function Gj6($,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 kOD($,X){return $l([...$,...X],YO0)}function yOD($,X){if(!$&&!X)return;let J=X?.primary??$?.primary;if(!J)return;return{primary:J,fallbacks:X?.fallbacks??$?.fallbacks??[]}}function xOD($,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=Zj6([...J.disabledEvents??[],...X.disabledEvents]);if(X?.samplingOverrides)J.samplingOverrides={...J.samplingOverrides??{},...X.samplingOverrides};if(!J.spec&&!J.disabledEvents?.length)return;return J}function fOD($,X){let J=$?.active??[],W=$?.paused??[],Q=X?.active,z=X?.paused,Z=Q&&Q.length>0?Q:J,K=z&&z.length>0?z:W,I=$l(Z,Fo),j=$l(K,Fo),b=new Set(I.map(Fo));return j=j.filter((_)=>!b.has(Fo(_))),{catalog:$l([...J,...W,...Q??[],...z??[]],Fo),active:I,paused:j}}function uOD($,X){let{branding:J,meta:W}=X,Q="app.localhost",z=J?.customDomain??(J?.subdomain?`${J.subdomain}.app.localhost`:`${W.tenantId}.app.localhost`),Z=[];if(X.locales?.defaultLocale)Z.push(X.locales.defaultLocale);if(J?.appName)Z.push("default","en");let K;if(J?.appName){for(let T of Z){let x=J.appName[T];if(x){K=x;break}}if(!K){let[,T]=Object.entries(J.appName)[0]??[];if(typeof T==="string")K=T}}if(!K)K=$?.appNameKey??W.appId;let I=new Map,j=(T)=>{if(!T)return;for(let x of T){if(!x?.type)continue;if("url"in x&&x.url)I.set(x.type,x.url)}};j($?.assets),j(J?.assets);let b={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:K,assets:b,colors:_,domain:z}}function gOD($,X,J){let W=X?.defaultLocale??"en";return{defaultLocale:W,supportedLocales:Zj6([W,...X?.enabledLocales??[]]),blueprintCatalog:$,tenantOverrides:J?.entries??[]}}function hOD($,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 mOD($,X){let J=new Map;for(let W of $)J.set(W.path,{...W});for(let W of X){let Q=J.get(W.path)??{path:W.path};if(W.label!==void 0)if(W.label===null)delete Q.label;else Q.label=W.label;if(W.dataView!==void 0)if(W.dataView===null)delete Q.dataView;else Q.dataView=W.dataView;if(W.workflow!==void 0)if(W.workflow===null)delete Q.workflow;else Q.workflow=W.workflow;if(W.guard!==void 0)if(W.guard===null)delete Q.guard;else Q.guard=W.guard;if(W.featureFlag!==void 0)if(W.featureFlag===null)delete Q.featureFlag;else Q.featureFlag=W.featureFlag;if(W.experiment!==void 0)if(W.experiment===null)delete Q.experiment;else Q.experiment=W.experiment;J.set(Q.path,Q)}return[...J.values()]}function Bj6($,X,J,W){let Q=[],z=[],Z=new Set,K=(T)=>{let x=`${T.type}:${T.identifier}`;if(Z.has(x))return;Z.add(x),z.push(T)},I=$??[],j=new Map;for(let T of I)j.set(T.slotId,T);let b=new Map;for(let T of X??[]){if(!j.get(T.slotId)){K({type:"integrationSlot",identifier:`slot:${T.slotId}`});continue}let x=b.get(T.slotId);if(x)x.push(T);else b.set(T.slotId,[T])}for(let T of I){let x=b.get(T.slotId)??[];if(T.required&&x.length===0)K({type:"integrationSlot",identifier:`slot:${T.slotId}`})}if(!J||!W)return{resolved:Q,missing:z};let _=new Map;for(let T of J)_.set(T.meta.id,T);for(let T of I){let x=b.get(T.slotId)??[];if(x.length===0)continue;let n=[...x].sort((Z$,M$)=>{let T$=Z$.priority??Number.MAX_SAFE_INTEGER,_$=M$.priority??Number.MAX_SAFE_INTEGER;if(T$===_$)return 0;return T$<_$?-1:1}),i=!1;for(let Z$ of n){let M$=_.get(Z$.connectionId);if(!M$){K({type:"integrationConnection",identifier:`connection:${Z$.connectionId}`});continue}let T$=W.get(M$.meta.integrationKey,M$.meta.integrationVersion);if(!T$){K({type:"integrationSpec",identifier:`spec:${M$.meta.integrationKey}.v${M$.meta.integrationVersion}`});continue}if(T$.meta.category!==T.requiredCategory){K({type:"integrationSpec",identifier:`spec:${T$.meta.key}.category`});continue}if(!T$.supportedModes.includes(M$.ownershipMode)){K({type:"integrationSpec",identifier:`spec:${T$.meta.key}.mode:${M$.ownershipMode}`});continue}if(T.allowedModes&&T.allowedModes.length>0&&!T.allowedModes.includes(M$.ownershipMode)){K({type:"integrationConnection",identifier:`connection:${M$.meta.id}:mode`});continue}if(T.requiredCapabilities&&!T.requiredCapabilities.every((_$)=>dOD(T$,_$))){K({type:"integrationSpec",identifier:`spec:${T$.meta.key}.capabilities`});continue}Q.push({slot:T,binding:Z$,connection:M$,spec:T$}),i=!0;break}if(!i&&T.required)K({type:"integrationSlot",identifier:`slot:${T.slotId}`})}return{resolved:Q,missing:z}}function dOD($,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 lOD($,X,J){if(!$?.length||!X)return[];let W=J??[];return $.map((Q)=>{let z=X.get(Q.spaceKey,Q.spaceVersion);if(!z)return null;return{binding:Q,space:z,sources:W.filter((Z)=>{if(Z.meta.spaceKey!==Q.spaceKey)return!1;if(Q.spaceVersion!=null)return Z.meta.spaceVersion===Q.spaceVersion;return!0})}}).filter((Q)=>Q!==null)}function cOD($,X,J){if(!$.length||!X)return[];let W=[],Q=J??[];for(let z of $){if(!X.get(z.spaceKey,z.spaceVersion)){W.push({type:"knowledgeSpace",identifier:z.spaceVersion?`${z.spaceKey}@${z.spaceVersion}`:z.spaceKey});continue}if(J){if(Q.filter((Z)=>{if(Z.meta.spaceKey!==z.spaceKey)return!1;if(z.spaceVersion!=null)return Z.meta.spaceVersion===z.spaceVersion;return!0}).length===0)W.push({type:"knowledgeSource",identifier:z.spaceVersion?`${z.spaceKey}@${z.spaceVersion}`:z.spaceKey})}}return W}function iOD($,X,J){if(!X){if($.length>0)for(let Q of $)J.push({type:"capability",identifier:qD$(Q)});return[]}let W=[];for(let Q of $){let z=X.get(Q.key,Q.version);if(!z){J.push({type:"capability",identifier:qD$(Q)});continue}W.push(z)}return W}function pOD($,X,J){if(!X){if($.length>0)for(let Q of $)J.push({type:"feature",identifier:Q.key});return[]}let W=[];for(let Q of $){let z=X.get(Q.key);if(!z){J.push({type:"feature",identifier:Q.key});continue}W.push(z)}return W}function zj6($,X,J,W){if(!X){if(Object.keys($).length>0)for(let[z,Z]of Object.entries($))W.push({type:J,identifier:`${z} -> ${B_$(Z)}`});return{}}let Q={};for(let[z,Z]of Object.entries($)){let K=X.get(Z.key,Z.version);if(!K){W.push({type:J,identifier:`${z} -> ${B_$(Z)}`});continue}Q[z]=K}return Q}function nOD($,X,J){if(!X){if($.length>0)for(let Q of $)J.push({type:"policy",identifier:YO0(Q)});return[]}let W=[];for(let Q of $){let z=X.get(Q.key,Q.version);if(!z){J.push({type:"policy",identifier:YO0(Q)});continue}W.push(z)}return W}function rOD($,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 z of $.fallbacks??[])J.push({type:"theme",identifier:`${z.key}.v${z.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 Q=[];for(let z of $.fallbacks??[]){let Z=X.get(z.key,z.version);if(!Z){J.push({type:"theme",identifier:`${z.key}.v${z.version}`});continue}Q.push(Z)}return{theme:W??void 0,fallbacks:Q,themeMissing:J}}function oOD($,X){let J=[];if(!$?.spec)return{telemetry:void 0,telemetryMissing:J};if(!X)return J.push({type:"telemetry",identifier:B_$($.spec)}),{telemetry:void 0,telemetryMissing:J};let W=X.get($.spec.key,$.spec.version);if(!W)J.push({type:"telemetry",identifier:B_$($.spec)});return{telemetry:W??void 0,telemetryMissing:J}}function aOD($,X,J){let W=(Q)=>{if(Q.length===0)return[];if(!X){for(let Z of Q)J.push({type:"experiment",identifier:Fo(Z)});return[]}let z=[];for(let Z of Q){let K=X.get(Z.key,Z.version);if(!K){J.push({type:"experiment",identifier:Fo(Z)});continue}z.push(K)}return z};return{active:W($.active),paused:W($.paused)}}function qD$($){return`${$.key}${$.version?`.v${$.version}`:""}`}function U_$($){return $.key}function B_$($){return`${$.key}${$.version?`.v${$.version}`:""}`}function YO0($){return`${$.key}${$.version?`.v${$.version}`:""}`}function Fo($){return`${$.key}${$.version?`.v${$.version}`:""}`}function $l($,X){let J=new Map;for(let W of $)J.set(X(W),W);return[...J.values()]}function Zj6($){return[...new Set($)]}var Oj6=()=>{};function JO0($){return tOD($)}var tOD=($)=>`${$.key}.v${$.version}`,sU$;var Z_$=l$(()=>{mL();sU$=class extends vB{constructor($){super("integration",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function FD$($){return $.register(eU$)}var eU$;var $B$=l$(()=>{mO();eU$={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:DJ.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 KD$($){return $.register(DB$)}var DB$;var XB$=l$(()=>{mO();DB$={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:DJ.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 VD$($){return $.register(YB$)}var YB$;var JB$=l$(()=>{mO();YB$={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:DJ.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 wD$($){return $.register(WB$)}var WB$;var QB$=l$(()=>{mO();WB$={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:DJ.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 AD$($){return $.register(HB$)}var HB$;var GB$=l$(()=>{mO();HB$={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:DJ.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 ID$($){return $.register(zB$)}var zB$;var UB$=l$(()=>{mO();zB$={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:DJ.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 LD$($){return $.register(BB$)}var BB$;var ZB$=l$(()=>{mO();BB$={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:DJ.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 jD$($){return $.register(OB$)}var OB$;var qB$=l$(()=>{mO();OB$={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:DJ.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 ED$($){return $.register(FB$)}var FB$;var KB$=l$(()=>{mO();FB$={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:DJ.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 MD$($){return $.register(VB$)}var VB$;var wB$=l$(()=>{mO();VB$={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:DJ.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 O_$(){let $=new sU$;return FD$($),KD$($),VD$($),wD$($),AD$($),ID$($),LD$($),jD$($),ED$($),MD$($),$}var q_$=l$(()=>{Z_$();$B$();XB$();JB$();QB$();GB$();UB$();ZB$();qB$();KB$();wB$()});var PD$,AB$,ND$;var bD$=l$(()=>{iL();PD$=new $J({name:"BankAccountRecord",description:"Canonical representation of a bank account synced from an open banking provider.",fields:{id:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},userId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!1},externalId:{type:v1.NonEmptyString(),isOptional:!1},institutionId:{type:v1.NonEmptyString(),isOptional:!1},institutionName:{type:v1.NonEmptyString(),isOptional:!1},institutionLogoUrl:{type:v1.URL(),isOptional:!0},iban:{type:v1.String_unsecure(),isOptional:!0},bic:{type:v1.String_unsecure(),isOptional:!0},accountType:{type:v1.NonEmptyString(),isOptional:!1},currency:{type:v1.Currency(),isOptional:!1},displayName:{type:v1.NonEmptyString(),isOptional:!1},accountNumberMasked:{type:v1.String_unsecure(),isOptional:!0},productCode:{type:v1.String_unsecure(),isOptional:!0},balance:{type:v1.Float_unsecure(),isOptional:!0},availableBalance:{type:v1.Float_unsecure(),isOptional:!0},lastSyncedAt:{type:v1.DateTime(),isOptional:!1},createdAt:{type:v1.DateTime(),isOptional:!1},updatedAt:{type:v1.DateTime(),isOptional:!1},metadata:{type:v1.JSONObject(),isOptional:!0}}}),AB$=new $J({name:"BankTransactionRecord",description:"Canonical transaction entry mapped from Powens into the open banking ledger.",fields:{id:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!1},externalId:{type:v1.NonEmptyString(),isOptional:!1},amount:{type:v1.Float_unsecure(),isOptional:!1},currency:{type:v1.Currency(),isOptional:!1},date:{type:v1.DateTime(),isOptional:!1},bookingDate:{type:v1.DateTime(),isOptional:!0},valueDate:{type:v1.DateTime(),isOptional:!0},description:{type:v1.String_unsecure(),isOptional:!0},counterpartyName:{type:v1.String_unsecure(),isOptional:!0},counterpartyAccount:{type:v1.String_unsecure(),isOptional:!0},merchantCategoryCode:{type:v1.String_unsecure(),isOptional:!0},rawCategory:{type:v1.String_unsecure(),isOptional:!0},standardizedCategory:{type:v1.String_unsecure(),isOptional:!0},transactionType:{type:v1.NonEmptyString(),isOptional:!1},status:{type:v1.NonEmptyString(),isOptional:!1},runningBalance:{type:v1.Float_unsecure(),isOptional:!0},metadata:{type:v1.JSONObject(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!1},updatedAt:{type:v1.DateTime(),isOptional:!1}}}),ND$=new $J({name:"AccountBalanceRecord",description:"Canonical balance snapshot computed from Powens balance payloads.",fields:{id:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!1},balanceType:{type:v1.NonEmptyString(),isOptional:!1},currentBalance:{type:v1.Float_unsecure(),isOptional:!1},availableBalance:{type:v1.Float_unsecure(),isOptional:!0},currency:{type:v1.Currency(),isOptional:!1},lastUpdatedAt:{type:v1.DateTime(),isOptional:!1},createdAt:{type:v1.DateTime(),isOptional:!1},metadata:{type:v1.JSONObject(),isOptional:!0}}})});function IB$($){let X={};for(let[J,W]of Object.entries($))if(F_$.includes(J))X[J]=sOD(W);else if(Array.isArray(W))X[J]=W.map((Q)=>typeof Q==="object"&&Q!==null?IB$(Q):Q);else if(typeof W==="object"&&W!==null)X[J]=IB$(W);else X[J]=W;return X}function sOD($){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 F_$,Yb;var RD$=l$(()=>{F_$=["iban","bic","accountNumberMasked","accountNumber","counterpartyName","counterpartyAccount","description","merchantName","merchantCategoryCode","reference"],Yb={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 qj6($){return $.register(LB$).register(jB$).register(EB$)}var eOD,$qD,DqD,XqD,YqD,LB$,jB$,EB$;var K_$=l$(()=>{KT();VT();bD$();RD$();iL();eOD=new $J({name:"OpenBankingListAccountsInput",description:"Parameters for listing bank accounts through the open banking provider.",fields:{tenantId:{type:v1.ID(),isOptional:!1},userId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!0},includeBalances:{type:v1.Boolean(),isOptional:!0},institutionId:{type:v1.String_unsecure(),isOptional:!0},cursor:{type:v1.String_unsecure(),isOptional:!0},pageSize:{type:v1.Int_unsecure(),isOptional:!0}}}),$qD=new $J({name:"OpenBankingListAccountsOutput",description:"Paginated list of bank accounts available to the tenant and user.",fields:{accounts:{type:PD$,isOptional:!1,isArray:!0},nextCursor:{type:v1.String_unsecure(),isOptional:!0},hasMore:{type:v1.Boolean(),isOptional:!0}}}),DqD=new $J({name:"OpenBankingGetAccountInput",description:"Parameters for retrieving a specific bank account.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},includeBalances:{type:v1.Boolean(),isOptional:!0},includeLatestTransactions:{type:v1.Boolean(),isOptional:!0}}}),XqD=new $J({name:"OpenBankingSyncAccountsInput",description:"Command payload to trigger an account synchronisation against the open banking provider.",fields:{tenantId:{type:v1.ID(),isOptional:!1},userId:{type:v1.ID(),isOptional:!0},connectionId:{type:v1.ID(),isOptional:!1},accountIds:{type:v1.ID(),isArray:!0,isOptional:!0},forceFullRefresh:{type:v1.Boolean(),isOptional:!0},triggerWorkflows:{type:v1.Boolean(),isOptional:!0}}}),YqD=new $J({name:"OpenBankingSyncAccountsOutput",description:"Result of a bank account synchronisation run.",fields:{synced:{type:v1.Int_unsecure(),isOptional:!1},failed:{type:v1.Int_unsecure(),isOptional:!1},errors:{type:v1.String_unsecure(),isArray:!0,isOptional:!0},nextSyncSuggestedAt:{type:v1.DateTime(),isOptional:!0}}}),LB$=Nw({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:eOD,output:$qD},policy:{auth:"user"}}),jB$=Nw({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:DqD,output:PD$},policy:{auth:"user"}}),EB$=aZ({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:XqD,output:YqD},policy:{auth:"admin"},telemetry:{success:{event:{key:Yb.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:Yb.accountsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,connectionId:J?.connectionId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function Fj6($){return $.register(MB$).register(PB$)}var JqD,WqD,QqD,HqD,MB$,PB$;var V_$=l$(()=>{KT();VT();bD$();RD$();iL();JqD=new $J({name:"OpenBankingListTransactionsInput",description:"Parameters for listing bank transactions from the canonical ledger.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},from:{type:v1.DateTime(),isOptional:!0},to:{type:v1.DateTime(),isOptional:!0},cursor:{type:v1.String_unsecure(),isOptional:!0},pageSize:{type:v1.Int_unsecure(),isOptional:!0},direction:{type:v1.String_unsecure(),isOptional:!0},minimumAmount:{type:v1.Float_unsecure(),isOptional:!0},maximumAmount:{type:v1.Float_unsecure(),isOptional:!0},category:{type:v1.String_unsecure(),isOptional:!0}}}),WqD=new $J({name:"OpenBankingListTransactionsOutput",description:"Paginated list of transactions for a bank account.",fields:{transactions:{type:AB$,isOptional:!1,isArray:!0},nextCursor:{type:v1.String_unsecure(),isOptional:!0},hasMore:{type:v1.Boolean(),isOptional:!0}}}),QqD=new $J({name:"OpenBankingSyncTransactionsInput",description:"Command payload to synchronise transactions from the open banking provider into the canonical ledger.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},from:{type:v1.DateTime(),isOptional:!0},to:{type:v1.DateTime(),isOptional:!0},connectionId:{type:v1.ID(),isOptional:!0},includePending:{type:v1.Boolean(),isOptional:!0},backfillDays:{type:v1.Int_unsecure(),isOptional:!0}}}),HqD=new $J({name:"OpenBankingSyncTransactionsOutput",description:"Result of a transaction synchronisation run.",fields:{synced:{type:v1.Int_unsecure(),isOptional:!1},failed:{type:v1.Int_unsecure(),isOptional:!1},earliestSyncedAt:{type:v1.DateTime(),isOptional:!0},latestSyncedAt:{type:v1.DateTime(),isOptional:!0},nextSinceToken:{type:v1.String_unsecure(),isOptional:!0},errors:{type:v1.String_unsecure(),isArray:!0,isOptional:!0}}}),MB$=Nw({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:JqD,output:WqD},policy:{auth:"user"}}),PB$=aZ({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:QqD,output:HqD},policy:{auth:"admin"},telemetry:{success:{event:{key:Yb.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:Yb.transactionsSyncFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});function Kj6($){return $.register(NB$).register(bB$)}var GqD,zqD,UqD,BqD,NB$,bB$;var w_$=l$(()=>{KT();VT();bD$();RD$();iL();GqD=new $J({name:"OpenBankingGetBalancesInput",description:"Parameters for retrieving bank account balances from the canonical ledger.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},balanceTypes:{type:v1.String_unsecure(),isArray:!0,isOptional:!0}}}),zqD=new $J({name:"OpenBankingGetBalancesOutput",description:"Canonical balances for a bank account.",fields:{balances:{type:ND$,isOptional:!1,isArray:!0},asOf:{type:v1.DateTime(),isOptional:!0}}}),UqD=new $J({name:"OpenBankingRefreshBalancesInput",description:"Command payload to refresh balances for a bank account via the open banking provider.",fields:{tenantId:{type:v1.ID(),isOptional:!1},accountId:{type:v1.ID(),isOptional:!1},connectionId:{type:v1.ID(),isOptional:!0},balanceTypes:{type:v1.String_unsecure(),isArray:!0,isOptional:!0},forceRefresh:{type:v1.Boolean(),isOptional:!0}}}),BqD=new $J({name:"OpenBankingRefreshBalancesOutput",description:"Result of a balance refresh against the open banking provider.",fields:{balances:{type:ND$,isOptional:!1,isArray:!0},refreshedAt:{type:v1.DateTime(),isOptional:!1},errors:{type:v1.String_unsecure(),isArray:!0,isOptional:!0}}}),NB$=Nw({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:GqD,output:zqD},policy:{auth:"user"}}),bB$=aZ({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:UqD,output:BqD},policy:{auth:"admin"},telemetry:{success:{event:{key:Yb.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:Yb.balancesRefreshFailed},properties:({input:$,error:X})=>{let J=$;return{tenantId:J?.tenantId,accountId:J?.accountId,error:X instanceof Error?X.message:String(X??"unknown")}}}}})});var A_$;var I_$=l$(()=>{A_$={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 WO0($){return Kj6(Fj6(qj6($)))}var QO0=l$(()=>{K_$();V_$();w_$();I_$()});function L_$($){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 HO0($){let X=L_$($);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 GO0=()=>{};var Vj6=l$(()=>{$B$();XB$();JB$();QB$();GB$();UB$();ZB$();qB$();KB$();wB$();q_$()});var wj6=l$(()=>{Z_$();$B$();XB$();JB$();QB$();GB$();UB$();ZB$();qB$();KB$();wB$();q_$();Vj6();bD$();RD$();K_$();V_$();w_$();I_$();QO0();GO0()});function UO0($){return`${$.key}.v${$.version}`}var zO0;var BO0=l$(()=>{mL();zO0=class extends vB{constructor($){super("knowledge-space",$)}getByCategory($){return this.list().filter((X)=>X.meta.category===$)}}});function j_$($){return $.register(RB$)}var RB$;var E_$=l$(()=>{mO();RB$={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:DJ.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 M_$($){return $.register(CB$)}var CB$;var P_$=l$(()=>{mO();CB$={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:DJ.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 N_$($){return $.register(TB$)}var TB$;var b_$=l$(()=>{mO();TB$={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:DJ.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 R_$($){return $.register(SB$)}var SB$;var C_$=l$(()=>{mO();SB$={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:DJ.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 T_$($){return $.register(_B$)}var _B$;var S_$=l$(()=>{mO();_B$={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:DJ.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 __$($){return $.register(vB$)}var vB$;var v_$=l$(()=>{mO();vB$={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:DJ.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 Aj6=l$(()=>{E_$();P_$();b_$();C_$();S_$();v_$()});var Ij6=l$(()=>{BO0();E_$();P_$();b_$();C_$();S_$();v_$();Aj6()});function jj6($){return $.register(k_$).register(y_$).register(x_$).register(f_$).register(u_$)}var ZO0,ZqD,OqD,qqD,FqD,KqD,VqD,wqD,AqD,k_$,y_$,x_$,f_$,u_$,Lj6;var Ej6=l$(()=>{KT();VT();iL();ZO0=new $J({name:"IntegrationConnectionRecord",fields:{id:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},integrationKey:{type:v1.NonEmptyString(),isOptional:!1},integrationVersion:{type:v1.Int_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},ownershipMode:{type:v1.String_unsecure(),isOptional:!1},externalAccountId:{type:v1.String_unsecure(),isOptional:!0},secretProvider:{type:v1.String_unsecure(),isOptional:!1},secretRef:{type:v1.String_unsecure(),isOptional:!1},status:{type:v1.String_unsecure(),isOptional:!1},environment:{type:v1.String_unsecure(),isOptional:!0},healthStatus:{type:v1.String_unsecure(),isOptional:!0},healthCheckedAt:{type:v1.DateTime(),isOptional:!0},healthLatencyMs:{type:v1.Float_unsecure(),isOptional:!0},healthErrorCode:{type:v1.String_unsecure(),isOptional:!0},healthErrorMessage:{type:v1.String_unsecure(),isOptional:!0},usageRequestCount:{type:v1.Int_unsecure(),isOptional:!0},usageSuccessCount:{type:v1.Int_unsecure(),isOptional:!0},usageErrorCount:{type:v1.Int_unsecure(),isOptional:!0},usageLastUsedAt:{type:v1.DateTime(),isOptional:!0},usageLastErrorAt:{type:v1.DateTime(),isOptional:!0},usageLastErrorCode:{type:v1.String_unsecure(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!0},updatedAt:{type:v1.DateTime(),isOptional:!0}}}),ZqD=new $J({name:"CreateIntegrationConnectionInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},integrationKey:{type:v1.NonEmptyString(),isOptional:!1},integrationVersion:{type:v1.Int_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},ownershipMode:{type:v1.String_unsecure(),isOptional:!1},externalAccountId:{type:v1.String_unsecure(),isOptional:!0},secretProvider:{type:v1.String_unsecure(),isOptional:!1},secretRef:{type:v1.String_unsecure(),isOptional:!1},environment:{type:v1.String_unsecure(),isOptional:!0},config:{type:v1.JSONObject(),isOptional:!1}}}),OqD=new $J({name:"UpdateIntegrationConnectionInput",fields:{connectionId:{type:v1.ID(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!0},status:{type:v1.String_unsecure(),isOptional:!0},ownershipMode:{type:v1.String_unsecure(),isOptional:!0},externalAccountId:{type:v1.String_unsecure(),isOptional:!0},secretProvider:{type:v1.String_unsecure(),isOptional:!0},secretRef:{type:v1.String_unsecure(),isOptional:!0},config:{type:v1.JSONObject(),isOptional:!0}}}),qqD=new $J({name:"DeleteIntegrationConnectionInput",fields:{connectionId:{type:v1.ID(),isOptional:!1}}}),FqD=new $J({name:"ListIntegrationConnectionsInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},category:{type:v1.String_unsecure(),isOptional:!0},status:{type:v1.String_unsecure(),isOptional:!0}}}),KqD=new $J({name:"ListIntegrationConnectionsOutput",fields:{connections:{type:ZO0,isOptional:!1,isArray:!0}}}),VqD=new $J({name:"TestIntegrationConnectionInput",fields:{connectionId:{type:v1.ID(),isOptional:!1}}}),wqD=new $J({name:"TestIntegrationConnectionOutput",fields:{success:{type:v1.Boolean(),isOptional:!1},status:{type:v1.String_unsecure(),isOptional:!0},latencyMs:{type:v1.Float_unsecure(),isOptional:!0},error:{type:v1.String_unsecure(),isOptional:!0},errorCode:{type:v1.String_unsecure(),isOptional:!0}}}),AqD=new $J({name:"DeleteIntegrationConnectionOutput",fields:{success:{type:v1.Boolean(),isOptional:!1}}}),k_$=aZ({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:ZqD,output:ZO0},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),y_$=aZ({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:OqD,output:ZO0},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),x_$=aZ({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:qqD,output:AqD},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),f_$=Nw({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:FqD,output:KqD},policy:{auth:"admin",policies:[{key:"platform.integration.read",version:"1.0.0"}]}}),u_$=aZ({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:VqD,output:wqD},policy:{auth:"admin",policies:[{key:"platform.integration.manage",version:"1.0.0"}]}}),Lj6={CreateIntegrationConnection:k_$,UpdateIntegrationConnection:y_$,DeleteIntegrationConnection:x_$,ListIntegrationConnections:f_$,TestIntegrationConnection:u_$}});function Pj6($){return $.register(g_$).register(h_$).register(m_$).register(d_$).register(l_$)}var OO0,qO0,IqD,LqD,jqD,EqD,MqD,PqD,NqD,bqD,g_$,h_$,m_$,d_$,l_$,Mj6;var Nj6=l$(()=>{KT();VT();iL();OO0=new $J({name:"KnowledgeSyncSchedule",fields:{enabled:{type:v1.Boolean(),isOptional:!1},cron:{type:v1.String_unsecure(),isOptional:!0},intervalMs:{type:v1.Int_unsecure(),isOptional:!0}}}),qO0=new $J({name:"KnowledgeSourceRecord",fields:{id:{type:v1.ID(),isOptional:!1},tenantId:{type:v1.ID(),isOptional:!1},spaceKey:{type:v1.NonEmptyString(),isOptional:!1},spaceVersion:{type:v1.String_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},sourceType:{type:v1.String_unsecure(),isOptional:!1},syncSchedule:{type:OO0,isOptional:!0},lastSyncStatus:{type:v1.String_unsecure(),isOptional:!0},lastSyncAt:{type:v1.DateTime(),isOptional:!0},itemsProcessed:{type:v1.Int_unsecure(),isOptional:!0},createdAt:{type:v1.DateTime(),isOptional:!0},updatedAt:{type:v1.DateTime(),isOptional:!0}}}),IqD=new $J({name:"CreateKnowledgeSourceInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},spaceKey:{type:v1.NonEmptyString(),isOptional:!1},spaceVersion:{type:v1.String_unsecure(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!1},sourceType:{type:v1.NonEmptyString(),isOptional:!1},config:{type:v1.JSONObject(),isOptional:!1},syncSchedule:{type:OO0,isOptional:!0}}}),LqD=new $J({name:"UpdateKnowledgeSourceInput",fields:{sourceId:{type:v1.ID(),isOptional:!1},label:{type:v1.String_unsecure(),isOptional:!0},config:{type:v1.JSONObject(),isOptional:!0},syncSchedule:{type:OO0,isOptional:!0}}}),jqD=new $J({name:"DeleteKnowledgeSourceInput",fields:{sourceId:{type:v1.ID(),isOptional:!1}}}),EqD=new $J({name:"DeleteKnowledgeSourceOutput",fields:{success:{type:v1.Boolean(),isOptional:!1}}}),MqD=new $J({name:"ListKnowledgeSourcesInput",fields:{tenantId:{type:v1.ID(),isOptional:!1},spaceKey:{type:v1.NonEmptyString(),isOptional:!0}}}),PqD=new $J({name:"ListKnowledgeSourcesOutput",fields:{sources:{type:qO0,isOptional:!1,isArray:!0}}}),NqD=new $J({name:"TriggerKnowledgeSyncInput",fields:{sourceId:{type:v1.ID(),isOptional:!1}}}),bqD=new $J({name:"TriggerKnowledgeSyncOutput",fields:{success:{type:v1.Boolean(),isOptional:!1},itemsProcessed:{type:v1.Int_unsecure(),isOptional:!0},error:{type:v1.String_unsecure(),isOptional:!0}}}),g_$=aZ({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:IqD,output:qO0},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),h_$=aZ({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:LqD,output:qO0},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),m_$=aZ({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:jqD,output:EqD},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),d_$=Nw({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:MqD,output:PqD},policy:{auth:"admin",policies:[{key:"platform.knowledge.read",version:"1.0.0"}]}}),l_$=aZ({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:NqD,output:bqD},policy:{auth:"admin",policies:[{key:"platform.knowledge.manage",version:"1.0.0"}]}}),Mj6={CreateKnowledgeSource:g_$,UpdateKnowledgeSource:h_$,DeleteKnowledgeSource:m_$,ListKnowledgeSources:d_$,TriggerKnowledgeSourceSync:l_$}});function yB$($,X,J){return{type:"telemetry",contextId:$,signal:RqD(X,J)}}function xB$($,X,J){return{type:"error",contextId:$,signal:CqD(X,J)}}function fB$($,X,J){return{type:"behavior",contextId:$,signal:TqD(X,J)}}function RqD($,X){return{...$,windowStart:kB$($.windowStart,X),windowEnd:kB$($.windowEnd,X)}}function CqD($,X){return{...$,occurredAt:kB$($.occurredAt,X)}}function TqD($,X){return{...$,windowStart:kB$($.windowStart,X),windowEnd:kB$($.windowEnd,X)}}function kB$($,X){if($ instanceof Date)return $;let J=new Date($);if(Number.isNaN(J.getTime()))return X();return J}var c_$=()=>{};var SqD=($)=>new Promise((X)=>setTimeout(X,$)),_qD=60000,vqD=300000,Ko=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??_qD,this.batchDuration=$.batchDurationMs??vqD,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 Q of this.options.rules){let z=[];try{z=await Q.evaluate($,W)}catch(Z){console.error(`[regenerator] rule ${Q.id} failed`,Z instanceof Error?Z:Error(String(Z)));continue}await this.flushProposals($,z)}}async collectSignals($,X,J){let W=[],{adapters:Q}=this.options;if(Q.telemetry){let z=await Q.telemetry.pollTelemetry($,X,J);W.push(...z.map((Z)=>yB$($.id,Z,this.clock)))}if(Q.errors){let z=await Q.errors.pollErrors($,X,J);W.push(...z.map((Z)=>xB$($.id,Z,this.clock)))}if(Q.behavior){let z=await Q.behavior.pollBehavior($,X,J);W.push(...z.map((Z)=>fB$($.id,Z,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 SqD(0)}}};var FO0=l$(()=>{c_$()});function kqD($){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 Vo=class{constructor($={}){this.deps=$}async execute($,X,J={}){let W=new Date,Q=[];for(let[K,I]of X.actions.entries()){let j=await this.executeAction({index:K,action:I,context:$,proposal:X,options:J});Q.push(j)}let z=new Date,Z=kqD(Q);return{proposalId:X.id,contextId:$.id,startedAt:W,finishedAt:z,status:Z,actions:Q}}async executeAction({index:$,action:X,context:J,proposal:W,options:Q}){let z=new Date,Z=Q.dryRun??!1,K=(I,j={})=>({index:$,action:X,status:I,startedAt:z,finishedAt:new Date,reason:j.reason,output:j.output,error:j.error});if(Z)return K("skipped",{reason:"dry_run"});try{switch(X.kind){case"update_blueprint":{let I=this.deps.blueprintUpdater;if(!I)return K("skipped",{reason:"missing_blueprint_updater"});return K("success",{output:await I.applyBlueprintUpdate(J,W,X)})}case"update_tenant_config":{let I=this.deps.tenantConfigUpdater;if(!I)return K("skipped",{reason:"missing_tenant_config_updater"});return K("success",{output:await I.applyTenantConfigUpdate(J,W,X)})}case"run_tests":{let I=this.deps.testExecutor;if(!I)return K("skipped",{reason:"missing_test_executor"});return K("success",{output:await I.runTests(J,W,X)})}case"run_migrations":{let I=this.deps.migrationExecutor;if(!I)return K("skipped",{reason:"missing_migration_executor"});return K("success",{output:await I.runMigrations(J,W,X)})}case"trigger_regeneration":{let I=this.deps.regenerationTrigger;if(!I)return K("skipped",{reason:"missing_regeneration_trigger"});return K("success",{output:await I.triggerRegeneration(J,W,X)})}default:return K("skipped",{reason:"unknown_action"})}}catch(I){return K("failed",{error:I instanceof Error?I:Error(String(I))})}}};var KO0=()=>{};var uB$=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 VO0=()=>{};var wO0=l$(()=>{c_$();FO0();KO0();VO0()});var gB$,i_$,p_$,n_$,yqD,AO0,r_$,xqD,fqD,uqD,gqD,hqD,mqD,o_$,a_$,t_$,s_$,e_$,$v$,Dv$,Xv$,dqD,lqD,cqD,Jb,iqD,bj6,pqD,nqD,CD$,hB$;var IO0=l$(()=>{sE();gB$=eY(["contractspec","zod","json-schema","graphql"]),i_$=w8({name:m6(),url:Cn().optional(),file:m6().optional(),syncMode:eY(["import","sync","validate"]).default("validate"),tags:b9(m6()).optional(),exclude:b9(m6()).optional(),include:b9(m6()).optional(),prefix:m6().optional(),defaultStability:eY(["experimental","beta","stable","deprecated"]).optional(),defaultAuth:eY(["anonymous","user","admin"]).optional(),defaultOwners:b9(m6()).optional(),schemaFormat:gB$.default("contractspec")}),p_$=w8({outputPath:m6().default("./openapi.json"),format:eY(["json","yaml"]).default("json"),title:m6().optional(),version:m6().optional(),description:m6().optional(),servers:b9(w8({url:m6(),description:m6().optional()})).optional()}),n_$=w8({sources:b9(i_$).optional(),export:p_$.optional()}),yqD=eY(["by-tag","by-owner","by-domain","by-url-path-single","by-url-path-multi","by-feature","none"]),AO0=w8({strategy:yqD,urlPathLevel:RY().optional(),pattern:m6().optional()}),r_$=w8({models:m6().default("models"),operations:m6().default("operations/commands|queries"),events:m6().default("events"),presentations:m6().default("presentations"),forms:m6().default("forms"),groupByFeature:bJ().default(!0),operationsGrouping:AO0.optional(),modelsGrouping:AO0.optional(),eventsGrouping:AO0.optional()}),xqD=w8({enabled:bJ().default(!0),template:eY(["minimal","detailed"]).default("detailed"),updateExisting:bJ().default(!0)}),fqD=w8({enabled:bJ().default(!0),name:m6().default("ContractSpec Impact"),failOnBreaking:bJ().default(!0),failOnChanges:bJ().default(!1)}),uqD=w8({baseline:m6().default("default-branch"),include:b9(m6()).optional(),exclude:b9(m6()).optional()}),gqD=w8({checks:b9(m6()).default(["structure","integrity","deps"]),skipChecks:b9(m6()).optional(),failOnWarnings:bJ().default(!1),uploadSarif:bJ().default(!0),prComment:xqD.optional(),checkRun:fqD.optional(),impact:uqD.optional()}),hqD=w8({alias:m6(),submodule:m6(),packages:b9(m6()).optional(),autoResolve:bJ().default(!0)}),mqD=w8({activeScope:m6().optional(),externalWorkspaces:b9(hqD).optional(),crossWorkspaceSearch:bJ().default(!1)}),o_$=eY(["prettier","eslint","biome","dprint","custom"]),a_$=w8({enabled:bJ().default(!0),type:o_$.optional(),command:m6().optional(),args:b9(m6()).optional(),timeout:RY().default(30000)}),t_$=eY(["impact","conventional"]),s_$=eY(["keep-a-changelog","conventional","custom"]),e_$=eY(["spec","library","monorepo"]),$v$=w8({autoBump:bJ().default(!1),bumpStrategy:t_$.default("impact"),integrateWithChangesets:bJ().default(!1),changelogTiers:b9(e_$).default(["spec","library","monorepo"]),format:s_$.default("keep-a-changelog"),commitChanges:bJ().default(!1),commitMessage:m6().default("chore: bump spec versions"),createTags:bJ().default(!1),tagPrefix:m6().default("v"),include:b9(m6()).optional(),exclude:b9(m6()).optional()}),Dv$=eY(["cursor","windsurf","cline","claude-code","copilot","subagent","skill"]),Xv$=w8({enabled:bJ().default(!1),rulesDir:m6().default("./.rules"),rules:b9(m6()).default(["**/*.rule.md"]),targets:b9(Dv$).default(["cursor","windsurf"]),autoSync:bJ().default(!0),ejectMode:bJ().default(!1)}),dqD=w8({enabled:bJ().default(!1),apiKey:m6().optional(),model:m6().default("claude-sonnet-4-20250514"),computerUse:bJ().default(!1),extendedThinking:bJ().default(!1)}),lqD=w8({enabled:bJ().default(!1),serverUrl:m6().optional(),port:RY().optional(),agentType:eY(["build","plan","general","explore"]).default("general"),model:m6().optional()}),cqD=w8({claudeAgent:dqD.optional(),openCode:lqD.optional()}),Jb=eY(["off","warn","error"]),iqD=eY(["operation","event","presentation","feature","workflow","data-view","migration","telemetry","experiment","app-config"]),bj6=w8({"require-acceptance":Jb.optional(),"require-examples":Jb.optional(),"require-stability":Jb.optional(),"require-owners-format":Jb.optional(),"event-past-tense":Jb.optional(),"no-todo":Jb.optional(),"workflow-transitions":Jb.optional(),"telemetry-privacy":Jb.optional(),"experiment-allocation":Jb.optional(),"app-config-appid":Jb.optional(),"app-config-capabilities":Jb.optional(),"data-view-fields":Jb.optional()}),pqD=w8({defaults:bj6.optional(),overrides:ZQ(iqD,bj6).optional()}),nqD=ZQ(m6(),b9(m6())),CD$=w8({aiProvider:eY(["claude","openai","ollama","custom"]).default("claude"),aiModel:m6().optional(),agentMode:eY(["simple","cursor","claude-code","openai-codex","claude-agent-sdk","opencode-sdk"]).default("simple"),customEndpoint:Cn().nullable().optional(),customApiKey:m6().nullable().optional(),outputDir:m6().default("./src"),conventions:r_$,defaultOwners:b9(m6()).default([]),defaultTags:b9(m6()).default([]),packages:b9(m6()).optional(),excludePackages:b9(m6()).optional(),recursive:bJ().optional(),openapi:n_$.optional(),ci:gqD.optional(),metaRepo:mqD.optional(),rules:pqD.optional(),hooks:nqD.optional(),schemaFormat:gB$.default("contractspec"),formatter:a_$.optional(),versioning:$v$.optional(),ruleSync:Xv$.optional(),externalAgents:cqD.optional()}),hB$={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 Rj6=l$(()=>{IO0()});var LO0;var jO0=l$(()=>{mL();LO0=class extends vB{constructor($){super("workflow",$)}}});function Jv$($,X={}){let J=[],{definition:W}=$;if(!W.steps.length)return J.push({level:"error",message:"Workflow must declare at least one step."}),J;let Q=rqD(W,J),z=W.entryStepId??W.steps[0]?.id??null;if(!z)J.push({level:"error",message:"Workflow requires an entry step (definition.entryStepId)."});else if(!Q.has(z))J.push({level:"error",message:`Entry step "${z}" is not defined in steps.`});let Z=oqD(W,Q,J);return tqD(W.steps,X,J),sqD(z,Q,Z,J),eqD(Z,J),J}function EO0($,X={}){let J=Jv$($,X);if(J.filter((W)=>W.level==="error").length)throw new Yv$(`Workflow ${$.meta.key}.v${$.meta.version} is invalid`,J)}function rqD($,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 oqD($,X,J){let W=new Map,Q=new Map;for(let Z of X.keys())W.set(Z,new Set),Q.set(Z,0);for(let Z of $.transitions){let K=X.get(Z.from),I=X.get(Z.to);if(!K){J.push({level:"error",message:`Transition refers to unknown "from" step "${Z.from}".`});continue}if(!I){J.push({level:"error",message:`Transition refers to unknown "to" step "${Z.to}".`});continue}W.get(Z.from)?.add(Z.to),Q.set(Z.to,(Q.get(Z.to)??0)+1),aqD(Z,J)}let z=[...Q.entries()].filter(([,Z])=>Z===0).map(([Z])=>Z);if(z.length>1)J.push({level:"warning",message:`Workflow has multiple potential entry steps: ${z.join(", ")}`});return W}function aqD($,X){if($.condition&&!$.condition.trim())X.push({level:"error",message:`Transition ${$.from} -> ${$.to} declares an empty condition.`})}function tqD($,X,J){for(let W of $){let Q=W.action;if(!Q)continue;if(Q.operation&&X.operations){if(!X.operations.get(Q.operation.key,Q.operation.version))J.push({level:"error",message:`Step "${W.id}" references unknown operation ${Q.operation.key}.v${Q.operation.version}.`})}if(Q.form&&X.forms){if(!X.forms.get(Q.form.key,Q.form.version))J.push({level:"error",message:`Step "${W.id}" references unknown form ${Q.form.key}.v${Q.form.version}.`})}}}function sqD($,X,J,W){if(!$||!X.has($))return;let Q=new Set,z=[$];Q.add($);while(z.length){let Z=z.shift();if(!Z)continue;let K=J.get(Z);if(!K)continue;for(let I of K){if(Q.has(I))continue;Q.add(I),z.push(I)}}for(let Z of X.keys())if(!Q.has(Z))W.push({level:"error",message:`Step "${Z}" is unreachable from entry step "${$}".`})}function eqD($,X){let J=new Set,W=new Set,Q=!1,z=(Z)=>{if(W.has(Z)){if(!Q)X.push({level:"error",message:`Workflow contains a cycle involving step "${Z}".`}),Q=!0;return}if(J.has(Z))return;W.add(Z);let K=$.get(Z);if(K)for(let I of K)z(I);W.delete(Z),J.add(Z)};for(let Z of $.keys())z(Z)}var Yv$;var MO0=l$(()=>{Yv$=class extends Error{constructor($,X){super($);this.issues=X,this.name="WorkflowValidationError"}}});function Dl($,X){if(!$)return!0;let J=$.trim();if(!J)return!0;let W=Sj6(J,"||");if(W.length>1)return W.some((z)=>Dl(z,X));let Q=Sj6(J,"&&");if(Q.length>1)return Q.every((z)=>Dl(z,X));return _j6(J,X)}function _j6($,X){let J=$.trim();if(!J)return!0;if(J.startsWith("!"))return!_j6(J.slice(1),X);let W=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(W){let[,Z,K,I,j]=W;return $3D(Tj6(Z,X,K),Cj6(j),I)}let Q=J.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);if(Q){let[,Z,K]=Q,I=Tj6(Z,X,K);return Boolean(I)}let z=Cj6(J);return Boolean(z)}function $3D($,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 Cj6($){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 Tj6($,X,J){return D3D($==="data"?X.data:$==="input"?X.input:X.output,J)}function D3D($,X){if($==null)return;if(!X)return $;let J=X.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean),W=$;for(let Q of J){if(W==null)return;W=W[Q]}return W}function Sj6($,X){let J=[],W="",Q=!1,z=!1;for(let Z=0;Z<$.length;Z++){let K=$[Z];if(!K)continue;let I=$.slice(Z,Z+X.length);if(K==="'"&&!z){Q=!Q,W+=K;continue}if(K==='"'&&!Q){z=!z,W+=K;continue}if(!Q&&!z&&I===X){J.push(W.trim()),W="",Z+=X.length-1;continue}W+=K}if(W.trim().length)J.push(W.trim());return J}var Wv$=()=>{};import{randomUUID as X3D}from"node:crypto";function Y3D($){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 vj6($,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 J3D($,X){return $.definition.transitions.some((J)=>J.from===X)}function kj6($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function W3D($){return $==="completed"||$==="failed"||$==="cancelled"}function PO0($){return`${$.key}@${$.version}`}var NO0=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),Q=Y3D(W),z=new Date,Z=X3D(),K={workflowId:Z,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:Q,data:{...J??{}},retryCounts:{},history:[],status:"running",createdAt:z,updatedAt:z},I=this.config.appConfigProvider?await this.config.appConfigProvider(K):void 0,j=await this.performPreFlight(W,I);if(!j.canStart)throw new Qv$(j.issues);return await this.config.stateStore.create(K),this.emit("workflow.started",{workflowId:Z,workflowName:W.meta.key,workflowVersion:W.meta.version,currentStep:Q}),Z}async executeStep($,X){let J=await this.getStateOrThrow($);if(W3D(J.status))throw Error(`Workflow ${$} is in terminal status "${J.status}".`);let W=this.getSpec(J.workflowName,J.workflowVersion),Q=vj6(W,J.currentStep);if(!await this.evaluateGuard(Q,J,X))throw Error(`GuardRejected: ${J.workflowName} -> ${Q.id}`);let z={stepId:Q.id,startedAt:new Date,status:"running",input:X},Z={...J,data:{...J.data},history:[...J.history]};try{let K=await this.runStepAction(Q,Z,X);if(z.output=K,z.status="completed",z.completedAt=new Date,Z.history.push(z),Z.updatedAt=new Date,kj6(X))Z.data={...Z.data,...X};if(kj6(K))Z.data={...Z.data,...K};let I=this.pickNextStepId(W,Z,Q,X,K);if(I)Z.currentStep=I,Z.status="running";else if(!J3D(W,Q.id))Z.status="completed";else throw Error(`No transition matched after executing step "${Q.id}".`);await this.config.stateStore.update($,()=>Z),this.emit("workflow.step_completed",{workflowId:$,workflowName:J.workflowName,stepId:Q.id,status:Z.status})}catch(K){if(z.status="failed",z.completedAt=new Date,z.error=K instanceof Error?K.message:String(K),Z.history.push(z),Z.updatedAt=new Date,Q.retry){let I=J.retryCounts?.[Q.id]??0;if(I<Q.retry.maxAttempts){let j=Q.retry.backoff??"exponential",b=Q.retry.delayMs??1000,_=j==="exponential"?b*Math.pow(2,I):b,T=Math.min(_,Q.retry.maxDelayMs??1/0);return Z.retryCounts={...J.retryCounts??{},[Q.id]:I+1},Z.status="running",await this.config.stateStore.update($,()=>Z),this.emit("workflow.step_retrying",{workflowId:$,workflowName:J.workflowName,stepId:Q.id,attempt:I+1,delay:T,error:z.error}),await new Promise((x)=>setTimeout(x,T)),this.executeStep($,X)}}if(Z.status="failed",await this.config.stateStore.update($,()=>Z),this.emit("workflow.step_failed",{workflowId:$,workflowName:J.workflowName,stepId:Q.id,error:z.error??"unknown"}),W.definition.compensation?.trigger==="on_failure")await this.rollback($);throw K}}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((Q)=>Q.status==="completed").reverse();for(let Q of W){let z=J.definition.compensation.steps.find((Z)=>Z.stepId===Q.stepId);if(z){let Z={stepId:Q.stepId,originalInput:Q.input,originalOutput:Q.output,workflowData:X.data};try{let K=vj6(J,Q.stepId),I=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,j={workflow:X,step:K,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(z.operation,Z,j),this.emit("workflow.compensation_step_completed",{workflowId:$,stepId:Q.stepId,compensationOp:z.operation.key})}catch(K){let I=K instanceof Error?K.message:String(K);this.emit("workflow.compensation_step_failed",{workflowId:$,stepId:Q.stepId,compensationOp:z.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 z of X.integrations)W.set(z.slot.slotId,z);for(let z of $.definition.steps)for(let Z of z.requiredIntegrations??[]){let K=W.get(Z);if(!K){J.push({stepId:z.id,type:"integration",identifier:Z,severity:"error",reason:`Integration slot "${Z}" is not bound in the resolved app config.`});continue}let I=K.connection.status;if(I==="disconnected"||I==="error")J.push({stepId:z.id,type:"integration",identifier:Z,severity:"error",reason:`Integration slot "${Z}" is in status "${I}".`});else if(I==="unknown")J.push({stepId:z.id,type:"integration",identifier:Z,severity:"warning",reason:`Integration slot "${Z}" reports unknown health status.`})}let Q=new Set(X.capabilities.enabled.map(PO0));for(let z of $.definition.steps)for(let Z of z.requiredCapabilities??[])if(!Q.has(PO0(Z)))J.push({stepId:z.id,type:"capability",identifier:PO0(Z),severity:"error",reason:`Capability "${Z.key}@${Z.version}" is not enabled.`});return{canStart:J.every((z)=>z.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 Dl($.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 Q=this.config.appConfigProvider?await this.config.appConfigProvider(X):void 0,z={workflow:X,step:$,resolvedAppConfig:Q,integrations:Q?.integrations??[],knowledge:Q?.knowledge??[],branding:Q?.branding,translation:Q?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};if(this.config.enforceCapabilities)await this.config.enforceCapabilities(W,z);return this.config.opExecutor(W,J,z)}if($.type==="human")return J;return J}pickNextStepId($,X,J,W,Q){let z=$.definition.transitions.filter((Z)=>Z.from===J.id);for(let Z of z)if(Dl(Z.condition,{data:X.data,input:W,output:Q})){let K=$.definition.steps.find((I)=>I.id===Z.to);if(!K)throw Error(`Transition ${Z.from} -> ${Z.to} points to missing step.`);return K.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)}},Qv$;var bO0=l$(()=>{Wv$();Qv$=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 TD$($){return{...$,data:mB$($.data),history:$.history.map((X)=>({...X,input:mB$(X.input),output:mB$(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 mB$($){if($ instanceof Date)return new Date($.getTime());if(Array.isArray($))return $.map((X)=>mB$(X));if($&&typeof $==="object"){let X={};for(let[J,W]of Object.entries($))X[J]=mB$(W);return X}return $}var RO0=class{items=new Map;async create($){if(this.items.has($.workflowId))throw Error(`Workflow state already exists: ${$.workflowId}`);this.items.set($.workflowId,TD$($))}async get($){let X=this.items.get($);return X?TD$(X):void 0}async update($,X){let J=this.items.get($);if(!J)throw Error(`Workflow state not found for ${$}`);let W=TD$(X(TD$(J)));return this.items.set($,W),TD$(W)}async list($){let X=[...this.items.values()];return(($?.status)?X.filter((J)=>J.status===$.status):X).map(TD$)}clear(){this.items.clear()}};var CO0=()=>{};var TO0=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),Q=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:Q.id,workflowName:Q.name,workflowVersion:Q.version,currentStep:Q.currentStep,data:Q.data,history:Q.history,retryCounts:Q.retryCounts,status:Q.status,createdAt:Q.createdAt,updatedAt:Q.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 SO0=()=>{};function _O0($){throw Error("File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.")}var vO0=()=>{};var yj6=l$(()=>{jO0();MO0();Wv$();bO0();CO0();SO0();vO0()});function xj6($){if(!$.length)return"/";let X=$.startsWith("/")?$:`/${$}`;return X==="/"?"/":X.replace(/\/+$/,"")}function H3D($,X){if($.route)return xj6($.route);let J=X??"/docs",W=$.id.replace(/^docs\.?/,"").replace(/\./g,"/").replace(/\/+/g,"/");return xj6(W.startsWith("/")?W:`${J}/${W}`)}function G3D($,X){return X?`${X}.${$.id}`:$.id}function wo($,X){let J=X?.defaultTargets??Q3D,W=$.version??X?.defaultVersion??"1.0.0",Q=$.stability??X?.defaultStability??"stable";return{meta:{key:G3D($,X?.namespace),title:$.title,version:W,description:$.summary??$.title,tags:$.tags||[],owners:$.owners||[],domain:$.domain||"",stability:Q,goal:`Documentation of: ${$.summary}`,context:"Auto-generated"},policy:$.visibility&&$.visibility!=="public"?{flags:[$.visibility]}:void 0,source:{type:"blocknotejs",docJson:$.body},targets:J}}function dB$($,X){return $.map((J)=>({block:J,route:H3D(J,X?.routePrefix),descriptor:wo(J,X)}))}function kO0($,X){return $.map((J)=>wo(J,X))}function yO0($){return $.map(({route:X,descriptor:J})=>[X,J])}var Q3D;var Hv$=l$(()=>{Q3D=["markdown","react"]});function SY($){for(let X of $){for(let J of z3D)if(!X[J])throw Error(`DocBlock ${X.id??"<missing id>"} missing field ${String(J)}`);Xl.register(X)}}function xO0(){return Xl.list().map(($)=>$.block)}function fO0($){if(!Xl.get($))throw Error(`DocBlock not registered: ${$}`);return $}var Gv$=class{routes=new Map;constructor($=[],X){$.forEach((J)=>this.register(J,X))}register($,X){let[J]=dB$([$],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})=>wo(X,$))}},z3D,Xl;var lz=l$(()=>{Hv$();z3D=["id","title","body","kind","visibility","route"],Xl=new Gv$});var zv$;var uO0=l$(()=>{lz();zv$=[{id:"docs.tech.contracts.presentations",title:"Presentations — 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 — Unified Descriptor & Transform Engine
|
|
1485
1485
|
|
|
1486
1486
|
### Purpose
|
|
1487
1487
|
|
|
@@ -6920,5 +6920,5 @@ ${K.summary}`))}),X.command("list").description("List available hooks from confi
|
|
|
6920
6920
|
❌ Error:`),X instanceof Error?X.message:String(X)),process.exit(1)}});UH.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,Q)=>{try{let z=await hB(),Z=RT(z,Q);await V_6($,X,J,W,Q,Z)}catch(z){console.error(R$.red(`
|
|
6921
6921
|
❌ Error:`),z instanceof Error?z.message:String(z)),process.exit(1)}});function Ek6(){UH.parse()}Ek6();
|
|
6922
6922
|
|
|
6923
|
-
//# debugId=
|
|
6923
|
+
//# debugId=092E18D85502153364756E2164756E21
|
|
6924
6924
|
//# sourceMappingURL=cli.js.map
|