@obora/runtime 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +183 -0
- package/dist/_legacy/actor/base/BaseActor.d.ts +87 -0
- package/dist/_legacy/actor/pool/ActorPool.d.ts +194 -0
- package/dist/_legacy/actor/pool/NoOpMessageBus.d.ts +16 -0
- package/dist/_legacy/actor/pool/PoolManager.d.ts +76 -0
- package/dist/_legacy/actor/pool/index.d.ts +3 -0
- package/dist/_legacy/actor/runtime/ActorRunner.d.ts +54 -0
- package/dist/_legacy/actor/runtime/ActorRuntime.d.ts +161 -0
- package/dist/_legacy/actor/runtime/DefaultActorFactory.d.ts +44 -0
- package/dist/_legacy/actor/runtime/types.d.ts +41 -0
- package/dist/_legacy/actor/runtime/utils/delay.d.ts +7 -0
- package/dist/_legacy/actor/supervision/Supervisor.d.ts +102 -0
- package/dist/_legacy/actor/supervision/SupervisorTree.d.ts +54 -0
- package/dist/_legacy/actor/supervision/types.d.ts +130 -0
- package/dist/_legacy/actor/types/action.d.ts +65 -0
- package/dist/_legacy/actor/types/actor.d.ts +251 -0
- package/dist/_legacy/actor/types/blackboard.d.ts +46 -0
- package/dist/_legacy/actor/types/crypto.d.ts +6 -0
- package/dist/_legacy/actor/types/message.d.ts +209 -0
- package/dist/_legacy/actor/types/metrics.d.ts +43 -0
- package/dist/_legacy/actor/types/observation.d.ts +45 -0
- package/dist/_legacy/actor/types/result.d.ts +110 -0
- package/dist/_legacy/agents/roles/analyst-agent.d.ts +18 -0
- package/dist/_legacy/agents/roles/base-agent.d.ts +320 -0
- package/dist/_legacy/agents/roles/director-agent.d.ts +26 -0
- package/dist/_legacy/agents/roles/executor-agent.d.ts +26 -0
- package/dist/_legacy/agents/roles/factory.d.ts +30 -0
- package/dist/_legacy/agents/roles/index.d.ts +6 -0
- package/dist/_legacy/agents/roles/verifier-agent.d.ts +18 -0
- package/dist/_legacy/blackboard/core/accessors/decisions-accessor.d.ts +190 -0
- package/dist/_legacy/blackboard/core/accessors/index.d.ts +7 -0
- package/dist/_legacy/blackboard/core/accessors/knowledge-accessor.d.ts +154 -0
- package/dist/_legacy/blackboard/core/accessors/state-accessor.d.ts +173 -0
- package/dist/_legacy/blackboard/core/blackboard-events.d.ts +105 -0
- package/dist/_legacy/blackboard/core/blackboard.d.ts +286 -0
- package/dist/_legacy/blackboard/core/id-generator.d.ts +53 -0
- package/dist/_legacy/blackboard/core/immutable.d.ts +45 -0
- package/dist/_legacy/blackboard/core/index.d.ts +13 -0
- package/dist/_legacy/blackboard/core/path-utils.d.ts +75 -0
- package/dist/_legacy/blackboard/core/tkg.d.ts +50 -0
- package/dist/_legacy/blackboard/core/versioning.d.ts +80 -0
- package/dist/_legacy/blackboard/domains/agenda/AgendaStore.d.ts +34 -0
- package/dist/_legacy/blackboard/domains/agenda/events.d.ts +12 -0
- package/dist/_legacy/blackboard/domains/agenda/index.d.ts +6 -0
- package/dist/_legacy/blackboard/domains/agenda/types.d.ts +26 -0
- package/dist/_legacy/blackboard/domains/consensus/ConsensusRuleEngine.d.ts +10 -0
- package/dist/_legacy/blackboard/domains/consensus/index.d.ts +4 -0
- package/dist/_legacy/blackboard/domains/consensus/types.d.ts +27 -0
- package/dist/_legacy/blackboard/domains/tkg/InMemoryTKG.d.ts +38 -0
- package/dist/_legacy/blackboard/domains/tkg/JsonFileReflectorStateStore.d.ts +9 -0
- package/dist/_legacy/blackboard/domains/tkg/ObserverReflector.d.ts +114 -0
- package/dist/_legacy/blackboard/domains/tkg/index.d.ts +4 -0
- package/dist/_legacy/blackboard/domains/voting/VotingSessionStore.d.ts +14 -0
- package/dist/_legacy/blackboard/domains/voting/index.d.ts +3 -0
- package/dist/_legacy/blackboard/domains/voting/types.d.ts +32 -0
- package/dist/_legacy/blackboard/events/event-bus.d.ts +254 -0
- package/dist/_legacy/blackboard/events/event-factory.d.ts +80 -0
- package/dist/_legacy/blackboard/events/index.d.ts +17 -0
- package/dist/_legacy/blackboard/events/types.d.ts +554 -0
- package/dist/_legacy/blackboard/snapshot/compression.d.ts +170 -0
- package/dist/_legacy/blackboard/snapshot/id-utils.d.ts +20 -0
- package/dist/_legacy/blackboard/snapshot/index.d.ts +21 -0
- package/dist/_legacy/blackboard/snapshot/serializer.d.ts +123 -0
- package/dist/_legacy/blackboard/snapshot/snapshot-comparer.d.ts +102 -0
- package/dist/_legacy/blackboard/snapshot/snapshot-creator.d.ts +49 -0
- package/dist/_legacy/blackboard/snapshot/snapshot-manager.d.ts +253 -0
- package/dist/_legacy/blackboard/snapshot/snapshot-restorer.d.ts +54 -0
- package/dist/_legacy/blackboard/snapshot/snapshot-serializer.d.ts +45 -0
- package/dist/_legacy/blackboard/snapshot/snapshot-validator.d.ts +55 -0
- package/dist/_legacy/blackboard/snapshot/type-guards.d.ts +12 -0
- package/dist/_legacy/blackboard/snapshot/types.d.ts +151 -0
- package/dist/_legacy/blackboard/snapshot/utils.d.ts +20 -0
- package/dist/_legacy/blackboard/types/agent.d.ts +89 -0
- package/dist/_legacy/blackboard/types/base.d.ts +213 -0
- package/dist/_legacy/blackboard/types/blackboard.d.ts +217 -0
- package/dist/_legacy/blackboard/types/decision.d.ts +260 -0
- package/dist/_legacy/blackboard/types/index.d.ts +12 -0
- package/dist/_legacy/blackboard/types/knowledge.d.ts +224 -0
- package/dist/_legacy/blackboard/types/message.d.ts +162 -0
- package/dist/_legacy/blackboard/types/task.d.ts +154 -0
- package/dist/_legacy/blackboard/types/tkg.d.ts +189 -0
- package/dist/_legacy/blackboard/workflow/meeting-state-machine/MeetingStateMachine.d.ts +22 -0
- package/dist/_legacy/blackboard/workflow/meeting-state-machine/types.d.ts +30 -0
- package/dist/_legacy/cli-runtime/runtime/agent-registry.d.ts +33 -0
- package/dist/_legacy/cli-runtime/runtime/blackboard.d.ts +41 -0
- package/dist/_legacy/cli-runtime/runtime/context-builder.d.ts +88 -0
- package/dist/_legacy/cli-runtime/runtime/retry-policy.d.ts +8 -0
- package/dist/_legacy/cli-runtime/runtime/step-executor.d.ts +33 -0
- package/dist/_legacy/cli-runtime/runtime/types.d.ts +12 -0
- package/dist/_legacy/cli-runtime/runtime/utils.d.ts +2 -0
- package/dist/_legacy/database/src/duckdb-client.d.ts +178 -0
- package/dist/_legacy/workflow/errors/diagnosis.d.ts +32 -0
- package/dist/_legacy/workflow/errors/index.d.ts +52 -0
- package/dist/_legacy/workflow/graph/index.d.ts +57 -0
- package/dist/_legacy/workflow/index.d.ts +9 -0
- package/dist/_legacy/workflow/parser/workflow-parser.d.ts +13 -0
- package/dist/_legacy/workflow/resolver/dependency-resolver.d.ts +83 -0
- package/dist/_legacy/workflow/types/workflow.d.ts +173 -0
- package/dist/_legacy/workflow/utils.d.ts +2 -0
- package/dist/_legacy/workflow/validator/workflow-validator.d.ts +71 -0
- package/dist/artifacts/index.d.ts +2 -0
- package/dist/artifacts/local-file-artifact-store.d.ts +22 -0
- package/dist/artifacts/types.d.ts +19 -0
- package/dist/audit/AuditReplay.d.ts +4 -0
- package/dist/audit/AuditStore.d.ts +13 -0
- package/dist/audit/AuditTrail.d.ts +28 -0
- package/dist/audit/DefaultAuditRecorder.d.ts +10 -0
- package/dist/audit/EventBusAdapter.d.ts +12 -0
- package/dist/audit/InMemoryAuditStore.d.ts +9 -0
- package/dist/audit/ReExecutionDiffReport.d.ts +24 -0
- package/dist/audit/ReExecutionPlanner.d.ts +30 -0
- package/dist/audit/ReExecutionRuntime.d.ts +35 -0
- package/dist/audit/database-api.d.ts +32 -0
- package/dist/audit/database-index.d.ts +5 -0
- package/dist/audit/event-bus.d.ts +1 -0
- package/dist/audit/event-factory.d.ts +1 -0
- package/dist/audit/index.d.ts +12 -0
- package/dist/audit/testing.d.ts +15 -0
- package/dist/audit/tkg/InMemoryTKG.d.ts +1 -0
- package/dist/audit/tkg/JsonFileReflectorStateStore.d.ts +1 -0
- package/dist/audit/tkg/ObserverReflector.d.ts +1 -0
- package/dist/audit/tkg/index.d.ts +1 -0
- package/dist/audit/types.d.ts +23 -0
- package/dist/blackboard/core/accessors/decisions-accessor.d.ts +190 -0
- package/dist/blackboard/core/accessors/index.d.ts +7 -0
- package/dist/blackboard/core/accessors/knowledge-accessor.d.ts +154 -0
- package/dist/blackboard/core/accessors/state-accessor.d.ts +173 -0
- package/dist/blackboard/core/blackboard-events.d.ts +105 -0
- package/dist/blackboard/core/blackboard.d.ts +286 -0
- package/dist/blackboard/core/id-generator.d.ts +53 -0
- package/dist/blackboard/core/immutable.d.ts +45 -0
- package/dist/blackboard/core/index.d.ts +13 -0
- package/dist/blackboard/core/path-utils.d.ts +75 -0
- package/dist/blackboard/core/tkg.d.ts +50 -0
- package/dist/blackboard/core/versioning.d.ts +80 -0
- package/dist/blackboard/events/event-bus.d.ts +254 -0
- package/dist/blackboard/events/event-factory.d.ts +80 -0
- package/dist/blackboard/events/index.d.ts +17 -0
- package/dist/blackboard/events/types.d.ts +554 -0
- package/dist/blackboard/index.d.ts +20 -0
- package/dist/blackboard/observer-reflector.d.ts +114 -0
- package/dist/blackboard/snapshot/compression.d.ts +170 -0
- package/dist/blackboard/snapshot/id-utils.d.ts +20 -0
- package/dist/blackboard/snapshot/index.d.ts +21 -0
- package/dist/blackboard/snapshot/serializer.d.ts +123 -0
- package/dist/blackboard/snapshot/snapshot-comparer.d.ts +102 -0
- package/dist/blackboard/snapshot/snapshot-creator.d.ts +49 -0
- package/dist/blackboard/snapshot/snapshot-manager.d.ts +253 -0
- package/dist/blackboard/snapshot/snapshot-restorer.d.ts +54 -0
- package/dist/blackboard/snapshot/snapshot-serializer.d.ts +45 -0
- package/dist/blackboard/snapshot/snapshot-validator.d.ts +55 -0
- package/dist/blackboard/snapshot/type-guards.d.ts +12 -0
- package/dist/blackboard/snapshot/types.d.ts +151 -0
- package/dist/blackboard/snapshot/utils.d.ts +20 -0
- package/dist/blackboard/types/agent.d.ts +89 -0
- package/dist/blackboard/types/base.d.ts +213 -0
- package/dist/blackboard/types/blackboard.d.ts +217 -0
- package/dist/blackboard/types/decision.d.ts +260 -0
- package/dist/blackboard/types/index.d.ts +12 -0
- package/dist/blackboard/types/knowledge.d.ts +224 -0
- package/dist/blackboard/types/message.d.ts +162 -0
- package/dist/blackboard/types/task.d.ts +154 -0
- package/dist/blackboard/types/tkg.d.ts +189 -0
- package/dist/cell/ActorPool.d.ts +1 -0
- package/dist/cell/AgentFactory.d.ts +1 -0
- package/dist/cell/AgentRegistry.d.ts +1 -0
- package/dist/cell/BaseActor.d.ts +1 -0
- package/dist/cell/CellContext.d.ts +39 -0
- package/dist/cell/CellManager.d.ts +80 -0
- package/dist/cell/ExecutionCell.d.ts +44 -0
- package/dist/cell/PoolManager.d.ts +1 -0
- package/dist/cell/actor-types/action.d.ts +65 -0
- package/dist/cell/actor-types/actor.d.ts +251 -0
- package/dist/cell/actor-types/blackboard.d.ts +46 -0
- package/dist/cell/actor-types/crypto.d.ts +6 -0
- package/dist/cell/actor-types/index.d.ts +12 -0
- package/dist/cell/actor-types/message.d.ts +209 -0
- package/dist/cell/actor-types/metrics.d.ts +43 -0
- package/dist/cell/actor-types/observation.d.ts +45 -0
- package/dist/cell/actor-types/result.d.ts +110 -0
- package/dist/cell/agents/AnalystCellAgent.d.ts +2 -0
- package/dist/cell/agents/BaseRuntimeAgent.d.ts +2 -0
- package/dist/cell/agents/DirectorCellAgent.d.ts +2 -0
- package/dist/cell/agents/ExecutorCellAgent.d.ts +2 -0
- package/dist/cell/agents/VerifierCellAgent.d.ts +2 -0
- package/dist/cell/agents/index.d.ts +5 -0
- package/dist/cell/index.d.ts +9 -0
- package/dist/cell/internal/ActorRunnerAdapter.d.ts +2 -0
- package/dist/cell/internal/CellActorFactory.d.ts +2 -0
- package/dist/cell/internal/NoOpRuntimeBus.d.ts +2 -0
- package/dist/cell/internal/delay.d.ts +1 -0
- package/dist/cell/pool-index.d.ts +1 -0
- package/dist/cell/types.d.ts +47 -0
- package/dist/checkpoint/CheckpointFactoryRegistry.d.ts +16 -0
- package/dist/checkpoint/CheckpointManager.d.ts +41 -0
- package/dist/checkpoint/index.d.ts +5 -0
- package/dist/checkpoint/policy-hash.d.ts +11 -0
- package/dist/consensus/ConsensusGate.d.ts +83 -0
- package/dist/consensus/ConsensusRuleEngine.d.ts +1 -0
- package/dist/consensus/agenda/AgendaStore.d.ts +1 -0
- package/dist/consensus/agenda/events.d.ts +1 -0
- package/dist/consensus/agenda/index.d.ts +1 -0
- package/dist/consensus/agenda/types.d.ts +1 -0
- package/dist/consensus/index.d.ts +2 -0
- package/dist/consensus/types.d.ts +1 -0
- package/dist/consensus/voting/VotingSessionStore.d.ts +1 -0
- package/dist/consensus/voting/index.d.ts +1 -0
- package/dist/consensus/voting/types.d.ts +1 -0
- package/dist/errors/OboraErrorCode.d.ts +28 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/gates/GateAssignment.d.ts +28 -0
- package/dist/gates/MultiStageApproval.d.ts +74 -0
- package/dist/gates/SLAManager.d.ts +21 -0
- package/dist/gates/index.d.ts +4 -0
- package/dist/gates/types.d.ts +19 -0
- package/dist/index.cjs +26588 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +26330 -0
- package/dist/index.js.map +1 -0
- package/dist/judgment/JudgmentEngine.d.ts +24 -0
- package/dist/judgment/JudgmentNormalizer.d.ts +37 -0
- package/dist/judgment/JudgmentPolicy.d.ts +74 -0
- package/dist/judgment/JudgmentReporter.d.ts +70 -0
- package/dist/judgment/OperationalLogger.d.ts +68 -0
- package/dist/judgment/index.d.ts +6 -0
- package/dist/judgment/types.d.ts +42 -0
- package/dist/orchestrator/ExecutionContextBuilder.d.ts +1 -0
- package/dist/orchestrator/RuntimeOrchestrator.d.ts +94 -0
- package/dist/orchestrator/StepScheduler.d.ts +2 -0
- package/dist/orchestrator/index.d.ts +4 -0
- package/dist/orchestrator/types.d.ts +80 -0
- package/dist/orchestrator/utils.d.ts +1 -0
- package/dist/patterns/CustomPatternAPI.d.ts +10 -0
- package/dist/patterns/PatternRegistry.d.ts +19 -0
- package/dist/patterns/builtin/BrainstormPattern.d.ts +13 -0
- package/dist/patterns/builtin/CompositePattern.d.ts +11 -0
- package/dist/patterns/builtin/ConsensusPattern.d.ts +17 -0
- package/dist/patterns/builtin/DiscussionPattern.d.ts +13 -0
- package/dist/patterns/builtin/FanOutFanInPattern.d.ts +21 -0
- package/dist/patterns/builtin/PeerReviewPattern.d.ts +40 -0
- package/dist/patterns/builtin/PipelinePattern.d.ts +6 -0
- package/dist/patterns/builtin/RedBluePattern.d.ts +13 -0
- package/dist/patterns/builtin/SupervisorPattern.d.ts +13 -0
- package/dist/patterns/builtin/discussion/MeetingStateMachine.d.ts +1 -0
- package/dist/patterns/builtin/discussion/index.d.ts +2 -0
- package/dist/patterns/builtin/discussion/types.d.ts +1 -0
- package/dist/patterns/examples/OxfordDebatePattern.d.ts +11 -0
- package/dist/patterns/examples/index.d.ts +1 -0
- package/dist/patterns/index.d.ts +14 -0
- package/dist/patterns/resolveCustomPattern.d.ts +22 -0
- package/dist/patterns/types.d.ts +252 -0
- package/dist/plugins/PluginLoader.d.ts +16 -0
- package/dist/plugins/PluginRegistry.d.ts +15 -0
- package/dist/plugins/builtins.d.ts +137 -0
- package/dist/plugins/index.d.ts +5 -0
- package/dist/plugins/types.d.ts +52 -0
- package/dist/plugins/validator.d.ts +3 -0
- package/dist/policy/DefaultPolicyEngine.d.ts +43 -0
- package/dist/policy/DynamicPolicyContext.d.ts +21 -0
- package/dist/policy/DynamicQuotaEvaluator.d.ts +9 -0
- package/dist/policy/DynamicToolPolicy.d.ts +10 -0
- package/dist/policy/PolicyEngine.d.ts +14 -0
- package/dist/policy/PolicyLoader.d.ts +3 -0
- package/dist/policy/expressions/ExpressionEvaluator.d.ts +37 -0
- package/dist/policy/expressions/ExpressionParser.d.ts +35 -0
- package/dist/policy/expressions/constants.d.ts +5 -0
- package/dist/policy/expressions/index.d.ts +2 -0
- package/dist/policy/index.d.ts +9 -0
- package/dist/policy/rules/GateRule.d.ts +7 -0
- package/dist/policy/rules/ResourceRule.d.ts +7 -0
- package/dist/policy/rules/SandboxRule.d.ts +7 -0
- package/dist/policy/rules/ToolRule.d.ts +23 -0
- package/dist/policy/rules/index.d.ts +4 -0
- package/dist/policy/types.d.ts +156 -0
- package/dist/recovery/RecoveryEngine.d.ts +11 -0
- package/dist/recovery/RetryStrategy.d.ts +2 -0
- package/dist/recovery/SupervisionTree.d.ts +1 -0
- package/dist/recovery/index.d.ts +4 -0
- package/dist/recovery/types.d.ts +103 -0
- package/dist/state/RuntimeBlackboardCompat.d.ts +1 -0
- package/dist/state/StateBinder.d.ts +40 -0
- package/dist/state/StateManager.d.ts +1 -0
- package/dist/state/accessors/decisions-accessor.d.ts +1 -0
- package/dist/state/accessors/index.d.ts +1 -0
- package/dist/state/accessors/knowledge-accessor.d.ts +1 -0
- package/dist/state/accessors/state-accessor.d.ts +1 -0
- package/dist/state/blackboard-events.d.ts +1 -0
- package/dist/state/core-index.d.ts +1 -0
- package/dist/state/id-generator.d.ts +1 -0
- package/dist/state/immutable.d.ts +1 -0
- package/dist/state/index.d.ts +6 -0
- package/dist/state/path-utils.d.ts +1 -0
- package/dist/state/snapshot/compression.d.ts +1 -0
- package/dist/state/snapshot/id-utils.d.ts +1 -0
- package/dist/state/snapshot/index.d.ts +1 -0
- package/dist/state/snapshot/serializer.d.ts +1 -0
- package/dist/state/snapshot/snapshot-comparer.d.ts +1 -0
- package/dist/state/snapshot/snapshot-creator.d.ts +1 -0
- package/dist/state/snapshot/snapshot-manager.d.ts +1 -0
- package/dist/state/snapshot/snapshot-restorer.d.ts +1 -0
- package/dist/state/snapshot/snapshot-serializer.d.ts +1 -0
- package/dist/state/snapshot/snapshot-validator.d.ts +1 -0
- package/dist/state/snapshot/type-guards.d.ts +1 -0
- package/dist/state/snapshot/types.d.ts +1 -0
- package/dist/state/snapshot/utils.d.ts +1 -0
- package/dist/state/tkg.d.ts +1 -0
- package/dist/state/types/agent.d.ts +1 -0
- package/dist/state/types/base.d.ts +1 -0
- package/dist/state/types/blackboard.d.ts +1 -0
- package/dist/state/types/decision.d.ts +1 -0
- package/dist/state/types/index.d.ts +1 -0
- package/dist/state/types/knowledge.d.ts +1 -0
- package/dist/state/types/message.d.ts +1 -0
- package/dist/state/types/task.d.ts +1 -0
- package/dist/state/types/tkg.d.ts +1 -0
- package/dist/state/versioning.d.ts +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/inmemory-adapter.d.ts +27 -0
- package/dist/storage/sqlite-adapter.d.ts +43 -0
- package/dist/storage/types.d.ts +129 -0
- package/package.json +76 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Obora Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# @obora/runtime
|
|
2
|
+
|
|
3
|
+
Core execution engine for Obora AI Control Runtime.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @obora/runtime
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The runtime package provides:
|
|
14
|
+
|
|
15
|
+
- **Execution Cells** — Isolated AI execution boundaries
|
|
16
|
+
- **Policy Engine** — Rule-based control for tools and actions
|
|
17
|
+
- **Audit Trail** — Full event trace for compliance
|
|
18
|
+
- **Recovery Engine** — Failure handling strategies
|
|
19
|
+
- **Consensus System** — Multi-agent agreement gates
|
|
20
|
+
- **Plugin System** — Extensible architecture
|
|
21
|
+
|
|
22
|
+
## Architecture
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
@obora/runtime
|
|
26
|
+
├── cell/ # Execution cells (actor-based)
|
|
27
|
+
│ ├── ExecutionCell
|
|
28
|
+
│ ├── CellManager
|
|
29
|
+
│ └── AgentPool
|
|
30
|
+
├── policy/ # Policy engine
|
|
31
|
+
│ ├── PolicyEngine
|
|
32
|
+
│ ├── PolicyEvaluator
|
|
33
|
+
│ └── expressions/
|
|
34
|
+
├── audit/ # Audit trail
|
|
35
|
+
│ ├── InMemoryAuditStore
|
|
36
|
+
│ ├── AuditTrail
|
|
37
|
+
│ └── events/
|
|
38
|
+
├── recovery/ # Recovery engine
|
|
39
|
+
│ ├── RecoveryEngine
|
|
40
|
+
│ ├── RetryStrategy
|
|
41
|
+
│ └── SupervisionTree
|
|
42
|
+
├── consensus/ # Consensus system
|
|
43
|
+
│ ├── ConsensusRuleEngine
|
|
44
|
+
│ ├── VotingSessionStore
|
|
45
|
+
│ └── AgendaStore
|
|
46
|
+
├── patterns/ # Built-in patterns
|
|
47
|
+
│ ├── PipelinePattern
|
|
48
|
+
│ ├── ConsensusPattern
|
|
49
|
+
│ ├── PeerReviewPattern
|
|
50
|
+
│ ├── SupervisorPattern
|
|
51
|
+
│ └── ...
|
|
52
|
+
├── state/ # State management
|
|
53
|
+
│ ├── snapshot/
|
|
54
|
+
│ └── types/
|
|
55
|
+
└── plugins/ # Plugin system
|
|
56
|
+
├── PluginRegistry
|
|
57
|
+
├── PluginLoader
|
|
58
|
+
└── builtins
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Key Exports
|
|
62
|
+
|
|
63
|
+
### Policy Engine
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { PolicyEngine, PolicyEvaluator } from "@obora/runtime";
|
|
67
|
+
|
|
68
|
+
const engine = new PolicyEngine();
|
|
69
|
+
engine.register({
|
|
70
|
+
name: "no-destructive-ops",
|
|
71
|
+
condition: "tool.name matches 'delete*'",
|
|
72
|
+
effect: "deny",
|
|
73
|
+
message: "Destructive operations not allowed"
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const result = engine.evaluate({ tool: { name: "delete_file" } });
|
|
77
|
+
// { allowed: false, reason: "Destructive operations not allowed" }
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Audit Trail
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { InMemoryAuditStore } from "@obora/runtime";
|
|
84
|
+
|
|
85
|
+
const store = new InMemoryAuditStore();
|
|
86
|
+
await store.record({
|
|
87
|
+
type: "step_start",
|
|
88
|
+
executionId: "exec-1",
|
|
89
|
+
stepName: "plan",
|
|
90
|
+
timestamp: new Date()
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const events = await store.query({ executionId: "exec-1" });
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Recovery Engine
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
import { RecoveryEngine, RetryStrategy } from "@obora/runtime";
|
|
100
|
+
|
|
101
|
+
const engine = new RecoveryEngine({
|
|
102
|
+
strategies: [
|
|
103
|
+
new RetryStrategy({ maxRetries: 3, backoff: "exponential" })
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
const result = await engine.executeWithRecovery(async () => {
|
|
108
|
+
// risky operation
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Consensus
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { ConsensusRuleEngine, VotingSessionStore } from "@obora/runtime";
|
|
116
|
+
|
|
117
|
+
const engine = new ConsensusRuleEngine();
|
|
118
|
+
const result = await engine.evaluate({
|
|
119
|
+
votes: [
|
|
120
|
+
{ participant: "r1", vote: "APPROVE" },
|
|
121
|
+
{ participant: "r2", vote: "APPROVE" },
|
|
122
|
+
{ participant: "r3", vote: "REJECT" }
|
|
123
|
+
],
|
|
124
|
+
rule: "majority"
|
|
125
|
+
});
|
|
126
|
+
// { approved: true, ratio: 0.67 }
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Patterns
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
import {
|
|
133
|
+
PipelinePattern,
|
|
134
|
+
ConsensusPattern,
|
|
135
|
+
PeerReviewPattern,
|
|
136
|
+
SupervisorPattern,
|
|
137
|
+
FanOutFanInPattern
|
|
138
|
+
} from "@obora/runtime";
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Plugin System
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
import { PluginRegistry, registerBuiltinPlugins } from "@obora/runtime";
|
|
145
|
+
|
|
146
|
+
const registry = new PluginRegistry();
|
|
147
|
+
await registerBuiltinPlugins(registry);
|
|
148
|
+
|
|
149
|
+
// Register custom plugin
|
|
150
|
+
registry.register({
|
|
151
|
+
name: "my-tool",
|
|
152
|
+
version: "1.0.0",
|
|
153
|
+
type: "tool",
|
|
154
|
+
schema: { ... },
|
|
155
|
+
execute: async (params) => { ... }
|
|
156
|
+
});
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Plugin Types
|
|
160
|
+
|
|
161
|
+
| Type | Interface | Description |
|
|
162
|
+
|------|-----------|-------------|
|
|
163
|
+
| `agent` | `AgentPlugin` | Custom agent implementations |
|
|
164
|
+
| `tool` | `ToolPlugin` | External tool integrations |
|
|
165
|
+
| `pattern` | `PatternPlugin` | Workflow patterns |
|
|
166
|
+
| `policy-rule` | `PolicyRulePlugin` | Custom policy rules |
|
|
167
|
+
| `recovery-strategy` | `RecoveryStrategyPlugin` | Failure recovery |
|
|
168
|
+
| `consensus-rule` | `ConsensusRulePlugin` | Consensus rules |
|
|
169
|
+
| `audit-store` | `AuditStorePlugin` | Audit persistence |
|
|
170
|
+
| `state-transform` | `StateTransformPlugin` | State transformations |
|
|
171
|
+
|
|
172
|
+
## Storage
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
import { SQLiteStorageAdapter } from "@obora/runtime/storage";
|
|
176
|
+
|
|
177
|
+
const storage = new SQLiteStorageAdapter({ path: "./data.db" });
|
|
178
|
+
await storage.initialize();
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## License
|
|
182
|
+
|
|
183
|
+
MIT
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Action } from "../types/action";
|
|
2
|
+
import { Actor, ActorId, ActorRole, ActorStatus, ActorLifecycleStatus } from "../types/actor";
|
|
3
|
+
import type { IBlackboard } from "../types/blackboard";
|
|
4
|
+
import type { IMessageBus, Message } from "../types/message";
|
|
5
|
+
import { ActorMetrics } from "../types/metrics";
|
|
6
|
+
import type { Observation } from "../types/observation";
|
|
7
|
+
import type { Result } from "../types/result";
|
|
8
|
+
/**
|
|
9
|
+
* Actor 구현을 위한 추상 기본 클래스 (스펙 기준)
|
|
10
|
+
*
|
|
11
|
+
* 구체적인 Actor 구현 시 이 클래스를 상속받아 필요한 메서드를 구현합니다.
|
|
12
|
+
*
|
|
13
|
+
* 참고: [[spec/13-actor.md|13-actor.md]]
|
|
14
|
+
*/
|
|
15
|
+
export declare abstract class BaseActor implements Actor {
|
|
16
|
+
readonly id: ActorId;
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly role: ActorRole;
|
|
19
|
+
board: IBlackboard;
|
|
20
|
+
messageBus: IMessageBus;
|
|
21
|
+
private _status;
|
|
22
|
+
lastActivity: Date;
|
|
23
|
+
createdAt: Date;
|
|
24
|
+
metrics: ActorMetrics;
|
|
25
|
+
private subscriptions;
|
|
26
|
+
constructor(id: ActorId, name: string, role: ActorRole, board: IBlackboard, messageBus: IMessageBus);
|
|
27
|
+
get status(): ActorStatus;
|
|
28
|
+
protected setStatus(newStatus: ActorLifecycleStatus): void;
|
|
29
|
+
/**
|
|
30
|
+
* 하위 클래스에서 observe()를 구현해야 합니다.
|
|
31
|
+
* 동기 또는 비동기 구현 모두 가능합니다.
|
|
32
|
+
*/
|
|
33
|
+
abstract observe(): Observation | Promise<Observation>;
|
|
34
|
+
/**
|
|
35
|
+
* 하위 클래스에서 think()를 구현해야 합니다.
|
|
36
|
+
* 동기 또는 비동기 구현 모두 가능합니다.
|
|
37
|
+
*/
|
|
38
|
+
abstract think(observation: Observation): Action | Promise<Action>;
|
|
39
|
+
/**
|
|
40
|
+
* 하위 클래스에서 act()를 구현해야 합니다.
|
|
41
|
+
* 동기 또는 비동기 구현 모두 가능합니다.
|
|
42
|
+
*/
|
|
43
|
+
abstract act(action: Action): Result | Promise<Result>;
|
|
44
|
+
/**
|
|
45
|
+
* receive()의 기본 구현 - 메시지 처리
|
|
46
|
+
*/
|
|
47
|
+
receive(message: Message): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* report()의 기본 구현 - Blackboard에 결과 기록
|
|
50
|
+
* 동기 또는 비동기 구현 모두 가능합니다.
|
|
51
|
+
*/
|
|
52
|
+
report(result: Result): void | Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* start()의 기본 구현
|
|
55
|
+
*/
|
|
56
|
+
start(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* stop()의 기본 구현
|
|
59
|
+
*/
|
|
60
|
+
stop(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* restart()의 기본 구현
|
|
63
|
+
*/
|
|
64
|
+
restart(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* isAlive() 기본 구현
|
|
67
|
+
*/
|
|
68
|
+
isAlive(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* getStatus() 기본 구현
|
|
71
|
+
*/
|
|
72
|
+
getStatus(): ActorStatus;
|
|
73
|
+
/**
|
|
74
|
+
* 메트릭 업데이트
|
|
75
|
+
*/
|
|
76
|
+
protected updateMetrics(result: Result): void;
|
|
77
|
+
private handleTaskAssign;
|
|
78
|
+
private handlePing;
|
|
79
|
+
private handleStatusRequest;
|
|
80
|
+
protected handleCustomMessage(_message: Message): void;
|
|
81
|
+
private teardownMessageHandlers;
|
|
82
|
+
private setupMessageHandlers;
|
|
83
|
+
private heartbeatTimer?;
|
|
84
|
+
private startHeartbeat;
|
|
85
|
+
private stopHeartbeat;
|
|
86
|
+
private updateLastActivity;
|
|
87
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import type { ActorFactory } from "../runtime/types";
|
|
2
|
+
import type { ActorId, ActorRole, ActorStatus } from "../types/actor";
|
|
3
|
+
import type { IBlackboard } from "../types/actor";
|
|
4
|
+
import type { IMessageBus } from "../types/message";
|
|
5
|
+
/**
|
|
6
|
+
* Actor Pool 설정
|
|
7
|
+
*/
|
|
8
|
+
export interface PoolConfig {
|
|
9
|
+
/** 풀 이름 */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Actor 역할 (풀 내 모든 Actor는 동일 역할) */
|
|
12
|
+
role: ActorRole;
|
|
13
|
+
/** Actor 유형 */
|
|
14
|
+
type: string;
|
|
15
|
+
/** 초기 Actor 수 */
|
|
16
|
+
initialSize?: number;
|
|
17
|
+
/** 최소 Actor 수 */
|
|
18
|
+
minSize?: number;
|
|
19
|
+
/** 최대 Actor 수 */
|
|
20
|
+
maxSize?: number;
|
|
21
|
+
/** Idle 타임아웃 (ms) - 지정 시간 동안 작업 없으면 Actor 종료 */
|
|
22
|
+
idleTimeout?: number;
|
|
23
|
+
/** 확장 전략 */
|
|
24
|
+
scaleStrategy?: "fixed" | "dynamic" | "adaptive";
|
|
25
|
+
/** 작업 분배 전략 */
|
|
26
|
+
dispatchStrategy?: "round-robin" | "least-busy" | "random";
|
|
27
|
+
/** 작업 큐 최대 크기 */
|
|
28
|
+
maxQueueSize?: number;
|
|
29
|
+
/** 작업 대기 타임아웃 (ms) */
|
|
30
|
+
taskTimeout?: number;
|
|
31
|
+
/** 디버그 모드 */
|
|
32
|
+
debug?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 작업
|
|
36
|
+
*/
|
|
37
|
+
export interface Task<T = unknown> {
|
|
38
|
+
/** 작업 ID */
|
|
39
|
+
id: string;
|
|
40
|
+
/** 작업 데이터 */
|
|
41
|
+
data: T;
|
|
42
|
+
/** 생성 시간 */
|
|
43
|
+
createdAt: Date;
|
|
44
|
+
/** 우선순위 (높을수록 우선) */
|
|
45
|
+
priority: number;
|
|
46
|
+
/** 만료 시간 */
|
|
47
|
+
expiresAt?: Date;
|
|
48
|
+
/** 완료 콜백 */
|
|
49
|
+
onComplete?: (result: unknown, error?: Error) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 작업 결과
|
|
53
|
+
*/
|
|
54
|
+
export interface TaskResult {
|
|
55
|
+
/** 작업 ID */
|
|
56
|
+
taskId: string;
|
|
57
|
+
/** 처리한 Actor ID */
|
|
58
|
+
actorId: ActorId;
|
|
59
|
+
/** 결과 데이터 */
|
|
60
|
+
result: unknown;
|
|
61
|
+
/** 에러 (실패 시) */
|
|
62
|
+
error?: Error;
|
|
63
|
+
/** 시작 시간 */
|
|
64
|
+
startedAt: Date;
|
|
65
|
+
/** 완료 시간 */
|
|
66
|
+
completedAt: Date;
|
|
67
|
+
/** 실행 시간 (ms) */
|
|
68
|
+
duration: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Actor Pool 메트릭
|
|
72
|
+
*/
|
|
73
|
+
export interface PoolMetrics {
|
|
74
|
+
/** 총 Actor 수 */
|
|
75
|
+
totalActors: number;
|
|
76
|
+
/** 활성 Actor 수 */
|
|
77
|
+
activeActors: number;
|
|
78
|
+
/** Idle 상태 Actor 수 */
|
|
79
|
+
idleActors: number;
|
|
80
|
+
/** 에러 상태 Actor 수 */
|
|
81
|
+
errorActors: number;
|
|
82
|
+
/** 대기열 크기 */
|
|
83
|
+
queueSize: number;
|
|
84
|
+
/** 평균 대기 시간 (ms) */
|
|
85
|
+
averageQueueTime: number;
|
|
86
|
+
/** 처리량 */
|
|
87
|
+
throughput: {
|
|
88
|
+
messagesPerSecond: number;
|
|
89
|
+
actionsPerSecond: number;
|
|
90
|
+
};
|
|
91
|
+
/** 이용률 (0.0 ~ 1.0) */
|
|
92
|
+
utilization: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Actor Pool
|
|
96
|
+
*
|
|
97
|
+
* 동적으로 확장/축소 가능한 Actor 풀을 관리하고,
|
|
98
|
+
* 작업을 분배하여 효율적인 리소스 사용을 제공합니다.
|
|
99
|
+
*/
|
|
100
|
+
export declare class ActorPool {
|
|
101
|
+
private readonly config;
|
|
102
|
+
private readonly board;
|
|
103
|
+
private readonly messageBus;
|
|
104
|
+
private readonly factory;
|
|
105
|
+
private readonly actors;
|
|
106
|
+
private readonly taskQueue;
|
|
107
|
+
private readonly inProgress;
|
|
108
|
+
private readonly completedTasks;
|
|
109
|
+
private readonly pendingResults;
|
|
110
|
+
private readonly waitingTasks;
|
|
111
|
+
private readonly actorConfigs;
|
|
112
|
+
private readonly idleTimers;
|
|
113
|
+
private readonly metrics;
|
|
114
|
+
private isRunning;
|
|
115
|
+
private roundRobinIndex;
|
|
116
|
+
private scaleTimer?;
|
|
117
|
+
private dispatchTimer?;
|
|
118
|
+
constructor(config: PoolConfig, board: IBlackboard, factory: ActorFactory, messageBus?: IMessageBus);
|
|
119
|
+
/**
|
|
120
|
+
* 풀 시작
|
|
121
|
+
*/
|
|
122
|
+
start(): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* 풀 종료
|
|
125
|
+
*/
|
|
126
|
+
stop(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* 작업 제출
|
|
129
|
+
* @param data 작업 데이터
|
|
130
|
+
* @param priority 우선순위 (높을수록 우선)
|
|
131
|
+
* @param expiresIn 만료 시간 (ms, 선택)
|
|
132
|
+
* @returns 작업 ID
|
|
133
|
+
*/
|
|
134
|
+
submit<T = unknown>(data: T, priority?: number, expiresIn?: number): Promise<string>;
|
|
135
|
+
/**
|
|
136
|
+
* 작업 제출 및 결과 대기
|
|
137
|
+
* @param data 작업 데이터
|
|
138
|
+
* @param priority 우선순위
|
|
139
|
+
* @returns 작업 결과
|
|
140
|
+
*/
|
|
141
|
+
submitAndWait<T = unknown, R = unknown>(data: T, priority?: number): Promise<R>;
|
|
142
|
+
/**
|
|
143
|
+
* 풀 크기 조정
|
|
144
|
+
* @param size 목표 크기
|
|
145
|
+
*/
|
|
146
|
+
scaleTo(size: number): Promise<void>;
|
|
147
|
+
/**
|
|
148
|
+
* 풀 크기 증가
|
|
149
|
+
* @param count 증가할 Actor 수
|
|
150
|
+
*/
|
|
151
|
+
scaleUp(count?: number): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* 풀 크기 감소
|
|
154
|
+
* @param count 감소할 Actor 수
|
|
155
|
+
*/
|
|
156
|
+
scaleDown(count?: number): Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* 풀 메트릭 조회
|
|
159
|
+
*/
|
|
160
|
+
getMetrics(): PoolMetrics;
|
|
161
|
+
/**
|
|
162
|
+
* Actor 목록 조회
|
|
163
|
+
*/
|
|
164
|
+
getActors(): ActorId[];
|
|
165
|
+
/**
|
|
166
|
+
* Actor 상태 조회
|
|
167
|
+
*/
|
|
168
|
+
getActorStatus(actorId: ActorId): ActorStatus;
|
|
169
|
+
/**
|
|
170
|
+
* 풀 이름
|
|
171
|
+
*/
|
|
172
|
+
get name(): string;
|
|
173
|
+
private validateConfig;
|
|
174
|
+
private spawnActor;
|
|
175
|
+
private removeIdleActors;
|
|
176
|
+
private removeActor;
|
|
177
|
+
private selectActor;
|
|
178
|
+
private selectRoundRobin;
|
|
179
|
+
private selectLeastBusy;
|
|
180
|
+
private selectRandom;
|
|
181
|
+
private dispatchTaskToActor;
|
|
182
|
+
private recordTaskResult;
|
|
183
|
+
private enqueueTask;
|
|
184
|
+
private startDispatch;
|
|
185
|
+
private startAutoScale;
|
|
186
|
+
private autoScale;
|
|
187
|
+
private startIdleTimer;
|
|
188
|
+
private resetIdleTimer;
|
|
189
|
+
private isActorBusy;
|
|
190
|
+
private waitForTaskResult;
|
|
191
|
+
private clearTimers;
|
|
192
|
+
private updateMetrics;
|
|
193
|
+
private log;
|
|
194
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IMessageBus, Message, MessageType, UnsubscribeFn } from "../types/message";
|
|
2
|
+
import type { ActorId } from "../types/actor";
|
|
3
|
+
/**
|
|
4
|
+
* No-Op MessageBus - 기본값으로 사용되는 빈 구현
|
|
5
|
+
*/
|
|
6
|
+
export declare class NoOpMessageBus implements IMessageBus {
|
|
7
|
+
send(message: Message): void;
|
|
8
|
+
sendTo(to: ActorId, message: Omit<Message, "to">): void;
|
|
9
|
+
broadcast(message: Omit<Message, "to">): void;
|
|
10
|
+
receive(handler: (message: Message) => void): void;
|
|
11
|
+
request<T>(message: Message, timeoutMs?: number): Promise<Message<T>>;
|
|
12
|
+
subscribe(messageType: MessageType, handler: (message: Message) => void): UnsubscribeFn;
|
|
13
|
+
getQueueSize(actorId: ActorId): number;
|
|
14
|
+
clearQueue(actorId: ActorId): void;
|
|
15
|
+
filter(predicate: (message: Message) => boolean): Message[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ActorFactory } from "../runtime/types";
|
|
2
|
+
import type { IBlackboard } from "../types/actor";
|
|
3
|
+
import type { IMessageBus } from "../types/message";
|
|
4
|
+
import { ActorPool, PoolConfig, PoolMetrics } from "./ActorPool";
|
|
5
|
+
/**
|
|
6
|
+
* Pool Manager
|
|
7
|
+
*
|
|
8
|
+
* 여러 Actor Pool을 관리하는 매니저입니다.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PoolManager {
|
|
11
|
+
private readonly board;
|
|
12
|
+
private readonly messageBus;
|
|
13
|
+
private readonly factory;
|
|
14
|
+
private readonly pools;
|
|
15
|
+
private isRunning;
|
|
16
|
+
constructor(board: IBlackboard, factory: ActorFactory, messageBus?: IMessageBus);
|
|
17
|
+
/**
|
|
18
|
+
* 매니저 시작
|
|
19
|
+
*/
|
|
20
|
+
start(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 매니저 종료
|
|
23
|
+
*/
|
|
24
|
+
stop(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Pool 등록
|
|
27
|
+
* @param config Pool 설정
|
|
28
|
+
* @returns 생성된 Pool
|
|
29
|
+
*/
|
|
30
|
+
registerPool(config: PoolConfig): ActorPool;
|
|
31
|
+
/**
|
|
32
|
+
* Pool 등록 해제
|
|
33
|
+
* @param name Pool 이름
|
|
34
|
+
*/
|
|
35
|
+
unregisterPool(name: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Pool 조회
|
|
38
|
+
* @param name Pool 이름
|
|
39
|
+
* @returns Pool 인스턴스
|
|
40
|
+
*/
|
|
41
|
+
getPool(name: string): ActorPool;
|
|
42
|
+
/**
|
|
43
|
+
* Pool 존재 여부 확인
|
|
44
|
+
* @param name Pool 이름
|
|
45
|
+
* @returns 존재 여부
|
|
46
|
+
*/
|
|
47
|
+
hasPool(name: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* 모든 Pool 이름 조회
|
|
50
|
+
* @returns Pool 이름 배열
|
|
51
|
+
*/
|
|
52
|
+
listPools(): string[];
|
|
53
|
+
/**
|
|
54
|
+
* 모든 Pool의 메트릭 조회
|
|
55
|
+
* @returns Pool 이름별 메트릭 맵
|
|
56
|
+
*/
|
|
57
|
+
getAllMetrics(): Map<string, PoolMetrics>;
|
|
58
|
+
/**
|
|
59
|
+
* 특정 Pool의 메트릭 조회
|
|
60
|
+
* @param name Pool 이름
|
|
61
|
+
* @returns Pool 메트릭
|
|
62
|
+
*/
|
|
63
|
+
getPoolMetrics(name: string): PoolMetrics;
|
|
64
|
+
/**
|
|
65
|
+
* Pool 개수
|
|
66
|
+
*/
|
|
67
|
+
size(): number;
|
|
68
|
+
/**
|
|
69
|
+
* 실행 상태
|
|
70
|
+
*/
|
|
71
|
+
getStatus(): {
|
|
72
|
+
running: boolean;
|
|
73
|
+
poolCount: number;
|
|
74
|
+
};
|
|
75
|
+
private log;
|
|
76
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Actor } from "../types/actor";
|
|
2
|
+
/**
|
|
3
|
+
* Actor 실행 루프 옵션
|
|
4
|
+
*/
|
|
5
|
+
export interface RunnerOptions {
|
|
6
|
+
/** 실행 간격 (ms) */
|
|
7
|
+
interval?: number;
|
|
8
|
+
/** 최대 연속 실행 횟수 */
|
|
9
|
+
maxIterations?: number;
|
|
10
|
+
/** 에러 발생 시 중지 여부 */
|
|
11
|
+
stopOnError?: boolean;
|
|
12
|
+
/** 종료 조건 콜백 */
|
|
13
|
+
stopCondition?: () => boolean | Promise<boolean>;
|
|
14
|
+
/** 디버그 모드 */
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Actor 실행 루프
|
|
19
|
+
*
|
|
20
|
+
* Actor의 observe-think-act-report 사이클을 반복 실행합니다.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ActorRunner {
|
|
23
|
+
private readonly actor;
|
|
24
|
+
private readonly options;
|
|
25
|
+
private isRunning;
|
|
26
|
+
private iterationCount;
|
|
27
|
+
private abortController;
|
|
28
|
+
constructor(actor: Actor, options?: RunnerOptions);
|
|
29
|
+
/**
|
|
30
|
+
* 실행 루프 시작
|
|
31
|
+
*/
|
|
32
|
+
start(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* 실행 루프 중지
|
|
35
|
+
*/
|
|
36
|
+
stop(): void;
|
|
37
|
+
/**
|
|
38
|
+
* 현재 실행 중인지 확인
|
|
39
|
+
*/
|
|
40
|
+
running(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 현재 반복 횟수
|
|
43
|
+
*/
|
|
44
|
+
getIterationCount(): number;
|
|
45
|
+
private runCycle;
|
|
46
|
+
private shouldStop;
|
|
47
|
+
/**
|
|
48
|
+
* 내부 로그 출력.
|
|
49
|
+
*
|
|
50
|
+
* - `error`가 전달되면 `debug` 옵션과 무관하게 `console.error`로 항상 출력합니다.
|
|
51
|
+
* - 일반 로그는 `debug: true`일 때만 `console.log`로 출력합니다.
|
|
52
|
+
*/
|
|
53
|
+
private log;
|
|
54
|
+
}
|