@manifesto-ai/governance 3.5.1 → 3.7.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.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{B as
|
|
1
|
+
import{B as D,C as N,E as B,H as x,a as C,d as S,e as Z,r as T}from"./chunk-GIPNAEHI.js";import{DisposedError as l,ManifestoError as I}from"@manifesto-ai/sdk";import{getExtensionKernel as k}from"@manifesto-ai/sdk/extensions";import{activateComposable as ee,assertComposableNotActivated as te,attachExtensionKernel as oe,attachRuntimeKernelFactory as ne,getActivationState as ae,getRuntimeKernelFactory as ie}from"@manifesto-ai/sdk/provider";import{createLineageRuntimeController as re,getLineageDecoration as se}from"@manifesto-ai/lineage/provider";var ce=Object.freeze({__governanceLaws:!0});function pe(e,h){te(e);let s=ie(e),a=se(e);if(!a)throw new I("GOVERNANCE_LINEAGE_REQUIRED","withGovernance() requires a manifesto already composed with withLineage()");let c=ae(e),y={_laws:Object.freeze({...e._laws,...ce}),schema:e.schema,activate(){return ee(y),de(s(),a.config,h)}};return ne(y,s,c),y}function de(e,h,s){let a=s.governanceStore??T(),c=x(a,{lineageService:h.service}),y=s.evaluator??D(),M=N({service:c,sink:s.eventSink,now:s.now}),_=s.now??Date.now,r=re(e,h.service,h),A,f=null;async function v(){return f||(f=Promise.all(s.bindings.map(async t=>{await a.putActorBinding(t)})).then(()=>{}).catch(t=>{throw f=null,t}),f)}async function g(){await r.ensureReady(),await v()}function w(){return _()}async function O(t,o){let n=await c.invalidateStaleIngress(t,o);await Promise.all(n.map(async p=>{await a.putProposal(p)}))}async function j(t){let o=await a.getActorBinding(t);if(o)return o;throw new I("GOVERNANCE_BINDING_NOT_FOUND",`No actor-authority binding exists for actor "${t}"`)}async function K(t,o,n){switch(o.policy.mode){case"hitl":return{kind:"pending",waitingFor:{kind:"human",delegate:o.policy.delegate}};case"tribunal":return{kind:"pending",waitingFor:{kind:"tribunal",members:o.policy.members}};default:return n.evaluate(t,o)}}async function F(t,o){let n=null,p=null,m=!1;try{n=await r.sealIntent(o,{proposalRef:t.proposalId,decisionRef:t.decisionId,executionKey:t.executionKey,publishOnCompleted:!1,assumeEnqueued:!0});let i=await c.finalize(t,n.preparedCommit,w());if(p=i.proposal,await a.putProposal(i.proposal),m=!0,await a.putDecisionRecord(i.decisionRecord),M.emitSealCompleted(i,n.preparedCommit),n.preparedCommit.branchChange.headAdvanced){let u=e.setVisibleSnapshot(n.hostResult.snapshot);return e.emitEvent("dispatch:completed",{intentId:o.intentId??"",intent:o,snapshot:u}),i.proposal}let d=L(n.hostResult.error);return e.emitEvent("dispatch:failed",{intentId:o.intentId??"",intent:o,error:d}),i.proposal}catch(i){let d=L(i);if(!m)try{if(p)try{await a.putProposal(p)}catch{let u=c.failExecution(t,w(),n?.preparedCommit.worldId);await a.putProposal(u)}else{let u=c.failExecution(t,w(),n?.preparedCommit.worldId);await a.putProposal(u)}}catch{}throw me(d)||e.emitEvent("dispatch:failed",{intentId:o.intentId??"",intent:o,error:d}),d}}async function b(t,o){let n=await c.prepareAuthorityResult(t,o,{decidedAt:w()});if(await a.putProposal(n.proposal),n.decisionRecord&&await a.putDecisionRecord(n.decisionRecord),n.discarded||n.proposal.status==="rejected")return n.proposal;let p=c.beginExecution(n.proposal);return await a.putProposal(p),F(p,ue(n.proposal))}async function V(t){if(e.isDisposed())throw new l;return e.enqueue(async()=>{if(e.isDisposed())throw new l;await g();let o=e.ensureIntentId(t);if(!e.isActionAvailable(o.type))return e.rejectUnavailable(o);let n=await r.getActiveBranch();await O(n.id,n.epoch);let p=s.execution.deriveActor(o),m=await j(p.actorId),i=await B({body:{type:o.type,...o.input!==void 0?{input:o.input}:{},...le(o)?{scopeProposal:o.scopeProposal}:{}},schemaHash:e.schema.hash,projectionId:s.execution.projectionId,source:s.execution.deriveSource(o),actor:p,intentId:o.intentId}),d=C(),u=c.createProposal({proposalId:d,baseWorld:n.head,branchId:n.id,actorId:m.actorId,authorityId:m.authorityId,intent:{type:i.body.type,intentId:i.intentId,...i.body.input!==void 0?{input:i.body.input}:{},...i.body.scopeProposal!==void 0?{scopeProposal:i.body.scopeProposal}:{}},executionKey:S({proposalId:d,actorId:m.actorId,baseWorld:n.head,branchId:n.id,attempt:1}),submittedAt:w(),epoch:n.epoch});await a.putProposal(u);let P=c.beginEvaluating(u);await a.putProposal(P);let R=await K(P,m,y);return R.kind==="pending"?P:b(P,R)})}async function G(t){let o=await a.getProposal(t);if(!o)throw new I("GOVERNANCE_PROPOSAL_NOT_FOUND",`Proposal "${t}" was not found`);if(o.status!=="evaluating")throw new I("GOVERNANCE_PENDING_REQUIRED",`Proposal "${t}" is not pending human resolution`);return o}async function U(t,o){if(e.isDisposed())throw new l;return e.enqueue(async()=>{if(e.isDisposed())throw new l;await g();let n=await G(t);return b(n,{kind:"approved",approvedScope:o!==void 0?o:n.intent.scopeProposal??null})})}async function W(t,o){if(e.isDisposed())throw new l;return e.enqueue(async()=>{if(e.isDisposed())throw new l;await g();let n=await G(t);return b(n,{kind:"rejected",...o?{reason:o}:{}})})}async function q(t){return await v(),a.getProposal(t)}async function H(t){await g();let o=t??(await r.getActiveBranch()).id;return a.getProposalsByBranch(o)}async function z(t){if(e.isDisposed())throw new l;return e.enqueue(async()=>{if(e.isDisposed())throw new l;await v(),await a.putActorBinding(t)})}async function Q(t){return await v(),a.getActorBinding(t)}async function $(t){return await v(),a.getDecisionRecord(t)}function E(t){return k(A).explainIntentFor(e.getCanonicalSnapshot(),t)}function X(t){return E(t)}function J(t){let o=E(t);return o.kind==="blocked"?o.blockers:null}let Y={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:E,why:X,whyNot:J,MEL:e.MEL,schema:e.schema,dispose:e.dispose,restore:r.restore,getWorld:r.getWorld,getWorldSnapshot:r.getWorldSnapshot,getLineage:r.getLineage,getLatestHead:r.getLatestHead,getHeads:r.getHeads,getBranches:r.getBranches,getActiveBranch:r.getActiveBranch,switchActiveBranch:r.switchActiveBranch,createBranch:r.createBranch,proposeAsync:V,approve:U,reject:W,getProposal:q,getProposals:H,bindActor:z,getActorBinding:Q,getDecisionRecord:$};return A=oe(Y,e),A}function ue(e){return{type:e.intent.type,intentId:e.intent.intentId,...e.intent.input!==void 0?{input:e.intent.input}:{}}}function le(e){return"scopeProposal"in e&&e.scopeProposal!==void 0}function L(e){return e instanceof Error?e:new I("GOVERNANCE_EXECUTION_FAILED","Governed proposal execution did not produce a completed result")}function me(e){return"code"in e&&typeof e.code=="string"&&(e.code==="ACTION_UNAVAILABLE"||e.code==="INTENT_NOT_DISPATCHABLE"||e.code==="INVALID_INPUT")}export{T as createInMemoryGovernanceStore,Z as createNoopGovernanceEventSink,pe as withGovernance};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/with-governance.ts"],"sourcesContent":["import type {\n ComposableManifesto,\n GovernanceLaws,\n ManifestoDomainShape,\n TypedIntent,\n} from \"@manifesto-ai/sdk\";\nimport {\n DisposedError,\n ManifestoError,\n} from \"@manifesto-ai/sdk\";\nimport {\n activateComposable,\n assertComposableNotActivated,\n attachExtensionKernel,\n attachRuntimeKernelFactory,\n getActivationState,\n getRuntimeKernelFactory,\n type RuntimeKernel,\n} from \"@manifesto-ai/sdk/provider\";\nimport {\n type BranchId,\n} from \"@manifesto-ai/lineage\";\nimport {\n createLineageRuntimeController,\n getLineageDecoration,\n type ResolvedLineageConfig,\n} from \"@manifesto-ai/lineage/provider\";\n\nimport { createAuthorityEvaluator, type AuthorityEvaluator } from \"./authority/evaluator.js\";\nimport { createGovernanceEventDispatcher } from \"./event-dispatcher.js\";\nimport { createIntentInstance } from \"./intent-instance.js\";\nimport { createGovernanceService } from \"./service/governance-service.js\";\nimport { createInMemoryGovernanceStore } from \"./store/in-memory-governance-store.js\";\nimport type {\n GovernanceComposableManifesto,\n GovernanceConfig,\n GovernedComposableLaws,\n GovernanceInstance,\n LineageComposableManifestoInput,\n} from \"./runtime-types.js\";\nimport type {\n ActorAuthorityBinding,\n AuthorityResponse,\n DecisionRecord,\n GovernanceStore,\n IntentScope,\n Proposal,\n ProposalId,\n} from \"./types.js\";\nimport {\n createProposalId,\n defaultExecutionKeyPolicy,\n} from \"./types.js\";\n\nconst GOVERNANCE_LAWS: GovernanceLaws = Object.freeze({ __governanceLaws: true });\n\nexport function withGovernance<\n T extends ManifestoDomainShape,\n>(\n manifesto: LineageComposableManifestoInput<T>,\n config: GovernanceConfig<T>,\n): GovernanceComposableManifesto<T> {\n assertComposableNotActivated(manifesto);\n\n const createKernel = getRuntimeKernelFactory(manifesto);\n const explicitLineage = getLineageDecoration(manifesto);\n if (!explicitLineage) {\n throw new ManifestoError(\n \"GOVERNANCE_LINEAGE_REQUIRED\",\n \"withGovernance() requires a manifesto already composed with withLineage()\",\n );\n }\n const activationState = getActivationState(manifesto);\n\n const decorated: GovernanceComposableManifesto<T> = {\n _laws: Object.freeze({\n ...manifesto._laws,\n ...GOVERNANCE_LAWS,\n }) as GovernedComposableLaws,\n schema: manifesto.schema,\n activate() {\n activateComposable(\n decorated as unknown as ComposableManifesto<T, GovernedComposableLaws>,\n );\n return activateGovernanceRuntime<T>(\n createKernel(),\n explicitLineage.config,\n config,\n );\n },\n };\n\n attachRuntimeKernelFactory(\n decorated as unknown as ComposableManifesto<T, GovernedComposableLaws>,\n createKernel,\n activationState,\n );\n\n return decorated;\n}\n\nfunction activateGovernanceRuntime<T extends ManifestoDomainShape>(\n kernel: RuntimeKernel<T>,\n lineageConfig: ResolvedLineageConfig,\n config: GovernanceConfig<T>,\n): GovernanceInstance<T> {\n const governanceStore = config.governanceStore ?? createInMemoryGovernanceStore();\n const governanceService = createGovernanceService(governanceStore, {\n lineageService: lineageConfig.service,\n });\n const evaluator = config.evaluator ?? createAuthorityEvaluator();\n const eventDispatcher = createGovernanceEventDispatcher({\n service: governanceService,\n sink: config.eventSink,\n now: config.now,\n });\n const now = config.now ?? Date.now;\n const lineage = createLineageRuntimeController(kernel, lineageConfig.service, lineageConfig);\n\n let bindingsReady: Promise<void> | null = null;\n\n async function ensureBindings(): Promise<void> {\n if (bindingsReady) {\n return bindingsReady;\n }\n\n bindingsReady = Promise\n .all(config.bindings.map(async (binding) => {\n await governanceStore.putActorBinding(binding);\n }))\n .then(() => undefined)\n .catch((error) => {\n bindingsReady = null;\n throw error;\n });\n\n return bindingsReady;\n }\n\n async function ensureReady(): Promise<void> {\n await lineage.ensureReady();\n await ensureBindings();\n }\n\n function getCurrentTimestamp(): number {\n return now();\n }\n\n async function invalidateStaleIngress(branchId: BranchId, epoch: number): Promise<void> {\n const stale = await governanceService.invalidateStaleIngress(branchId, epoch);\n await Promise.all(stale.map(async (proposal) => {\n await governanceStore.putProposal(proposal);\n }));\n }\n\n async function resolveBinding(\n actorId: string,\n ): Promise<ActorAuthorityBinding> {\n const binding = await governanceStore.getActorBinding(actorId);\n if (binding) {\n return binding;\n }\n\n throw new ManifestoError(\n \"GOVERNANCE_BINDING_NOT_FOUND\",\n `No actor-authority binding exists for actor \"${actorId}\"`,\n );\n }\n\n async function evaluateProposal(\n proposal: Proposal,\n binding: ActorAuthorityBinding,\n activeEvaluator: AuthorityEvaluator,\n ): Promise<AuthorityResponse> {\n switch (binding.policy.mode) {\n case \"hitl\":\n return {\n kind: \"pending\",\n waitingFor: {\n kind: \"human\",\n delegate: binding.policy.delegate,\n },\n };\n case \"tribunal\":\n return {\n kind: \"pending\",\n waitingFor: {\n kind: \"tribunal\",\n members: binding.policy.members,\n },\n };\n default:\n return activeEvaluator.evaluate(proposal, binding);\n }\n }\n\n async function finalizeApprovedExecution(\n executingProposal: Proposal & { readonly status: \"executing\" },\n intent: TypedIntent<T>,\n ): Promise<Proposal> {\n let sealed: Awaited<ReturnType<typeof lineage.sealIntent>> | null = null;\n let terminalProposal: Proposal | null = null;\n let proposalPersisted = false;\n\n try {\n sealed = await lineage.sealIntent(intent, {\n proposalRef: executingProposal.proposalId,\n decisionRef: executingProposal.decisionId,\n executionKey: executingProposal.executionKey,\n publishOnCompleted: false,\n assumeEnqueued: true,\n });\n\n const governanceCommit = await governanceService.finalize(\n executingProposal,\n sealed.preparedCommit,\n getCurrentTimestamp(),\n );\n terminalProposal = governanceCommit.proposal;\n\n await governanceStore.putProposal(governanceCommit.proposal);\n proposalPersisted = true;\n await governanceStore.putDecisionRecord(governanceCommit.decisionRecord);\n eventDispatcher.emitSealCompleted(governanceCommit, sealed.preparedCommit);\n\n if (sealed.preparedCommit.branchChange.headAdvanced) {\n const publishedSnapshot = kernel.setVisibleSnapshot(sealed.hostResult.snapshot);\n kernel.emitEvent(\"dispatch:completed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n snapshot: publishedSnapshot,\n });\n return governanceCommit.proposal;\n }\n\n const failure = toGovernanceFailure(sealed.hostResult.error);\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n });\n return governanceCommit.proposal;\n } catch (error) {\n const failure = toGovernanceFailure(error);\n if (!proposalPersisted) {\n try {\n if (terminalProposal) {\n try {\n await governanceStore.putProposal(terminalProposal);\n } catch {\n const failedProposal = governanceService.failExecution(\n executingProposal,\n getCurrentTimestamp(),\n sealed?.preparedCommit.worldId,\n );\n await governanceStore.putProposal(failedProposal);\n }\n } else {\n const failedProposal = governanceService.failExecution(\n executingProposal,\n getCurrentTimestamp(),\n sealed?.preparedCommit.worldId,\n );\n await governanceStore.putProposal(failedProposal);\n }\n } catch {\n // Preserve the original execution failure if compensating persistence also fails.\n }\n }\n if (!isActionUnavailable(failure)) {\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n });\n }\n throw failure;\n }\n }\n\n async function applyAuthorityDecision(\n proposal: Proposal & { readonly status: \"evaluating\" },\n response: Extract<AuthorityResponse, { kind: \"approved\" | \"rejected\" }>,\n ): Promise<Proposal> {\n const prepared = await governanceService.prepareAuthorityResult(\n proposal,\n response,\n {\n decidedAt: getCurrentTimestamp(),\n },\n );\n\n await governanceStore.putProposal(prepared.proposal);\n if (prepared.decisionRecord) {\n await governanceStore.putDecisionRecord(prepared.decisionRecord);\n }\n\n if (prepared.discarded || prepared.proposal.status === \"rejected\") {\n return prepared.proposal;\n }\n\n const executingProposal = governanceService.beginExecution(prepared.proposal);\n await governanceStore.putProposal(executingProposal);\n\n return finalizeApprovedExecution(executingProposal, toTypedIntent<T>(prepared.proposal));\n }\n\n async function proposeAsync(intent: TypedIntent<T>): Promise<Proposal> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureReady();\n\n const enrichedIntent = kernel.ensureIntentId(intent);\n if (!kernel.isActionAvailable(enrichedIntent.type as keyof T[\"actions\"])) {\n return kernel.rejectUnavailable(enrichedIntent);\n }\n\n const branch = await lineage.getActiveBranch();\n await invalidateStaleIngress(branch.id, branch.epoch);\n\n const actor = config.execution.deriveActor(enrichedIntent);\n const binding = await resolveBinding(actor.actorId);\n const intentInstance = await createIntentInstance({\n body: {\n type: enrichedIntent.type,\n ...(enrichedIntent.input !== undefined ? { input: enrichedIntent.input } : {}),\n ...(hasScopeProposal(enrichedIntent)\n ? { scopeProposal: enrichedIntent.scopeProposal }\n : {}),\n },\n schemaHash: kernel.schema.hash,\n projectionId: config.execution.projectionId,\n source: config.execution.deriveSource(enrichedIntent),\n actor,\n intentId: enrichedIntent.intentId,\n });\n\n const proposalId = createProposalId();\n const proposal = governanceService.createProposal({\n proposalId,\n baseWorld: branch.head,\n branchId: branch.id,\n actorId: binding.actorId,\n authorityId: binding.authorityId,\n intent: {\n type: intentInstance.body.type,\n intentId: intentInstance.intentId,\n ...(intentInstance.body.input !== undefined\n ? { input: intentInstance.body.input }\n : {}),\n ...(intentInstance.body.scopeProposal !== undefined\n ? { scopeProposal: intentInstance.body.scopeProposal }\n : {}),\n },\n executionKey: defaultExecutionKeyPolicy({\n proposalId,\n actorId: binding.actorId,\n baseWorld: branch.head,\n branchId: branch.id,\n attempt: 1,\n }),\n submittedAt: getCurrentTimestamp(),\n epoch: branch.epoch,\n });\n\n await governanceStore.putProposal(proposal);\n\n const evaluatingProposal = governanceService.beginEvaluating(proposal);\n await governanceStore.putProposal(evaluatingProposal);\n\n const response = await evaluateProposal(evaluatingProposal, binding, evaluator);\n if (response.kind === \"pending\") {\n return evaluatingProposal;\n }\n\n return applyAuthorityDecision(evaluatingProposal, response);\n });\n }\n\n async function getEvaluatingProposal(proposalId: ProposalId) {\n const proposal = await governanceStore.getProposal(proposalId);\n if (!proposal) {\n throw new ManifestoError(\n \"GOVERNANCE_PROPOSAL_NOT_FOUND\",\n `Proposal \"${proposalId}\" was not found`,\n );\n }\n\n if (proposal.status !== \"evaluating\") {\n throw new ManifestoError(\n \"GOVERNANCE_PENDING_REQUIRED\",\n `Proposal \"${proposalId}\" is not pending human resolution`,\n );\n }\n\n return proposal as Proposal & { readonly status: \"evaluating\" };\n }\n\n async function approve(\n proposalId: ProposalId,\n approvedScope?: IntentScope | null,\n ): Promise<Proposal> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureReady();\n const proposal = await getEvaluatingProposal(proposalId);\n return applyAuthorityDecision(proposal, {\n kind: \"approved\",\n approvedScope:\n approvedScope !== undefined\n ? approvedScope\n : proposal.intent.scopeProposal ?? null,\n });\n });\n }\n\n async function reject(proposalId: ProposalId, reason?: string): Promise<Proposal> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureReady();\n const proposal = await getEvaluatingProposal(proposalId);\n return applyAuthorityDecision(proposal, {\n kind: \"rejected\",\n ...(reason ? { reason } : {}),\n });\n });\n }\n\n async function getProposal(proposalId: ProposalId): Promise<Proposal | null> {\n await ensureBindings();\n return governanceStore.getProposal(proposalId);\n }\n\n async function getProposals(branchId?: BranchId): Promise<readonly Proposal[]> {\n await ensureReady();\n const resolvedBranchId = branchId ?? (await lineage.getActiveBranch()).id;\n return governanceStore.getProposalsByBranch(resolvedBranchId);\n }\n\n async function bindActor(binding: ActorAuthorityBinding): Promise<void> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureBindings();\n await governanceStore.putActorBinding(binding);\n });\n }\n\n async function getActorBinding(actorId: string): Promise<ActorAuthorityBinding | null> {\n await ensureBindings();\n return governanceStore.getActorBinding(actorId);\n }\n\n async function getDecisionRecord(\n decisionId: DecisionRecord[\"decisionId\"],\n ): Promise<DecisionRecord | null> {\n await ensureBindings();\n return governanceStore.getDecisionRecord(decisionId);\n }\n\n const governed = {\n createIntent: kernel.createIntent,\n subscribe: kernel.subscribe,\n on: kernel.on,\n getSnapshot: kernel.getSnapshot,\n getCanonicalSnapshot: kernel.getCanonicalSnapshot,\n getSchemaGraph: kernel.getSchemaGraph,\n getAvailableActions: kernel.getAvailableActions,\n getActionMetadata: kernel.getActionMetadata,\n isActionAvailable: kernel.isActionAvailable,\n simulate: kernel.simulate,\n MEL: kernel.MEL,\n schema: kernel.schema,\n dispose: kernel.dispose,\n restore: lineage.restore,\n getWorld: lineage.getWorld,\n getWorldSnapshot: lineage.getWorldSnapshot,\n getLineage: lineage.getLineage,\n getLatestHead: lineage.getLatestHead,\n getHeads: lineage.getHeads,\n getBranches: lineage.getBranches,\n getActiveBranch: lineage.getActiveBranch,\n switchActiveBranch: lineage.switchActiveBranch,\n createBranch: lineage.createBranch,\n proposeAsync,\n approve,\n reject,\n getProposal,\n getProposals,\n bindActor,\n getActorBinding,\n getDecisionRecord,\n };\n\n return attachExtensionKernel(\n governed satisfies GovernanceInstance<T>,\n kernel,\n );\n}\n\nfunction toTypedIntent<T extends ManifestoDomainShape>(proposal: Proposal): TypedIntent<T> {\n return {\n type: proposal.intent.type,\n intentId: proposal.intent.intentId,\n ...(proposal.intent.input !== undefined ? { input: proposal.intent.input } : {}),\n } as TypedIntent<T>;\n}\n\nfunction hasScopeProposal<T extends ManifestoDomainShape>(intent: TypedIntent<T>): intent is TypedIntent<T> & {\n readonly scopeProposal: IntentScope;\n} {\n return \"scopeProposal\" in intent && intent.scopeProposal !== undefined;\n}\n\nfunction toGovernanceFailure(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n return new ManifestoError(\n \"GOVERNANCE_EXECUTION_FAILED\",\n \"Governed proposal execution did not produce a completed result\",\n );\n}\n\nfunction isActionUnavailable(error: Error): boolean {\n return \"code\" in error\n && typeof error.code === \"string\"\n && error.code === \"ACTION_UNAVAILABLE\";\n}\n"],"mappings":"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","names":["DisposedError","ManifestoError","activateComposable","assertComposableNotActivated","attachExtensionKernel","attachRuntimeKernelFactory","getActivationState","getRuntimeKernelFactory","createLineageRuntimeController","getLineageDecoration","GOVERNANCE_LAWS","withGovernance","manifesto","config","assertComposableNotActivated","createKernel","getRuntimeKernelFactory","explicitLineage","getLineageDecoration","ManifestoError","activationState","getActivationState","decorated","activateComposable","activateGovernanceRuntime","attachRuntimeKernelFactory","kernel","lineageConfig","governanceStore","createInMemoryGovernanceStore","governanceService","createGovernanceService","evaluator","createAuthorityEvaluator","eventDispatcher","createGovernanceEventDispatcher","now","lineage","createLineageRuntimeController","bindingsReady","ensureBindings","binding","error","ensureReady","getCurrentTimestamp","invalidateStaleIngress","branchId","epoch","stale","proposal","resolveBinding","actorId","evaluateProposal","activeEvaluator","finalizeApprovedExecution","executingProposal","intent","sealed","terminalProposal","proposalPersisted","governanceCommit","publishedSnapshot","failure","toGovernanceFailure","failedProposal","isActionUnavailable","applyAuthorityDecision","response","prepared","toTypedIntent","proposeAsync","DisposedError","enrichedIntent","branch","actor","intentInstance","createIntentInstance","hasScopeProposal","proposalId","createProposalId","defaultExecutionKeyPolicy","evaluatingProposal","getEvaluatingProposal","approve","approvedScope","reject","reason","getProposal","getProposals","resolvedBranchId","bindActor","getActorBinding","getDecisionRecord","decisionId","governed","attachExtensionKernel"]}
|
|
1
|
+
{"version":3,"sources":["../src/with-governance.ts"],"sourcesContent":["import type {\n ComposableManifesto,\n GovernanceLaws,\n ManifestoDomainShape,\n TypedIntent,\n} from \"@manifesto-ai/sdk\";\nimport {\n DisposedError,\n ManifestoError,\n} from \"@manifesto-ai/sdk\";\nimport { getExtensionKernel } from \"@manifesto-ai/sdk/extensions\";\nimport {\n activateComposable,\n assertComposableNotActivated,\n attachExtensionKernel,\n attachRuntimeKernelFactory,\n getActivationState,\n getRuntimeKernelFactory,\n type RuntimeKernel,\n} from \"@manifesto-ai/sdk/provider\";\nimport {\n type BranchId,\n} from \"@manifesto-ai/lineage\";\nimport {\n createLineageRuntimeController,\n getLineageDecoration,\n type ResolvedLineageConfig,\n} from \"@manifesto-ai/lineage/provider\";\n\nimport { createAuthorityEvaluator, type AuthorityEvaluator } from \"./authority/evaluator.js\";\nimport { createGovernanceEventDispatcher } from \"./event-dispatcher.js\";\nimport { createIntentInstance } from \"./intent-instance.js\";\nimport { createGovernanceService } from \"./service/governance-service.js\";\nimport { createInMemoryGovernanceStore } from \"./store/in-memory-governance-store.js\";\nimport type {\n GovernanceComposableManifesto,\n GovernanceConfig,\n GovernedComposableLaws,\n GovernanceInstance,\n LineageComposableManifestoInput,\n} from \"./runtime-types.js\";\nimport type {\n ActorAuthorityBinding,\n AuthorityResponse,\n DecisionRecord,\n GovernanceStore,\n IntentScope,\n Proposal,\n ProposalId,\n} from \"./types.js\";\nimport {\n createProposalId,\n defaultExecutionKeyPolicy,\n} from \"./types.js\";\n\nconst GOVERNANCE_LAWS: GovernanceLaws = Object.freeze({ __governanceLaws: true });\n\nexport function withGovernance<\n T extends ManifestoDomainShape,\n>(\n manifesto: LineageComposableManifestoInput<T>,\n config: GovernanceConfig<T>,\n): GovernanceComposableManifesto<T> {\n assertComposableNotActivated(manifesto);\n\n const createKernel = getRuntimeKernelFactory(manifesto);\n const explicitLineage = getLineageDecoration(manifesto);\n if (!explicitLineage) {\n throw new ManifestoError(\n \"GOVERNANCE_LINEAGE_REQUIRED\",\n \"withGovernance() requires a manifesto already composed with withLineage()\",\n );\n }\n const activationState = getActivationState(manifesto);\n\n const decorated: GovernanceComposableManifesto<T> = {\n _laws: Object.freeze({\n ...manifesto._laws,\n ...GOVERNANCE_LAWS,\n }) as GovernedComposableLaws,\n schema: manifesto.schema,\n activate() {\n activateComposable(\n decorated as unknown as ComposableManifesto<T, GovernedComposableLaws>,\n );\n return activateGovernanceRuntime<T>(\n createKernel(),\n explicitLineage.config,\n config,\n );\n },\n };\n\n attachRuntimeKernelFactory(\n decorated as unknown as ComposableManifesto<T, GovernedComposableLaws>,\n createKernel,\n activationState,\n );\n\n return decorated;\n}\n\nfunction activateGovernanceRuntime<T extends ManifestoDomainShape>(\n kernel: RuntimeKernel<T>,\n lineageConfig: ResolvedLineageConfig,\n config: GovernanceConfig<T>,\n): GovernanceInstance<T> {\n const governanceStore = config.governanceStore ?? createInMemoryGovernanceStore();\n const governanceService = createGovernanceService(governanceStore, {\n lineageService: lineageConfig.service,\n });\n const evaluator = config.evaluator ?? createAuthorityEvaluator();\n const eventDispatcher = createGovernanceEventDispatcher({\n service: governanceService,\n sink: config.eventSink,\n now: config.now,\n });\n const now = config.now ?? Date.now;\n const lineage = createLineageRuntimeController(kernel, lineageConfig.service, lineageConfig);\n let runtime!: GovernanceInstance<T>;\n\n let bindingsReady: Promise<void> | null = null;\n\n async function ensureBindings(): Promise<void> {\n if (bindingsReady) {\n return bindingsReady;\n }\n\n bindingsReady = Promise\n .all(config.bindings.map(async (binding) => {\n await governanceStore.putActorBinding(binding);\n }))\n .then(() => undefined)\n .catch((error) => {\n bindingsReady = null;\n throw error;\n });\n\n return bindingsReady;\n }\n\n async function ensureReady(): Promise<void> {\n await lineage.ensureReady();\n await ensureBindings();\n }\n\n function getCurrentTimestamp(): number {\n return now();\n }\n\n async function invalidateStaleIngress(branchId: BranchId, epoch: number): Promise<void> {\n const stale = await governanceService.invalidateStaleIngress(branchId, epoch);\n await Promise.all(stale.map(async (proposal) => {\n await governanceStore.putProposal(proposal);\n }));\n }\n\n async function resolveBinding(\n actorId: string,\n ): Promise<ActorAuthorityBinding> {\n const binding = await governanceStore.getActorBinding(actorId);\n if (binding) {\n return binding;\n }\n\n throw new ManifestoError(\n \"GOVERNANCE_BINDING_NOT_FOUND\",\n `No actor-authority binding exists for actor \"${actorId}\"`,\n );\n }\n\n async function evaluateProposal(\n proposal: Proposal,\n binding: ActorAuthorityBinding,\n activeEvaluator: AuthorityEvaluator,\n ): Promise<AuthorityResponse> {\n switch (binding.policy.mode) {\n case \"hitl\":\n return {\n kind: \"pending\",\n waitingFor: {\n kind: \"human\",\n delegate: binding.policy.delegate,\n },\n };\n case \"tribunal\":\n return {\n kind: \"pending\",\n waitingFor: {\n kind: \"tribunal\",\n members: binding.policy.members,\n },\n };\n default:\n return activeEvaluator.evaluate(proposal, binding);\n }\n }\n\n async function finalizeApprovedExecution(\n executingProposal: Proposal & { readonly status: \"executing\" },\n intent: TypedIntent<T>,\n ): Promise<Proposal> {\n let sealed: Awaited<ReturnType<typeof lineage.sealIntent>> | null = null;\n let terminalProposal: Proposal | null = null;\n let proposalPersisted = false;\n\n try {\n sealed = await lineage.sealIntent(intent, {\n proposalRef: executingProposal.proposalId,\n decisionRef: executingProposal.decisionId,\n executionKey: executingProposal.executionKey,\n publishOnCompleted: false,\n assumeEnqueued: true,\n });\n\n const governanceCommit = await governanceService.finalize(\n executingProposal,\n sealed.preparedCommit,\n getCurrentTimestamp(),\n );\n terminalProposal = governanceCommit.proposal;\n\n await governanceStore.putProposal(governanceCommit.proposal);\n proposalPersisted = true;\n await governanceStore.putDecisionRecord(governanceCommit.decisionRecord);\n eventDispatcher.emitSealCompleted(governanceCommit, sealed.preparedCommit);\n\n if (sealed.preparedCommit.branchChange.headAdvanced) {\n const publishedSnapshot = kernel.setVisibleSnapshot(sealed.hostResult.snapshot);\n kernel.emitEvent(\"dispatch:completed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n snapshot: publishedSnapshot,\n });\n return governanceCommit.proposal;\n }\n\n const failure = toGovernanceFailure(sealed.hostResult.error);\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n });\n return governanceCommit.proposal;\n } catch (error) {\n const failure = toGovernanceFailure(error);\n if (!proposalPersisted) {\n try {\n if (terminalProposal) {\n try {\n await governanceStore.putProposal(terminalProposal);\n } catch {\n const failedProposal = governanceService.failExecution(\n executingProposal,\n getCurrentTimestamp(),\n sealed?.preparedCommit.worldId,\n );\n await governanceStore.putProposal(failedProposal);\n }\n } else {\n const failedProposal = governanceService.failExecution(\n executingProposal,\n getCurrentTimestamp(),\n sealed?.preparedCommit.worldId,\n );\n await governanceStore.putProposal(failedProposal);\n }\n } catch {\n // Preserve the original execution failure if compensating persistence also fails.\n }\n }\n if (!isRejectedDispatchError(failure)) {\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n });\n }\n throw failure;\n }\n }\n\n async function applyAuthorityDecision(\n proposal: Proposal & { readonly status: \"evaluating\" },\n response: Extract<AuthorityResponse, { kind: \"approved\" | \"rejected\" }>,\n ): Promise<Proposal> {\n const prepared = await governanceService.prepareAuthorityResult(\n proposal,\n response,\n {\n decidedAt: getCurrentTimestamp(),\n },\n );\n\n await governanceStore.putProposal(prepared.proposal);\n if (prepared.decisionRecord) {\n await governanceStore.putDecisionRecord(prepared.decisionRecord);\n }\n\n if (prepared.discarded || prepared.proposal.status === \"rejected\") {\n return prepared.proposal;\n }\n\n const executingProposal = governanceService.beginExecution(prepared.proposal);\n await governanceStore.putProposal(executingProposal);\n\n return finalizeApprovedExecution(executingProposal, toTypedIntent<T>(prepared.proposal));\n }\n\n async function proposeAsync(intent: TypedIntent<T>): Promise<Proposal> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureReady();\n\n const enrichedIntent = kernel.ensureIntentId(intent);\n if (!kernel.isActionAvailable(enrichedIntent.type as keyof T[\"actions\"])) {\n return kernel.rejectUnavailable(enrichedIntent);\n }\n\n const branch = await lineage.getActiveBranch();\n await invalidateStaleIngress(branch.id, branch.epoch);\n\n const actor = config.execution.deriveActor(enrichedIntent);\n const binding = await resolveBinding(actor.actorId);\n const intentInstance = await createIntentInstance({\n body: {\n type: enrichedIntent.type,\n ...(enrichedIntent.input !== undefined ? { input: enrichedIntent.input } : {}),\n ...(hasScopeProposal(enrichedIntent)\n ? { scopeProposal: enrichedIntent.scopeProposal }\n : {}),\n },\n schemaHash: kernel.schema.hash,\n projectionId: config.execution.projectionId,\n source: config.execution.deriveSource(enrichedIntent),\n actor,\n intentId: enrichedIntent.intentId,\n });\n\n const proposalId = createProposalId();\n const proposal = governanceService.createProposal({\n proposalId,\n baseWorld: branch.head,\n branchId: branch.id,\n actorId: binding.actorId,\n authorityId: binding.authorityId,\n intent: {\n type: intentInstance.body.type,\n intentId: intentInstance.intentId,\n ...(intentInstance.body.input !== undefined\n ? { input: intentInstance.body.input }\n : {}),\n ...(intentInstance.body.scopeProposal !== undefined\n ? { scopeProposal: intentInstance.body.scopeProposal }\n : {}),\n },\n executionKey: defaultExecutionKeyPolicy({\n proposalId,\n actorId: binding.actorId,\n baseWorld: branch.head,\n branchId: branch.id,\n attempt: 1,\n }),\n submittedAt: getCurrentTimestamp(),\n epoch: branch.epoch,\n });\n\n await governanceStore.putProposal(proposal);\n\n const evaluatingProposal = governanceService.beginEvaluating(proposal);\n await governanceStore.putProposal(evaluatingProposal);\n\n const response = await evaluateProposal(evaluatingProposal, binding, evaluator);\n if (response.kind === \"pending\") {\n return evaluatingProposal;\n }\n\n return applyAuthorityDecision(evaluatingProposal, response);\n });\n }\n\n async function getEvaluatingProposal(proposalId: ProposalId) {\n const proposal = await governanceStore.getProposal(proposalId);\n if (!proposal) {\n throw new ManifestoError(\n \"GOVERNANCE_PROPOSAL_NOT_FOUND\",\n `Proposal \"${proposalId}\" was not found`,\n );\n }\n\n if (proposal.status !== \"evaluating\") {\n throw new ManifestoError(\n \"GOVERNANCE_PENDING_REQUIRED\",\n `Proposal \"${proposalId}\" is not pending human resolution`,\n );\n }\n\n return proposal as Proposal & { readonly status: \"evaluating\" };\n }\n\n async function approve(\n proposalId: ProposalId,\n approvedScope?: IntentScope | null,\n ): Promise<Proposal> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureReady();\n const proposal = await getEvaluatingProposal(proposalId);\n return applyAuthorityDecision(proposal, {\n kind: \"approved\",\n approvedScope:\n approvedScope !== undefined\n ? approvedScope\n : proposal.intent.scopeProposal ?? null,\n });\n });\n }\n\n async function reject(proposalId: ProposalId, reason?: string): Promise<Proposal> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureReady();\n const proposal = await getEvaluatingProposal(proposalId);\n return applyAuthorityDecision(proposal, {\n kind: \"rejected\",\n ...(reason ? { reason } : {}),\n });\n });\n }\n\n async function getProposal(proposalId: ProposalId): Promise<Proposal | null> {\n await ensureBindings();\n return governanceStore.getProposal(proposalId);\n }\n\n async function getProposals(branchId?: BranchId): Promise<readonly Proposal[]> {\n await ensureReady();\n const resolvedBranchId = branchId ?? (await lineage.getActiveBranch()).id;\n return governanceStore.getProposalsByBranch(resolvedBranchId);\n }\n\n async function bindActor(binding: ActorAuthorityBinding): Promise<void> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n return kernel.enqueue(async () => {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n await ensureBindings();\n await governanceStore.putActorBinding(binding);\n });\n }\n\n async function getActorBinding(actorId: string): Promise<ActorAuthorityBinding | null> {\n await ensureBindings();\n return governanceStore.getActorBinding(actorId);\n }\n\n async function getDecisionRecord(\n decisionId: DecisionRecord[\"decisionId\"],\n ): Promise<DecisionRecord | null> {\n await ensureBindings();\n return governanceStore.getDecisionRecord(decisionId);\n }\n\n function explainIntent(\n intent: Parameters<GovernanceInstance<T>[\"explainIntent\"]>[0],\n ): ReturnType<GovernanceInstance<T>[\"explainIntent\"]> {\n return getExtensionKernel<T, GovernedComposableLaws>(runtime).explainIntentFor(\n kernel.getCanonicalSnapshot(),\n intent,\n );\n }\n\n function why(\n intent: Parameters<GovernanceInstance<T>[\"why\"]>[0],\n ): ReturnType<GovernanceInstance<T>[\"why\"]> {\n return explainIntent(intent);\n }\n\n function whyNot(\n intent: Parameters<GovernanceInstance<T>[\"whyNot\"]>[0],\n ): ReturnType<GovernanceInstance<T>[\"whyNot\"]> {\n const explanation = explainIntent(intent);\n return explanation.kind === \"blocked\" ? explanation.blockers : null;\n }\n\n const governed = {\n createIntent: kernel.createIntent,\n subscribe: kernel.subscribe,\n on: kernel.on,\n getSnapshot: kernel.getSnapshot,\n getCanonicalSnapshot: kernel.getCanonicalSnapshot,\n getSchemaGraph: kernel.getSchemaGraph,\n getAvailableActions: kernel.getAvailableActions,\n isIntentDispatchable: kernel.isIntentDispatchable,\n getIntentBlockers: kernel.getIntentBlockers,\n getActionMetadata: kernel.getActionMetadata,\n isActionAvailable: kernel.isActionAvailable,\n simulate: kernel.simulate,\n explainIntent,\n why,\n whyNot,\n MEL: kernel.MEL,\n schema: kernel.schema,\n dispose: kernel.dispose,\n restore: lineage.restore,\n getWorld: lineage.getWorld,\n getWorldSnapshot: lineage.getWorldSnapshot,\n getLineage: lineage.getLineage,\n getLatestHead: lineage.getLatestHead,\n getHeads: lineage.getHeads,\n getBranches: lineage.getBranches,\n getActiveBranch: lineage.getActiveBranch,\n switchActiveBranch: lineage.switchActiveBranch,\n createBranch: lineage.createBranch,\n proposeAsync,\n approve,\n reject,\n getProposal,\n getProposals,\n bindActor,\n getActorBinding,\n getDecisionRecord,\n };\n\n runtime = attachExtensionKernel(\n governed satisfies GovernanceInstance<T>,\n kernel,\n );\n\n return runtime;\n}\n\nfunction toTypedIntent<T extends ManifestoDomainShape>(proposal: Proposal): TypedIntent<T> {\n return {\n type: proposal.intent.type,\n intentId: proposal.intent.intentId,\n ...(proposal.intent.input !== undefined ? { input: proposal.intent.input } : {}),\n } as TypedIntent<T>;\n}\n\nfunction hasScopeProposal<T extends ManifestoDomainShape>(intent: TypedIntent<T>): intent is TypedIntent<T> & {\n readonly scopeProposal: IntentScope;\n} {\n return \"scopeProposal\" in intent && intent.scopeProposal !== undefined;\n}\n\nfunction toGovernanceFailure(error: unknown): Error {\n if (error instanceof Error) {\n return error;\n }\n\n return new ManifestoError(\n \"GOVERNANCE_EXECUTION_FAILED\",\n \"Governed proposal execution did not produce a completed result\",\n );\n}\n\nfunction isRejectedDispatchError(error: Error): boolean {\n return \"code\" in error\n && typeof error.code === \"string\"\n && (\n error.code === \"ACTION_UNAVAILABLE\"\n || error.code === \"INTENT_NOT_DISPATCHABLE\"\n || error.code === \"INVALID_INPUT\"\n );\n}\n"],"mappings":"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","names":["DisposedError","ManifestoError","getExtensionKernel","activateComposable","assertComposableNotActivated","attachExtensionKernel","attachRuntimeKernelFactory","getActivationState","getRuntimeKernelFactory","createLineageRuntimeController","getLineageDecoration","GOVERNANCE_LAWS","withGovernance","manifesto","config","assertComposableNotActivated","createKernel","getRuntimeKernelFactory","explicitLineage","getLineageDecoration","ManifestoError","activationState","getActivationState","decorated","activateComposable","activateGovernanceRuntime","attachRuntimeKernelFactory","kernel","lineageConfig","governanceStore","createInMemoryGovernanceStore","governanceService","createGovernanceService","evaluator","createAuthorityEvaluator","eventDispatcher","createGovernanceEventDispatcher","now","lineage","createLineageRuntimeController","runtime","bindingsReady","ensureBindings","binding","error","ensureReady","getCurrentTimestamp","invalidateStaleIngress","branchId","epoch","stale","proposal","resolveBinding","actorId","evaluateProposal","activeEvaluator","finalizeApprovedExecution","executingProposal","intent","sealed","terminalProposal","proposalPersisted","governanceCommit","publishedSnapshot","failure","toGovernanceFailure","failedProposal","isRejectedDispatchError","applyAuthorityDecision","response","prepared","toTypedIntent","proposeAsync","DisposedError","enrichedIntent","branch","actor","intentInstance","createIntentInstance","hasScopeProposal","proposalId","createProposalId","defaultExecutionKeyPolicy","evaluatingProposal","getEvaluatingProposal","approve","approvedScope","reject","reason","getProposal","getProposals","resolvedBranchId","bindActor","getActorBinding","getDecisionRecord","decisionId","explainIntent","getExtensionKernel","why","whyNot","explanation","governed","attachExtensionKernel"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manifesto-ai/governance",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.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",
|
|
@@ -34,18 +34,18 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@manifesto-ai/core": "^2.
|
|
37
|
+
"@manifesto-ai/core": "^2.11.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@manifesto-ai/
|
|
41
|
-
"@manifesto-ai/
|
|
40
|
+
"@manifesto-ai/lineage": "3.7.0",
|
|
41
|
+
"@manifesto-ai/sdk": "3.8.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
45
|
"vite": "^8.0.3",
|
|
46
46
|
"vitest": "^4.1.2",
|
|
47
|
-
"@manifesto-ai/
|
|
48
|
-
"@manifesto-ai/
|
|
47
|
+
"@manifesto-ai/core": "2.11.0",
|
|
48
|
+
"@manifesto-ai/cts-kit": "0.1.0"
|
|
49
49
|
},
|
|
50
50
|
"files": [
|
|
51
51
|
"dist"
|