attention-manifest-protocol 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +250 -226
- package/CHANGELOG.zh-CN.md +63 -39
- package/README.md +22 -1
- package/README.zh-CN.md +22 -1
- package/docs/probes/calibration-imported.json +141 -141
- package/docs/probes/eval-recorded-replay.json +597 -597
- package/docs/probes/eval-replay.json +124 -124
- package/docs/probes/eval-summary.json +42 -42
- package/docs/probes/runtime-eval.json +4230 -4230
- package/lib/attention/attention.d.ts +153 -0
- package/lib/attention/attention.js +209 -0
- package/lib/attention/budget.d.ts +31 -0
- package/lib/attention/budget.js +55 -0
- package/lib/attention/cognition.d.ts +230 -0
- package/lib/attention/cognition.js +245 -0
- package/lib/attention/index.d.ts +8 -0
- package/lib/attention/index.js +7 -0
- package/lib/attention/interrupts.d.ts +97 -0
- package/lib/attention/interrupts.js +151 -0
- package/lib/attention/resource.d.ts +167 -0
- package/lib/attention/resource.js +148 -0
- package/lib/attention/social.d.ts +74 -0
- package/lib/attention/social.js +153 -0
- package/lib/attention/socialTypes.d.ts +102 -0
- package/lib/attention/socialTypes.js +1 -0
- package/lib/authz/authz.d.ts +75 -0
- package/lib/authz/authz.js +176 -0
- package/lib/authz/index.d.ts +1 -0
- package/lib/authz/index.js +1 -0
- package/lib/bayes/calibration.d.ts +67 -0
- package/lib/bayes/calibration.js +114 -0
- package/lib/bayes/calibrationRegistry.d.ts +39 -0
- package/lib/bayes/calibrationRegistry.js +61 -0
- package/lib/bayes/calibrationSelection.d.ts +40 -0
- package/lib/bayes/calibrationSelection.js +89 -0
- package/lib/bayes/engine.d.ts +163 -0
- package/lib/bayes/engine.js +354 -0
- package/lib/bayes/index.d.ts +6 -0
- package/lib/bayes/index.js +6 -0
- package/lib/bayes/reliability.d.ts +27 -0
- package/lib/bayes/reliability.js +38 -0
- package/lib/bayes/scopedPriors.d.ts +34 -0
- package/lib/bayes/scopedPriors.js +70 -0
- package/lib/boundary/frame.d.ts +63 -0
- package/lib/boundary/frame.js +239 -0
- package/lib/boundary/ids.d.ts +8 -0
- package/lib/boundary/ids.js +12 -0
- package/lib/boundary/index.d.ts +12 -0
- package/lib/boundary/index.js +8 -0
- package/lib/boundary/refTable.d.ts +49 -0
- package/lib/boundary/refTable.js +92 -0
- package/lib/boundary/toolCall.d.ts +33 -0
- package/lib/boundary/toolCall.js +173 -0
- package/lib/concept/concept.d.ts +67 -0
- package/lib/concept/concept.js +1 -0
- package/lib/concept/conceptBudget.d.ts +56 -0
- package/lib/concept/conceptBudget.js +281 -0
- package/lib/concept/conceptBudgetTypes.d.ts +74 -0
- package/lib/concept/conceptBudgetTypes.js +1 -0
- package/lib/concept/index.d.ts +3 -0
- package/lib/concept/index.js +3 -0
- package/lib/concurrency/idempotency.d.ts +16 -0
- package/lib/concurrency/idempotency.js +21 -0
- package/lib/concurrency/index.d.ts +5 -0
- package/lib/concurrency/index.js +5 -0
- package/lib/concurrency/mutex.d.ts +13 -0
- package/lib/concurrency/mutex.js +26 -0
- package/lib/concurrency/namedLocks.d.ts +7 -0
- package/lib/concurrency/namedLocks.js +31 -0
- package/lib/concurrency/retry.d.ts +23 -0
- package/lib/concurrency/retry.js +38 -0
- package/lib/concurrency/worker.d.ts +42 -0
- package/lib/concurrency/worker.js +67 -0
- package/lib/context/agentContext.d.ts +58 -0
- package/lib/context/agentContext.js +197 -0
- package/lib/context/ast.d.ts +98 -0
- package/lib/context/ast.js +414 -0
- package/lib/context/contentStore.d.ts +16 -0
- package/lib/context/contentStore.js +61 -0
- package/lib/context/context.d.ts +15 -0
- package/lib/context/context.js +39 -0
- package/lib/context/contextIndex.d.ts +40 -0
- package/lib/context/contextIndex.js +64 -0
- package/lib/context/document.d.ts +102 -0
- package/lib/context/document.js +22 -0
- package/lib/context/fileStorePath.d.ts +1 -0
- package/lib/context/fileStorePath.js +13 -0
- package/lib/context/index.d.ts +22 -0
- package/lib/context/index.js +11 -0
- package/lib/context/lifecycle.d.ts +91 -0
- package/lib/context/lifecycle.js +163 -0
- package/lib/context/projections.d.ts +20 -0
- package/lib/context/projections.js +127 -0
- package/lib/context/workspace.d.ts +111 -0
- package/lib/context/workspace.js +318 -0
- package/lib/context/workspaceProtocol.d.ts +30 -0
- package/lib/context/workspaceProtocol.js +49 -0
- package/lib/context/workspaceService.d.ts +63 -0
- package/lib/context/workspaceService.js +352 -0
- package/lib/cooperation/board.d.ts +47 -0
- package/lib/cooperation/board.js +66 -0
- package/lib/cooperation/collaboration.d.ts +55 -0
- package/lib/cooperation/collaboration.js +1 -0
- package/lib/cooperation/index.d.ts +6 -0
- package/lib/cooperation/index.js +6 -0
- package/lib/cooperation/merge.d.ts +69 -0
- package/lib/cooperation/merge.js +109 -0
- package/lib/cooperation/metrics.d.ts +39 -0
- package/lib/cooperation/metrics.js +17 -0
- package/lib/cooperation/session.d.ts +75 -0
- package/lib/cooperation/session.js +74 -0
- package/lib/cooperation/unified.d.ts +38 -0
- package/lib/cooperation/unified.js +40 -0
- package/lib/database/adapter/adapters.d.ts +24 -0
- package/lib/database/adapter/adapters.js +31 -0
- package/lib/database/adapter/index.d.ts +4 -0
- package/lib/database/adapter/index.js +4 -0
- package/lib/database/adapter/runtimeSink.d.ts +20 -0
- package/lib/database/adapter/runtimeSink.js +50 -0
- package/lib/database/adapter/sessionStore.d.ts +11 -0
- package/lib/database/adapter/sessionStore.js +23 -0
- package/lib/database/adapter/turnStore.d.ts +10 -0
- package/lib/database/adapter/turnStore.js +15 -0
- package/lib/database/entity/agent.d.ts +133 -0
- package/lib/database/entity/agent.js +61 -0
- package/lib/database/entity/entity.d.ts +715 -0
- package/lib/database/entity/entity.js +372 -0
- package/lib/database/entity/handle.d.ts +31 -0
- package/lib/database/entity/handle.js +53 -0
- package/lib/database/entity/index.d.ts +32 -0
- package/lib/database/entity/index.js +22 -0
- package/lib/database/entity/message.d.ts +27 -0
- package/lib/database/entity/message.js +52 -0
- package/lib/database/entity/meta.d.ts +11 -0
- package/lib/database/entity/meta.js +1 -0
- package/lib/database/entity/object.d.ts +23 -0
- package/lib/database/entity/object.js +24 -0
- package/lib/database/entity/outbox.d.ts +9 -0
- package/lib/database/entity/outbox.js +5 -0
- package/lib/database/entity/process.d.ts +30 -0
- package/lib/database/entity/process.js +40 -0
- package/lib/database/entity/registry.d.ts +81 -0
- package/lib/database/entity/registry.js +91 -0
- package/lib/database/entity/runtimeApproval.d.ts +23 -0
- package/lib/database/entity/runtimeApproval.js +5 -0
- package/lib/database/entity/runtimeSession.d.ts +7 -0
- package/lib/database/entity/runtimeSession.js +5 -0
- package/lib/database/entity/runtimeTurn.d.ts +9 -0
- package/lib/database/entity/runtimeTurn.js +5 -0
- package/lib/database/entity/thread.d.ts +35 -0
- package/lib/database/entity/thread.js +55 -0
- package/lib/database/entity/window.d.ts +39 -0
- package/lib/database/entity/window.js +56 -0
- package/lib/database/entity/worker.d.ts +42 -0
- package/lib/database/entity/worker.js +58 -0
- package/lib/database/index.d.ts +6 -0
- package/lib/database/index.js +6 -0
- package/lib/database/repository/addressSpaceRepository.d.ts +18 -0
- package/lib/database/repository/addressSpaceRepository.js +40 -0
- package/lib/database/repository/agentRepository.d.ts +41 -0
- package/lib/database/repository/agentRepository.js +398 -0
- package/lib/database/repository/base.d.ts +31 -0
- package/lib/database/repository/base.js +23 -0
- package/lib/database/repository/executionRepository.d.ts +64 -0
- package/lib/database/repository/executionRepository.js +379 -0
- package/lib/database/repository/handleRepository.d.ts +35 -0
- package/lib/database/repository/handleRepository.js +57 -0
- package/lib/database/repository/index.d.ts +20 -0
- package/lib/database/repository/index.js +17 -0
- package/lib/database/repository/messageRepository.d.ts +33 -0
- package/lib/database/repository/messageRepository.js +45 -0
- package/lib/database/repository/objectRepository.d.ts +43 -0
- package/lib/database/repository/objectRepository.js +60 -0
- package/lib/database/repository/outboxRepository.d.ts +15 -0
- package/lib/database/repository/outboxRepository.js +51 -0
- package/lib/database/repository/processRepository.d.ts +31 -0
- package/lib/database/repository/processRepository.js +48 -0
- package/lib/database/repository/registryRepository.d.ts +72 -0
- package/lib/database/repository/registryRepository.js +95 -0
- package/lib/database/repository/repository.d.ts +322 -0
- package/lib/database/repository/repository.js +332 -0
- package/lib/database/repository/runtimeApprovalRepository.d.ts +14 -0
- package/lib/database/repository/runtimeApprovalRepository.js +35 -0
- package/lib/database/repository/runtimeSessionRepository.d.ts +9 -0
- package/lib/database/repository/runtimeSessionRepository.js +21 -0
- package/lib/database/repository/runtimeTurnRepository.d.ts +10 -0
- package/lib/database/repository/runtimeTurnRepository.js +32 -0
- package/lib/database/repository/socialRepository.d.ts +22 -0
- package/lib/database/repository/socialRepository.js +155 -0
- package/lib/database/repository/threadRepository.d.ts +29 -0
- package/lib/database/repository/threadRepository.js +48 -0
- package/lib/database/repository/windowRepository.d.ts +46 -0
- package/lib/database/repository/windowRepository.js +68 -0
- package/lib/database/repository/workerRepository.d.ts +38 -0
- package/lib/database/repository/workerRepository.js +61 -0
- package/lib/database/service/database.d.ts +55 -0
- package/lib/database/service/database.js +77 -0
- package/lib/database/service/handleService.d.ts +20 -0
- package/lib/database/service/handleService.js +34 -0
- package/lib/database/service/index.d.ts +16 -0
- package/lib/database/service/index.js +11 -0
- package/lib/database/service/messageService.d.ts +26 -0
- package/lib/database/service/messageService.js +40 -0
- package/lib/database/service/objectService.d.ts +32 -0
- package/lib/database/service/objectService.js +31 -0
- package/lib/database/service/processService.d.ts +22 -0
- package/lib/database/service/processService.js +45 -0
- package/lib/database/service/registryServices.d.ts +43 -0
- package/lib/database/service/registryServices.js +60 -0
- package/lib/database/service/service.d.ts +131 -0
- package/lib/database/service/service.js +153 -0
- package/lib/database/service/stepService.d.ts +23 -0
- package/lib/database/service/stepService.js +35 -0
- package/lib/database/service/threadService.d.ts +23 -0
- package/lib/database/service/threadService.js +48 -0
- package/lib/database/service/windowService.d.ts +15 -0
- package/lib/database/service/windowService.js +22 -0
- package/lib/database/service/workerService.d.ts +28 -0
- package/lib/database/service/workerService.js +34 -0
- package/lib/database/sql/index.d.ts +3 -0
- package/lib/database/sql/index.js +2 -0
- package/lib/database/sql/schema.d.ts +5 -0
- package/lib/database/sql/schema.js +416 -0
- package/lib/database/sql/sql.d.ts +290 -0
- package/lib/database/sql/sql.js +430 -0
- package/lib/database/store/database.d.ts +75 -0
- package/lib/database/store/database.js +143 -0
- package/lib/database/store/index.d.ts +3 -0
- package/lib/database/store/index.js +2 -0
- package/lib/database/store/store.d.ts +145 -0
- package/lib/database/store/store.js +192 -0
- package/lib/delegate/index.d.ts +2 -0
- package/lib/delegate/index.js +2 -0
- package/lib/delegate/team.d.ts +92 -0
- package/lib/delegate/team.js +200 -0
- package/lib/delegate/teamTypes.d.ts +43 -0
- package/lib/delegate/teamTypes.js +1 -0
- package/lib/diagnosis/checklist.d.ts +16 -0
- package/lib/diagnosis/checklist.js +61 -0
- package/lib/diagnosis/context.d.ts +19 -0
- package/lib/diagnosis/context.js +79 -0
- package/lib/diagnosis/frame.d.ts +34 -0
- package/lib/diagnosis/frame.js +230 -0
- package/lib/diagnosis/index.d.ts +5 -0
- package/lib/diagnosis/index.js +5 -0
- package/lib/diagnosis/router.d.ts +22 -0
- package/lib/diagnosis/router.js +47 -0
- package/lib/diagnosis/types.d.ts +78 -0
- package/lib/diagnosis/types.js +2 -0
- package/lib/error/agentError.d.ts +9 -0
- package/lib/error/agentError.js +13 -0
- package/lib/error/ampError.d.ts +14 -0
- package/lib/error/ampError.js +19 -0
- package/lib/error/authzError.d.ts +10 -0
- package/lib/error/authzError.js +11 -0
- package/lib/error/boundaryRejection.d.ts +16 -0
- package/lib/error/boundaryRejection.js +14 -0
- package/lib/error/index.d.ts +7 -0
- package/lib/error/index.js +7 -0
- package/lib/error/kernelError.d.ts +11 -0
- package/lib/error/kernelError.js +12 -0
- package/lib/error/mailboxError.d.ts +5 -0
- package/lib/error/mailboxError.js +6 -0
- package/lib/error/windowError.d.ts +8 -0
- package/lib/error/windowError.js +9 -0
- package/lib/evaluation/agreement.d.ts +22 -0
- package/lib/evaluation/agreement.js +82 -0
- package/lib/evaluation/index.d.ts +2 -0
- package/lib/evaluation/index.js +2 -0
- package/lib/evaluation/labels.d.ts +56 -0
- package/lib/evaluation/labels.js +206 -0
- package/lib/evidence/evidenceGraph.d.ts +37 -0
- package/lib/evidence/evidenceGraph.js +165 -0
- package/lib/evidence/index.d.ts +4 -0
- package/lib/evidence/index.js +2 -0
- package/lib/evidence/revalidation.d.ts +70 -0
- package/lib/evidence/revalidation.js +146 -0
- package/lib/execution/exec.d.ts +151 -0
- package/lib/execution/exec.js +282 -0
- package/lib/execution/handles.d.ts +25 -0
- package/lib/execution/handles.js +45 -0
- package/lib/execution/index.d.ts +3 -0
- package/lib/execution/index.js +3 -0
- package/lib/execution/pin.d.ts +60 -0
- package/lib/execution/pin.js +103 -0
- package/lib/frame/frame.d.ts +61 -0
- package/lib/frame/frame.js +1 -0
- package/lib/frame/index.d.ts +1 -0
- package/lib/frame/index.js +1 -0
- package/lib/goal/goal.d.ts +19 -0
- package/lib/goal/goal.js +21 -0
- package/lib/goal/index.d.ts +2 -0
- package/lib/goal/index.js +1 -0
- package/lib/goal/plan.d.ts +125 -0
- package/lib/goal/plan.js +60 -0
- package/lib/governance/attentionManifest.d.ts +279 -0
- package/lib/governance/attentionManifest.js +467 -0
- package/lib/governance/audit.d.ts +123 -0
- package/lib/governance/audit.js +263 -0
- package/lib/governance/budget.d.ts +219 -0
- package/lib/governance/budget.js +424 -0
- package/lib/governance/context.d.ts +159 -0
- package/lib/governance/context.js +229 -0
- package/lib/governance/control.d.ts +65 -0
- package/lib/governance/control.js +89 -0
- package/lib/governance/cooperation.d.ts +163 -0
- package/lib/governance/cooperation.js +350 -0
- package/lib/governance/credential.d.ts +117 -0
- package/lib/governance/credential.js +229 -0
- package/lib/governance/httpServer.d.ts +18 -0
- package/lib/governance/httpServer.js +74 -0
- package/lib/governance/index.d.ts +32 -0
- package/lib/governance/index.js +32 -0
- package/lib/governance/legal.d.ts +222 -0
- package/lib/governance/legal.js +371 -0
- package/lib/governance/matrix.d.ts +170 -0
- package/lib/governance/matrix.js +365 -0
- package/lib/governance/perspectives.d.ts +98 -0
- package/lib/governance/perspectives.js +340 -0
- package/lib/governance/signing.d.ts +131 -0
- package/lib/governance/signing.js +241 -0
- package/lib/governance/store.d.ts +33 -0
- package/lib/governance/store.js +89 -0
- package/lib/governance/switching.d.ts +183 -0
- package/lib/governance/switching.js +257 -0
- package/lib/governance/toolPolicy.d.ts +37 -0
- package/lib/governance/toolPolicy.js +42 -0
- package/lib/governance/transport.d.ts +76 -0
- package/lib/governance/transport.js +124 -0
- package/lib/governance/types.d.ts +218 -0
- package/lib/governance/types.js +72 -0
- package/lib/governance/workflow.d.ts +174 -0
- package/lib/governance/workflow.js +612 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +11 -0
- package/lib/interaction/index.d.ts +1 -0
- package/lib/interaction/index.js +1 -0
- package/lib/interaction/interaction.d.ts +83 -0
- package/lib/interaction/interaction.js +256 -0
- package/lib/ipc/index.d.ts +4 -0
- package/lib/ipc/index.js +3 -0
- package/lib/ipc/mailbox.d.ts +37 -0
- package/lib/ipc/mailbox.js +77 -0
- package/lib/ipc/memorySocialStore.d.ts +14 -0
- package/lib/ipc/memorySocialStore.js +83 -0
- package/lib/ipc/social.d.ts +80 -0
- package/lib/ipc/social.js +1 -0
- package/lib/kernel/index.d.ts +2 -0
- package/lib/kernel/index.js +1 -0
- package/lib/kernel/scheduler.d.ts +195 -0
- package/lib/kernel/scheduler.js +334 -0
- package/lib/ledger/checkpoint.d.ts +116 -0
- package/lib/ledger/checkpoint.js +223 -0
- package/lib/ledger/index.d.ts +4 -0
- package/lib/ledger/index.js +4 -0
- package/lib/ledger/ledger.d.ts +21 -0
- package/lib/ledger/ledger.js +23 -0
- package/lib/ledger/persistence.d.ts +46 -0
- package/lib/ledger/persistence.js +106 -0
- package/lib/ledger/share.d.ts +29 -0
- package/lib/ledger/share.js +39 -0
- package/lib/lock/index.d.ts +2 -0
- package/lib/lock/index.js +1 -0
- package/lib/lock/lease.d.ts +23 -0
- package/lib/lock/lease.js +42 -0
- package/lib/manifest/agentCard.d.ts +35 -0
- package/lib/manifest/agentCard.js +38 -0
- package/lib/manifest/cardSign.d.ts +25 -0
- package/lib/manifest/cardSign.js +70 -0
- package/lib/manifest/federation.d.ts +64 -0
- package/lib/manifest/federation.js +187 -0
- package/lib/manifest/federationTypes.d.ts +51 -0
- package/lib/manifest/federationTypes.js +1 -0
- package/lib/manifest/index.d.ts +8 -0
- package/lib/manifest/index.js +8 -0
- package/lib/manifest/keys.d.ts +221 -0
- package/lib/manifest/keys.js +484 -0
- package/lib/manifest/manifest.d.ts +102 -0
- package/lib/manifest/manifest.js +1 -0
- package/lib/manifest/sign.d.ts +38 -0
- package/lib/manifest/sign.js +90 -0
- package/lib/manifest/trust.d.ts +54 -0
- package/lib/manifest/trust.js +87 -0
- package/lib/mission/index.d.ts +2 -0
- package/lib/mission/index.js +1 -0
- package/lib/mission/missionQueue.d.ts +19 -0
- package/lib/mission/missionQueue.js +62 -0
- package/lib/module/index.d.ts +9 -0
- package/lib/module/index.js +9 -0
- package/lib/module/llm/deepseek.d.ts +43 -0
- package/lib/module/llm/deepseek.js +162 -0
- package/lib/module/llm/llm.d.ts +64 -0
- package/lib/module/llm/llm.js +16 -0
- package/lib/module/mcp/client.d.ts +32 -0
- package/lib/module/mcp/client.js +84 -0
- package/lib/module/mcp/http.d.ts +32 -0
- package/lib/module/mcp/http.js +83 -0
- package/lib/module/mcp/protocol.d.ts +62 -0
- package/lib/module/mcp/protocol.js +20 -0
- package/lib/module/mcp/server.d.ts +22 -0
- package/lib/module/mcp/server.js +138 -0
- package/lib/module/mcp/transport.d.ts +19 -0
- package/lib/module/mcp/transport.js +16 -0
- package/lib/module/mcp/workspaceServer.d.ts +20 -0
- package/lib/module/mcp/workspaceServer.js +90 -0
- package/lib/module/sandbox/sandbox.d.ts +24 -0
- package/lib/module/sandbox/sandbox.js +5 -0
- package/lib/module/tool/mcpExecutor.d.ts +18 -0
- package/lib/module/tool/mcpExecutor.js +41 -0
- package/lib/module/tool/policy.d.ts +30 -0
- package/lib/module/tool/policy.js +23 -0
- package/lib/module/tool/redact.d.ts +9 -0
- package/lib/module/tool/redact.js +19 -0
- package/lib/module/tool/tool.d.ts +26 -0
- package/lib/module/tool/tool.js +24 -0
- package/lib/module/tool/workspaceExecutor.d.ts +12 -0
- package/lib/module/tool/workspaceExecutor.js +25 -0
- package/lib/policy/guard.d.ts +115 -0
- package/lib/policy/guard.js +154 -0
- package/lib/policy/index.d.ts +2 -0
- package/lib/policy/index.js +2 -0
- package/lib/policy/policy.d.ts +249 -0
- package/lib/policy/policy.js +364 -0
- package/lib/process/agent.d.ts +295 -0
- package/lib/process/agent.js +1 -0
- package/lib/process/agentService.d.ts +87 -0
- package/lib/process/agentService.js +128 -0
- package/lib/process/agentStore.d.ts +35 -0
- package/lib/process/agentStore.js +328 -0
- package/lib/process/executionStore.d.ts +79 -0
- package/lib/process/executionStore.js +71 -0
- package/lib/process/index.d.ts +5 -0
- package/lib/process/index.js +5 -0
- package/lib/process/process.d.ts +120 -0
- package/lib/process/process.js +111 -0
- package/lib/process/transitions.d.ts +11 -0
- package/lib/process/transitions.js +8 -0
- package/lib/progress/index.d.ts +2 -0
- package/lib/progress/index.js +1 -0
- package/lib/progress/progress.d.ts +26 -0
- package/lib/progress/progress.js +42 -0
- package/lib/protocol/a2a.d.ts +51 -0
- package/lib/protocol/a2a.js +79 -0
- package/lib/protocol/channel.d.ts +25 -0
- package/lib/protocol/channel.js +27 -0
- package/lib/protocol/envelope.d.ts +180 -0
- package/lib/protocol/envelope.js +495 -0
- package/lib/protocol/httpChannel.d.ts +33 -0
- package/lib/protocol/httpChannel.js +59 -0
- package/lib/protocol/index.d.ts +6 -0
- package/lib/protocol/index.js +6 -0
- package/lib/protocol/protocol.d.ts +120 -0
- package/lib/protocol/protocol.js +1 -0
- package/lib/protocol/wire.d.ts +12 -0
- package/lib/protocol/wire.js +55 -0
- package/lib/receipt/index.d.ts +1 -0
- package/lib/receipt/index.js +1 -0
- package/lib/receipt/receipt.d.ts +43 -0
- package/lib/receipt/receipt.js +1 -0
- package/lib/registry/content.d.ts +10 -0
- package/lib/registry/content.js +58 -0
- package/lib/registry/index.d.ts +4 -0
- package/lib/registry/index.js +2 -0
- package/lib/registry/registry.d.ts +109 -0
- package/lib/registry/registry.js +299 -0
- package/lib/runtime/action.d.ts +46 -0
- package/lib/runtime/action.js +39 -0
- package/lib/runtime/behavior.d.ts +110 -0
- package/lib/runtime/behavior.js +179 -0
- package/lib/runtime/behaviorTuning.d.ts +59 -0
- package/lib/runtime/behaviorTuning.js +95 -0
- package/lib/runtime/cognitiveRuntime.d.ts +189 -0
- package/lib/runtime/cognitiveRuntime.js +490 -0
- package/lib/runtime/escalation.d.ts +22 -0
- package/lib/runtime/escalation.js +15 -0
- package/lib/runtime/governedTask.d.ts +57 -0
- package/lib/runtime/governedTask.js +150 -0
- package/lib/runtime/index.d.ts +15 -0
- package/lib/runtime/index.js +15 -0
- package/lib/runtime/kernelRuntime.d.ts +33 -0
- package/lib/runtime/kernelRuntime.js +105 -0
- package/lib/runtime/operation.d.ts +30 -0
- package/lib/runtime/operation.js +1 -0
- package/lib/runtime/replay.d.ts +24 -0
- package/lib/runtime/replay.js +38 -0
- package/lib/runtime/routing.d.ts +12 -0
- package/lib/runtime/routing.js +44 -0
- package/lib/runtime/safety.d.ts +15 -0
- package/lib/runtime/safety.js +28 -0
- package/lib/runtime/session.d.ts +147 -0
- package/lib/runtime/session.js +214 -0
- package/lib/runtime/sessionStore.d.ts +24 -0
- package/lib/runtime/sessionStore.js +20 -0
- package/lib/runtime/telemetry.d.ts +24 -0
- package/lib/runtime/telemetry.js +33 -0
- package/lib/runtime/turnStore.d.ts +16 -0
- package/lib/runtime/turnStore.js +15 -0
- package/lib/scenario/index.d.ts +1 -0
- package/lib/scenario/index.js +1 -0
- package/lib/scenario/scenario.d.ts +52 -0
- package/lib/scenario/scenario.js +210 -0
- package/lib/semantic/canonical.d.ts +6 -0
- package/lib/semantic/canonical.js +22 -0
- package/lib/semantic/index.d.ts +2 -0
- package/lib/semantic/index.js +2 -0
- package/lib/semantic/sha256.d.ts +1 -0
- package/lib/semantic/sha256.js +66 -0
- package/lib/storage/appendLog.d.ts +145 -0
- package/lib/storage/appendLog.js +299 -0
- package/lib/storage/fileAppendSink.d.ts +7 -0
- package/lib/storage/fileAppendSink.js +34 -0
- package/lib/storage/index.d.ts +2 -0
- package/lib/storage/index.js +2 -0
- package/lib/store/bindCache.d.ts +9 -0
- package/lib/store/bindCache.js +18 -0
- package/lib/store/cache.d.ts +48 -0
- package/lib/store/cache.js +162 -0
- package/lib/store/context.d.ts +10 -0
- package/lib/store/context.js +27 -0
- package/lib/store/handleStore.d.ts +9 -0
- package/lib/store/handleStore.js +25 -0
- package/lib/store/index.d.ts +9 -0
- package/lib/store/index.js +8 -0
- package/lib/store/messageStore.d.ts +9 -0
- package/lib/store/messageStore.js +25 -0
- package/lib/store/objectStore.d.ts +9 -0
- package/lib/store/objectStore.js +25 -0
- package/lib/store/processStore.d.ts +9 -0
- package/lib/store/processStore.js +25 -0
- package/lib/store/threadStore.d.ts +9 -0
- package/lib/store/threadStore.js +25 -0
- package/lib/store/windowStore.d.ts +9 -0
- package/lib/store/windowStore.js +25 -0
- package/lib/structure/abstractSyntaxTree.d.ts +181 -0
- package/lib/structure/abstractSyntaxTree.js +400 -0
- package/lib/structure/avlTree.d.ts +125 -0
- package/lib/structure/avlTree.js +369 -0
- package/lib/structure/binarySearchTree.d.ts +125 -0
- package/lib/structure/binarySearchTree.js +306 -0
- package/lib/structure/binaryTree.d.ts +174 -0
- package/lib/structure/binaryTree.js +495 -0
- package/lib/structure/bloomFilter.d.ts +126 -0
- package/lib/structure/bloomFilter.js +177 -0
- package/lib/structure/compare.d.ts +55 -0
- package/lib/structure/compare.js +96 -0
- package/lib/structure/cuckooFilter.d.ts +149 -0
- package/lib/structure/cuckooFilter.js +267 -0
- package/lib/structure/deque.d.ts +117 -0
- package/lib/structure/deque.js +205 -0
- package/lib/structure/filterKey.d.ts +19 -0
- package/lib/structure/filterKey.js +28 -0
- package/lib/structure/hash.d.ts +129 -0
- package/lib/structure/hash.js +241 -0
- package/lib/structure/heap.d.ts +152 -0
- package/lib/structure/heap.js +227 -0
- package/lib/structure/index.d.ts +20 -0
- package/lib/structure/index.js +20 -0
- package/lib/structure/iterator.d.ts +6 -0
- package/lib/structure/iterator.js +16 -0
- package/lib/structure/lru.d.ts +235 -0
- package/lib/structure/lru.js +524 -0
- package/lib/structure/ordered.d.ts +89 -0
- package/lib/structure/ordered.js +336 -0
- package/lib/structure/priority.d.ts +499 -0
- package/lib/structure/priority.js +756 -0
- package/lib/structure/queue.d.ts +90 -0
- package/lib/structure/queue.js +154 -0
- package/lib/structure/redBlackTree.d.ts +142 -0
- package/lib/structure/redBlackTree.js +644 -0
- package/lib/structure/segmentTree.d.ts +129 -0
- package/lib/structure/segmentTree.js +205 -0
- package/lib/structure/stack.d.ts +77 -0
- package/lib/structure/stack.js +107 -0
- package/lib/structure/unordered.d.ts +99 -0
- package/lib/structure/unordered.js +341 -0
- package/lib/thread/index.d.ts +2 -0
- package/lib/thread/index.js +2 -0
- package/lib/thread/thread.d.ts +107 -0
- package/lib/thread/thread.js +81 -0
- package/lib/thread/transitions.d.ts +8 -0
- package/lib/thread/transitions.js +9 -0
- package/lib/types/common.d.ts +80 -0
- package/lib/types/common.js +5 -0
- package/lib/types/index.d.ts +23 -0
- package/lib/types/index.js +1 -0
- package/lib/warrant/epistemic.d.ts +141 -0
- package/lib/warrant/epistemic.js +1 -0
- package/lib/warrant/index.d.ts +3 -0
- package/lib/warrant/index.js +3 -0
- package/lib/warrant/inquiry.d.ts +69 -0
- package/lib/warrant/inquiry.js +119 -0
- package/lib/warrant/warrant.d.ts +46 -0
- package/lib/warrant/warrant.js +153 -0
- package/lib/window/compaction.d.ts +57 -0
- package/lib/window/compaction.js +334 -0
- package/lib/window/compactionTypes.d.ts +113 -0
- package/lib/window/compactionTypes.js +1 -0
- package/lib/window/index.d.ts +7 -0
- package/lib/window/index.js +3 -0
- package/lib/window/page.d.ts +16 -0
- package/lib/window/page.js +2 -0
- package/lib/window/window.d.ts +68 -0
- package/lib/window/window.js +194 -0
- package/package.json +22 -1
- package/src/authz/index.ts +1 -0
- package/src/concept/index.ts +3 -0
- package/src/concurrency/index.ts +5 -0
- package/src/cooperation/index.ts +6 -0
- package/src/delegate/index.ts +2 -0
- package/src/error/index.ts +7 -0
- package/src/evaluation/index.ts +2 -0
- package/src/execution/index.ts +3 -0
- package/src/frame/index.ts +1 -0
- package/src/index.ts +11 -0
- package/src/ledger/index.ts +4 -0
- package/src/manifest/index.ts +8 -0
- package/src/policy/index.ts +2 -0
- package/src/protocol/index.ts +6 -0
- package/src/receipt/index.ts +1 -0
- package/src/semantic/index.ts +2 -0
- package/src/storage/index.ts +2 -0
- package/src/structure/index.ts +20 -0
- package/src/thread/index.ts +2 -0
- package/src/warrant/index.ts +3 -0
- package/src/window/index.ts +7 -4
- package/tools/rewrite-declaration-extensions.ts +98 -0
- package/tsconfig.build.json +14 -0
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { GovernanceError, PerspectiveIds } from "./types.js";
|
|
2
|
+
import { PerspectiveActivationTable } from "./matrix.js";
|
|
3
|
+
/**
|
|
4
|
+
* The canonical registry. Order follows the governance template.
|
|
5
|
+
*/
|
|
6
|
+
export const PerspectiveRegistry = {
|
|
7
|
+
shareholders: {
|
|
8
|
+
id: "shareholders",
|
|
9
|
+
labelZh: "股东大会",
|
|
10
|
+
labelEn: "Shareholders",
|
|
11
|
+
layer: "strategic",
|
|
12
|
+
focus: ["goal authority", "final arbitration", "liability"],
|
|
13
|
+
frequency: "final arbitration only",
|
|
14
|
+
switchable: false,
|
|
15
|
+
directSwitch: false,
|
|
16
|
+
signsCredentials: false,
|
|
17
|
+
approve: ["goal.change", "liability.attribution", "final.ruling", "escalation.final"],
|
|
18
|
+
independentAudit: false,
|
|
19
|
+
},
|
|
20
|
+
board: {
|
|
21
|
+
id: "board",
|
|
22
|
+
labelZh: "董事会",
|
|
23
|
+
labelEn: "Board",
|
|
24
|
+
layer: "strategic",
|
|
25
|
+
focus: ["strategic goals", "risk appetite", "capability declarations"],
|
|
26
|
+
frequency: "low frequency or on demand",
|
|
27
|
+
switchable: false,
|
|
28
|
+
directSwitch: false,
|
|
29
|
+
signsCredentials: false,
|
|
30
|
+
approve: ["strategy.version", "capability.change", "budget.major-top-up", "arbitration.major", "escalation.strategic", "board.write"],
|
|
31
|
+
independentAudit: false,
|
|
32
|
+
},
|
|
33
|
+
supervisory: {
|
|
34
|
+
id: "supervisory",
|
|
35
|
+
labelZh: "监事会",
|
|
36
|
+
labelEn: "Supervisory board",
|
|
37
|
+
layer: "strategic",
|
|
38
|
+
focus: ["evidence traceability", "receipt self-consistency"],
|
|
39
|
+
frequency: "sampled per scenario",
|
|
40
|
+
switchable: false,
|
|
41
|
+
directSwitch: false,
|
|
42
|
+
signsCredentials: false,
|
|
43
|
+
approve: ["audit.evidence", "audit.archive"],
|
|
44
|
+
independentAudit: true,
|
|
45
|
+
},
|
|
46
|
+
"general-manager": {
|
|
47
|
+
id: "general-manager",
|
|
48
|
+
labelZh: "总经理",
|
|
49
|
+
labelEn: "General manager",
|
|
50
|
+
layer: "management",
|
|
51
|
+
focus: ["switch triggers", "budget consumption", "conflict detection", "scenario and mode approvals"],
|
|
52
|
+
frequency: "resident, high frequency",
|
|
53
|
+
switchable: true,
|
|
54
|
+
directSwitch: true,
|
|
55
|
+
signsCredentials: true,
|
|
56
|
+
approve: [
|
|
57
|
+
"credential.issue",
|
|
58
|
+
"manifest.derive",
|
|
59
|
+
"manifest.focus",
|
|
60
|
+
"scenario.judgement",
|
|
61
|
+
"complexity.grade",
|
|
62
|
+
"mode.weights",
|
|
63
|
+
"escalation.initiate",
|
|
64
|
+
"escalation.audit",
|
|
65
|
+
"arbitration.major",
|
|
66
|
+
],
|
|
67
|
+
independentAudit: false,
|
|
68
|
+
},
|
|
69
|
+
"customer-service": {
|
|
70
|
+
id: "customer-service",
|
|
71
|
+
labelZh: "客服部",
|
|
72
|
+
labelEn: "Customer service",
|
|
73
|
+
layer: "execution",
|
|
74
|
+
focus: ["user intent", "ambiguities", "constraints", "acceptance criteria", "emotional signals"],
|
|
75
|
+
frequency: "task entry and closing",
|
|
76
|
+
switchable: true,
|
|
77
|
+
directSwitch: true,
|
|
78
|
+
signsCredentials: false,
|
|
79
|
+
approve: ["requirement.complete", "requirement.change", "requirement.satisfaction", "acceptance.criteria"],
|
|
80
|
+
independentAudit: false,
|
|
81
|
+
},
|
|
82
|
+
writing: {
|
|
83
|
+
id: "writing",
|
|
84
|
+
labelZh: "写作视角",
|
|
85
|
+
labelEn: "Writing desk",
|
|
86
|
+
layer: "execution",
|
|
87
|
+
focus: ["structure", "voice", "material selection", "revision"],
|
|
88
|
+
frequency: "activated by the writing scenario",
|
|
89
|
+
switchable: true,
|
|
90
|
+
directSwitch: true,
|
|
91
|
+
signsCredentials: false,
|
|
92
|
+
approve: [],
|
|
93
|
+
independentAudit: false,
|
|
94
|
+
},
|
|
95
|
+
strategy: {
|
|
96
|
+
id: "strategy",
|
|
97
|
+
labelZh: "战略部",
|
|
98
|
+
labelEn: "Strategy",
|
|
99
|
+
layer: "execution",
|
|
100
|
+
focus: ["task decomposition", "dependency structure", "risk points"],
|
|
101
|
+
frequency: "complex tasks",
|
|
102
|
+
switchable: true,
|
|
103
|
+
directSwitch: true,
|
|
104
|
+
signsCredentials: false,
|
|
105
|
+
approve: [],
|
|
106
|
+
independentAudit: false,
|
|
107
|
+
},
|
|
108
|
+
"human-resources": {
|
|
109
|
+
id: "human-resources",
|
|
110
|
+
labelZh: "人力资源部",
|
|
111
|
+
labelEn: "Human resources",
|
|
112
|
+
layer: "rule",
|
|
113
|
+
focus: ["capability fit", "perspective availability", "reliability priors"],
|
|
114
|
+
frequency: "planning and preparation",
|
|
115
|
+
switchable: false,
|
|
116
|
+
directSwitch: false,
|
|
117
|
+
signsCredentials: false,
|
|
118
|
+
approve: ["perspective.assignment", "perspective.routing", "perspective.readiness"],
|
|
119
|
+
independentAudit: false,
|
|
120
|
+
},
|
|
121
|
+
marketing: {
|
|
122
|
+
id: "marketing",
|
|
123
|
+
labelZh: "市场部",
|
|
124
|
+
labelEn: "Market research",
|
|
125
|
+
layer: "execution",
|
|
126
|
+
focus: ["external information needs", "environment assumptions", "competitor, user and policy signals"],
|
|
127
|
+
frequency: "per scenario and mode",
|
|
128
|
+
switchable: true,
|
|
129
|
+
directSwitch: true,
|
|
130
|
+
signsCredentials: false,
|
|
131
|
+
approve: [],
|
|
132
|
+
independentAudit: false,
|
|
133
|
+
},
|
|
134
|
+
technology: {
|
|
135
|
+
id: "technology",
|
|
136
|
+
labelZh: "技术部",
|
|
137
|
+
labelEn: "Technology",
|
|
138
|
+
layer: "execution",
|
|
139
|
+
focus: ["current subgoal", "tool returns", "error logs"],
|
|
140
|
+
frequency: "on demand",
|
|
141
|
+
switchable: true,
|
|
142
|
+
directSwitch: true,
|
|
143
|
+
signsCredentials: false,
|
|
144
|
+
approve: [],
|
|
145
|
+
independentAudit: false,
|
|
146
|
+
},
|
|
147
|
+
legal: {
|
|
148
|
+
id: "legal",
|
|
149
|
+
labelZh: "法务部",
|
|
150
|
+
labelEn: "Legal",
|
|
151
|
+
layer: "execution",
|
|
152
|
+
focus: ["behaviour-code compliance", "boundary signals", "injection traces"],
|
|
153
|
+
frequency: "pre-rules plus on demand",
|
|
154
|
+
switchable: true,
|
|
155
|
+
directSwitch: true,
|
|
156
|
+
signsCredentials: true,
|
|
157
|
+
approve: ["credential.compliance", "manifest.constraints", "manifest.evidence-floor", "manifest.waiver", "tool.high-risk", "board.write", "audit.behavior"],
|
|
158
|
+
independentAudit: false,
|
|
159
|
+
},
|
|
160
|
+
finance: {
|
|
161
|
+
id: "finance",
|
|
162
|
+
labelZh: "财务部",
|
|
163
|
+
labelEn: "Finance",
|
|
164
|
+
layer: "rule",
|
|
165
|
+
focus: ["three-ledger balances", "overrun signals", "elasticity use"],
|
|
166
|
+
frequency: "rule module",
|
|
167
|
+
switchable: false,
|
|
168
|
+
directSwitch: false,
|
|
169
|
+
signsCredentials: true,
|
|
170
|
+
approve: [
|
|
171
|
+
"budget.initial",
|
|
172
|
+
"budget.allocation",
|
|
173
|
+
"budget.freeze",
|
|
174
|
+
"budget.elasticity",
|
|
175
|
+
"budget.top-up",
|
|
176
|
+
"budget.settlement",
|
|
177
|
+
"budget.reserve",
|
|
178
|
+
"budget.major-top-up",
|
|
179
|
+
"audit.budget",
|
|
180
|
+
],
|
|
181
|
+
independentAudit: false,
|
|
182
|
+
},
|
|
183
|
+
administration: {
|
|
184
|
+
id: "administration",
|
|
185
|
+
labelZh: "行政部",
|
|
186
|
+
labelEn: "Administration",
|
|
187
|
+
layer: "rule",
|
|
188
|
+
focus: ["log integrity", "archive state", "version chains"],
|
|
189
|
+
frequency: "infrastructure",
|
|
190
|
+
switchable: false,
|
|
191
|
+
directSwitch: false,
|
|
192
|
+
signsCredentials: false,
|
|
193
|
+
approve: ["audit.archive"],
|
|
194
|
+
independentAudit: false,
|
|
195
|
+
},
|
|
196
|
+
operations: {
|
|
197
|
+
id: "operations",
|
|
198
|
+
labelZh: "运营部",
|
|
199
|
+
labelEn: "Operations",
|
|
200
|
+
layer: "execution",
|
|
201
|
+
focus: ["phase transitions", "rollback triggers", "timeouts"],
|
|
202
|
+
frequency: "resident during execution",
|
|
203
|
+
switchable: true,
|
|
204
|
+
directSwitch: true,
|
|
205
|
+
signsCredentials: false,
|
|
206
|
+
approve: [],
|
|
207
|
+
independentAudit: false,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* The standing perspectives of section 12.1 (the writing desk is a
|
|
212
|
+
* scenario-specific view and is excluded from the standing count).
|
|
213
|
+
*/
|
|
214
|
+
export const StandingPerspectives = [
|
|
215
|
+
"board",
|
|
216
|
+
"supervisory",
|
|
217
|
+
"general-manager",
|
|
218
|
+
"customer-service",
|
|
219
|
+
"strategy",
|
|
220
|
+
"marketing",
|
|
221
|
+
"technology",
|
|
222
|
+
"legal",
|
|
223
|
+
"operations",
|
|
224
|
+
];
|
|
225
|
+
/**
|
|
226
|
+
* Look up a perspective, failing closed for unknown ids.
|
|
227
|
+
*/
|
|
228
|
+
export const perspective = (id) => {
|
|
229
|
+
if (!PerspectiveIds.includes(id)) {
|
|
230
|
+
throw new GovernanceError("unknown-perspective", `${id} is not a registered perspective`);
|
|
231
|
+
}
|
|
232
|
+
return PerspectiveRegistry[id];
|
|
233
|
+
};
|
|
234
|
+
export const isKnownPerspective = (id) => PerspectiveIds.includes(id);
|
|
235
|
+
/**
|
|
236
|
+
* Rule modules and infrastructure are not switchable perspectives.
|
|
237
|
+
*/
|
|
238
|
+
export const isRuleModule = (id) => PerspectiveRegistry[id].layer === "rule";
|
|
239
|
+
/**
|
|
240
|
+
* Strategic perspectives are reached through escalation, never a same-level
|
|
241
|
+
* switch credential.
|
|
242
|
+
*/
|
|
243
|
+
export const requiresEscalation = (id) => PerspectiveRegistry[id].layer === "strategic";
|
|
244
|
+
export const canApprove = (id, subject) => PerspectiveRegistry[id].approve.includes(subject);
|
|
245
|
+
/**
|
|
246
|
+
* Who may approve a subject, in registry order (used for routing refusals).
|
|
247
|
+
*/
|
|
248
|
+
export const approversOf = (subject) => PerspectiveIds.filter((id) => PerspectiveRegistry[id].approve.includes(subject));
|
|
249
|
+
/**
|
|
250
|
+
* A same-level switch credential is issued by the general manager to a
|
|
251
|
+
* non-strategic, directly switchable perspective.
|
|
252
|
+
*/
|
|
253
|
+
export const canIssueCredential = (from, to) => {
|
|
254
|
+
if (from === to) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
if (from !== "general-manager") {
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
const target = PerspectiveRegistry[to];
|
|
261
|
+
return target.directSwitch && target.switchable && target.layer === "execution";
|
|
262
|
+
};
|
|
263
|
+
/**
|
|
264
|
+
* Which strategic target an escalation type may reach.
|
|
265
|
+
*/
|
|
266
|
+
export const escalationTarget = (type) => {
|
|
267
|
+
switch (type) {
|
|
268
|
+
case "audit":
|
|
269
|
+
return "supervisory";
|
|
270
|
+
case "strategy":
|
|
271
|
+
return "board";
|
|
272
|
+
case "final":
|
|
273
|
+
return "shareholders";
|
|
274
|
+
case "compliance":
|
|
275
|
+
return "legal";
|
|
276
|
+
default:
|
|
277
|
+
return "general-manager";
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* Scenario activation for one perspective (spec section 9.8).
|
|
282
|
+
*/
|
|
283
|
+
export const activationFor = (id, scenario) => {
|
|
284
|
+
const plan = PerspectiveActivationTable[scenario];
|
|
285
|
+
if (plan.default.includes(id)) {
|
|
286
|
+
return "default";
|
|
287
|
+
}
|
|
288
|
+
if (plan.onDemand.includes(id)) {
|
|
289
|
+
return "on-demand";
|
|
290
|
+
}
|
|
291
|
+
return "dormant";
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* The activation plan for a scenario, with copies so callers cannot mutate the
|
|
295
|
+
* table.
|
|
296
|
+
*/
|
|
297
|
+
export const perspectivesForScenario = (scenario) => {
|
|
298
|
+
const plan = PerspectiveActivationTable[scenario];
|
|
299
|
+
return {
|
|
300
|
+
default: [...plan.default],
|
|
301
|
+
onDemand: [...plan.onDemand],
|
|
302
|
+
dormant: [...plan.dormant],
|
|
303
|
+
...(plan.note === (void 0) ? {} : { note: plan.note }),
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
/**
|
|
307
|
+
* Registry self-check; used by checks and on first import in development.
|
|
308
|
+
*/
|
|
309
|
+
export const validatePerspectiveRegistry = () => {
|
|
310
|
+
const problems = [];
|
|
311
|
+
const seen = new Set();
|
|
312
|
+
for (let index = 0; index < PerspectiveIds.length; index += 1) {
|
|
313
|
+
const id = PerspectiveIds[index];
|
|
314
|
+
if (seen.has(id)) {
|
|
315
|
+
problems.push(`duplicate perspective id: ${id}`);
|
|
316
|
+
}
|
|
317
|
+
seen.add(id);
|
|
318
|
+
const definition = PerspectiveRegistry[id];
|
|
319
|
+
if (definition === (void 0)) {
|
|
320
|
+
problems.push(`missing registry row: ${id}`);
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (definition.id !== id) {
|
|
324
|
+
problems.push(`registry key ${id} disagrees with row id ${definition.id}`);
|
|
325
|
+
}
|
|
326
|
+
if (definition.layer === "rule" && definition.switchable) {
|
|
327
|
+
problems.push(`rule module ${id} must not be switchable`);
|
|
328
|
+
}
|
|
329
|
+
if (definition.layer === "strategic" && definition.directSwitch) {
|
|
330
|
+
problems.push(`strategic perspective ${id} must not be a direct switch target`);
|
|
331
|
+
}
|
|
332
|
+
if (definition.signsCredentials && !["general-manager", "legal", "finance"].includes(id)) {
|
|
333
|
+
problems.push(`${id} must not counter-sign credentials`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (!PerspectiveIds.includes("general-manager")) {
|
|
337
|
+
problems.push("the registry must contain the general manager");
|
|
338
|
+
}
|
|
339
|
+
return problems;
|
|
340
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ed25519 adapter for governance objects.
|
|
3
|
+
*
|
|
4
|
+
* Governance sign-offs answer "which department approved this digest"; this
|
|
5
|
+
* module answers "who can prove they hold the key for that department". The two
|
|
6
|
+
* layers are deliberately separate: a deployment may run the governance layer
|
|
7
|
+
* without cryptography, and it may attach cryptography only where the host can
|
|
8
|
+
* manage keys.
|
|
9
|
+
*
|
|
10
|
+
* A signature covers `{signer, subject, subjectId, subjectVersion, digest}`, so a
|
|
11
|
+
* signature cannot be transplanted from one manifest or credential to another.
|
|
12
|
+
*/
|
|
13
|
+
import type { Digest, Id } from "../types/common.js";
|
|
14
|
+
import type { KeyPair } from "../manifest/sign.js";
|
|
15
|
+
/**
|
|
16
|
+
* Generic canonical-value signatures for transport envelopes and audit
|
|
17
|
+
* checkpoints. The governance-specific functions below bind a digest to a
|
|
18
|
+
* subject; these helpers only sign the canonical JSON of `value`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const signCanonicalValue: (value: unknown, key: KeyPair) => Promise<string>;
|
|
21
|
+
type VerifyCanonicalFn = (value: unknown, signature: string, publicKey: CryptoKey) => Promise<boolean>;
|
|
22
|
+
export declare const verifyCanonicalValue: VerifyCanonicalFn;
|
|
23
|
+
export interface GovernanceSigner {
|
|
24
|
+
signer: string;
|
|
25
|
+
key: KeyPair;
|
|
26
|
+
}
|
|
27
|
+
export interface GovernanceCryptoSignature {
|
|
28
|
+
signer: string;
|
|
29
|
+
kid: Id;
|
|
30
|
+
alg: "ed25519";
|
|
31
|
+
sig: string;
|
|
32
|
+
digest: Digest;
|
|
33
|
+
}
|
|
34
|
+
export type GovernanceSubject = "attention-manifest" | "switch-credential" | "audit-checkpoint" | "cooperation-message";
|
|
35
|
+
export interface GovernanceSignatureBundle {
|
|
36
|
+
kind: "governance-signatures";
|
|
37
|
+
subject: GovernanceSubject;
|
|
38
|
+
subjectId: string;
|
|
39
|
+
subjectVersion?: number;
|
|
40
|
+
subjectDigest: Digest;
|
|
41
|
+
signatures: GovernanceCryptoSignature[];
|
|
42
|
+
}
|
|
43
|
+
export interface GovernanceVerification {
|
|
44
|
+
ok: boolean;
|
|
45
|
+
reasons: string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Public keys keyed by the governance signer name. Revocation is separate from
|
|
49
|
+
* deletion, so a revoked signer fails closed even if its key is still present.
|
|
50
|
+
*
|
|
51
|
+
* Rotation keeps the old key as a candidate until `retiresAt`, so signatures
|
|
52
|
+
* made before the rotation still verify during the overlap window.
|
|
53
|
+
*/
|
|
54
|
+
export interface GovernanceKeyRecord {
|
|
55
|
+
kid?: Id;
|
|
56
|
+
key: CryptoKey;
|
|
57
|
+
addedAt?: number;
|
|
58
|
+
retiresAt?: number;
|
|
59
|
+
}
|
|
60
|
+
export type KeyringAction = "add" | "rotate" | "revoke" | "revoke-kid" | "prune";
|
|
61
|
+
export interface KeyringEvent {
|
|
62
|
+
action: KeyringAction;
|
|
63
|
+
signer: string;
|
|
64
|
+
kid?: Id;
|
|
65
|
+
at: number;
|
|
66
|
+
}
|
|
67
|
+
export type KeyringEventSink = (event: KeyringEvent) => void;
|
|
68
|
+
export declare class GovernanceKeyring {
|
|
69
|
+
private readonly keys;
|
|
70
|
+
private readonly revoked;
|
|
71
|
+
private readonly revokedKids;
|
|
72
|
+
private readonly onEvent?;
|
|
73
|
+
constructor(options?: {
|
|
74
|
+
onEvent?: KeyringEventSink;
|
|
75
|
+
});
|
|
76
|
+
private emit;
|
|
77
|
+
add(signer: string, publicKey: CryptoKey, record?: {
|
|
78
|
+
kid?: Id;
|
|
79
|
+
at?: number;
|
|
80
|
+
retiresAt?: number;
|
|
81
|
+
}): void;
|
|
82
|
+
/**
|
|
83
|
+
* Add a new key and retire the previous ones after the overlap window.
|
|
84
|
+
*/
|
|
85
|
+
rotate(signer: string, publicKey: CryptoKey, options: {
|
|
86
|
+
kid?: Id;
|
|
87
|
+
at: number;
|
|
88
|
+
overlapMs?: number;
|
|
89
|
+
}): void;
|
|
90
|
+
revoke(signer: string): void;
|
|
91
|
+
revokeKid(signer: string, kid: Id): void;
|
|
92
|
+
prune(at: number): void;
|
|
93
|
+
candidates(signer: string, kid?: Id, at?: number): CryptoKey[];
|
|
94
|
+
get(signer: string, kid?: Id, at?: number): CryptoKey | undefined;
|
|
95
|
+
}
|
|
96
|
+
type GenerateSignersFn = (signers: readonly string[], kidPrefix?: string) => Promise<GovernanceSigner[]>;
|
|
97
|
+
export declare const generateGovernanceSigners: GenerateSignersFn;
|
|
98
|
+
export declare const signGovernanceDigest: (input: {
|
|
99
|
+
signer: GovernanceSigner;
|
|
100
|
+
subject: GovernanceSubject;
|
|
101
|
+
subjectId: string;
|
|
102
|
+
subjectVersion?: number;
|
|
103
|
+
digest: Digest;
|
|
104
|
+
}) => Promise<GovernanceCryptoSignature>;
|
|
105
|
+
export declare const verifyGovernanceSignature: (input: {
|
|
106
|
+
signature: GovernanceCryptoSignature;
|
|
107
|
+
subject: GovernanceSubject;
|
|
108
|
+
subjectId: string;
|
|
109
|
+
subjectVersion?: number;
|
|
110
|
+
digest: Digest;
|
|
111
|
+
keyring: GovernanceKeyring;
|
|
112
|
+
}) => Promise<GovernanceVerification>;
|
|
113
|
+
export declare const signGovernanceObject: (input: {
|
|
114
|
+
subject: GovernanceSubject;
|
|
115
|
+
subjectId: string;
|
|
116
|
+
subjectVersion?: number;
|
|
117
|
+
digest: Digest;
|
|
118
|
+
signers: readonly GovernanceSigner[];
|
|
119
|
+
}) => Promise<GovernanceSignatureBundle>;
|
|
120
|
+
export declare const verifyGovernanceBundle: (input: {
|
|
121
|
+
bundle: GovernanceSignatureBundle;
|
|
122
|
+
expected: {
|
|
123
|
+
subject: GovernanceSubject;
|
|
124
|
+
subjectId: string;
|
|
125
|
+
subjectVersion?: number;
|
|
126
|
+
digest: Digest;
|
|
127
|
+
};
|
|
128
|
+
keyring: GovernanceKeyring;
|
|
129
|
+
requiredSigners?: readonly string[];
|
|
130
|
+
}) => Promise<GovernanceVerification>;
|
|
131
|
+
export {};
|