@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.
Files changed (329) hide show
  1. package/ALL-test-results.json +1 -0
  2. package/CHANGELOG.md +8 -0
  3. package/LICENSE +21 -0
  4. package/ROADMAP.md +175 -0
  5. package/dist/AgentManifest-CB4xM-Ma.d.cts +704 -0
  6. package/dist/AgentManifest-CB4xM-Ma.d.ts +704 -0
  7. package/dist/BehaviorTree-BrBFECv5.d.cts +103 -0
  8. package/dist/BehaviorTree-BrBFECv5.d.ts +103 -0
  9. package/dist/InvisibleWallet-BB6tFvRA.d.cts +1732 -0
  10. package/dist/InvisibleWallet-rtRrBOA8.d.ts +1732 -0
  11. package/dist/OrchestratorAgent-BvWgf9uw.d.cts +798 -0
  12. package/dist/OrchestratorAgent-Q_CbVTmO.d.ts +798 -0
  13. package/dist/agents/index.cjs +4790 -0
  14. package/dist/agents/index.d.cts +1788 -0
  15. package/dist/agents/index.d.ts +1788 -0
  16. package/dist/agents/index.js +4695 -0
  17. package/dist/ai/index.cjs +5347 -0
  18. package/dist/ai/index.d.cts +1753 -0
  19. package/dist/ai/index.d.ts +1753 -0
  20. package/dist/ai/index.js +5244 -0
  21. package/dist/behavior.cjs +449 -0
  22. package/dist/behavior.d.cts +130 -0
  23. package/dist/behavior.d.ts +130 -0
  24. package/dist/behavior.js +407 -0
  25. package/dist/economy/index.cjs +3659 -0
  26. package/dist/economy/index.d.cts +747 -0
  27. package/dist/economy/index.d.ts +747 -0
  28. package/dist/economy/index.js +3617 -0
  29. package/dist/implementations-D9T3un9D.d.cts +236 -0
  30. package/dist/implementations-D9T3un9D.d.ts +236 -0
  31. package/dist/index.cjs +24550 -0
  32. package/dist/index.d.cts +1729 -0
  33. package/dist/index.d.ts +1729 -0
  34. package/dist/index.js +24277 -0
  35. package/dist/learning/index.cjs +219 -0
  36. package/dist/learning/index.d.cts +104 -0
  37. package/dist/learning/index.d.ts +104 -0
  38. package/dist/learning/index.js +189 -0
  39. package/dist/negotiation/index.cjs +970 -0
  40. package/dist/negotiation/index.d.cts +610 -0
  41. package/dist/negotiation/index.d.ts +610 -0
  42. package/dist/negotiation/index.js +931 -0
  43. package/dist/skills/index.cjs +1118 -0
  44. package/dist/skills/index.d.cts +289 -0
  45. package/dist/skills/index.d.ts +289 -0
  46. package/dist/skills/index.js +1079 -0
  47. package/dist/swarm/index.cjs +5268 -0
  48. package/dist/swarm/index.d.cts +2433 -0
  49. package/dist/swarm/index.d.ts +2433 -0
  50. package/dist/swarm/index.js +5221 -0
  51. package/dist/training/index.cjs +2745 -0
  52. package/dist/training/index.d.cts +1734 -0
  53. package/dist/training/index.d.ts +1734 -0
  54. package/dist/training/index.js +2687 -0
  55. package/extract-failures.js +10 -0
  56. package/package.json +82 -0
  57. package/src/__tests__/bounty-marketplace.test.ts +374 -0
  58. package/src/__tests__/delegation.test.ts +144 -0
  59. package/src/__tests__/distributed-claimer.test.ts +147 -0
  60. package/src/__tests__/done-log-audit.test.ts +342 -0
  61. package/src/__tests__/framework.test.ts +865 -0
  62. package/src/__tests__/goal-synthesizer.test.ts +236 -0
  63. package/src/__tests__/presence.test.ts +223 -0
  64. package/src/__tests__/protocol-agent.test.ts +254 -0
  65. package/src/__tests__/revenue-splitter.test.ts +114 -0
  66. package/src/__tests__/scenario-driven-todo.test.ts +197 -0
  67. package/src/__tests__/self-improve.test.ts +349 -0
  68. package/src/__tests__/service-lifecycle.test.ts +237 -0
  69. package/src/__tests__/skill-router.test.ts +121 -0
  70. package/src/agents/AgentManifest.ts +493 -0
  71. package/src/agents/AgentRegistry.ts +475 -0
  72. package/src/agents/AgentTypes.ts +585 -0
  73. package/src/agents/AgentWalletRegistry.ts +83 -0
  74. package/src/agents/AuthenticatedCRDT.ts +388 -0
  75. package/src/agents/CapabilityMatcher.ts +453 -0
  76. package/src/agents/CrossRealityHandoff.ts +305 -0
  77. package/src/agents/CulturalMemory.ts +454 -0
  78. package/src/agents/FederatedRegistryAdapter.ts +429 -0
  79. package/src/agents/NormEngine.ts +450 -0
  80. package/src/agents/OrchestratorAgent.ts +414 -0
  81. package/src/agents/SkillWorkflowEngine.ts +472 -0
  82. package/src/agents/TaskDelegationService.ts +551 -0
  83. package/src/agents/__tests__/AgentManifest.prod.test.ts +134 -0
  84. package/src/agents/__tests__/AgentManifest.test.ts +182 -0
  85. package/src/agents/__tests__/AgentModule.test.ts +864 -0
  86. package/src/agents/__tests__/AgentRegistry.prod.test.ts +125 -0
  87. package/src/agents/__tests__/AgentRegistry.test.ts +148 -0
  88. package/src/agents/__tests__/AgentTypes.test.ts +534 -0
  89. package/src/agents/__tests__/AgentWalletRegistry.test.ts +152 -0
  90. package/src/agents/__tests__/AuthenticatedCRDT.test.ts +558 -0
  91. package/src/agents/__tests__/CapabilityMatcher.prod.test.ts +117 -0
  92. package/src/agents/__tests__/CapabilityMatcher.test.ts +178 -0
  93. package/src/agents/__tests__/CrossRealityHandoff.test.ts +402 -0
  94. package/src/agents/__tests__/CulturalMemory.test.ts +200 -0
  95. package/src/agents/__tests__/FederatedRegistryAdapter.test.ts +409 -0
  96. package/src/agents/__tests__/NormEngine.test.ts +276 -0
  97. package/src/agents/__tests__/OrchestratorAgent.test.ts +182 -0
  98. package/src/agents/__tests__/SkillWorkflowEngine.test.ts +357 -0
  99. package/src/agents/__tests__/TaskDelegationService.test.ts +446 -0
  100. package/src/agents/index.ts +107 -0
  101. package/src/agents/spatial-comms/Layer1RealTime.ts +621 -0
  102. package/src/agents/spatial-comms/Layer2A2A.ts +661 -0
  103. package/src/agents/spatial-comms/Layer3MCP.ts +651 -0
  104. package/src/agents/spatial-comms/ProtocolTypes.ts +543 -0
  105. package/src/agents/spatial-comms/SpatialCommClient.ts +483 -0
  106. package/src/agents/spatial-comms/__tests__/performance-benchmark.test.ts +465 -0
  107. package/src/agents/spatial-comms/examples/multi-agent-world-creation.ts +409 -0
  108. package/src/agents/spatial-comms/index.ts +66 -0
  109. package/src/ai/AIAdapter.ts +313 -0
  110. package/src/ai/AICopilot.ts +331 -0
  111. package/src/ai/AIOutputValidator.ts +203 -0
  112. package/src/ai/BTNodes.ts +239 -0
  113. package/src/ai/BehaviorSelector.ts +135 -0
  114. package/src/ai/BehaviorTree.ts +153 -0
  115. package/src/ai/Blackboard.ts +165 -0
  116. package/src/ai/GenerationAnalytics.ts +461 -0
  117. package/src/ai/GenerationCache.ts +265 -0
  118. package/src/ai/GoalPlanner.ts +165 -0
  119. package/src/ai/HoloScriptGenerator.ts +580 -0
  120. package/src/ai/InfluenceMap.ts +180 -0
  121. package/src/ai/NavMesh.ts +168 -0
  122. package/src/ai/PerceptionSystem.ts +178 -0
  123. package/src/ai/PromptTemplates.ts +453 -0
  124. package/src/ai/SemanticSearchService.ts +80 -0
  125. package/src/ai/StateMachine.ts +196 -0
  126. package/src/ai/SteeringBehavior.ts +150 -0
  127. package/src/ai/SteeringBehaviors.ts +244 -0
  128. package/src/ai/TrainingDataGenerator.ts +1082 -0
  129. package/src/ai/UtilityAI.ts +145 -0
  130. package/src/ai/__tests__/AIAdapter.prod.test.ts +259 -0
  131. package/src/ai/__tests__/AIAdapter.test.ts +109 -0
  132. package/src/ai/__tests__/AICopilot.prod.test.ts +341 -0
  133. package/src/ai/__tests__/AICopilot.test.ts +178 -0
  134. package/src/ai/__tests__/AIOutputValidator.prod.test.ts +226 -0
  135. package/src/ai/__tests__/AIOutputValidator.test.ts +138 -0
  136. package/src/ai/__tests__/BTNodes.prod.test.ts +391 -0
  137. package/src/ai/__tests__/BTNodes.test.ts +263 -0
  138. package/src/ai/__tests__/BehaviorSelector.prod.test.ts +129 -0
  139. package/src/ai/__tests__/BehaviorSelector.test.ts +132 -0
  140. package/src/ai/__tests__/BehaviorTree.prod.test.ts +266 -0
  141. package/src/ai/__tests__/BehaviorTree.test.ts +216 -0
  142. package/src/ai/__tests__/Blackboard.prod.test.ts +339 -0
  143. package/src/ai/__tests__/Blackboard.test.ts +183 -0
  144. package/src/ai/__tests__/GenerationAnalytics.prod.test.ts +141 -0
  145. package/src/ai/__tests__/GenerationAnalytics.test.ts +165 -0
  146. package/src/ai/__tests__/GenerationCache.prod.test.ts +144 -0
  147. package/src/ai/__tests__/GenerationCache.test.ts +171 -0
  148. package/src/ai/__tests__/GoalPlanner.prod.test.ts +189 -0
  149. package/src/ai/__tests__/GoalPlanner.test.ts +137 -0
  150. package/src/ai/__tests__/GoalPlannerDepth.prod.test.ts +217 -0
  151. package/src/ai/__tests__/HoloScriptGenerator.test.ts +125 -0
  152. package/src/ai/__tests__/InfluenceMap.prod.test.ts +146 -0
  153. package/src/ai/__tests__/InfluenceMap.test.ts +149 -0
  154. package/src/ai/__tests__/NavMesh.prod.test.ts +141 -0
  155. package/src/ai/__tests__/NavMesh.test.ts +159 -0
  156. package/src/ai/__tests__/PerceptionSystem.prod.test.ts +135 -0
  157. package/src/ai/__tests__/PerceptionSystem.test.ts +250 -0
  158. package/src/ai/__tests__/PromptTemplates.prod.test.ts +313 -0
  159. package/src/ai/__tests__/PromptTemplates.test.ts +146 -0
  160. package/src/ai/__tests__/SemanticSearch.test.ts +37 -0
  161. package/src/ai/__tests__/StateMachine.prod.test.ts +162 -0
  162. package/src/ai/__tests__/StateMachine.test.ts +163 -0
  163. package/src/ai/__tests__/SteeringBehavior.prod.test.ts +251 -0
  164. package/src/ai/__tests__/SteeringBehavior.test.ts +135 -0
  165. package/src/ai/__tests__/SteeringBehaviors.prod.test.ts +133 -0
  166. package/src/ai/__tests__/SteeringBehaviors.test.ts +151 -0
  167. package/src/ai/__tests__/TrainingDataGenerator.prod.test.ts +286 -0
  168. package/src/ai/__tests__/TrainingDataGenerator.test.ts +286 -0
  169. package/src/ai/__tests__/UtilityAI.prod.test.ts +207 -0
  170. package/src/ai/__tests__/UtilityAI.test.ts +155 -0
  171. package/src/ai/__tests__/adapters.prod.test.ts +263 -0
  172. package/src/ai/__tests__/adapters.test.ts +320 -0
  173. package/src/ai/adapters.ts +1585 -0
  174. package/src/ai/index.ts +130 -0
  175. package/src/behavior/BehaviorPresets.ts +140 -0
  176. package/src/behavior/BehaviorTree.ts +236 -0
  177. package/src/behavior/StateMachine.ts +176 -0
  178. package/src/behavior/StateTrait.ts +67 -0
  179. package/src/behavior/index.ts +8 -0
  180. package/src/behavior.ts +8 -0
  181. package/src/board/audit.ts +284 -0
  182. package/src/board/board-ops.ts +336 -0
  183. package/src/board/board-types.ts +302 -0
  184. package/src/board/index.ts +69 -0
  185. package/src/define-agent.ts +46 -0
  186. package/src/define-team.ts +33 -0
  187. package/src/delegation.ts +265 -0
  188. package/src/distributed-claimer.ts +228 -0
  189. package/src/economy/AgentBudgetEnforcer.ts +464 -0
  190. package/src/economy/BountyManager.ts +185 -0
  191. package/src/economy/CreatorRevenueAggregator.ts +460 -0
  192. package/src/economy/InvisibleWallet.ts +82 -0
  193. package/src/economy/KnowledgeMarketplace.ts +193 -0
  194. package/src/economy/PaymentWebhookService.ts +512 -0
  195. package/src/economy/RevenueSplitter.ts +156 -0
  196. package/src/economy/SubscriptionManager.ts +546 -0
  197. package/src/economy/UnifiedBudgetOptimizer.ts +635 -0
  198. package/src/economy/UsageMeter.ts +440 -0
  199. package/src/economy/_core-stubs.ts +219 -0
  200. package/src/economy/index.ts +100 -0
  201. package/src/economy/x402-facilitator.ts +1978 -0
  202. package/src/index.ts +348 -0
  203. package/src/knowledge/__tests__/knowledge-consolidator.test.ts +444 -0
  204. package/src/knowledge/__tests__/knowledge-store-vector.test.ts +291 -0
  205. package/src/knowledge/brain.ts +167 -0
  206. package/src/knowledge/consolidation.ts +581 -0
  207. package/src/knowledge/knowledge-consolidator.ts +510 -0
  208. package/src/knowledge/knowledge-store.ts +616 -0
  209. package/src/learning/MemoryConsolidator.ts +102 -0
  210. package/src/learning/MemoryScorer.ts +69 -0
  211. package/src/learning/ProceduralCompiler.ts +45 -0
  212. package/src/learning/SemanticClusterer.ts +66 -0
  213. package/src/learning/index.ts +8 -0
  214. package/src/llm/llm-adapter.ts +159 -0
  215. package/src/mesh/index.ts +309 -0
  216. package/src/negotiation/NegotiationProtocol.ts +694 -0
  217. package/src/negotiation/NegotiationTypes.ts +473 -0
  218. package/src/negotiation/VotingMechanisms.ts +691 -0
  219. package/src/negotiation/index.ts +49 -0
  220. package/src/protocol/goal-synthesizer.ts +317 -0
  221. package/src/protocol/implementations.ts +474 -0
  222. package/src/protocol/micro-phase-decomposer.ts +299 -0
  223. package/src/protocol/micro-step-decomposer.test.ts +306 -0
  224. package/src/protocol-agent.test.ts +353 -0
  225. package/src/protocol-agent.ts +670 -0
  226. package/src/self-improve/absorb-scanner.ts +252 -0
  227. package/src/self-improve/evolution-engine.ts +149 -0
  228. package/src/self-improve/framework-absorber.ts +214 -0
  229. package/src/self-improve/index.ts +50 -0
  230. package/src/self-improve/prompt-optimizer.ts +212 -0
  231. package/src/self-improve/test-generator.ts +175 -0
  232. package/src/skill-router.ts +186 -0
  233. package/src/skills/index.ts +5 -0
  234. package/src/skills/skill-md-bridge.ts +1699 -0
  235. package/src/swarm/ACOEngine.ts +261 -0
  236. package/src/swarm/CollectiveIntelligence.ts +383 -0
  237. package/src/swarm/ContributionSynthesizer.ts +481 -0
  238. package/src/swarm/LeaderElection.ts +393 -0
  239. package/src/swarm/PSOEngine.ts +206 -0
  240. package/src/swarm/QuorumPolicy.ts +173 -0
  241. package/src/swarm/SwarmCoordinator.ts +335 -0
  242. package/src/swarm/SwarmManager.ts +442 -0
  243. package/src/swarm/SwarmMembership.ts +456 -0
  244. package/src/swarm/VotingRound.ts +255 -0
  245. package/src/swarm/__tests__/ACOEngine.prod.test.ts +164 -0
  246. package/src/swarm/__tests__/ACOEngine.test.ts +117 -0
  247. package/src/swarm/__tests__/CollectiveIntelligence.prod.test.ts +296 -0
  248. package/src/swarm/__tests__/CollectiveIntelligence.test.ts +457 -0
  249. package/src/swarm/__tests__/ContributionSynthesizer.prod.test.ts +269 -0
  250. package/src/swarm/__tests__/ContributionSynthesizer.test.ts +254 -0
  251. package/src/swarm/__tests__/LeaderElection.prod.test.ts +196 -0
  252. package/src/swarm/__tests__/LeaderElection.test.ts +151 -0
  253. package/src/swarm/__tests__/PSOEngine.prod.test.ts +162 -0
  254. package/src/swarm/__tests__/PSOEngine.test.ts +106 -0
  255. package/src/swarm/__tests__/QuorumPolicy.prod.test.ts +216 -0
  256. package/src/swarm/__tests__/QuorumPolicy.test.ts +177 -0
  257. package/src/swarm/__tests__/SwarmCoordinator.prod.test.ts +186 -0
  258. package/src/swarm/__tests__/SwarmCoordinator.test.ts +167 -0
  259. package/src/swarm/__tests__/SwarmManager.prod.test.ts +308 -0
  260. package/src/swarm/__tests__/SwarmManager.test.ts +373 -0
  261. package/src/swarm/__tests__/SwarmMembership.prod.test.ts +273 -0
  262. package/src/swarm/__tests__/SwarmMembership.test.ts +264 -0
  263. package/src/swarm/__tests__/VotingRound.prod.test.ts +233 -0
  264. package/src/swarm/__tests__/VotingRound.test.ts +174 -0
  265. package/src/swarm/analytics/SwarmInspector.ts +476 -0
  266. package/src/swarm/analytics/SwarmMetrics.ts +449 -0
  267. package/src/swarm/analytics/__tests__/SwarmInspector.prod.test.ts +366 -0
  268. package/src/swarm/analytics/__tests__/SwarmInspector.test.ts +454 -0
  269. package/src/swarm/analytics/__tests__/SwarmMetrics.prod.test.ts +254 -0
  270. package/src/swarm/analytics/__tests__/SwarmMetrics.test.ts +370 -0
  271. package/src/swarm/analytics/index.ts +7 -0
  272. package/src/swarm/index.ts +69 -0
  273. package/src/swarm/messaging/BroadcastChannel.ts +509 -0
  274. package/src/swarm/messaging/GossipProtocol.ts +565 -0
  275. package/src/swarm/messaging/SwarmEventBus.ts +443 -0
  276. package/src/swarm/messaging/__tests__/BroadcastChannel.prod.test.ts +331 -0
  277. package/src/swarm/messaging/__tests__/BroadcastChannel.test.ts +333 -0
  278. package/src/swarm/messaging/__tests__/GossipProtocol.prod.test.ts +356 -0
  279. package/src/swarm/messaging/__tests__/GossipProtocol.test.ts +437 -0
  280. package/src/swarm/messaging/__tests__/SwarmEventBus.prod.test.ts +191 -0
  281. package/src/swarm/messaging/__tests__/SwarmEventBus.test.ts +247 -0
  282. package/src/swarm/messaging/index.ts +8 -0
  283. package/src/swarm/spatial/FlockingBehavior.ts +462 -0
  284. package/src/swarm/spatial/FormationController.ts +500 -0
  285. package/src/swarm/spatial/Vector3.ts +170 -0
  286. package/src/swarm/spatial/ZoneClaiming.ts +509 -0
  287. package/src/swarm/spatial/__tests__/FlockingBehavior.prod.test.ts +239 -0
  288. package/src/swarm/spatial/__tests__/FlockingBehavior.test.ts +298 -0
  289. package/src/swarm/spatial/__tests__/FormationController.prod.test.ts +240 -0
  290. package/src/swarm/spatial/__tests__/FormationController.test.ts +297 -0
  291. package/src/swarm/spatial/__tests__/Vector3.prod.test.ts +283 -0
  292. package/src/swarm/spatial/__tests__/Vector3.test.ts +224 -0
  293. package/src/swarm/spatial/__tests__/ZoneClaiming.prod.test.ts +246 -0
  294. package/src/swarm/spatial/__tests__/ZoneClaiming.test.ts +374 -0
  295. package/src/swarm/spatial/index.ts +28 -0
  296. package/src/team.ts +1245 -0
  297. package/src/training/LRScheduler.ts +377 -0
  298. package/src/training/QualityScoringPipeline.ts +139 -0
  299. package/src/training/SoftDedup.ts +461 -0
  300. package/src/training/SparsityMonitor.ts +685 -0
  301. package/src/training/SparsityMonitorTypes.ts +209 -0
  302. package/src/training/SpatialTrainingDataGenerator.ts +1526 -0
  303. package/src/training/SpatialTrainingDataTypes.ts +216 -0
  304. package/src/training/TrainingPipelineConfig.ts +215 -0
  305. package/src/training/constants.ts +94 -0
  306. package/src/training/index.ts +138 -0
  307. package/src/training/schema.ts +147 -0
  308. package/src/training/scripts/generate-novel-use-cases-dataset.ts +272 -0
  309. package/src/training/scripts/generate-spatial-dataset.ts +521 -0
  310. package/src/training/training/data/novel-use-cases.jsonl +153 -0
  311. package/src/training/training/data/spatial-reasoning-10k.jsonl +9354 -0
  312. package/src/training/trainingmonkey/TrainingMonkeyIntegration.ts +477 -0
  313. package/src/training/trainingmonkey/TrainingMonkeyTypes.ts +230 -0
  314. package/src/training/trainingmonkey/index.ts +26 -0
  315. package/src/training/trait-mappings.ts +157 -0
  316. package/src/types/core-stubs.d.ts +113 -0
  317. package/src/types.ts +304 -0
  318. package/test-output.txt +0 -0
  319. package/test-result.json +1 -0
  320. package/tsc-errors.txt +4 -0
  321. package/tsc_output.txt +0 -0
  322. package/tsconfig.json +14 -0
  323. package/tsup-learning-esm.config.ts +12 -0
  324. package/tsup.config.ts +21 -0
  325. package/typescript-errors-2.txt +0 -0
  326. package/typescript-errors.txt +22 -0
  327. package/vitest-log-utf8.txt +268 -0
  328. package/vitest-log.txt +0 -0
  329. 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
+ };