@manifesto-ai/governance 3.12.2 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type { ActorAuthorityBinding, ActorId, ActorKind, ActorRef, AuthorityId, AuthorityKind, AuthorityPolicy, AuthorityRef, DecisionId, DecisionRecord, ErrorInfo, FinalDecision, GovernanceEvent, GovernanceEventSink, GovernanceEventType, IntentScope, PolicyCondition, PolicyRule, Proposal, ProposalId, ProposalStatus, QuorumRule, SourceKind, SourceRef, SupersedeReason, Vote, WaitingFor, } from "./types.js";
2
- export type { GovernanceComposableManifesto, GovernanceConfig, GovernanceExecutionConfig, GovernanceInstance, } from "./runtime-types.js";
2
+ export type { GovernanceComposableManifesto, GovernanceConfig, GovernanceExecutionConfig, GovernanceInstance, GovernanceProposalRuntime, } from "./runtime-types.js";
3
3
  export type { ProposalSettlement, ProposalSettlementReport, WaitForProposalOptions, } from "./wait-for-proposal.js";
4
4
  export { createNoopGovernanceEventSink, } from "./types.js";
5
5
  export { createInMemoryGovernanceStore } from "./store/in-memory-governance-store.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{B as C,C as _,D as M,F,I as L,a as O,d as x,e as ie,r as G}from"./chunk-2Q3OH2FH.js";import{DisposedError as P,ManifestoError as R}from"@manifesto-ai/sdk";import{getExtensionKernel as me}from"@manifesto-ai/sdk/extensions";import{activateComposable as fe,assertComposableNotActivated as ye,attachExtensionKernel as he,attachRuntimeKernelFactory as Pe,getActivationState as Ie,getRuntimeKernelFactory as we}from"@manifesto-ai/sdk/provider";import{createLineageRuntimeController as ve,getLineageDecoration as ge}from"@manifesto-ai/lineage/provider";import{DisposedError as le,ManifestoError as v}from"@manifesto-ai/sdk";var U=Symbol("manifesto-governance.wait-for-proposal");function K(e,a){return Object.defineProperty(e,U,{enumerable:!1,configurable:!1,writable:!1,value:a}),e}async function V(e,a,s){let o=typeof a=="string"?a:a.proposalId,i=j(s?.timeoutMs,0),f=j(s?.pollIntervalMs,50),I=Date.now();for(;;){E(e);let p=await e.getProposal(o);if(!p)throw new v("GOVERNANCE_PROPOSAL_NOT_FOUND",`Proposal "${o}" was not found`);if(p.status==="completed"){let c=p,u=ce(c,"completed");return E(e),{kind:"completed",proposal:c,snapshot:e.getSnapshot(),resultWorld:u}}if(p.status==="failed"){let c=p,u=await pe(e,c);return{kind:"failed",proposal:c,...u.resultWorld!==void 0?{resultWorld:u.resultWorld}:{},error:u.error}}if(p.status==="rejected")return{kind:"rejected",proposal:p};if(p.status==="superseded")return{kind:"superseded",proposal:p};if(i===0)return{kind:"pending",proposal:p};let l=i-(Date.now()-I);if(l<=0)return{kind:"timed_out",proposal:p};await ue(Math.min(f,l))}}async function de(e,a,s){let o=await V(e,a,s);if(o.kind==="completed"){let i=await B(e,o.proposal.baseWorld,o.resultWorld);return{kind:"completed",proposal:o.proposal,baseWorld:o.proposal.baseWorld,resultWorld:o.resultWorld,outcome:i}}if(o.kind==="failed"){if(o.resultWorld){let i=await B(e,o.proposal.baseWorld,o.resultWorld);return{kind:"failed",proposal:o.proposal,baseWorld:o.proposal.baseWorld,published:!1,error:o.error,resultWorld:o.resultWorld,sealedOutcome:i}}return{kind:"failed",proposal:o.proposal,baseWorld:o.proposal.baseWorld,published:!1,error:o.error}}return o}async function pe(e,a){if(!a.resultWorld)return{error:{summary:"Execution failed before a result world was recorded"}};let s=a.resultWorld;E(e);let o=await e.getWorldSnapshot(s);if(!o)throw new v("GOVERNANCE_RESULT_WORLD_NOT_FOUND",`Failed proposal "${a.proposalId}" references missing world "${s}"`);return{resultWorld:s,error:_(o)}}async function B(e,a,s){let o=$(e);E(e);let i=await e.getWorldSnapshot(a);if(!i)throw new v("GOVERNANCE_BASE_WORLD_NOT_FOUND",`Proposal references missing base world "${a}"`);E(e);let f=await e.getWorldSnapshot(s);if(!f)throw new v("GOVERNANCE_RESULT_WORLD_NOT_FOUND",`Proposal references missing result world "${s}"`);return o.deriveExecutionOutcome(i,f)}function ce(e,a){if(!e.resultWorld)throw new v("GOVERNANCE_RESULT_WORLD_MISSING",`Proposal "${e.proposalId}" reached ${a} without a result world`);return e.resultWorld}function E(e){if($(e).isDisposed())throw new le}function $(e){let s=e[U];if(!s)throw new v("GOVERNANCE_RUNTIME_UNSUPPORTED","waitForProposal helpers require a runtime created by withGovernance().activate()");return s}function j(e,a){return e===void 0||!Number.isFinite(e)?a:Math.max(0,e)}function ue(e){return new Promise(a=>{globalThis.setTimeout(a,e)})}var Te=Object.freeze({__governanceLaws:!0});function Ee(e,a){ye(e);let s=we(e),o=s,i=ge(e);if(!i)throw new R("GOVERNANCE_LINEAGE_REQUIRED","withGovernance() requires a manifesto already composed with withLineage()");let f=Ie(e),I={_laws:Object.freeze({...e._laws,...Te}),schema:e.schema,activate(){return fe(I),Re(o(),i.config,a)}};return Pe(I,s,f),I}function Re(e,a,s){let o=s.governanceStore??G(),i=L(o,{lineageService:a.service}),f=s.evaluator??C(),I=M({service:i,sink:s.eventSink,now:s.now}),p=s.now??Date.now,l=ve(e,a.service,a),c,u=null;async function g(){return u||(u=Promise.all(s.bindings.map(async t=>{await o.putActorBinding(t)})).then(()=>{}).catch(t=>{throw u=null,t}),u)}async function A(){await l.ensureReady(),await g()}function T(){return p()}async function k(t,n){let r=await i.invalidateStaleIngress(t,n);await Promise.all(r.map(async m=>{await o.putProposal(m)}))}async function H(t){let n=await o.getActorBinding(t);if(n)return n;throw new R("GOVERNANCE_BINDING_NOT_FOUND",`No actor-authority binding exists for actor "${t}"`)}async function z(t,n,r){switch(n.policy.mode){case"hitl":return{kind:"pending",waitingFor:{kind:"human",delegate:n.policy.delegate}};case"tribunal":return{kind:"pending",waitingFor:{kind:"tribunal",members:n.policy.members}};default:return r.evaluate(t,n)}}async function Q(t,n){let r=null,m=null,w=!1;try{r=await l.sealIntent(n,{proposalRef:t.proposalId,decisionRef:t.decisionId,executionKey:t.executionKey,publishOnCompleted:!1,assumeEnqueued:!0});let d=await i.finalize(t,r.preparedCommit,T());if(m=d.proposal,await o.putProposal(d.proposal),w=!0,await o.putDecisionRecord(d.decisionRecord),I.emitSealCompleted(d,r.preparedCommit),r.preparedCommit.branchChange.headAdvanced){let h=e.setVisibleSnapshot(r.hostResult.snapshot);return e.emitEvent("dispatch:completed",{intentId:n.intentId??"",intent:n,snapshot:h}),d.proposal}let y=q(r.hostResult.error);return e.emitEvent("dispatch:failed",{intentId:n.intentId??"",intent:n,error:y}),d.proposal}catch(d){let y=q(d);if(!w)try{if(m)try{await o.putProposal(m)}catch{let h=i.failExecution(t,T(),r?.preparedCommit.worldId);await o.putProposal(h)}else{let h=i.failExecution(t,T(),r?.preparedCommit.worldId);await o.putProposal(h)}}catch{}throw be(y)||e.emitEvent("dispatch:failed",{intentId:n.intentId??"",intent:n,error:y}),y}}async function b(t,n){let r=await i.prepareAuthorityResult(t,n,{decidedAt:T()});if(await o.putProposal(r.proposal),r.decisionRecord&&await o.putDecisionRecord(r.decisionRecord),r.discarded||r.proposal.status==="rejected")return r.proposal;let m=i.beginExecution(r.proposal);return await o.putProposal(m),Q(m,Ae(r.proposal))}async function X(t){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await A();let n=e.ensureIntentId(t);if(!e.isActionAvailable(n.type))return e.rejectUnavailable(n);let r=await l.getActiveBranch();await k(r.id,r.epoch);let m=s.execution.deriveActor(n),w=await H(m.actorId),d=await F({body:{type:n.type,...n.input!==void 0?{input:n.input}:{},...Se(n)?{scopeProposal:n.scopeProposal}:{}},schemaHash:e.schema.hash,projectionId:s.execution.projectionId,source:s.execution.deriveSource(n),actor:m,intentId:n.intentId}),y=O(),h=i.createProposal({proposalId:y,baseWorld:r.head,branchId:r.id,actorId:w.actorId,authorityId:w.authorityId,intent:{type:d.body.type,intentId:d.intentId,...d.body.input!==void 0?{input:d.body.input}:{},...d.body.scopeProposal!==void 0?{scopeProposal:d.body.scopeProposal}:{}},executionKey:x({proposalId:y,actorId:w.actorId,baseWorld:r.head,branchId:r.id,attempt:1}),submittedAt:T(),epoch:r.epoch});await o.putProposal(h);let S=i.beginEvaluating(h);await o.putProposal(S);let N=await z(S,w,f);return N.kind==="pending"?S:b(S,N)})}async function D(t){let n=await o.getProposal(t);if(!n)throw new R("GOVERNANCE_PROPOSAL_NOT_FOUND",`Proposal "${t}" was not found`);if(n.status!=="evaluating")throw new R("GOVERNANCE_PENDING_REQUIRED",`Proposal "${t}" is not pending human resolution`);return n}async function J(t,n){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await A();let r=await D(t);return b(r,{kind:"approved",approvedScope:n!==void 0?n:r.intent.scopeProposal??null})})}async function Y(t,n){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await A();let r=await D(t);return b(r,{kind:"rejected",...n?{reason:n}:{}})})}async function Z(t){return await g(),o.getProposal(t)}async function ee(t){await A();let n=t??(await l.getActiveBranch()).id;return o.getProposalsByBranch(n)}async function oe(t){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await g(),await o.putActorBinding(t)})}async function te(t){return await g(),o.getActorBinding(t)}async function ne(t){return await g(),o.getDecisionRecord(t)}function W(t){return me(c).explainIntentFor(e.getCanonicalSnapshot(),t)}function re(t){return W(t)}function ae(t){let n=W(t);return n.kind==="blocked"?n.blockers:null}let se={createIntent:e.createIntent,subscribe:e.subscribe,on:e.on,getSnapshot:e.getSnapshot,getCanonicalSnapshot:e.getCanonicalSnapshot,getSchemaGraph:e.getSchemaGraph,getAvailableActions:e.getAvailableActions,isIntentDispatchable:e.isIntentDispatchable,getIntentBlockers:e.getIntentBlockers,getActionMetadata:e.getActionMetadata,isActionAvailable:e.isActionAvailable,simulate:e.simulate,explainIntent:W,why:re,whyNot:ae,MEL:e.MEL,schema:e.schema,dispose:e.dispose,restore:l.restore,getWorld:l.getWorld,getWorldSnapshot:l.getWorldSnapshot,getLineage:l.getLineage,getLatestHead:l.getLatestHead,getHeads:l.getHeads,getBranches:l.getBranches,getActiveBranch:l.getActiveBranch,switchActiveBranch:l.switchActiveBranch,createBranch:l.createBranch,proposeAsync:X,approve:J,reject:Y,getProposal:Z,getProposals:ee,bindActor:oe,getActorBinding:te,getDecisionRecord:ne};return c=K(he(se,e),{isDisposed:e.isDisposed,deriveExecutionOutcome:e.deriveExecutionOutcome}),c}function Ae(e){return{type:e.intent.type,intentId:e.intent.intentId,...e.intent.input!==void 0?{input:e.intent.input}:{}}}function Se(e){return"scopeProposal"in e&&e.scopeProposal!==void 0}function q(e){return e instanceof Error?e:new R("GOVERNANCE_EXECUTION_FAILED","Governed proposal execution did not produce a completed result")}function be(e){return"code"in e&&typeof e.code=="string"&&(e.code==="ACTION_UNAVAILABLE"||e.code==="INTENT_NOT_DISPATCHABLE"||e.code==="INVALID_INPUT")}export{G as createInMemoryGovernanceStore,ie as createNoopGovernanceEventSink,V as waitForProposal,de as waitForProposalWithReport,Ee as withGovernance};
1
+ import{B as C,C as _,D as M,F,I as L,a as O,d as x,e as ie,r as G}from"./chunk-2Q3OH2FH.js";import{DisposedError as P,ManifestoError as R}from"@manifesto-ai/sdk";import{getExtensionKernel as me}from"@manifesto-ai/sdk/extensions";import{activateComposable as fe,assertComposableNotActivated as ye,attachExtensionKernel as he,attachRuntimeKernelFactory as Pe,getActivationState as Ie,getRuntimeKernelFactory as we}from"@manifesto-ai/sdk/provider";import{createLineageRuntimeController as ve,getLineageDecoration as ge}from"@manifesto-ai/lineage/provider";import{DisposedError as le,ManifestoError as v}from"@manifesto-ai/sdk";var U=Symbol("manifesto-governance.wait-for-proposal");function K(e,a){return Object.defineProperty(e,U,{enumerable:!1,configurable:!1,writable:!1,value:a}),e}async function V(e,a,s){let o=typeof a=="string"?a:a.proposalId,i=j(s?.timeoutMs,0),f=j(s?.pollIntervalMs,50),I=Date.now();for(;;){E(e);let p=await e.getProposal(o);if(!p)throw new v("GOVERNANCE_PROPOSAL_NOT_FOUND",`Proposal "${o}" was not found`);if(p.status==="completed"){let c=p,u=ce(c,"completed");return E(e),{kind:"completed",proposal:c,snapshot:e.getSnapshot(),resultWorld:u}}if(p.status==="failed"){let c=p,u=await pe(e,c);return{kind:"failed",proposal:c,...u.resultWorld!==void 0?{resultWorld:u.resultWorld}:{},error:u.error}}if(p.status==="rejected")return{kind:"rejected",proposal:p};if(p.status==="superseded")return{kind:"superseded",proposal:p};if(i===0)return{kind:"pending",proposal:p};let l=i-(Date.now()-I);if(l<=0)return{kind:"timed_out",proposal:p};await ue(Math.min(f,l))}}async function de(e,a,s){let o=await V(e,a,s);if(o.kind==="completed"){let i=await B(e,o.proposal.baseWorld,o.resultWorld);return{kind:"completed",proposal:o.proposal,baseWorld:o.proposal.baseWorld,resultWorld:o.resultWorld,outcome:i}}if(o.kind==="failed"){if(o.resultWorld){let i=await B(e,o.proposal.baseWorld,o.resultWorld);return{kind:"failed",proposal:o.proposal,baseWorld:o.proposal.baseWorld,published:!1,error:o.error,resultWorld:o.resultWorld,sealedOutcome:i}}return{kind:"failed",proposal:o.proposal,baseWorld:o.proposal.baseWorld,published:!1,error:o.error}}return o}async function pe(e,a){if(!a.resultWorld)return{error:{summary:"Execution failed before a result world was recorded"}};let s=a.resultWorld;E(e);let o=await e.getWorldSnapshot(s);if(!o)throw new v("GOVERNANCE_RESULT_WORLD_NOT_FOUND",`Failed proposal "${a.proposalId}" references missing world "${s}"`);return{resultWorld:s,error:_(o)}}async function B(e,a,s){let o=$(e);E(e);let i=await e.getWorldSnapshot(a);if(!i)throw new v("GOVERNANCE_BASE_WORLD_NOT_FOUND",`Proposal references missing base world "${a}"`);E(e);let f=await e.getWorldSnapshot(s);if(!f)throw new v("GOVERNANCE_RESULT_WORLD_NOT_FOUND",`Proposal references missing result world "${s}"`);return o.deriveExecutionOutcome(i,f)}function ce(e,a){if(!e.resultWorld)throw new v("GOVERNANCE_RESULT_WORLD_MISSING",`Proposal "${e.proposalId}" reached ${a} without a result world`);return e.resultWorld}function E(e){if($(e).isDisposed())throw new le}function $(e){let s=e[U];if(!s)throw new v("GOVERNANCE_RUNTIME_UNSUPPORTED","waitForProposal helpers require a runtime created by withGovernance().activate()");return s}function j(e,a){return e===void 0||!Number.isFinite(e)?a:Math.max(0,e)}function ue(e){return new Promise(a=>{globalThis.setTimeout(a,e)})}var Te=Object.freeze({__governanceLaws:!0});function Ee(e,a){ye(e);let s=we(e),o=s,i=ge(e);if(!i)throw new R("GOVERNANCE_LINEAGE_REQUIRED","withGovernance() requires a manifesto already composed with withLineage()");let f=Ie(e),I={_laws:Object.freeze({...e._laws,...Te}),schema:e.schema,activate(){return fe(I),Re(o(),i.config,a)}};return Pe(I,s,f),I}function Re(e,a,s){let o=s.governanceStore??G(),i=L(o,{lineageService:a.service}),f=s.evaluator??C(),I=M({service:i,sink:s.eventSink,now:s.now}),p=s.now??Date.now,l=ve(e,a.service,a),c,u=null;async function g(){return u||(u=Promise.all(s.bindings.map(async t=>{await o.putActorBinding(t)})).then(()=>{}).catch(t=>{throw u=null,t}),u)}async function A(){await l.ensureReady(),await g()}function T(){return p()}async function k(t,n){let r=await i.invalidateStaleIngress(t,n);await Promise.all(r.map(async m=>{await o.putProposal(m)}))}async function H(t){let n=await o.getActorBinding(t);if(n)return n;throw new R("GOVERNANCE_BINDING_NOT_FOUND",`No actor-authority binding exists for actor "${t}"`)}async function z(t,n,r){switch(n.policy.mode){case"hitl":return{kind:"pending",waitingFor:{kind:"human",delegate:n.policy.delegate}};case"tribunal":return{kind:"pending",waitingFor:{kind:"tribunal",members:n.policy.members}};default:return r.evaluate(t,n)}}async function Q(t,n){let r=null,m=null,w=!1;try{r=await l.sealIntent(n,{proposalRef:t.proposalId,decisionRef:t.decisionId,executionKey:t.executionKey,publishOnCompleted:!1,assumeEnqueued:!0});let d=await i.finalize(t,r.preparedCommit,T());if(m=d.proposal,await o.putProposal(d.proposal),w=!0,await o.putDecisionRecord(d.decisionRecord),I.emitSealCompleted(d,r.preparedCommit),r.preparedCommit.branchChange.headAdvanced){let h=e.setVisibleSnapshot(r.hostResult.snapshot);return e.emitEvent("dispatch:completed",{intentId:n.intentId??"",intent:n,snapshot:h}),d.proposal}let y=q(r.hostResult.error);return e.emitEvent("dispatch:failed",{intentId:n.intentId??"",intent:n,error:y}),d.proposal}catch(d){let y=q(d);if(!w)try{if(m)try{await o.putProposal(m)}catch{let h=i.failExecution(t,T(),r?.preparedCommit.worldId);await o.putProposal(h)}else{let h=i.failExecution(t,T(),r?.preparedCommit.worldId);await o.putProposal(h)}}catch{}throw be(y)||e.emitEvent("dispatch:failed",{intentId:n.intentId??"",intent:n,error:y}),y}}async function b(t,n){let r=await i.prepareAuthorityResult(t,n,{decidedAt:T()});if(await o.putProposal(r.proposal),r.decisionRecord&&await o.putDecisionRecord(r.decisionRecord),r.discarded||r.proposal.status==="rejected")return r.proposal;let m=i.beginExecution(r.proposal);return await o.putProposal(m),Q(m,Ae(r.proposal))}async function X(t){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await A();let n=e.ensureIntentId(t);if(!e.isActionAvailable(n.type))return e.rejectUnavailable(n);let r=await l.getActiveBranch();await k(r.id,r.epoch);let m=s.execution.deriveActor(n),w=await H(m.actorId),d=await F({body:{type:n.type,...n.input!==void 0?{input:n.input}:{},...Se(n)?{scopeProposal:n.scopeProposal}:{}},schemaHash:e.schema.hash,projectionId:s.execution.projectionId,source:s.execution.deriveSource(n),actor:m,intentId:n.intentId}),y=O(),h=i.createProposal({proposalId:y,baseWorld:r.head,branchId:r.id,actorId:w.actorId,authorityId:w.authorityId,intent:{type:d.body.type,intentId:d.intentId,...d.body.input!==void 0?{input:d.body.input}:{},...d.body.scopeProposal!==void 0?{scopeProposal:d.body.scopeProposal}:{}},executionKey:x({proposalId:y,actorId:w.actorId,baseWorld:r.head,branchId:r.id,attempt:1}),submittedAt:T(),epoch:r.epoch});await o.putProposal(h);let S=i.beginEvaluating(h);await o.putProposal(S);let N=await z(S,w,f);return N.kind==="pending"?S:b(S,N)})}async function D(t){let n=await o.getProposal(t);if(!n)throw new R("GOVERNANCE_PROPOSAL_NOT_FOUND",`Proposal "${t}" was not found`);if(n.status!=="evaluating")throw new R("GOVERNANCE_PENDING_REQUIRED",`Proposal "${t}" is not pending human resolution`);return n}async function J(t,n){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await A();let r=await D(t);return b(r,{kind:"approved",approvedScope:n!==void 0?n:r.intent.scopeProposal??null})})}async function Y(t,n){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await A();let r=await D(t);return b(r,{kind:"rejected",...n?{reason:n}:{}})})}async function Z(t){return await g(),o.getProposal(t)}async function ee(t){await A();let n=t??(await l.getActiveBranch()).id;return o.getProposalsByBranch(n)}async function oe(t){if(e.isDisposed())throw new P;return e.enqueue(async()=>{if(e.isDisposed())throw new P;await g(),await o.putActorBinding(t)})}async function te(t){return await g(),o.getActorBinding(t)}async function ne(t){return await g(),o.getDecisionRecord(t)}function W(t){return me(c).explainIntentFor(e.getCanonicalSnapshot(),t)}function re(t){return W(t)}function ae(t){let n=W(t);return n.kind==="blocked"?n.blockers:null}let se={createIntent:e.createIntent,subscribe:e.subscribe,on:e.on,getSnapshot:e.getSnapshot,getCanonicalSnapshot:e.getCanonicalSnapshot,getSchemaGraph:e.getSchemaGraph,getAvailableActions:e.getAvailableActions,isIntentDispatchable:e.isIntentDispatchable,getIntentBlockers:e.getIntentBlockers,getActionMetadata:e.getActionMetadata,isActionAvailable:e.isActionAvailable,simulate:e.simulate,simulateIntent:e.simulateIntent,explainIntent:W,why:re,whyNot:ae,MEL:e.MEL,schema:e.schema,dispose:e.dispose,restore:l.restore,getWorld:l.getWorld,getWorldSnapshot:l.getWorldSnapshot,getLineage:l.getLineage,getLatestHead:l.getLatestHead,getHeads:l.getHeads,getBranches:l.getBranches,getActiveBranch:l.getActiveBranch,switchActiveBranch:l.switchActiveBranch,createBranch:l.createBranch,proposeAsync:X,approve:J,reject:Y,getProposal:Z,getProposals:ee,bindActor:oe,getActorBinding:te,getDecisionRecord:ne};return c=K(he(se,e),{isDisposed:e.isDisposed,deriveExecutionOutcome:e.deriveExecutionOutcome}),c}function Ae(e){return{type:e.intent.type,intentId:e.intent.intentId,...e.intent.input!==void 0?{input:e.intent.input}:{}}}function Se(e){return"scopeProposal"in e&&e.scopeProposal!==void 0}function q(e){return e instanceof Error?e:new R("GOVERNANCE_EXECUTION_FAILED","Governed proposal execution did not produce a completed result")}function be(e){return"code"in e&&typeof e.code=="string"&&(e.code==="ACTION_UNAVAILABLE"||e.code==="INTENT_NOT_DISPATCHABLE"||e.code==="INVALID_INPUT")}export{G as createInMemoryGovernanceStore,ie as createNoopGovernanceEventSink,V as waitForProposal,de as waitForProposalWithReport,Ee as withGovernance};
@@ -29,6 +29,7 @@ export type GovernanceInstance<T extends ManifestoDomainShape> = Omit<LineageIns
29
29
  readonly getActorBinding: (actorId: ActorId) => Promise<ActorAuthorityBinding | null>;
30
30
  readonly getDecisionRecord: (decisionId: DecisionId) => Promise<DecisionRecord | null>;
31
31
  };
32
+ export type GovernanceProposalRuntime<T extends ManifestoDomainShape> = Pick<GovernanceInstance<T>, "proposeAsync">;
32
33
  export type GovernanceComposableManifesto<T extends ManifestoDomainShape> = Omit<ComposableManifesto<T, GovernedComposableLaws>, "activate"> & {
33
34
  activate(): GovernanceInstance<T>;
34
35
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifesto-ai/governance",
3
- "version": "3.12.2",
3
+ "version": "3.13.0",
4
4
  "description": "Manifesto Governance - decorator runtime for legitimacy, approval, and governed execution",
5
5
  "author": "eggplantiny <eggplantiny@gmail.com>",
6
6
  "license": "MIT",
@@ -37,15 +37,15 @@
37
37
  "@manifesto-ai/core": "^2.13.0"
38
38
  },
39
39
  "dependencies": {
40
- "@manifesto-ai/sdk": "3.17.2",
41
- "@manifesto-ai/lineage": "3.11.2"
40
+ "@manifesto-ai/sdk": "3.18.0",
41
+ "@manifesto-ai/lineage": "3.12.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "typescript": "^5.9.3",
45
45
  "vite": "^8.0.8",
46
46
  "vitest": "^4.1.4",
47
- "@manifesto-ai/cts-kit": "0.1.0",
48
- "@manifesto-ai/core": "2.13.0"
47
+ "@manifesto-ai/core": "2.13.0",
48
+ "@manifesto-ai/cts-kit": "0.1.0"
49
49
  },
50
50
  "files": [
51
51
  "dist"