@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,409 @@
1
+ /**
2
+ * Example: Multi-Agent VR World Creation with 90fps Performance
3
+ *
4
+ * This example demonstrates how to use the three-layer spatial agent
5
+ * communication stack to create a VR world with multiple specialized agents
6
+ * working together while maintaining 90fps performance.
7
+ */
8
+
9
+ import { SpatialCommClient, WorldSpec, TaskSpec } from '../index';
10
+
11
+ // ============================================================================
12
+ // AGENT ROLES
13
+ // ============================================================================
14
+
15
+ /**
16
+ * Terrain Agent - Handles terrain generation and updates
17
+ */
18
+ class TerrainAgent {
19
+ private client: SpatialCommClient;
20
+
21
+ constructor(agentId: string) {
22
+ this.client = new SpatialCommClient(agentId);
23
+ }
24
+
25
+ async init(): Promise<void> {
26
+ await this.client.init();
27
+
28
+ // Register task handlers
29
+ this.client.on('layer2:message', async (message) => {
30
+ if (message.type === 'task_assignment' && message.task.task_type === 'terrain') {
31
+ await this.handleTerrainTask(message.task);
32
+ }
33
+ });
34
+
35
+ console.log('[TerrainAgent] Initialized');
36
+ }
37
+
38
+ async handleTerrainTask(task: TaskSpec): Promise<void> {
39
+ console.log(`[TerrainAgent] Generating terrain for region:`, task.spatial_region);
40
+
41
+ const startTime = performance.now();
42
+
43
+ // Claim spatial region
44
+ if (task.spatial_region) {
45
+ await this.client.claimSpatialRegion(
46
+ `terrain-${task.task_id}`,
47
+ {
48
+ min: [
49
+ task.spatial_region.center[0] - task.spatial_region.size[0] / 2,
50
+ task.spatial_region.center[1] - task.spatial_region.size[1] / 2,
51
+ task.spatial_region.center[2] - task.spatial_region.size[2] / 2,
52
+ ],
53
+ max: [
54
+ task.spatial_region.center[0] + task.spatial_region.size[0] / 2,
55
+ task.spatial_region.center[1] + task.spatial_region.size[1] / 2,
56
+ task.spatial_region.center[2] + task.spatial_region.size[2] / 2,
57
+ ],
58
+ },
59
+ task.priority,
60
+ 30000 // 30 second claim
61
+ );
62
+ }
63
+
64
+ // Simulate terrain generation with frame budget awareness
65
+ for (let i = 0; i < 100; i++) {
66
+ const frameStart = performance.now();
67
+
68
+ // Do terrain work...
69
+ await this.generateTerrainChunk(i);
70
+
71
+ // Record frame time
72
+ const frameTime = performance.now() - frameStart;
73
+ this.client.recordFrameTime(frameTime);
74
+
75
+ // Sync position every frame
76
+ await this.client.syncPosition(
77
+ [task.spatial_region?.center[0] || 0, 0, 0],
78
+ [0, 0, 0, 1],
79
+ [1, 1, 1]
80
+ );
81
+
82
+ // Send frame budget update every 10 frames
83
+ if (i % 10 === 0) {
84
+ await this.client.sendFrameBudget();
85
+ }
86
+
87
+ // Check if we're over budget
88
+ const stats = this.client.getFrameBudgetStats();
89
+ if (!stats.withinBudget) {
90
+ console.warn('[TerrainAgent] Over budget, reducing quality to:', stats.qualityLevel);
91
+ }
92
+ }
93
+
94
+ const duration = performance.now() - startTime;
95
+
96
+ // Complete task
97
+ await this.client.completeTask(task.task_id, true, {
98
+ chunks_generated: 100,
99
+ duration_ms: duration,
100
+ });
101
+
102
+ console.log(`[TerrainAgent] Task ${task.task_id} completed in ${duration}ms`);
103
+ }
104
+
105
+ private async generateTerrainChunk(index: number): Promise<void> {
106
+ // Simulate work (adjust based on quality level)
107
+ const stats = this.client.getFrameBudgetStats();
108
+ const workAmount = {
109
+ high: 10,
110
+ medium: 5,
111
+ low: 2,
112
+ minimal: 1,
113
+ }[stats.qualityLevel];
114
+
115
+ await new Promise((resolve) => setTimeout(resolve, workAmount));
116
+ }
117
+
118
+ async shutdown(): Promise<void> {
119
+ await this.client.shutdown();
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Asset Agent - Handles asset placement and management
125
+ */
126
+ class AssetAgent {
127
+ private client: SpatialCommClient;
128
+
129
+ constructor(agentId: string) {
130
+ this.client = new SpatialCommClient(agentId);
131
+ }
132
+
133
+ async init(): Promise<void> {
134
+ await this.client.init();
135
+
136
+ this.client.on('layer2:message', async (message) => {
137
+ if (message.type === 'task_assignment' && message.task.task_type === 'assets') {
138
+ await this.handleAssetTask(message.task);
139
+ }
140
+ });
141
+
142
+ console.log('[AssetAgent] Initialized');
143
+ }
144
+
145
+ async handleAssetTask(task: TaskSpec): Promise<void> {
146
+ console.log(`[AssetAgent] Placing assets in region:`, task.spatial_region);
147
+
148
+ // Request resources
149
+ await this.client.requestResource('mesh-library', 'mesh', undefined, 'high');
150
+ await this.client.requestResource('texture-atlas', 'texture', undefined, 'high');
151
+
152
+ // Simulate asset placement
153
+ for (let i = 0; i < 50; i++) {
154
+ const frameStart = performance.now();
155
+
156
+ await this.placeAsset(i);
157
+
158
+ const frameTime = performance.now() - frameStart;
159
+ this.client.recordFrameTime(frameTime);
160
+
161
+ // Sync position
162
+ await this.client.syncPosition([i * 2, 0, 0], [0, 0, 0, 1], [1, 1, 1]);
163
+ }
164
+
165
+ // Release resources
166
+ await this.client.releaseResource('mesh-library');
167
+ await this.client.releaseResource('texture-atlas');
168
+
169
+ await this.client.completeTask(task.task_id, true, { assets_placed: 50 });
170
+
171
+ console.log(`[AssetAgent] Task ${task.task_id} completed`);
172
+ }
173
+
174
+ private async placeAsset(index: number): Promise<void> {
175
+ const stats = this.client.getFrameBudgetStats();
176
+ const workAmount = {
177
+ high: 8,
178
+ medium: 4,
179
+ low: 2,
180
+ minimal: 1,
181
+ }[stats.qualityLevel];
182
+
183
+ await new Promise((resolve) => setTimeout(resolve, workAmount));
184
+ }
185
+
186
+ async shutdown(): Promise<void> {
187
+ await this.client.shutdown();
188
+ }
189
+ }
190
+
191
+ /**
192
+ * Orchestrator Agent - Coordinates all agents and manages world creation
193
+ */
194
+ class OrchestratorAgent {
195
+ private client: SpatialCommClient;
196
+ private worldId?: string;
197
+
198
+ constructor(agentId: string) {
199
+ this.client = new SpatialCommClient(agentId);
200
+ }
201
+
202
+ async init(): Promise<void> {
203
+ await this.client.init();
204
+
205
+ // Listen for task completions
206
+ this.client.on('layer2:message', (message) => {
207
+ if (message.type === 'task_complete') {
208
+ console.log(`[Orchestrator] Task completed:`, message.task_id);
209
+ }
210
+ });
211
+
212
+ console.log('[Orchestrator] Initialized');
213
+ }
214
+
215
+ async createWorld(): Promise<void> {
216
+ // Define world specification
217
+ const worldSpec: WorldSpec = {
218
+ name: 'Multi-Agent Test World',
219
+ template: 'playground',
220
+ dimensions: {
221
+ width: 1000,
222
+ height: 500,
223
+ depth: 1000,
224
+ },
225
+ target_fps: 90,
226
+ max_agents: 10,
227
+ features: {
228
+ terrain: true,
229
+ physics: true,
230
+ lighting: true,
231
+ audio: true,
232
+ },
233
+ agent_roles: [
234
+ {
235
+ role: 'terrain',
236
+ agent_type: 'terrain-generator',
237
+ spatial_region: {
238
+ center: [0, 0, 0],
239
+ size: [1000, 100, 1000],
240
+ },
241
+ },
242
+ {
243
+ role: 'assets',
244
+ agent_type: 'asset-placer',
245
+ spatial_region: {
246
+ center: [0, 50, 0],
247
+ size: [1000, 100, 1000],
248
+ },
249
+ },
250
+ ],
251
+ };
252
+
253
+ // Create world via Layer 3
254
+ console.log('[Orchestrator] Creating world...');
255
+ const result = await this.client.createWorld(worldSpec);
256
+ this.worldId = result.world_id;
257
+
258
+ console.log(`[Orchestrator] World created: ${this.worldId}`);
259
+
260
+ // Assign tasks to agents
261
+ await this.assignTasks();
262
+
263
+ // Monitor progress
264
+ await this.monitorProgress();
265
+ }
266
+
267
+ private async assignTasks(): Promise<void> {
268
+ // Assign terrain task
269
+ const terrainTask: TaskSpec = {
270
+ task_id: 'terrain-001',
271
+ task_type: 'terrain',
272
+ priority: 'high',
273
+ parameters: {
274
+ algorithm: 'perlin_noise',
275
+ resolution: 'high',
276
+ },
277
+ spatial_region: {
278
+ center: [0, 0, 0],
279
+ size: [1000, 100, 1000],
280
+ },
281
+ frame_budget_ms: 8, // 8ms budget per frame
282
+ };
283
+
284
+ console.log('[Orchestrator] Assigning terrain task...');
285
+ await this.client.assignTask('terrain-agent-001', terrainTask);
286
+
287
+ // Wait for terrain to complete before assets
288
+ // (In production, would use dependency system)
289
+ await new Promise((resolve) => setTimeout(resolve, 2000));
290
+
291
+ // Assign asset task
292
+ const assetTask: TaskSpec = {
293
+ task_id: 'assets-001',
294
+ task_type: 'assets',
295
+ priority: 'medium',
296
+ parameters: {
297
+ asset_types: ['trees', 'rocks', 'buildings'],
298
+ density: 'medium',
299
+ },
300
+ spatial_region: {
301
+ center: [0, 50, 0],
302
+ size: [1000, 100, 1000],
303
+ },
304
+ frame_budget_ms: 6, // 6ms budget per frame
305
+ dependencies: ['terrain-001'],
306
+ };
307
+
308
+ console.log('[Orchestrator] Assigning asset task...');
309
+ await this.client.assignTask('asset-agent-001', assetTask);
310
+ }
311
+
312
+ private async monitorProgress(): Promise<void> {
313
+ console.log('[Orchestrator] Monitoring world creation progress...');
314
+
315
+ const interval = setInterval(async () => {
316
+ // Get world status
317
+ if (this.worldId) {
318
+ const status = await this.client.getWorldStatus(this.worldId);
319
+ console.log('[Orchestrator] World status:', {
320
+ world: status.world_id,
321
+ status: status.status,
322
+ fps: status.performance.current_fps,
323
+ agents: status.active_agents.length,
324
+ conflicts: status.spatial_conflicts,
325
+ });
326
+
327
+ // Get performance metrics
328
+ const metrics = await this.client.getPerformanceMetrics({ world_id: this.worldId });
329
+ console.log('[Orchestrator] System metrics:', metrics.system);
330
+
331
+ // Check if all agents done
332
+ if (status.status === 'active' && status.active_agents.length === 0) {
333
+ console.log('[Orchestrator] All agents completed, stopping monitor');
334
+ clearInterval(interval);
335
+ }
336
+ }
337
+ }, 1000); // Check every second
338
+
339
+ // Stop after 30 seconds max
340
+ setTimeout(() => {
341
+ clearInterval(interval);
342
+ }, 30000);
343
+ }
344
+
345
+ async exportWorld(format: 'gltf' | 'fbx' | 'usdz'): Promise<void> {
346
+ if (!this.worldId) throw new Error('No world created');
347
+
348
+ console.log(`[Orchestrator] Exporting world to ${format}...`);
349
+ const result = await this.client.exportWorld(format);
350
+ console.log(`[Orchestrator] World exported:`, result.url);
351
+ }
352
+
353
+ async shutdown(): Promise<void> {
354
+ await this.client.shutdown();
355
+ }
356
+ }
357
+
358
+ // ============================================================================
359
+ // MAIN EXAMPLE
360
+ // ============================================================================
361
+
362
+ async function main() {
363
+ console.log('='.repeat(80));
364
+ console.log('Multi-Agent VR World Creation Example');
365
+ console.log('Three-Layer Spatial Communication Stack (90fps target)');
366
+ console.log('='.repeat(80));
367
+
368
+ // Create agents
369
+ const orchestrator = new OrchestratorAgent('orchestrator-001');
370
+ const terrainAgent = new TerrainAgent('terrain-agent-001');
371
+ const assetAgent = new AssetAgent('asset-agent-001');
372
+
373
+ try {
374
+ // Initialize all agents
375
+ console.log('\n[STEP 1] Initializing agents...');
376
+ await orchestrator.init();
377
+ await terrainAgent.init();
378
+ await assetAgent.init();
379
+
380
+ // Create world and coordinate agents
381
+ console.log('\n[STEP 2] Creating world and assigning tasks...');
382
+ await orchestrator.createWorld();
383
+
384
+ // Wait for completion
385
+ console.log('\n[STEP 3] Waiting for agents to complete...');
386
+ await new Promise((resolve) => setTimeout(resolve, 5000));
387
+
388
+ // Export world
389
+ console.log('\n[STEP 4] Exporting world...');
390
+ await orchestrator.exportWorld('gltf');
391
+
392
+ console.log('\n[SUCCESS] Multi-agent world creation completed!');
393
+ } catch (error) {
394
+ console.error('\n[ERROR]', error);
395
+ } finally {
396
+ // Cleanup
397
+ console.log('\n[CLEANUP] Shutting down agents...');
398
+ await orchestrator.shutdown();
399
+ await terrainAgent.shutdown();
400
+ await assetAgent.shutdown();
401
+ }
402
+ }
403
+
404
+ // Run example
405
+ if (require.main === module) {
406
+ main().catch(console.error);
407
+ }
408
+
409
+ export { OrchestratorAgent, TerrainAgent, AssetAgent };
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @holoscript/core - Spatial Agent Communication Stack
3
+ *
4
+ * Three-layer communication protocol for multi-agent VR world creation
5
+ * with 90fps performance targeting.
6
+ *
7
+ * @module spatial-comms
8
+ */
9
+
10
+ // Protocol Types
11
+ export * from './ProtocolTypes';
12
+
13
+ // Layer 1: Real-Time Communication (UDP/WebRTC)
14
+ export {
15
+ Layer1RealTimeClient,
16
+ UDPRealTimeTransport,
17
+ WebRTCRealTimeTransport,
18
+ encodeRealTimeMessage,
19
+ decodeRealTimeMessage,
20
+ type RealTimeTransport,
21
+ } from './Layer1RealTime';
22
+
23
+ // Layer 2: A2A Coordination (JSON-RPC over HTTP/2)
24
+ export { Layer2A2AClient } from './Layer2A2A';
25
+
26
+ // Layer 3: MCP Metadata Layer
27
+ export {
28
+ Layer3MCPClient,
29
+ Layer3MCPServer,
30
+ SPATIAL_MCP_TOOLS,
31
+ type MCPTool,
32
+ type MCPCommandHandler,
33
+ } from './Layer3MCP';
34
+
35
+ // Unified Client
36
+ export { SpatialCommClient, FrameBudgetTracker } from './SpatialCommClient';
37
+
38
+ // Re-export key types for convenience
39
+ export type {
40
+ // Layer 1
41
+ RealTimeMessage,
42
+ PositionSyncMessage,
43
+ FrameBudgetMessage,
44
+ SpatialConflictMessage,
45
+ RealTimeProtocolConfig,
46
+
47
+ // Layer 2
48
+ A2AMessage,
49
+ A2AResponse,
50
+ TaskSpec,
51
+ ConflictResolutionStrategy,
52
+ A2AProtocolConfig,
53
+
54
+ // Layer 3
55
+ MCPCommandType,
56
+ MCPCommandRequest,
57
+ MCPCommandResponse,
58
+ WorldSpec,
59
+ WorldStatus,
60
+ PerformanceMetrics,
61
+ ExportFormat,
62
+ MCPProtocolConfig,
63
+
64
+ // Unified
65
+ SpatialCommProtocolConfig,
66
+ } from './ProtocolTypes';