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,369 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Height-balanced AVL search tree.
|
|
3
|
+
*
|
|
4
|
+
* Every node stores its subtree height, and each insertion or deletion walks
|
|
5
|
+
* back up the affected path applying LL/RR/LR/RL rotations until every balance
|
|
6
|
+
* factor is in `[-1, 1]`. The tree therefore keeps its height O(log n) even for
|
|
7
|
+
* sorted insertion sequences, and `insert`, `has`, `delete`, `min`, `max`,
|
|
8
|
+
* `floor` and `ceil` are O(log n) worst case.
|
|
9
|
+
*/
|
|
10
|
+
import { compareNatural } from "./compare.js";
|
|
11
|
+
/**
|
|
12
|
+
* A self-balancing AVL binary search tree.
|
|
13
|
+
*
|
|
14
|
+
* Duplicate values (comparator result 0) are rejected. The stored
|
|
15
|
+
* representative is never replaced by an equivalent insert; deleting with an
|
|
16
|
+
* equivalent value removes the stored representative.
|
|
17
|
+
*/
|
|
18
|
+
export class AVLTree {
|
|
19
|
+
rootNode = null;
|
|
20
|
+
count = 0;
|
|
21
|
+
compare;
|
|
22
|
+
/**
|
|
23
|
+
* Create an empty AVL tree.
|
|
24
|
+
*
|
|
25
|
+
* @param options - Comparator override; defaults to natural ordering.
|
|
26
|
+
*/
|
|
27
|
+
constructor(options) {
|
|
28
|
+
this.compare = options?.compare ?? ((left, right) => compareNatural(left, right));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Number of stored values.
|
|
32
|
+
*/
|
|
33
|
+
get size() {
|
|
34
|
+
return this.count;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Height of the tree in nodes: 0 when empty, 1 for a leaf.
|
|
38
|
+
*/
|
|
39
|
+
get height() {
|
|
40
|
+
return this.rootNode === null ? 0 : this.rootNode.height;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Whether the tree contains no values.
|
|
44
|
+
*/
|
|
45
|
+
get isEmpty() {
|
|
46
|
+
return this.count === 0;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Insert a value unless an equivalent one is already stored.
|
|
50
|
+
*
|
|
51
|
+
* @param value - Value to insert.
|
|
52
|
+
* @returns `true` if a node was added, `false` for an equivalent duplicate.
|
|
53
|
+
*/
|
|
54
|
+
insert(value) {
|
|
55
|
+
const previous = this.count;
|
|
56
|
+
this.rootNode = this.insertNode(this.rootNode, value);
|
|
57
|
+
return this.count > previous;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Test whether an equivalent value is stored.
|
|
61
|
+
*
|
|
62
|
+
* @param value - Value to look up.
|
|
63
|
+
*/
|
|
64
|
+
has(value) {
|
|
65
|
+
let node = this.rootNode;
|
|
66
|
+
while (node !== null) {
|
|
67
|
+
const order = this.compare(value, node.value);
|
|
68
|
+
if (order === 0) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
node = order < 0 ? node.left : node.right;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Delete the value equivalent to `value` and rebalance the path to the root.
|
|
77
|
+
*
|
|
78
|
+
* A two-child node is replaced by its in-order successor. Rotation is applied
|
|
79
|
+
* on every ancestor whose balance factor leaves `[-1, 1]`.
|
|
80
|
+
*
|
|
81
|
+
* @param value - Value to remove.
|
|
82
|
+
* @returns `true` if a value was removed, `false` when none is equivalent.
|
|
83
|
+
*/
|
|
84
|
+
delete(value) {
|
|
85
|
+
const previous = this.count;
|
|
86
|
+
this.rootNode = this.deleteNode(this.rootNode, value);
|
|
87
|
+
return this.count < previous;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Minimum stored value according to the comparator, or `undefined` when
|
|
91
|
+
* empty.
|
|
92
|
+
*/
|
|
93
|
+
min() {
|
|
94
|
+
if (this.rootNode === null) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
return AVLTree.minimumNode(this.rootNode).value;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Maximum stored value according to the comparator, or `undefined` when
|
|
101
|
+
* empty.
|
|
102
|
+
*/
|
|
103
|
+
max() {
|
|
104
|
+
let node = this.rootNode;
|
|
105
|
+
if (node === null) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
while (node.right !== null) {
|
|
109
|
+
node = node.right;
|
|
110
|
+
}
|
|
111
|
+
return node.value;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Greatest stored value that is less than or equal to `value` in comparator
|
|
115
|
+
* order, or `undefined` when there is none.
|
|
116
|
+
*/
|
|
117
|
+
floor(value) {
|
|
118
|
+
let node = this.rootNode;
|
|
119
|
+
let result;
|
|
120
|
+
while (node !== null) {
|
|
121
|
+
const order = this.compare(node.value, value);
|
|
122
|
+
if (order === 0) {
|
|
123
|
+
return node.value;
|
|
124
|
+
}
|
|
125
|
+
if (order < 0) {
|
|
126
|
+
result = node.value;
|
|
127
|
+
node = node.right;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
node = node.left;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Least stored value that is greater than or equal to `value` in comparator
|
|
137
|
+
* order, or `undefined` when there is none.
|
|
138
|
+
*/
|
|
139
|
+
ceil(value) {
|
|
140
|
+
let node = this.rootNode;
|
|
141
|
+
let result;
|
|
142
|
+
while (node !== null) {
|
|
143
|
+
const order = this.compare(node.value, value);
|
|
144
|
+
if (order === 0) {
|
|
145
|
+
return node.value;
|
|
146
|
+
}
|
|
147
|
+
if (order < 0) {
|
|
148
|
+
node = node.right;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
result = node.value;
|
|
152
|
+
node = node.left;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Remove every value and reset the height to 0.
|
|
159
|
+
*/
|
|
160
|
+
clear() {
|
|
161
|
+
this.rootNode = null;
|
|
162
|
+
this.count = 0;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Collect values in ascending comparator order.
|
|
166
|
+
*/
|
|
167
|
+
toArray() {
|
|
168
|
+
return Array.from(this.inorderValues());
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Iterate values in ascending comparator order.
|
|
172
|
+
*
|
|
173
|
+
* Mutating the tree while iterating is not supported.
|
|
174
|
+
*/
|
|
175
|
+
[Symbol.iterator]() {
|
|
176
|
+
return this.inorderValues();
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check the tree's invariants.
|
|
180
|
+
*
|
|
181
|
+
* Verifies strict in-order ordering, the maintained size, every node's stored
|
|
182
|
+
* height against the actual subtree height, and the AVL balance condition
|
|
183
|
+
* `|balanceFactor| <= 1`. An empty array means the tree is valid.
|
|
184
|
+
*/
|
|
185
|
+
validate() {
|
|
186
|
+
const errors = [];
|
|
187
|
+
if (this.rootNode === null) {
|
|
188
|
+
if (this.count !== 0) {
|
|
189
|
+
errors.push(`size mismatch: expected ${this.count}, found an empty tree`);
|
|
190
|
+
}
|
|
191
|
+
return errors;
|
|
192
|
+
}
|
|
193
|
+
const values = this.toArray();
|
|
194
|
+
if (values.length !== this.count) {
|
|
195
|
+
errors.push(`size mismatch: expected ${this.count}, traversed ${values.length}`);
|
|
196
|
+
}
|
|
197
|
+
for (let index = 1; index < values.length; index += 1) {
|
|
198
|
+
if (this.compare(values[index - 1], values[index]) >= 0) {
|
|
199
|
+
errors.push(`ordering violation between in-order positions ${index - 1} and ${index}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const actualHeights = new Map();
|
|
203
|
+
const stack = [{ node: this.rootNode, visited: false }];
|
|
204
|
+
let seen = 0;
|
|
205
|
+
while (stack.length > 0) {
|
|
206
|
+
const frame = stack.pop();
|
|
207
|
+
if (frame === (void 0)) {
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
if (!frame.visited) {
|
|
211
|
+
stack.push({ node: frame.node, visited: true });
|
|
212
|
+
if (frame.node.right !== null) {
|
|
213
|
+
stack.push({ node: frame.node.right, visited: false });
|
|
214
|
+
}
|
|
215
|
+
if (frame.node.left !== null) {
|
|
216
|
+
stack.push({ node: frame.node.left, visited: false });
|
|
217
|
+
}
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
seen += 1;
|
|
221
|
+
const node = frame.node;
|
|
222
|
+
const leftHeight = node.left === null ? 0 : actualHeights.get(node.left);
|
|
223
|
+
const rightHeight = node.right === null ? 0 : actualHeights.get(node.right);
|
|
224
|
+
if (leftHeight === (void 0) || rightHeight === (void 0)) {
|
|
225
|
+
errors.push("height metadata is missing for a child subtree");
|
|
226
|
+
actualHeights.set(node, 1);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const actualHeight = 1 + Math.max(leftHeight, rightHeight);
|
|
230
|
+
actualHeights.set(node, actualHeight);
|
|
231
|
+
if (node.height !== actualHeight) {
|
|
232
|
+
errors.push(`height mismatch: stored ${node.height}, actual ${actualHeight}`);
|
|
233
|
+
}
|
|
234
|
+
const balance = leftHeight - rightHeight;
|
|
235
|
+
if (Math.abs(balance) > 1) {
|
|
236
|
+
errors.push(`balance violation: balance factor ${balance}`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (seen !== this.count) {
|
|
240
|
+
errors.push(`size mismatch: expected ${this.count}, reached ${seen} nodes`);
|
|
241
|
+
}
|
|
242
|
+
return errors;
|
|
243
|
+
}
|
|
244
|
+
insertNode(node, value) {
|
|
245
|
+
if (node === null) {
|
|
246
|
+
this.count += 1;
|
|
247
|
+
return { value, left: null, right: null, height: 1 };
|
|
248
|
+
}
|
|
249
|
+
const order = this.compare(value, node.value);
|
|
250
|
+
if (order === 0) {
|
|
251
|
+
return node;
|
|
252
|
+
}
|
|
253
|
+
if (order < 0) {
|
|
254
|
+
node.left = this.insertNode(node.left, value);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
node.right = this.insertNode(node.right, value);
|
|
258
|
+
}
|
|
259
|
+
return this.rebalance(node);
|
|
260
|
+
}
|
|
261
|
+
deleteNode(node, value) {
|
|
262
|
+
if (node === null) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const order = this.compare(value, node.value);
|
|
266
|
+
if (order < 0) {
|
|
267
|
+
node.left = this.deleteNode(node.left, value);
|
|
268
|
+
}
|
|
269
|
+
else if (order > 0) {
|
|
270
|
+
node.right = this.deleteNode(node.right, value);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
if (node.left === null) {
|
|
274
|
+
this.count -= 1;
|
|
275
|
+
return node.right;
|
|
276
|
+
}
|
|
277
|
+
if (node.right === null) {
|
|
278
|
+
this.count -= 1;
|
|
279
|
+
return node.left;
|
|
280
|
+
}
|
|
281
|
+
const successor = AVLTree.minimumNode(node.right);
|
|
282
|
+
node.value = successor.value;
|
|
283
|
+
node.right = this.deleteNode(node.right, successor.value);
|
|
284
|
+
}
|
|
285
|
+
return this.rebalance(node);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Recompute this node's height and repair its subtree with rotations.
|
|
289
|
+
*/
|
|
290
|
+
rebalance(node) {
|
|
291
|
+
this.updateHeight(node);
|
|
292
|
+
const balance = this.balanceFactor(node);
|
|
293
|
+
if (balance > 1) {
|
|
294
|
+
const left = node.left;
|
|
295
|
+
if (left !== null && this.balanceFactor(left) < 0) {
|
|
296
|
+
node.left = this.rotateLeft(left);
|
|
297
|
+
}
|
|
298
|
+
return this.rotateRight(node);
|
|
299
|
+
}
|
|
300
|
+
if (balance < -1) {
|
|
301
|
+
const right = node.right;
|
|
302
|
+
if (right !== null && this.balanceFactor(right) > 0) {
|
|
303
|
+
node.right = this.rotateRight(right);
|
|
304
|
+
}
|
|
305
|
+
return this.rotateLeft(node);
|
|
306
|
+
}
|
|
307
|
+
return node;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Right rotation; returns the new subtree root.
|
|
311
|
+
*/
|
|
312
|
+
rotateRight(node) {
|
|
313
|
+
const pivot = node.left;
|
|
314
|
+
if (pivot === null) {
|
|
315
|
+
return node;
|
|
316
|
+
}
|
|
317
|
+
node.left = pivot.right;
|
|
318
|
+
pivot.right = node;
|
|
319
|
+
this.updateHeight(node);
|
|
320
|
+
this.updateHeight(pivot);
|
|
321
|
+
return pivot;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Left rotation; returns the new subtree root.
|
|
325
|
+
*/
|
|
326
|
+
rotateLeft(node) {
|
|
327
|
+
const pivot = node.right;
|
|
328
|
+
if (pivot === null) {
|
|
329
|
+
return node;
|
|
330
|
+
}
|
|
331
|
+
node.right = pivot.left;
|
|
332
|
+
pivot.left = node;
|
|
333
|
+
this.updateHeight(node);
|
|
334
|
+
this.updateHeight(pivot);
|
|
335
|
+
return pivot;
|
|
336
|
+
}
|
|
337
|
+
updateHeight(node) {
|
|
338
|
+
node.height = 1 + Math.max(AVLTree.heightOf(node.left), AVLTree.heightOf(node.right));
|
|
339
|
+
}
|
|
340
|
+
balanceFactor(node) {
|
|
341
|
+
return AVLTree.heightOf(node.left) - AVLTree.heightOf(node.right);
|
|
342
|
+
}
|
|
343
|
+
static heightOf(node) {
|
|
344
|
+
return node === null ? 0 : node.height;
|
|
345
|
+
}
|
|
346
|
+
static minimumNode(node) {
|
|
347
|
+
let current = node;
|
|
348
|
+
while (current.left !== null) {
|
|
349
|
+
current = current.left;
|
|
350
|
+
}
|
|
351
|
+
return current;
|
|
352
|
+
}
|
|
353
|
+
*inorderValues() {
|
|
354
|
+
const stack = [];
|
|
355
|
+
let node = this.rootNode;
|
|
356
|
+
while (node !== null || stack.length > 0) {
|
|
357
|
+
while (node !== null) {
|
|
358
|
+
stack.push(node);
|
|
359
|
+
node = node.left;
|
|
360
|
+
}
|
|
361
|
+
const current = stack.pop();
|
|
362
|
+
if (current === (void 0)) {
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
yield current.value;
|
|
366
|
+
node = current.right;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unbalanced binary search tree.
|
|
3
|
+
*
|
|
4
|
+
* Values are ordered by a supplied {@link Comparator}, defaulting to
|
|
5
|
+
* {@link compareNatural}. Duplicate values (comparator result 0) are rejected.
|
|
6
|
+
* The tree is deliberately not balanced: a sorted insertion sequence degenerates
|
|
7
|
+
* it into a linked list, so `insert`, `has`, and `delete` are O(n) in the worst
|
|
8
|
+
* case and O(log n) only when the insertion order happens to keep the tree
|
|
9
|
+
* shallow. Use {@link AVLTree} or {@link RedBlackTree} when worst-case bounds
|
|
10
|
+
* matter.
|
|
11
|
+
*/
|
|
12
|
+
import type { Comparator } from "./compare.js";
|
|
13
|
+
/**
|
|
14
|
+
* Options shared by the ordered search trees.
|
|
15
|
+
*/
|
|
16
|
+
export interface TreeOptions<T> {
|
|
17
|
+
/**
|
|
18
|
+
* Total-preorder comparator. Defaults to {@link compareNatural}, which
|
|
19
|
+
* supports numbers, bigints, strings, booleans and Dates and throws for other
|
|
20
|
+
* values.
|
|
21
|
+
*/
|
|
22
|
+
compare?: Comparator<T>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* An unbalanced binary search tree.
|
|
26
|
+
*
|
|
27
|
+
* In-order iteration is sorted according to the configured comparator. The
|
|
28
|
+
* tree keeps exactly one representative for each comparator equivalence class,
|
|
29
|
+
* so inserting an equivalent value returns `false` and leaves the stored
|
|
30
|
+
* representative unchanged.
|
|
31
|
+
*/
|
|
32
|
+
export declare class BinarySearchTree<T> implements Iterable<T> {
|
|
33
|
+
private rootNode;
|
|
34
|
+
private count;
|
|
35
|
+
private readonly compare;
|
|
36
|
+
/**
|
|
37
|
+
* Create an empty search tree.
|
|
38
|
+
*
|
|
39
|
+
* @param options - Comparator override; defaults to natural ordering.
|
|
40
|
+
*/
|
|
41
|
+
constructor(options?: TreeOptions<T>);
|
|
42
|
+
/**
|
|
43
|
+
* Number of stored values.
|
|
44
|
+
*/
|
|
45
|
+
get size(): number;
|
|
46
|
+
/**
|
|
47
|
+
* Number of nodes on the longest root-to-leaf path.
|
|
48
|
+
*
|
|
49
|
+
* Empty trees have height 0 and leaves have height 1. Computed in O(n) time.
|
|
50
|
+
*/
|
|
51
|
+
get height(): number;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the tree contains no values.
|
|
54
|
+
*/
|
|
55
|
+
get isEmpty(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Insert a value unless an equivalent one is already stored.
|
|
58
|
+
*
|
|
59
|
+
* O(h) where `h` is the current height; O(n) worst case. The first value
|
|
60
|
+
* inserted into an empty tree does not invoke the comparator.
|
|
61
|
+
*
|
|
62
|
+
* @param value - Value to insert.
|
|
63
|
+
* @returns `true` if a node was added, `false` for an equivalent duplicate.
|
|
64
|
+
*/
|
|
65
|
+
insert(value: T): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Test whether an equivalent value is stored.
|
|
68
|
+
*
|
|
69
|
+
* @param value - Value to look up.
|
|
70
|
+
*/
|
|
71
|
+
has(value: T): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Delete the value equivalent to `value`.
|
|
74
|
+
*
|
|
75
|
+
* Handles the zero-, one- and two-child cases; a two-child node is replaced by
|
|
76
|
+
* its in-order successor. O(h), O(n) worst case.
|
|
77
|
+
*
|
|
78
|
+
* @param value - Value to remove.
|
|
79
|
+
* @returns `true` if a value was removed, `false` when none is equivalent.
|
|
80
|
+
*/
|
|
81
|
+
delete(value: T): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Minimum stored value according to the comparator, or `undefined` when
|
|
84
|
+
* empty.
|
|
85
|
+
*/
|
|
86
|
+
min(): T | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Maximum stored value according to the comparator, or `undefined` when
|
|
89
|
+
* empty.
|
|
90
|
+
*/
|
|
91
|
+
max(): T | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Greatest stored value that is less than or equal to `value` in comparator
|
|
94
|
+
* order, or `undefined` when there is none.
|
|
95
|
+
*/
|
|
96
|
+
floor(value: T): T | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Least stored value that is greater than or equal to `value` in comparator
|
|
99
|
+
* order, or `undefined` when there is none.
|
|
100
|
+
*/
|
|
101
|
+
ceil(value: T): T | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Remove every value.
|
|
104
|
+
*/
|
|
105
|
+
clear(): void;
|
|
106
|
+
/**
|
|
107
|
+
* Collect values in ascending comparator order.
|
|
108
|
+
*/
|
|
109
|
+
toArray(): T[];
|
|
110
|
+
/**
|
|
111
|
+
* Iterate values in ascending comparator order.
|
|
112
|
+
*
|
|
113
|
+
* Mutating the tree while iterating is not supported.
|
|
114
|
+
*/
|
|
115
|
+
[Symbol.iterator](): Generator<T>;
|
|
116
|
+
/**
|
|
117
|
+
* Check the tree's invariants.
|
|
118
|
+
*
|
|
119
|
+
* Verifies strict in-order ordering and that the maintained `size` matches the
|
|
120
|
+
* number of reachable nodes. Returns an empty array for a valid tree; each
|
|
121
|
+
* string describes one violation.
|
|
122
|
+
*/
|
|
123
|
+
validate(): string[];
|
|
124
|
+
private inorderValues;
|
|
125
|
+
}
|