@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
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module blackboard
|
|
3
|
+
* @description 메인 Blackboard 클래스
|
|
4
|
+
*/
|
|
5
|
+
import type { BlackboardState, BlackboardMeta, BoardPhase, SessionId } from "../types";
|
|
6
|
+
import { VersionConflictError } from "./versioning";
|
|
7
|
+
import { StateSectionAccessor } from "./accessors/state-accessor";
|
|
8
|
+
import { KnowledgeSectionAccessor } from "./accessors/knowledge-accessor";
|
|
9
|
+
import { DecisionsSectionAccessor } from "./accessors/decisions-accessor";
|
|
10
|
+
import { SnapshotManager } from "../snapshot";
|
|
11
|
+
import type { Snapshot, CreateSnapshotOptions, RestoreSnapshotOptions, SnapshotValidationResult } from "../snapshot";
|
|
12
|
+
export { BoardPhase };
|
|
13
|
+
/**
|
|
14
|
+
* 간단한 EventEmitter 구현
|
|
15
|
+
*/
|
|
16
|
+
type EventListener = (...args: unknown[]) => void;
|
|
17
|
+
declare class SimpleEventEmitter {
|
|
18
|
+
private _listeners;
|
|
19
|
+
on(event: string, listener: EventListener): this;
|
|
20
|
+
off(event: string, listener: EventListener): this;
|
|
21
|
+
once(event: string, listener: EventListener): this;
|
|
22
|
+
emit(event: string, ...args: unknown[]): boolean;
|
|
23
|
+
removeAllListeners(event?: string): this;
|
|
24
|
+
listenerCount(event: string): number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Blackboard 설정 옵션
|
|
28
|
+
*/
|
|
29
|
+
export interface BlackboardOptions {
|
|
30
|
+
/** 세션 ID (자동 생성되지 않으면 필수) */
|
|
31
|
+
sessionId?: SessionId;
|
|
32
|
+
/** 초기 상태 (스냅샷 복원 시 사용) */
|
|
33
|
+
initialState?: Partial<BlackboardState>;
|
|
34
|
+
/** 버전 충돌 시 재시도 횟수 */
|
|
35
|
+
maxRetries?: number;
|
|
36
|
+
/** 재시도 간격 (ms) */
|
|
37
|
+
retryDelay?: number;
|
|
38
|
+
/** 이벤트 리스너 */
|
|
39
|
+
onEvent?: (event: {
|
|
40
|
+
type: string;
|
|
41
|
+
timestamp: Date;
|
|
42
|
+
}) => void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 쿼리 옵션
|
|
46
|
+
*/
|
|
47
|
+
export interface QueryOptions {
|
|
48
|
+
/** 깊은 복사 반환 여부 (기본: true) */
|
|
49
|
+
deep?: boolean;
|
|
50
|
+
/** 필터 조건 */
|
|
51
|
+
filter?: Record<string, unknown>;
|
|
52
|
+
/** 정렬 기준 */
|
|
53
|
+
sort?: {
|
|
54
|
+
field: string;
|
|
55
|
+
order: "asc" | "desc";
|
|
56
|
+
};
|
|
57
|
+
/** 결과 제한 */
|
|
58
|
+
limit?: number;
|
|
59
|
+
/** 오프셋 */
|
|
60
|
+
offset?: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 쓰기 결과
|
|
64
|
+
*/
|
|
65
|
+
export interface WriteResult {
|
|
66
|
+
/** 성공 여부 */
|
|
67
|
+
success: boolean;
|
|
68
|
+
/** 새 버전 */
|
|
69
|
+
version: number;
|
|
70
|
+
/** 변경된 경로 */
|
|
71
|
+
path: string;
|
|
72
|
+
/** 이전 값 */
|
|
73
|
+
previousValue: unknown;
|
|
74
|
+
/** 에러 (실패 시) */
|
|
75
|
+
error?: Error;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 트랜잭션 연산
|
|
79
|
+
*/
|
|
80
|
+
export interface Operation {
|
|
81
|
+
/** 연산 타입 */
|
|
82
|
+
type: "read" | "write" | "delete";
|
|
83
|
+
/** 섹션 */
|
|
84
|
+
section: string;
|
|
85
|
+
/** 키/경로 */
|
|
86
|
+
key: string;
|
|
87
|
+
/** 값 (write 연산 시) */
|
|
88
|
+
value?: unknown;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Blackboard 에러 코드
|
|
92
|
+
*/
|
|
93
|
+
export declare enum BlackboardErrorCode {
|
|
94
|
+
UNKNOWN_ERROR = 1000,
|
|
95
|
+
INVALID_INPUT = 1001,
|
|
96
|
+
NOT_IMPLEMENTED = 1002,
|
|
97
|
+
PATH_NOT_FOUND = 1003,
|
|
98
|
+
INVALID_PATH = 1004,
|
|
99
|
+
SLOT_NOT_FOUND = 2000,
|
|
100
|
+
SLOT_ALREADY_EXISTS = 2001,
|
|
101
|
+
SLOT_TYPE_MISMATCH = 2002,
|
|
102
|
+
SLOT_VERSION_CONFLICT = 2003,
|
|
103
|
+
ENTRY_NOT_FOUND = 2100,
|
|
104
|
+
ENTRY_ALREADY_EXISTS = 2101,
|
|
105
|
+
ENTRY_LOCKED = 2102,
|
|
106
|
+
AGENT_NOT_FOUND = 3000,
|
|
107
|
+
AGENT_ALREADY_REGISTERED = 3001,
|
|
108
|
+
AGENT_NOT_AVAILABLE = 3002,
|
|
109
|
+
TASK_NOT_FOUND = 3003,
|
|
110
|
+
TASK_ALREADY_ASSIGNED = 3004,
|
|
111
|
+
TASK_IN_PROGRESS = 3005,
|
|
112
|
+
FACT_NOT_FOUND = 4000,
|
|
113
|
+
INFERENCE_NOT_FOUND = 4001,
|
|
114
|
+
PATTERN_NOT_FOUND = 4002,
|
|
115
|
+
INVALID_PREMISES = 4003,
|
|
116
|
+
AGENDA_NOT_FOUND = 5000,
|
|
117
|
+
AGENDA_ALREADY_IN_PROGRESS = 5001,
|
|
118
|
+
AGENDA_ALREADY_RESOLVED = 5002,
|
|
119
|
+
VOTING_NOT_STARTED = 5003,
|
|
120
|
+
VOTING_ALREADY_ENDED = 5004,
|
|
121
|
+
QUORUM_NOT_REACHED = 5005,
|
|
122
|
+
ALREADY_VOTED = 5006,
|
|
123
|
+
CONSENSUS_NOT_REACHED = 5007,
|
|
124
|
+
DUPLICATE_OPINION = 5008,
|
|
125
|
+
OPINION_NOT_FOUND = 5009,
|
|
126
|
+
SNAPSHOT_NOT_FOUND = 6000,
|
|
127
|
+
SNAPSHOT_CORRUPTED = 6001,
|
|
128
|
+
SNAPSHOT_VERSION_MISMATCH = 6002,
|
|
129
|
+
EVENT_HANDLER_ERROR = 7000,
|
|
130
|
+
SUBSCRIPTION_NOT_FOUND = 7001
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* 경로 에러
|
|
134
|
+
*/
|
|
135
|
+
export declare class PathNotFoundError extends Error {
|
|
136
|
+
readonly path: string;
|
|
137
|
+
readonly code = BlackboardErrorCode.PATH_NOT_FOUND;
|
|
138
|
+
constructor(path: string);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Blackboard 에러 클래스
|
|
142
|
+
*/
|
|
143
|
+
export declare class BlackboardError extends Error {
|
|
144
|
+
readonly code: BlackboardErrorCode;
|
|
145
|
+
readonly details?: unknown | undefined;
|
|
146
|
+
constructor(code: BlackboardErrorCode, message: string, details?: unknown | undefined);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Blackboard 메인 클래스
|
|
150
|
+
* @description 시스템의 단일 진실 소스(SSOT)를 관리하는 핵심 클래스
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const board = new Blackboard({ sessionId: createSessionId('session-001') });
|
|
155
|
+
*
|
|
156
|
+
* // 읽기
|
|
157
|
+
* const phase = board.read('state.phase');
|
|
158
|
+
*
|
|
159
|
+
* // 쓰기 (버전 관리 포함)
|
|
160
|
+
* const result = board.write('state.phase', 'discussion');
|
|
161
|
+
*
|
|
162
|
+
* // 섹션 접근
|
|
163
|
+
* const stateSection = board.state;
|
|
164
|
+
* const knowledgeSection = board.knowledge;
|
|
165
|
+
* const decisionsSection = board.decisions;
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export declare class Blackboard extends SimpleEventEmitter {
|
|
169
|
+
private _state;
|
|
170
|
+
private readonly versionManager;
|
|
171
|
+
private readonly options;
|
|
172
|
+
private _snapshotManager;
|
|
173
|
+
private _stateAccessor?;
|
|
174
|
+
private _knowledgeAccessor?;
|
|
175
|
+
private _decisionsAccessor?;
|
|
176
|
+
constructor(options?: BlackboardOptions);
|
|
177
|
+
/**
|
|
178
|
+
* 옵션 정규화
|
|
179
|
+
*/
|
|
180
|
+
private normalizeOptions;
|
|
181
|
+
/**
|
|
182
|
+
* 초기 상태 생성
|
|
183
|
+
*/
|
|
184
|
+
private createInitialState;
|
|
185
|
+
/** 메타데이터 섹션 (읽기 전용) */
|
|
186
|
+
get meta(): Readonly<BlackboardMeta>;
|
|
187
|
+
/** 상태 섹션 접근자 */
|
|
188
|
+
get state(): StateSectionAccessor;
|
|
189
|
+
/** 지식 섹션 접근자 */
|
|
190
|
+
get knowledge(): KnowledgeSectionAccessor;
|
|
191
|
+
/** 의사결정 섹션 접근자 */
|
|
192
|
+
get decisions(): DecisionsSectionAccessor;
|
|
193
|
+
/** 현재 버전 */
|
|
194
|
+
get version(): number;
|
|
195
|
+
/** 세션 ID */
|
|
196
|
+
get sessionId(): SessionId;
|
|
197
|
+
/** 스냅샷 관리자 (public) */
|
|
198
|
+
get snapshotManager(): SnapshotManager;
|
|
199
|
+
/**
|
|
200
|
+
* 현재 전체 상태 조회
|
|
201
|
+
* @returns 현재 Blackboard 상태 (스냅샷용)
|
|
202
|
+
*/
|
|
203
|
+
getState(): BlackboardState;
|
|
204
|
+
/**
|
|
205
|
+
* 경로 기반 읽기
|
|
206
|
+
* @param path - 점(.)으로 구분된 경로 (예: 'state.phase', 'decisions.current')
|
|
207
|
+
* @param options - 쿼리 옵션
|
|
208
|
+
* @returns 해당 경로의 값
|
|
209
|
+
*/
|
|
210
|
+
read<T = unknown>(path: string, options?: QueryOptions & {
|
|
211
|
+
strict?: boolean;
|
|
212
|
+
}): T;
|
|
213
|
+
/**
|
|
214
|
+
* 경로 기반 쓰기 (동기)
|
|
215
|
+
* @param path - 점(.)으로 구분된 경로
|
|
216
|
+
* @param value - 새 값
|
|
217
|
+
* @param options - 쓰기 옵션 (expectedVersion 포함)
|
|
218
|
+
* @returns 쓰기 결과
|
|
219
|
+
*/
|
|
220
|
+
write(path: string, value: unknown, options?: {
|
|
221
|
+
expectedVersion?: number;
|
|
222
|
+
}): WriteResult;
|
|
223
|
+
/**
|
|
224
|
+
* 경로 기반 삭제
|
|
225
|
+
* @param path - 삭제할 경로
|
|
226
|
+
* @param options - 삭제 옵션
|
|
227
|
+
* @returns 삭제 결과
|
|
228
|
+
*/
|
|
229
|
+
delete(path: string, options?: {
|
|
230
|
+
expectedVersion?: number;
|
|
231
|
+
strict?: boolean;
|
|
232
|
+
}): WriteResult;
|
|
233
|
+
/**
|
|
234
|
+
* 경로 존재 여부 확인
|
|
235
|
+
* @param path - 확인할 경로
|
|
236
|
+
*/
|
|
237
|
+
exists(path: string): boolean;
|
|
238
|
+
/**
|
|
239
|
+
* 트랜잭션 실행
|
|
240
|
+
* @description 여러 쓰기를 원자적으로 실행
|
|
241
|
+
* @param operations - 실행할 연산 목록
|
|
242
|
+
* @returns 전체 트랜잭션 결과
|
|
243
|
+
*/
|
|
244
|
+
transaction(operations: Array<{
|
|
245
|
+
type: "write" | "delete";
|
|
246
|
+
path: string;
|
|
247
|
+
value?: unknown;
|
|
248
|
+
expectedVersion?: number;
|
|
249
|
+
}>): WriteResult[];
|
|
250
|
+
/**
|
|
251
|
+
* 현재 상태 스냅샷 생성 (비동기)
|
|
252
|
+
* @param options - 스냅샷 옵션
|
|
253
|
+
* @returns 스냅샷
|
|
254
|
+
*/
|
|
255
|
+
createSnapshot(options?: CreateSnapshotOptions): Promise<Snapshot>;
|
|
256
|
+
/**
|
|
257
|
+
* 스냅샷에서 상태 복원
|
|
258
|
+
* @param snapshot - 복원할 스냅샷
|
|
259
|
+
* @param options - 복원 옵션
|
|
260
|
+
*/
|
|
261
|
+
restoreSnapshot(snapshot: Snapshot, options?: RestoreSnapshotOptions): void;
|
|
262
|
+
/**
|
|
263
|
+
* 스냅샷 검증 (비동기)
|
|
264
|
+
* @param snapshot - 검증할 스냅샷
|
|
265
|
+
*/
|
|
266
|
+
validateSnapshot(snapshot: Snapshot): Promise<SnapshotValidationResult>;
|
|
267
|
+
/**
|
|
268
|
+
* 전체 상태 교체 (내부용)
|
|
269
|
+
* @param newState - 새 상태
|
|
270
|
+
*/
|
|
271
|
+
private replaceState;
|
|
272
|
+
/**
|
|
273
|
+
* 스냅샷 생성 (JSON 직렬화용) - 하위 호환성 유지
|
|
274
|
+
*/
|
|
275
|
+
toJSON(): unknown;
|
|
276
|
+
/**
|
|
277
|
+
* 스냅샷에서 복원 - 하위 호환성 유지
|
|
278
|
+
*/
|
|
279
|
+
static fromJSON(json: {
|
|
280
|
+
meta?: unknown;
|
|
281
|
+
state?: unknown;
|
|
282
|
+
knowledge?: unknown;
|
|
283
|
+
decisions?: unknown;
|
|
284
|
+
}): Blackboard;
|
|
285
|
+
}
|
|
286
|
+
export { VersionConflictError };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module id-generator
|
|
3
|
+
* @description ID 생성기
|
|
4
|
+
*/
|
|
5
|
+
import type { AgentId, TaskId, AgendaId, SessionId } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* ID 생성기 인터페이스
|
|
8
|
+
*/
|
|
9
|
+
export interface IdGenerator {
|
|
10
|
+
generateAgentId(): AgentId;
|
|
11
|
+
generateTaskId(): TaskId;
|
|
12
|
+
generateAgendaId(): AgendaId;
|
|
13
|
+
generateSessionId(): SessionId;
|
|
14
|
+
generateGenericId(prefix?: string): string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 기본 ID 생성기 (crypto.randomUUID 기반)
|
|
18
|
+
*/
|
|
19
|
+
export declare class DefaultIdGenerator implements IdGenerator {
|
|
20
|
+
generateAgentId(): AgentId;
|
|
21
|
+
generateTaskId(): TaskId;
|
|
22
|
+
generateAgendaId(): AgendaId;
|
|
23
|
+
generateSessionId(): SessionId;
|
|
24
|
+
generateGenericId(prefix?: string): string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 테스트용 시퀀셜 ID 생성기
|
|
28
|
+
*/
|
|
29
|
+
export declare class SequentialIdGenerator implements IdGenerator {
|
|
30
|
+
private counters;
|
|
31
|
+
private nextCounter;
|
|
32
|
+
generateAgentId(): AgentId;
|
|
33
|
+
generateTaskId(): TaskId;
|
|
34
|
+
generateAgendaId(): AgendaId;
|
|
35
|
+
generateSessionId(): SessionId;
|
|
36
|
+
generateGenericId(prefix?: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* 카운터 리셋 (테스트용)
|
|
39
|
+
*/
|
|
40
|
+
reset(): void;
|
|
41
|
+
/**
|
|
42
|
+
* 특정 프리픽스의 카운터 리셋
|
|
43
|
+
*/
|
|
44
|
+
resetPrefix(prefix: string): void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 기본 ID 생성기 인스턴스 (싱글톤)
|
|
48
|
+
*/
|
|
49
|
+
export declare const defaultIdGenerator: DefaultIdGenerator;
|
|
50
|
+
/**
|
|
51
|
+
* 테스트용 시퀀셜 ID 생성기 인스턴스
|
|
52
|
+
*/
|
|
53
|
+
export declare const sequentialIdGenerator: SequentialIdGenerator;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module immutable
|
|
3
|
+
* @description 딥 클론 및 불변성 유틸리티
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 깊은 복사
|
|
7
|
+
* @param obj - 복사할 객체
|
|
8
|
+
* @param cloneMap - 순환 참조 추적용 WeakMap (낮은용)
|
|
9
|
+
* @returns 깊은 복사본
|
|
10
|
+
*/
|
|
11
|
+
export declare function deepClone<T>(obj: T, cloneMap?: WeakMap<object, object>): T;
|
|
12
|
+
/**
|
|
13
|
+
* 깊은 동결 (불변 객체 생성)
|
|
14
|
+
* @param obj - 동결할 객체
|
|
15
|
+
* @returns 동결된 객체
|
|
16
|
+
*/
|
|
17
|
+
export declare function deepFreeze<T>(obj: T): Readonly<T>;
|
|
18
|
+
/**
|
|
19
|
+
* 불변 업데이트
|
|
20
|
+
* @description 중첩된 객체를 불변성을 유지하며 업데이트
|
|
21
|
+
* @param obj - 원본 객체
|
|
22
|
+
* @param path - 업데이트할 경로
|
|
23
|
+
* @param updater - 업데이트 함수
|
|
24
|
+
* @returns 새 객체
|
|
25
|
+
*/
|
|
26
|
+
export declare function immutableUpdate<T>(obj: T, path: string, updater: (value: unknown) => unknown): T;
|
|
27
|
+
/**
|
|
28
|
+
* Map을 일반 객체로 변환
|
|
29
|
+
* @param map - 변환할 Map
|
|
30
|
+
* @returns 일반 객체
|
|
31
|
+
*/
|
|
32
|
+
export declare function mapToObject<K extends string, V>(map: Map<K, V>): Record<K, V>;
|
|
33
|
+
/**
|
|
34
|
+
* 일반 객체를 Map으로 변환
|
|
35
|
+
* @param obj - 변환할 객체
|
|
36
|
+
* @returns Map
|
|
37
|
+
*/
|
|
38
|
+
export declare function objectToMap<K extends string, V>(obj: Record<K, V>): Map<K, V>;
|
|
39
|
+
/**
|
|
40
|
+
* 객체 병합 (불변)
|
|
41
|
+
* @param target - 대상 객체
|
|
42
|
+
* @param sources - 병합할 소스들
|
|
43
|
+
* @returns 병합된 새 객체
|
|
44
|
+
*/
|
|
45
|
+
export declare function merge<T extends Record<string, unknown>>(target: T, ...sources: Partial<T>[]): T;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/index
|
|
3
|
+
* @description Core exports
|
|
4
|
+
*/
|
|
5
|
+
export { Blackboard, BlackboardOptions, QueryOptions, WriteResult, Operation, BlackboardErrorCode, PathNotFoundError, BlackboardError, } from './blackboard';
|
|
6
|
+
export { VersionConflictError } from './versioning';
|
|
7
|
+
export { VersionManager, VersioningConfig, DEFAULT_VERSIONING_CONFIG, } from './versioning';
|
|
8
|
+
export { getByPath, setByPath, deleteByPath, parsePath, isValidPath, normalizePath, joinPath, isSubPath, getParentPath, type ParsedPath, } from './path-utils';
|
|
9
|
+
export { deepClone, deepFreeze, immutableUpdate, mapToObject, objectToMap, merge, } from './immutable';
|
|
10
|
+
export { DefaultIdGenerator, SequentialIdGenerator, defaultIdGenerator, sequentialIdGenerator, type IdGenerator, } from './id-generator';
|
|
11
|
+
export { StateSectionAccessor, KnowledgeSectionAccessor, DecisionsSectionAccessor, } from './accessors';
|
|
12
|
+
export { EventAwareBlackboard, EventAwareBlackboardOptions, } from './blackboard-events';
|
|
13
|
+
export type { TemporalKnowledgeGraph, StagingTKG, ProductionTKG, PromotableProductionTKG, IReflector, } from './tkg';
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module path-utils
|
|
3
|
+
* @description 경로 유틸리티
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 경로 파싱 결과
|
|
7
|
+
*/
|
|
8
|
+
export interface ParsedPath {
|
|
9
|
+
/** 섹션 (meta, state, knowledge, decisions) */
|
|
10
|
+
section: "meta" | "state" | "knowledge" | "decisions";
|
|
11
|
+
/** 나머지 경로 세그먼트 */
|
|
12
|
+
segments: string[];
|
|
13
|
+
/** 전체 경로 */
|
|
14
|
+
full: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 경로 기반 값 접근
|
|
18
|
+
* @param obj - 대상 객체
|
|
19
|
+
* @param path - 점(.)으로 구분된 경로
|
|
20
|
+
* @returns 해당 경로의 값
|
|
21
|
+
*/
|
|
22
|
+
export declare function getByPath<T = unknown>(obj: unknown, path: string): T | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* 경로 기반 값 설정 (불변)
|
|
25
|
+
* @param obj - 대상 객체
|
|
26
|
+
* @param path - 점(.)으로 구분된 경로
|
|
27
|
+
* @param value - 설정할 값
|
|
28
|
+
* @returns 수정된 객체 (불변성 유지)
|
|
29
|
+
*/
|
|
30
|
+
export declare function setByPath<T>(obj: T, path: string, value: unknown): T;
|
|
31
|
+
/**
|
|
32
|
+
* 경로 기반 값 삭제
|
|
33
|
+
* @param obj - 대상 객체
|
|
34
|
+
* @param path - 점(.)으로 구분된 경로
|
|
35
|
+
* @returns 수정된 객체 (불변성 유지)
|
|
36
|
+
*/
|
|
37
|
+
export declare function deleteByPath<T>(obj: T, path: string): T;
|
|
38
|
+
/**
|
|
39
|
+
* 경로 파싱
|
|
40
|
+
* @param path - 전체 경로
|
|
41
|
+
* @returns 파싱된 경로 정보
|
|
42
|
+
*/
|
|
43
|
+
export declare function parsePath(path: string): ParsedPath;
|
|
44
|
+
/**
|
|
45
|
+
* 경로 검증
|
|
46
|
+
* @param path - 검증할 경로
|
|
47
|
+
* @returns 유효 여부
|
|
48
|
+
*/
|
|
49
|
+
export declare function isValidPath(path: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 경로 정규화
|
|
52
|
+
* @param path - 정규화할 경로
|
|
53
|
+
* @returns 정규화된 경로
|
|
54
|
+
*/
|
|
55
|
+
export declare function normalizePath(path: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* 경로 결합
|
|
58
|
+
* @param parts - 결합할 경로들
|
|
59
|
+
* @returns 결합된 경로
|
|
60
|
+
*/
|
|
61
|
+
export declare function joinPath(...parts: string[]): string;
|
|
62
|
+
/**
|
|
63
|
+
* 경로가 다른 경로의 하위 경로인지 확인
|
|
64
|
+
* @param parent - 부모 경로
|
|
65
|
+
* @param child - 자식 경로
|
|
66
|
+
* @returns 하위 경로 여부
|
|
67
|
+
*/
|
|
68
|
+
export declare function isSubPath(parent: string, child: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* 경로의 상위 경로 반환
|
|
71
|
+
* @param path - 경로
|
|
72
|
+
* @param levels - 올라갈 레벨 수 (기본: 1)
|
|
73
|
+
* @returns 상위 경로
|
|
74
|
+
*/
|
|
75
|
+
export declare function getParentPath(path: string, levels?: number): string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/tkg
|
|
3
|
+
* @description TKG 인터페이스 계약 (MVP)
|
|
4
|
+
*/
|
|
5
|
+
import type { EdgeId, GraphQuery, IProductionPromotionPort, MergeResult, NodeId, QueryResult, ReflectionOptions, TemporalEdge, TemporalNode, ValidationResult } from '../types/tkg';
|
|
6
|
+
/**
|
|
7
|
+
* Temporal Knowledge Graph 공통 조회 계약
|
|
8
|
+
*/
|
|
9
|
+
export interface TemporalKnowledgeGraph {
|
|
10
|
+
readonly nodes: ReadonlyMap<NodeId, TemporalNode>;
|
|
11
|
+
readonly edges: ReadonlyMap<EdgeId, TemporalEdge>;
|
|
12
|
+
queryAtTime(query: GraphQuery, time?: Date): QueryResult;
|
|
13
|
+
queryCurrent(query: GraphQuery): QueryResult;
|
|
14
|
+
queryTimeRange(query: GraphQuery, from: Date, to: Date): readonly QueryResult[];
|
|
15
|
+
queryByConfidence(query: GraphQuery, minConfidence: number): QueryResult;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Observer 전용 Staging 계약 (쓰기 허용)
|
|
19
|
+
*/
|
|
20
|
+
export interface StagingTKG extends TemporalKnowledgeGraph {
|
|
21
|
+
addNode(node: TemporalNode): NodeId;
|
|
22
|
+
addEdge(edge: TemporalEdge): EdgeId;
|
|
23
|
+
validateNode(node: TemporalNode): ValidationResult;
|
|
24
|
+
validateEdge(edge: TemporalEdge): ValidationResult;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reflector 조회 대상 Production 계약 (읽기 전용)
|
|
28
|
+
*
|
|
29
|
+
* - 외부 소비자는 ReadonlyMap 뷰만 접근 가능
|
|
30
|
+
* - 쓰기는 IProductionPromotionPort를 통해서만 허용
|
|
31
|
+
*/
|
|
32
|
+
export interface ProductionTKG extends TemporalKnowledgeGraph {
|
|
33
|
+
readonly nodes: ReadonlyMap<NodeId, TemporalNode>;
|
|
34
|
+
readonly edges: ReadonlyMap<EdgeId, TemporalEdge>;
|
|
35
|
+
getValidNodes(at?: Date): readonly TemporalNode[];
|
|
36
|
+
getValidEdges(at?: Date): readonly TemporalEdge[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Reflector용 조합 타입.
|
|
40
|
+
*
|
|
41
|
+
* Production 조회는 ProductionTKG, 변경은 승격 포트로 분리하여
|
|
42
|
+
* "Production readonly + Promotion Port" 계약을 타입 수준에서 고정합니다.
|
|
43
|
+
*/
|
|
44
|
+
export type PromotableProductionTKG = ProductionTKG & IProductionPromotionPort;
|
|
45
|
+
/**
|
|
46
|
+
* Reflector 병합 최소 계약
|
|
47
|
+
*/
|
|
48
|
+
export interface IReflector {
|
|
49
|
+
reflect(source: StagingTKG, target: IProductionPromotionPort, options?: ReflectionOptions): MergeResult;
|
|
50
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module versioning
|
|
3
|
+
* @description 버전 관리 (optimistic locking)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 버전 관리 설정
|
|
7
|
+
*/
|
|
8
|
+
export interface VersioningConfig {
|
|
9
|
+
/** 충돌 시 재시도 횟수 */
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
/** 재시도 간격 (ms) */
|
|
12
|
+
retryDelay: number;
|
|
13
|
+
/** 지수 백오프 사용 여부 */
|
|
14
|
+
exponentialBackoff: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 기본 버전 관리 설정
|
|
18
|
+
*/
|
|
19
|
+
export declare const DEFAULT_VERSIONING_CONFIG: VersioningConfig;
|
|
20
|
+
/**
|
|
21
|
+
* 버전 충돌 에러
|
|
22
|
+
*/
|
|
23
|
+
export declare class VersionConflictError extends Error {
|
|
24
|
+
readonly expectedVersion: number;
|
|
25
|
+
readonly actualVersion: number;
|
|
26
|
+
readonly path: string;
|
|
27
|
+
constructor(expectedVersion: number, actualVersion: number, path: string);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Optimistic Locking 관리자
|
|
31
|
+
* @description 동시 쓰기 충돌을 감지하고 처리
|
|
32
|
+
*/
|
|
33
|
+
export declare class VersionManager {
|
|
34
|
+
private config;
|
|
35
|
+
constructor(config?: VersioningConfig);
|
|
36
|
+
/**
|
|
37
|
+
* 버전 검증
|
|
38
|
+
* @param currentVersion - 현재 버전
|
|
39
|
+
* @param expectedVersion - 예상 버전
|
|
40
|
+
* @param path - 경로 (에러 메시지용)
|
|
41
|
+
* @throws {VersionConflictError} 버전 불일치 시
|
|
42
|
+
*/
|
|
43
|
+
validateVersion(currentVersion: number, expectedVersion: number, path: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* 버전 증가
|
|
46
|
+
* @param currentVersion - 현재 버전
|
|
47
|
+
* @returns 새 버전
|
|
48
|
+
*/
|
|
49
|
+
incrementVersion(currentVersion: number): number;
|
|
50
|
+
/**
|
|
51
|
+
* 재시도 가능한 쓰기 실행
|
|
52
|
+
* @param operation - 실행할 쓰기 연산
|
|
53
|
+
* @param context - 컨텍스트 정보 (로그용)
|
|
54
|
+
* @returns 최종 결과
|
|
55
|
+
*/
|
|
56
|
+
executeWithRetry<T>(operation: () => T | Promise<T>, _context?: string): Promise<T>;
|
|
57
|
+
/**
|
|
58
|
+
* 재시도 지연 계산
|
|
59
|
+
* @param attempt - 현재 시도 횟수 (0부터)
|
|
60
|
+
* @returns 지연 시간 (ms)
|
|
61
|
+
*/
|
|
62
|
+
calculateDelay(attempt: number): number;
|
|
63
|
+
/**
|
|
64
|
+
* 지연 (내부 유틸리티)
|
|
65
|
+
*/
|
|
66
|
+
private sleep;
|
|
67
|
+
/**
|
|
68
|
+
* 설정 업데이트
|
|
69
|
+
* @param partialConfig - 업데이트할 설정 (부분)
|
|
70
|
+
*/
|
|
71
|
+
updateConfig(partialConfig: Partial<VersioningConfig>): void;
|
|
72
|
+
/**
|
|
73
|
+
* 현재 설정 조회
|
|
74
|
+
*/
|
|
75
|
+
getConfig(): Readonly<VersioningConfig>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 기본 버전 관리자 인스턴스
|
|
79
|
+
*/
|
|
80
|
+
export declare const defaultVersionManager: VersionManager;
|