@manifesto-ai/governance 3.3.0 → 3.3.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/README.md +2 -2
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
`@manifesto-ai/governance` is the package that turns a composable manifesto into a governed world. Its canonical public entry is `withGovernance(manifesto, config)`.
|
|
6
6
|
|
|
7
|
-
> **Current Contract Note:** The
|
|
7
|
+
> **Current Contract Note:** The current package contract is [docs/governance-SPEC.md](docs/governance-SPEC.md). The v2.0.0 governance spec remains as the historical service-first baseline.
|
|
8
8
|
|
|
9
9
|
## Canonical Runtime Path
|
|
10
10
|
|
|
@@ -71,7 +71,7 @@ Those are no longer the canonical application entry story.
|
|
|
71
71
|
|
|
72
72
|
- [Docs Landing](docs/README.md)
|
|
73
73
|
- [Governance Guide](docs/GUIDE.md)
|
|
74
|
-
- [Governance Specification](docs/governance-SPEC
|
|
74
|
+
- [Governance Specification](docs/governance-SPEC.md)
|
|
75
75
|
- [Historical v2 Baseline](docs/governance-SPEC-2.0.0v.md)
|
|
76
76
|
- [Historical v1 Baseline](docs/governance-SPEC-1.0.0v.md)
|
|
77
77
|
- [VERSION-INDEX](docs/VERSION-INDEX.md)
|
package/dist/index.js
CHANGED
|
@@ -370,6 +370,7 @@ function activateGovernanceRuntime(kernel, lineageConfig, config) {
|
|
|
370
370
|
on: kernel.on,
|
|
371
371
|
getSnapshot: kernel.getSnapshot,
|
|
372
372
|
getAvailableActions: kernel.getAvailableActions,
|
|
373
|
+
getActionMetadata: kernel.getActionMetadata,
|
|
373
374
|
isActionAvailable: kernel.isActionAvailable,
|
|
374
375
|
MEL: kernel.MEL,
|
|
375
376
|
schema: kernel.schema,
|
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 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 getAvailableActions: kernel.getAvailableActions,\n isActionAvailable: kernel.isActionAvailable,\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 governed satisfies GovernanceInstance<T>;\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":[]}
|
|
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 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 getAvailableActions: kernel.getAvailableActions,\n getActionMetadata: kernel.getActionMetadata,\n isActionAvailable: kernel.isActionAvailable,\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 governed satisfies GovernanceInstance<T>;\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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manifesto-ai/governance",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.1",
|
|
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.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@manifesto-ai/lineage": "3.3.
|
|
41
|
-
"@manifesto-ai/sdk": "3.3.
|
|
40
|
+
"@manifesto-ai/lineage": "3.3.1",
|
|
41
|
+
"@manifesto-ai/sdk": "3.3.1"
|
|
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.8.0",
|
|
48
|
+
"@manifesto-ai/cts-kit": "0.1.0"
|
|
49
49
|
},
|
|
50
50
|
"files": [
|
|
51
51
|
"dist"
|