@holoscript/framework 6.0.3
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/ALL-test-results.json +1 -0
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/ROADMAP.md +175 -0
- package/dist/AgentManifest-CB4xM-Ma.d.cts +704 -0
- package/dist/AgentManifest-CB4xM-Ma.d.ts +704 -0
- package/dist/BehaviorTree-BrBFECv5.d.cts +103 -0
- package/dist/BehaviorTree-BrBFECv5.d.ts +103 -0
- package/dist/InvisibleWallet-BB6tFvRA.d.cts +1732 -0
- package/dist/InvisibleWallet-rtRrBOA8.d.ts +1732 -0
- package/dist/OrchestratorAgent-BvWgf9uw.d.cts +798 -0
- package/dist/OrchestratorAgent-Q_CbVTmO.d.ts +798 -0
- package/dist/agents/index.cjs +4790 -0
- package/dist/agents/index.d.cts +1788 -0
- package/dist/agents/index.d.ts +1788 -0
- package/dist/agents/index.js +4695 -0
- package/dist/ai/index.cjs +5347 -0
- package/dist/ai/index.d.cts +1753 -0
- package/dist/ai/index.d.ts +1753 -0
- package/dist/ai/index.js +5244 -0
- package/dist/behavior.cjs +449 -0
- package/dist/behavior.d.cts +130 -0
- package/dist/behavior.d.ts +130 -0
- package/dist/behavior.js +407 -0
- package/dist/economy/index.cjs +3659 -0
- package/dist/economy/index.d.cts +747 -0
- package/dist/economy/index.d.ts +747 -0
- package/dist/economy/index.js +3617 -0
- package/dist/implementations-D9T3un9D.d.cts +236 -0
- package/dist/implementations-D9T3un9D.d.ts +236 -0
- package/dist/index.cjs +24550 -0
- package/dist/index.d.cts +1729 -0
- package/dist/index.d.ts +1729 -0
- package/dist/index.js +24277 -0
- package/dist/learning/index.cjs +219 -0
- package/dist/learning/index.d.cts +104 -0
- package/dist/learning/index.d.ts +104 -0
- package/dist/learning/index.js +189 -0
- package/dist/negotiation/index.cjs +970 -0
- package/dist/negotiation/index.d.cts +610 -0
- package/dist/negotiation/index.d.ts +610 -0
- package/dist/negotiation/index.js +931 -0
- package/dist/skills/index.cjs +1118 -0
- package/dist/skills/index.d.cts +289 -0
- package/dist/skills/index.d.ts +289 -0
- package/dist/skills/index.js +1079 -0
- package/dist/swarm/index.cjs +5268 -0
- package/dist/swarm/index.d.cts +2433 -0
- package/dist/swarm/index.d.ts +2433 -0
- package/dist/swarm/index.js +5221 -0
- package/dist/training/index.cjs +2745 -0
- package/dist/training/index.d.cts +1734 -0
- package/dist/training/index.d.ts +1734 -0
- package/dist/training/index.js +2687 -0
- package/extract-failures.js +10 -0
- package/package.json +82 -0
- package/src/__tests__/bounty-marketplace.test.ts +374 -0
- package/src/__tests__/delegation.test.ts +144 -0
- package/src/__tests__/distributed-claimer.test.ts +147 -0
- package/src/__tests__/done-log-audit.test.ts +342 -0
- package/src/__tests__/framework.test.ts +865 -0
- package/src/__tests__/goal-synthesizer.test.ts +236 -0
- package/src/__tests__/presence.test.ts +223 -0
- package/src/__tests__/protocol-agent.test.ts +254 -0
- package/src/__tests__/revenue-splitter.test.ts +114 -0
- package/src/__tests__/scenario-driven-todo.test.ts +197 -0
- package/src/__tests__/self-improve.test.ts +349 -0
- package/src/__tests__/service-lifecycle.test.ts +237 -0
- package/src/__tests__/skill-router.test.ts +121 -0
- package/src/agents/AgentManifest.ts +493 -0
- package/src/agents/AgentRegistry.ts +475 -0
- package/src/agents/AgentTypes.ts +585 -0
- package/src/agents/AgentWalletRegistry.ts +83 -0
- package/src/agents/AuthenticatedCRDT.ts +388 -0
- package/src/agents/CapabilityMatcher.ts +453 -0
- package/src/agents/CrossRealityHandoff.ts +305 -0
- package/src/agents/CulturalMemory.ts +454 -0
- package/src/agents/FederatedRegistryAdapter.ts +429 -0
- package/src/agents/NormEngine.ts +450 -0
- package/src/agents/OrchestratorAgent.ts +414 -0
- package/src/agents/SkillWorkflowEngine.ts +472 -0
- package/src/agents/TaskDelegationService.ts +551 -0
- package/src/agents/__tests__/AgentManifest.prod.test.ts +134 -0
- package/src/agents/__tests__/AgentManifest.test.ts +182 -0
- package/src/agents/__tests__/AgentModule.test.ts +864 -0
- package/src/agents/__tests__/AgentRegistry.prod.test.ts +125 -0
- package/src/agents/__tests__/AgentRegistry.test.ts +148 -0
- package/src/agents/__tests__/AgentTypes.test.ts +534 -0
- package/src/agents/__tests__/AgentWalletRegistry.test.ts +152 -0
- package/src/agents/__tests__/AuthenticatedCRDT.test.ts +558 -0
- package/src/agents/__tests__/CapabilityMatcher.prod.test.ts +117 -0
- package/src/agents/__tests__/CapabilityMatcher.test.ts +178 -0
- package/src/agents/__tests__/CrossRealityHandoff.test.ts +402 -0
- package/src/agents/__tests__/CulturalMemory.test.ts +200 -0
- package/src/agents/__tests__/FederatedRegistryAdapter.test.ts +409 -0
- package/src/agents/__tests__/NormEngine.test.ts +276 -0
- package/src/agents/__tests__/OrchestratorAgent.test.ts +182 -0
- package/src/agents/__tests__/SkillWorkflowEngine.test.ts +357 -0
- package/src/agents/__tests__/TaskDelegationService.test.ts +446 -0
- package/src/agents/index.ts +107 -0
- package/src/agents/spatial-comms/Layer1RealTime.ts +621 -0
- package/src/agents/spatial-comms/Layer2A2A.ts +661 -0
- package/src/agents/spatial-comms/Layer3MCP.ts +651 -0
- package/src/agents/spatial-comms/ProtocolTypes.ts +543 -0
- package/src/agents/spatial-comms/SpatialCommClient.ts +483 -0
- package/src/agents/spatial-comms/__tests__/performance-benchmark.test.ts +465 -0
- package/src/agents/spatial-comms/examples/multi-agent-world-creation.ts +409 -0
- package/src/agents/spatial-comms/index.ts +66 -0
- package/src/ai/AIAdapter.ts +313 -0
- package/src/ai/AICopilot.ts +331 -0
- package/src/ai/AIOutputValidator.ts +203 -0
- package/src/ai/BTNodes.ts +239 -0
- package/src/ai/BehaviorSelector.ts +135 -0
- package/src/ai/BehaviorTree.ts +153 -0
- package/src/ai/Blackboard.ts +165 -0
- package/src/ai/GenerationAnalytics.ts +461 -0
- package/src/ai/GenerationCache.ts +265 -0
- package/src/ai/GoalPlanner.ts +165 -0
- package/src/ai/HoloScriptGenerator.ts +580 -0
- package/src/ai/InfluenceMap.ts +180 -0
- package/src/ai/NavMesh.ts +168 -0
- package/src/ai/PerceptionSystem.ts +178 -0
- package/src/ai/PromptTemplates.ts +453 -0
- package/src/ai/SemanticSearchService.ts +80 -0
- package/src/ai/StateMachine.ts +196 -0
- package/src/ai/SteeringBehavior.ts +150 -0
- package/src/ai/SteeringBehaviors.ts +244 -0
- package/src/ai/TrainingDataGenerator.ts +1082 -0
- package/src/ai/UtilityAI.ts +145 -0
- package/src/ai/__tests__/AIAdapter.prod.test.ts +259 -0
- package/src/ai/__tests__/AIAdapter.test.ts +109 -0
- package/src/ai/__tests__/AICopilot.prod.test.ts +341 -0
- package/src/ai/__tests__/AICopilot.test.ts +178 -0
- package/src/ai/__tests__/AIOutputValidator.prod.test.ts +226 -0
- package/src/ai/__tests__/AIOutputValidator.test.ts +138 -0
- package/src/ai/__tests__/BTNodes.prod.test.ts +391 -0
- package/src/ai/__tests__/BTNodes.test.ts +263 -0
- package/src/ai/__tests__/BehaviorSelector.prod.test.ts +129 -0
- package/src/ai/__tests__/BehaviorSelector.test.ts +132 -0
- package/src/ai/__tests__/BehaviorTree.prod.test.ts +266 -0
- package/src/ai/__tests__/BehaviorTree.test.ts +216 -0
- package/src/ai/__tests__/Blackboard.prod.test.ts +339 -0
- package/src/ai/__tests__/Blackboard.test.ts +183 -0
- package/src/ai/__tests__/GenerationAnalytics.prod.test.ts +141 -0
- package/src/ai/__tests__/GenerationAnalytics.test.ts +165 -0
- package/src/ai/__tests__/GenerationCache.prod.test.ts +144 -0
- package/src/ai/__tests__/GenerationCache.test.ts +171 -0
- package/src/ai/__tests__/GoalPlanner.prod.test.ts +189 -0
- package/src/ai/__tests__/GoalPlanner.test.ts +137 -0
- package/src/ai/__tests__/GoalPlannerDepth.prod.test.ts +217 -0
- package/src/ai/__tests__/HoloScriptGenerator.test.ts +125 -0
- package/src/ai/__tests__/InfluenceMap.prod.test.ts +146 -0
- package/src/ai/__tests__/InfluenceMap.test.ts +149 -0
- package/src/ai/__tests__/NavMesh.prod.test.ts +141 -0
- package/src/ai/__tests__/NavMesh.test.ts +159 -0
- package/src/ai/__tests__/PerceptionSystem.prod.test.ts +135 -0
- package/src/ai/__tests__/PerceptionSystem.test.ts +250 -0
- package/src/ai/__tests__/PromptTemplates.prod.test.ts +313 -0
- package/src/ai/__tests__/PromptTemplates.test.ts +146 -0
- package/src/ai/__tests__/SemanticSearch.test.ts +37 -0
- package/src/ai/__tests__/StateMachine.prod.test.ts +162 -0
- package/src/ai/__tests__/StateMachine.test.ts +163 -0
- package/src/ai/__tests__/SteeringBehavior.prod.test.ts +251 -0
- package/src/ai/__tests__/SteeringBehavior.test.ts +135 -0
- package/src/ai/__tests__/SteeringBehaviors.prod.test.ts +133 -0
- package/src/ai/__tests__/SteeringBehaviors.test.ts +151 -0
- package/src/ai/__tests__/TrainingDataGenerator.prod.test.ts +286 -0
- package/src/ai/__tests__/TrainingDataGenerator.test.ts +286 -0
- package/src/ai/__tests__/UtilityAI.prod.test.ts +207 -0
- package/src/ai/__tests__/UtilityAI.test.ts +155 -0
- package/src/ai/__tests__/adapters.prod.test.ts +263 -0
- package/src/ai/__tests__/adapters.test.ts +320 -0
- package/src/ai/adapters.ts +1585 -0
- package/src/ai/index.ts +130 -0
- package/src/behavior/BehaviorPresets.ts +140 -0
- package/src/behavior/BehaviorTree.ts +236 -0
- package/src/behavior/StateMachine.ts +176 -0
- package/src/behavior/StateTrait.ts +67 -0
- package/src/behavior/index.ts +8 -0
- package/src/behavior.ts +8 -0
- package/src/board/audit.ts +284 -0
- package/src/board/board-ops.ts +336 -0
- package/src/board/board-types.ts +302 -0
- package/src/board/index.ts +69 -0
- package/src/define-agent.ts +46 -0
- package/src/define-team.ts +33 -0
- package/src/delegation.ts +265 -0
- package/src/distributed-claimer.ts +228 -0
- package/src/economy/AgentBudgetEnforcer.ts +464 -0
- package/src/economy/BountyManager.ts +185 -0
- package/src/economy/CreatorRevenueAggregator.ts +460 -0
- package/src/economy/InvisibleWallet.ts +82 -0
- package/src/economy/KnowledgeMarketplace.ts +193 -0
- package/src/economy/PaymentWebhookService.ts +512 -0
- package/src/economy/RevenueSplitter.ts +156 -0
- package/src/economy/SubscriptionManager.ts +546 -0
- package/src/economy/UnifiedBudgetOptimizer.ts +635 -0
- package/src/economy/UsageMeter.ts +440 -0
- package/src/economy/_core-stubs.ts +219 -0
- package/src/economy/index.ts +100 -0
- package/src/economy/x402-facilitator.ts +1978 -0
- package/src/index.ts +348 -0
- package/src/knowledge/__tests__/knowledge-consolidator.test.ts +444 -0
- package/src/knowledge/__tests__/knowledge-store-vector.test.ts +291 -0
- package/src/knowledge/brain.ts +167 -0
- package/src/knowledge/consolidation.ts +581 -0
- package/src/knowledge/knowledge-consolidator.ts +510 -0
- package/src/knowledge/knowledge-store.ts +616 -0
- package/src/learning/MemoryConsolidator.ts +102 -0
- package/src/learning/MemoryScorer.ts +69 -0
- package/src/learning/ProceduralCompiler.ts +45 -0
- package/src/learning/SemanticClusterer.ts +66 -0
- package/src/learning/index.ts +8 -0
- package/src/llm/llm-adapter.ts +159 -0
- package/src/mesh/index.ts +309 -0
- package/src/negotiation/NegotiationProtocol.ts +694 -0
- package/src/negotiation/NegotiationTypes.ts +473 -0
- package/src/negotiation/VotingMechanisms.ts +691 -0
- package/src/negotiation/index.ts +49 -0
- package/src/protocol/goal-synthesizer.ts +317 -0
- package/src/protocol/implementations.ts +474 -0
- package/src/protocol/micro-phase-decomposer.ts +299 -0
- package/src/protocol/micro-step-decomposer.test.ts +306 -0
- package/src/protocol-agent.test.ts +353 -0
- package/src/protocol-agent.ts +670 -0
- package/src/self-improve/absorb-scanner.ts +252 -0
- package/src/self-improve/evolution-engine.ts +149 -0
- package/src/self-improve/framework-absorber.ts +214 -0
- package/src/self-improve/index.ts +50 -0
- package/src/self-improve/prompt-optimizer.ts +212 -0
- package/src/self-improve/test-generator.ts +175 -0
- package/src/skill-router.ts +186 -0
- package/src/skills/index.ts +5 -0
- package/src/skills/skill-md-bridge.ts +1699 -0
- package/src/swarm/ACOEngine.ts +261 -0
- package/src/swarm/CollectiveIntelligence.ts +383 -0
- package/src/swarm/ContributionSynthesizer.ts +481 -0
- package/src/swarm/LeaderElection.ts +393 -0
- package/src/swarm/PSOEngine.ts +206 -0
- package/src/swarm/QuorumPolicy.ts +173 -0
- package/src/swarm/SwarmCoordinator.ts +335 -0
- package/src/swarm/SwarmManager.ts +442 -0
- package/src/swarm/SwarmMembership.ts +456 -0
- package/src/swarm/VotingRound.ts +255 -0
- package/src/swarm/__tests__/ACOEngine.prod.test.ts +164 -0
- package/src/swarm/__tests__/ACOEngine.test.ts +117 -0
- package/src/swarm/__tests__/CollectiveIntelligence.prod.test.ts +296 -0
- package/src/swarm/__tests__/CollectiveIntelligence.test.ts +457 -0
- package/src/swarm/__tests__/ContributionSynthesizer.prod.test.ts +269 -0
- package/src/swarm/__tests__/ContributionSynthesizer.test.ts +254 -0
- package/src/swarm/__tests__/LeaderElection.prod.test.ts +196 -0
- package/src/swarm/__tests__/LeaderElection.test.ts +151 -0
- package/src/swarm/__tests__/PSOEngine.prod.test.ts +162 -0
- package/src/swarm/__tests__/PSOEngine.test.ts +106 -0
- package/src/swarm/__tests__/QuorumPolicy.prod.test.ts +216 -0
- package/src/swarm/__tests__/QuorumPolicy.test.ts +177 -0
- package/src/swarm/__tests__/SwarmCoordinator.prod.test.ts +186 -0
- package/src/swarm/__tests__/SwarmCoordinator.test.ts +167 -0
- package/src/swarm/__tests__/SwarmManager.prod.test.ts +308 -0
- package/src/swarm/__tests__/SwarmManager.test.ts +373 -0
- package/src/swarm/__tests__/SwarmMembership.prod.test.ts +273 -0
- package/src/swarm/__tests__/SwarmMembership.test.ts +264 -0
- package/src/swarm/__tests__/VotingRound.prod.test.ts +233 -0
- package/src/swarm/__tests__/VotingRound.test.ts +174 -0
- package/src/swarm/analytics/SwarmInspector.ts +476 -0
- package/src/swarm/analytics/SwarmMetrics.ts +449 -0
- package/src/swarm/analytics/__tests__/SwarmInspector.prod.test.ts +366 -0
- package/src/swarm/analytics/__tests__/SwarmInspector.test.ts +454 -0
- package/src/swarm/analytics/__tests__/SwarmMetrics.prod.test.ts +254 -0
- package/src/swarm/analytics/__tests__/SwarmMetrics.test.ts +370 -0
- package/src/swarm/analytics/index.ts +7 -0
- package/src/swarm/index.ts +69 -0
- package/src/swarm/messaging/BroadcastChannel.ts +509 -0
- package/src/swarm/messaging/GossipProtocol.ts +565 -0
- package/src/swarm/messaging/SwarmEventBus.ts +443 -0
- package/src/swarm/messaging/__tests__/BroadcastChannel.prod.test.ts +331 -0
- package/src/swarm/messaging/__tests__/BroadcastChannel.test.ts +333 -0
- package/src/swarm/messaging/__tests__/GossipProtocol.prod.test.ts +356 -0
- package/src/swarm/messaging/__tests__/GossipProtocol.test.ts +437 -0
- package/src/swarm/messaging/__tests__/SwarmEventBus.prod.test.ts +191 -0
- package/src/swarm/messaging/__tests__/SwarmEventBus.test.ts +247 -0
- package/src/swarm/messaging/index.ts +8 -0
- package/src/swarm/spatial/FlockingBehavior.ts +462 -0
- package/src/swarm/spatial/FormationController.ts +500 -0
- package/src/swarm/spatial/Vector3.ts +170 -0
- package/src/swarm/spatial/ZoneClaiming.ts +509 -0
- package/src/swarm/spatial/__tests__/FlockingBehavior.prod.test.ts +239 -0
- package/src/swarm/spatial/__tests__/FlockingBehavior.test.ts +298 -0
- package/src/swarm/spatial/__tests__/FormationController.prod.test.ts +240 -0
- package/src/swarm/spatial/__tests__/FormationController.test.ts +297 -0
- package/src/swarm/spatial/__tests__/Vector3.prod.test.ts +283 -0
- package/src/swarm/spatial/__tests__/Vector3.test.ts +224 -0
- package/src/swarm/spatial/__tests__/ZoneClaiming.prod.test.ts +246 -0
- package/src/swarm/spatial/__tests__/ZoneClaiming.test.ts +374 -0
- package/src/swarm/spatial/index.ts +28 -0
- package/src/team.ts +1245 -0
- package/src/training/LRScheduler.ts +377 -0
- package/src/training/QualityScoringPipeline.ts +139 -0
- package/src/training/SoftDedup.ts +461 -0
- package/src/training/SparsityMonitor.ts +685 -0
- package/src/training/SparsityMonitorTypes.ts +209 -0
- package/src/training/SpatialTrainingDataGenerator.ts +1526 -0
- package/src/training/SpatialTrainingDataTypes.ts +216 -0
- package/src/training/TrainingPipelineConfig.ts +215 -0
- package/src/training/constants.ts +94 -0
- package/src/training/index.ts +138 -0
- package/src/training/schema.ts +147 -0
- package/src/training/scripts/generate-novel-use-cases-dataset.ts +272 -0
- package/src/training/scripts/generate-spatial-dataset.ts +521 -0
- package/src/training/training/data/novel-use-cases.jsonl +153 -0
- package/src/training/training/data/spatial-reasoning-10k.jsonl +9354 -0
- package/src/training/trainingmonkey/TrainingMonkeyIntegration.ts +477 -0
- package/src/training/trainingmonkey/TrainingMonkeyTypes.ts +230 -0
- package/src/training/trainingmonkey/index.ts +26 -0
- package/src/training/trait-mappings.ts +157 -0
- package/src/types/core-stubs.d.ts +113 -0
- package/src/types.ts +304 -0
- package/test-output.txt +0 -0
- package/test-result.json +1 -0
- package/tsc-errors.txt +4 -0
- package/tsc_output.txt +0 -0
- package/tsconfig.json +14 -0
- package/tsup-learning-esm.config.ts +12 -0
- package/tsup.config.ts +21 -0
- package/typescript-errors-2.txt +0 -0
- package/typescript-errors.txt +22 -0
- package/vitest-log-utf8.txt +268 -0
- package/vitest-log.txt +0 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @holoscript/core - Spatial Agent Communication Protocol Types
|
|
3
|
+
*
|
|
4
|
+
* Three-layer communication stack for multi-agent VR world creation:
|
|
5
|
+
* - Layer 1: Real-Time Layer (UDP/WebRTC) - <1ms latency, 90fps coordination
|
|
6
|
+
* - Layer 2: Coordination Layer (A2A over HTTP/2) - Task assignment, conflict resolution
|
|
7
|
+
* - Layer 3: Metadata Layer (MCP) - Tool access, high-level commands
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// LAYER 1: REAL-TIME LAYER (UDP/WebRTC)
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Real-time message types for 90fps coordination
|
|
16
|
+
*/
|
|
17
|
+
export type RealTimeMessageType =
|
|
18
|
+
| 'position_sync' // Agent position/rotation/scale updates
|
|
19
|
+
| 'frame_budget' // Frame time and budget status
|
|
20
|
+
| 'spatial_conflict' // Spatial conflict alerts
|
|
21
|
+
| 'performance_metric'; // Real-time performance data
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Position synchronization message (90 messages/second per agent)
|
|
25
|
+
*/
|
|
26
|
+
export interface PositionSyncMessage {
|
|
27
|
+
type: 'position_sync';
|
|
28
|
+
agent_id: string;
|
|
29
|
+
timestamp: number; // Microseconds for precision
|
|
30
|
+
position: [number, number, number]; // x, y, z
|
|
31
|
+
rotation: [number, number, number, number]; // quaternion (x, y, z, w)
|
|
32
|
+
scale: [number, number, number]; // sx, sy, sz
|
|
33
|
+
velocity?: [number, number, number]; // Optional velocity for prediction
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Frame budget status message
|
|
38
|
+
*/
|
|
39
|
+
export interface FrameBudgetMessage {
|
|
40
|
+
type: 'frame_budget';
|
|
41
|
+
agent_id: string;
|
|
42
|
+
timestamp: number;
|
|
43
|
+
frame_time_ms: number; // Actual frame time
|
|
44
|
+
budget_remaining_ms: number; // Remaining budget before 90fps breach
|
|
45
|
+
target_fps: number; // Target FPS (usually 90)
|
|
46
|
+
actual_fps: number; // Measured FPS
|
|
47
|
+
quality_level: 'high' | 'medium' | 'low' | 'minimal'; // Current quality setting
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Spatial conflict alert message
|
|
52
|
+
*/
|
|
53
|
+
export interface SpatialConflictMessage {
|
|
54
|
+
type: 'spatial_conflict';
|
|
55
|
+
agent_id: string;
|
|
56
|
+
timestamp: number;
|
|
57
|
+
conflict_type: 'overlap' | 'boundary_violation' | 'resource_contention' | 'performance_impact';
|
|
58
|
+
affected_region: {
|
|
59
|
+
center: [number, number, number];
|
|
60
|
+
radius: number;
|
|
61
|
+
};
|
|
62
|
+
conflicting_agents: string[]; // Other agents involved
|
|
63
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
64
|
+
suggested_action?: 'pause' | 'relocate' | 'reduce_quality' | 'defer';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Performance metric message
|
|
69
|
+
*/
|
|
70
|
+
export interface PerformanceMetricMessage {
|
|
71
|
+
type: 'performance_metric';
|
|
72
|
+
agent_id: string;
|
|
73
|
+
timestamp: number;
|
|
74
|
+
metric_name: string;
|
|
75
|
+
value: number;
|
|
76
|
+
unit: 'ms' | 'fps' | 'percent' | 'count' | 'bytes';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Union type for all real-time messages
|
|
81
|
+
*/
|
|
82
|
+
export type RealTimeMessage =
|
|
83
|
+
| PositionSyncMessage
|
|
84
|
+
| FrameBudgetMessage
|
|
85
|
+
| SpatialConflictMessage
|
|
86
|
+
| PerformanceMetricMessage;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Real-time message body — strips auto-generated fields for the `send()` method.
|
|
90
|
+
*/
|
|
91
|
+
export type RealTimeMessageBody = DistributiveOmit<RealTimeMessage, 'agent_id' | 'timestamp'>;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Binary protocol configuration for minimal overhead
|
|
95
|
+
*/
|
|
96
|
+
export interface RealTimeProtocolConfig {
|
|
97
|
+
/** Use binary encoding (vs JSON) */
|
|
98
|
+
binary: boolean;
|
|
99
|
+
/** Maximum message size in bytes */
|
|
100
|
+
maxMessageSize: number;
|
|
101
|
+
/** Target latency in milliseconds */
|
|
102
|
+
targetLatency: number;
|
|
103
|
+
/** Messages per second per agent */
|
|
104
|
+
messagesPerSecond: number;
|
|
105
|
+
/** Enable message compression */
|
|
106
|
+
compression: boolean;
|
|
107
|
+
/** UDP port for real-time messages */
|
|
108
|
+
udpPort?: number;
|
|
109
|
+
/** WebRTC configuration */
|
|
110
|
+
webrtc?: {
|
|
111
|
+
iceServers: RTCIceServer[];
|
|
112
|
+
dataChannelOptions?: RTCDataChannelInit;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Default real-time protocol configuration
|
|
118
|
+
*/
|
|
119
|
+
export const DEFAULT_REALTIME_CONFIG: RealTimeProtocolConfig = {
|
|
120
|
+
binary: true,
|
|
121
|
+
maxMessageSize: 512, // 512 bytes max
|
|
122
|
+
targetLatency: 1, // <1ms target
|
|
123
|
+
messagesPerSecond: 90, // 90fps coordination
|
|
124
|
+
compression: false, // No compression for minimal latency
|
|
125
|
+
udpPort: 9001,
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// ============================================================================
|
|
129
|
+
// LAYER 2: COORDINATION LAYER (A2A over HTTP/2)
|
|
130
|
+
// ============================================================================
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* A2A message types for agent collaboration
|
|
134
|
+
*/
|
|
135
|
+
export type A2AMessageType =
|
|
136
|
+
| 'task_assignment' // Assign task to agent
|
|
137
|
+
| 'task_complete' // Task completion notification
|
|
138
|
+
| 'spatial_claim' // Claim spatial region
|
|
139
|
+
| 'conflict_resolution' // Resolve spatial conflict
|
|
140
|
+
| 'resource_request' // Request shared resource
|
|
141
|
+
| 'resource_release' // Release shared resource
|
|
142
|
+
| 'agent_handshake' // Establish agent connection
|
|
143
|
+
| 'agent_disconnect'; // Disconnect agent
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Task specification for task assignment
|
|
147
|
+
*/
|
|
148
|
+
export interface TaskSpec {
|
|
149
|
+
task_id: string;
|
|
150
|
+
task_type: 'terrain' | 'assets' | 'physics' | 'lighting' | 'audio' | 'custom';
|
|
151
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
152
|
+
parameters: Record<string, unknown>;
|
|
153
|
+
spatial_region?: {
|
|
154
|
+
center: [number, number, number];
|
|
155
|
+
size: [number, number, number];
|
|
156
|
+
};
|
|
157
|
+
frame_budget_ms?: number; // Frame budget allocation
|
|
158
|
+
dependencies?: string[]; // Task IDs this task depends on
|
|
159
|
+
deadline?: number; // Unix timestamp
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Task assignment message
|
|
164
|
+
*/
|
|
165
|
+
export interface TaskAssignmentMessage {
|
|
166
|
+
type: 'task_assignment';
|
|
167
|
+
message_id: string;
|
|
168
|
+
from_agent: string;
|
|
169
|
+
to_agent: string;
|
|
170
|
+
timestamp: number;
|
|
171
|
+
task: TaskSpec;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Task completion message
|
|
176
|
+
*/
|
|
177
|
+
export interface TaskCompleteMessage {
|
|
178
|
+
type: 'task_complete';
|
|
179
|
+
message_id: string;
|
|
180
|
+
from_agent: string;
|
|
181
|
+
timestamp: number;
|
|
182
|
+
task_id: string;
|
|
183
|
+
success: boolean;
|
|
184
|
+
result?: unknown;
|
|
185
|
+
error?: string;
|
|
186
|
+
performance_metrics?: {
|
|
187
|
+
duration_ms: number;
|
|
188
|
+
frame_time_avg_ms: number;
|
|
189
|
+
frame_time_max_ms: number;
|
|
190
|
+
quality_level: 'high' | 'medium' | 'low' | 'minimal';
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Spatial claim message
|
|
196
|
+
*/
|
|
197
|
+
export interface SpatialClaimMessage {
|
|
198
|
+
type: 'spatial_claim';
|
|
199
|
+
message_id: string;
|
|
200
|
+
from_agent: string;
|
|
201
|
+
timestamp: number;
|
|
202
|
+
claim_id: string;
|
|
203
|
+
bounding_box: {
|
|
204
|
+
min: [number, number, number];
|
|
205
|
+
max: [number, number, number];
|
|
206
|
+
};
|
|
207
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
208
|
+
duration_ms?: number; // How long to hold claim (undefined = indefinite)
|
|
209
|
+
exclusive: boolean; // Whether other agents can overlap
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Conflict resolution strategy
|
|
214
|
+
*/
|
|
215
|
+
export type ConflictResolutionStrategy =
|
|
216
|
+
| 'priority_based' // Higher priority agent wins
|
|
217
|
+
| 'time_slicing' // Agents take turns
|
|
218
|
+
| 'spatial_partitioning' // Divide space between agents
|
|
219
|
+
| 'quality_reduction' // All agents reduce quality
|
|
220
|
+
| 'agent_relocation'; // Move conflicting agent(s)
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Conflict resolution message
|
|
224
|
+
*/
|
|
225
|
+
export interface ConflictResolutionMessage {
|
|
226
|
+
type: 'conflict_resolution';
|
|
227
|
+
message_id: string;
|
|
228
|
+
from_agent: string;
|
|
229
|
+
timestamp: number;
|
|
230
|
+
conflict_id: string;
|
|
231
|
+
strategy: ConflictResolutionStrategy;
|
|
232
|
+
involved_agents: string[];
|
|
233
|
+
resolution_params?: Record<string, unknown>;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Resource request message
|
|
238
|
+
*/
|
|
239
|
+
export interface ResourceRequestMessage {
|
|
240
|
+
type: 'resource_request';
|
|
241
|
+
message_id: string;
|
|
242
|
+
from_agent: string;
|
|
243
|
+
timestamp: number;
|
|
244
|
+
resource_id: string;
|
|
245
|
+
resource_type: 'mesh' | 'texture' | 'material' | 'audio' | 'compute' | 'memory';
|
|
246
|
+
amount?: number;
|
|
247
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Resource release message
|
|
252
|
+
*/
|
|
253
|
+
export interface ResourceReleaseMessage {
|
|
254
|
+
type: 'resource_release';
|
|
255
|
+
message_id: string;
|
|
256
|
+
from_agent: string;
|
|
257
|
+
timestamp: number;
|
|
258
|
+
resource_id: string;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Agent handshake message
|
|
263
|
+
*/
|
|
264
|
+
export interface AgentHandshakeMessage {
|
|
265
|
+
type: 'agent_handshake';
|
|
266
|
+
message_id: string;
|
|
267
|
+
from_agent: string;
|
|
268
|
+
to_agent: string;
|
|
269
|
+
timestamp: number;
|
|
270
|
+
capabilities: string[];
|
|
271
|
+
protocol_version: string;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Agent disconnect message
|
|
276
|
+
*/
|
|
277
|
+
export interface AgentDisconnectMessage {
|
|
278
|
+
type: 'agent_disconnect';
|
|
279
|
+
message_id: string;
|
|
280
|
+
from_agent: string;
|
|
281
|
+
timestamp: number;
|
|
282
|
+
reason?: string;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Union type for all A2A messages
|
|
287
|
+
*/
|
|
288
|
+
export type A2AMessage =
|
|
289
|
+
| TaskAssignmentMessage
|
|
290
|
+
| TaskCompleteMessage
|
|
291
|
+
| SpatialClaimMessage
|
|
292
|
+
| ConflictResolutionMessage
|
|
293
|
+
| ResourceRequestMessage
|
|
294
|
+
| ResourceReleaseMessage
|
|
295
|
+
| AgentHandshakeMessage
|
|
296
|
+
| AgentDisconnectMessage;
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Distributive Omit for discriminated unions — removes keys from each member individually.
|
|
300
|
+
*/
|
|
301
|
+
type DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* A2A message body type for the `send()` method.
|
|
305
|
+
* Strips auto-generated fields so callers only provide the domain payload.
|
|
306
|
+
*/
|
|
307
|
+
export type A2AMessageBody = DistributiveOmit<A2AMessage, 'message_id' | 'from_agent' | 'timestamp'>;
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* A2A protocol configuration
|
|
311
|
+
*/
|
|
312
|
+
export interface A2AProtocolConfig {
|
|
313
|
+
/** HTTP/2 endpoint */
|
|
314
|
+
endpoint: string;
|
|
315
|
+
/** Request timeout in milliseconds */
|
|
316
|
+
timeout: number;
|
|
317
|
+
/** Maximum retry attempts */
|
|
318
|
+
maxRetries: number;
|
|
319
|
+
/** Exponential backoff base (ms) */
|
|
320
|
+
retryBackoffBase: number;
|
|
321
|
+
/** Enable acknowledgments */
|
|
322
|
+
requireAck: boolean;
|
|
323
|
+
/** Enable request batching */
|
|
324
|
+
enableBatching: boolean;
|
|
325
|
+
/** Batch size */
|
|
326
|
+
batchSize: number;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Default A2A protocol configuration
|
|
331
|
+
*/
|
|
332
|
+
export const DEFAULT_A2A_CONFIG: A2AProtocolConfig = {
|
|
333
|
+
endpoint: 'http://localhost:3002/a2a',
|
|
334
|
+
timeout: 5000, // 5 seconds
|
|
335
|
+
maxRetries: 3,
|
|
336
|
+
retryBackoffBase: 100, // 100ms, 200ms, 400ms
|
|
337
|
+
requireAck: true,
|
|
338
|
+
enableBatching: true,
|
|
339
|
+
batchSize: 10,
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* A2A response
|
|
344
|
+
*/
|
|
345
|
+
export interface A2AResponse {
|
|
346
|
+
message_id: string;
|
|
347
|
+
success: boolean;
|
|
348
|
+
data?: unknown;
|
|
349
|
+
error?: string;
|
|
350
|
+
timestamp: number;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// ============================================================================
|
|
354
|
+
// LAYER 3: METADATA LAYER (MCP)
|
|
355
|
+
// ============================================================================
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* MCP command types for high-level operations
|
|
359
|
+
*/
|
|
360
|
+
export type MCPCommandType =
|
|
361
|
+
| 'create_world' // Create new VR world
|
|
362
|
+
| 'get_world_status' // Get world status
|
|
363
|
+
| 'export_world' // Export world to format
|
|
364
|
+
| 'get_agent_registry' // Get registered agents
|
|
365
|
+
| 'get_performance_metrics' // Get system performance
|
|
366
|
+
| 'set_global_config' // Set global configuration
|
|
367
|
+
| 'trigger_event'; // Trigger system event
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* World specification for world creation
|
|
371
|
+
*/
|
|
372
|
+
export interface WorldSpec {
|
|
373
|
+
world_id?: string; // Optional, generated if not provided
|
|
374
|
+
name: string;
|
|
375
|
+
template?: 'blank' | 'office' | 'gallery' | 'playground' | 'analytics' | 'collaboration';
|
|
376
|
+
dimensions: {
|
|
377
|
+
width: number;
|
|
378
|
+
height: number;
|
|
379
|
+
depth: number;
|
|
380
|
+
};
|
|
381
|
+
target_fps: number; // Target FPS (usually 90)
|
|
382
|
+
max_agents: number; // Maximum concurrent agents
|
|
383
|
+
features?: {
|
|
384
|
+
terrain?: boolean;
|
|
385
|
+
physics?: boolean;
|
|
386
|
+
lighting?: boolean;
|
|
387
|
+
audio?: boolean;
|
|
388
|
+
networking?: boolean;
|
|
389
|
+
};
|
|
390
|
+
agent_roles?: {
|
|
391
|
+
role: string;
|
|
392
|
+
agent_type: string;
|
|
393
|
+
spatial_region?: {
|
|
394
|
+
center: [number, number, number];
|
|
395
|
+
size: [number, number, number];
|
|
396
|
+
};
|
|
397
|
+
}[];
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* World status
|
|
402
|
+
*/
|
|
403
|
+
export interface WorldStatus {
|
|
404
|
+
world_id: string;
|
|
405
|
+
name: string;
|
|
406
|
+
status: 'initializing' | 'active' | 'paused' | 'error' | 'stopped';
|
|
407
|
+
active_agents: {
|
|
408
|
+
agent_id: string;
|
|
409
|
+
role: string;
|
|
410
|
+
status: 'online' | 'offline' | 'degraded';
|
|
411
|
+
}[];
|
|
412
|
+
performance: {
|
|
413
|
+
current_fps: number;
|
|
414
|
+
target_fps: number;
|
|
415
|
+
frame_time_avg_ms: number;
|
|
416
|
+
frame_time_max_ms: number;
|
|
417
|
+
quality_level: 'high' | 'medium' | 'low' | 'minimal';
|
|
418
|
+
};
|
|
419
|
+
spatial_conflicts: number;
|
|
420
|
+
resource_utilization: {
|
|
421
|
+
cpu_percent: number;
|
|
422
|
+
memory_mb: number;
|
|
423
|
+
gpu_percent: number;
|
|
424
|
+
};
|
|
425
|
+
uptime_ms: number;
|
|
426
|
+
created_at: string;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Export format options
|
|
431
|
+
*/
|
|
432
|
+
export type ExportFormat = 'gltf' | 'fbx' | 'usdz' | 'vrm' | 'json' | 'holoscript';
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Performance metrics
|
|
436
|
+
*/
|
|
437
|
+
export interface PerformanceMetrics {
|
|
438
|
+
timestamp: number;
|
|
439
|
+
agents: {
|
|
440
|
+
agent_id: string;
|
|
441
|
+
role: string;
|
|
442
|
+
frame_time_avg_ms: number;
|
|
443
|
+
frame_time_max_ms: number;
|
|
444
|
+
messages_sent: number;
|
|
445
|
+
messages_received: number;
|
|
446
|
+
spatial_conflicts: number;
|
|
447
|
+
}[];
|
|
448
|
+
system: {
|
|
449
|
+
total_fps: number;
|
|
450
|
+
target_fps: number;
|
|
451
|
+
frame_time_avg_ms: number;
|
|
452
|
+
frame_time_max_ms: number;
|
|
453
|
+
quality_level: 'high' | 'medium' | 'low' | 'minimal';
|
|
454
|
+
cpu_percent: number;
|
|
455
|
+
memory_mb: number;
|
|
456
|
+
gpu_percent: number;
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* MCP command request
|
|
462
|
+
*/
|
|
463
|
+
export interface MCPCommandRequest {
|
|
464
|
+
command: MCPCommandType;
|
|
465
|
+
params: Record<string, unknown>;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* MCP command response
|
|
470
|
+
*/
|
|
471
|
+
export interface MCPCommandResponse {
|
|
472
|
+
success: boolean;
|
|
473
|
+
data?: unknown;
|
|
474
|
+
error?: string;
|
|
475
|
+
timestamp: number;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* MCP protocol configuration
|
|
480
|
+
*/
|
|
481
|
+
export interface MCPProtocolConfig {
|
|
482
|
+
/** MCP orchestrator endpoint */
|
|
483
|
+
endpoint: string;
|
|
484
|
+
/** API key for authentication */
|
|
485
|
+
apiKey: string;
|
|
486
|
+
/** Request timeout */
|
|
487
|
+
timeout: number;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Default MCP protocol configuration
|
|
492
|
+
*/
|
|
493
|
+
export const DEFAULT_MCP_CONFIG: MCPProtocolConfig = {
|
|
494
|
+
endpoint: 'http://localhost:5567',
|
|
495
|
+
apiKey: process.env.MCP_API_KEY || '',
|
|
496
|
+
timeout: 30000, // 30 seconds
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
// ============================================================================
|
|
500
|
+
// UNIFIED PROTOCOL CONFIGURATION
|
|
501
|
+
// ============================================================================
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Complete three-layer protocol configuration
|
|
505
|
+
*/
|
|
506
|
+
export interface SpatialCommProtocolConfig {
|
|
507
|
+
layer1: RealTimeProtocolConfig;
|
|
508
|
+
layer2: A2AProtocolConfig;
|
|
509
|
+
layer3: MCPProtocolConfig;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Default unified protocol configuration
|
|
514
|
+
*/
|
|
515
|
+
export const DEFAULT_SPATIAL_COMM_CONFIG: SpatialCommProtocolConfig = {
|
|
516
|
+
layer1: DEFAULT_REALTIME_CONFIG,
|
|
517
|
+
layer2: DEFAULT_A2A_CONFIG,
|
|
518
|
+
layer3: DEFAULT_MCP_CONFIG,
|
|
519
|
+
};
|
|
520
|
+
|
|
521
|
+
// ============================================================================
|
|
522
|
+
// PROTOCOL VERSIONING
|
|
523
|
+
// ============================================================================
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* Protocol version
|
|
527
|
+
*/
|
|
528
|
+
export const PROTOCOL_VERSION = '1.0.0';
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Protocol compatibility
|
|
532
|
+
*/
|
|
533
|
+
export interface ProtocolCompatibility {
|
|
534
|
+
version: string;
|
|
535
|
+
minVersion: string;
|
|
536
|
+
maxVersion: string;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export const PROTOCOL_COMPATIBILITY: ProtocolCompatibility = {
|
|
540
|
+
version: PROTOCOL_VERSION,
|
|
541
|
+
minVersion: '1.0.0',
|
|
542
|
+
maxVersion: '1.x.x',
|
|
543
|
+
};
|