@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,453 @@
1
+ /**
2
+ * Prompt Templates System
3
+ *
4
+ * Provides pre-built prompt templates for common HoloScript generation tasks.
5
+ * Supports:
6
+ * - Variable interpolation
7
+ * - Context-aware suggestions
8
+ * - Template composition
9
+ * - Custom template creation
10
+ */
11
+
12
+ // =============================================================================
13
+ // TYPES
14
+ // =============================================================================
15
+
16
+ export interface PromptTemplate {
17
+ id: string;
18
+ name: string;
19
+ description: string;
20
+ category: string;
21
+ template: string;
22
+ variables: string[];
23
+ examples: string[];
24
+ bestFor: string;
25
+ }
26
+
27
+ export interface TemplateContext {
28
+ [key: string]: string | number | boolean;
29
+ }
30
+
31
+ // =============================================================================
32
+ // BUILT-IN TEMPLATES
33
+ // =============================================================================
34
+
35
+ const PROMPT_TEMPLATES: Record<string, PromptTemplate> = {
36
+ // =========================================================================
37
+ // BASIC OBJECTS
38
+ // =========================================================================
39
+
40
+ 'basic-object': {
41
+ id: 'basic-object',
42
+ name: 'Basic Object',
43
+ description: 'Create a simple object with geometry',
44
+ category: 'basic',
45
+ template: 'Create a {{geometry}} with color {{color}} at position {{position}}',
46
+ variables: ['geometry', 'color', 'position'],
47
+ examples: [
48
+ 'Create a sphere with color blue at position [0, 1, 0]',
49
+ 'Create a cube with color red at position [1, 0, 1]',
50
+ ],
51
+ bestFor: 'Simple object creation',
52
+ },
53
+
54
+ 'interactive-object': {
55
+ id: 'interactive-object',
56
+ name: 'Interactive Object',
57
+ description: 'Create an interactive object with traits',
58
+ category: 'interaction',
59
+ template: 'Create a {{color}} {{geometry}} that {{interaction}} for {{purpose}}',
60
+ variables: ['color', 'geometry', 'interaction', 'purpose'],
61
+ examples: [
62
+ 'Create a blue sphere that responds to touch for feedback',
63
+ 'Create a red cube that is grabbable for manipulation',
64
+ ],
65
+ bestFor: 'Interactive UI and gameplay elements',
66
+ },
67
+
68
+ 'physics-object': {
69
+ id: 'physics-object',
70
+ name: 'Physics Object',
71
+ description: 'Create an object with physics enabled',
72
+ category: 'physics',
73
+ template:
74
+ 'Create a {{geometry}} with {{physics_type}} physics, mass {{mass}}, and {{restitution}} bounce',
75
+ variables: ['geometry', 'physics_type', 'mass', 'restitution'],
76
+ examples: [
77
+ 'Create a sphere with dynamic physics, mass 1.0, and 0.8 bounce',
78
+ 'Create a cube with kinematic physics, mass 2.0, and 0.3 bounce',
79
+ ],
80
+ bestFor: 'Physics-based gameplay',
81
+ },
82
+
83
+ // =========================================================================
84
+ // SCENES
85
+ // =========================================================================
86
+
87
+ 'game-scene': {
88
+ id: 'game-scene',
89
+ name: 'Game Scene',
90
+ description: 'Create a complete game scene',
91
+ category: 'scene',
92
+ template: `Create a {{game_type}} game scene with:
93
+ - {{element1}}
94
+ - {{element2}}
95
+ - {{element3}}
96
+ Set the skybox to {{skybox}} and lighting to {{lighting_level}}`,
97
+ variables: ['game_type', 'element1', 'element2', 'element3', 'skybox', 'lighting_level'],
98
+ examples: [
99
+ 'Create a puzzle game scene with: a lever, a door, and a trigger zone. Set the skybox to forest and lighting to bright',
100
+ ],
101
+ bestFor: 'Complete game environments',
102
+ },
103
+
104
+ 'level-design': {
105
+ id: 'level-design',
106
+ name: 'Level Design',
107
+ description: 'Design a game level',
108
+ category: 'design',
109
+ template: `Design a {{level_type}} level with:
110
+ - Difficulty: {{difficulty}}
111
+ - Player start position: {{start_pos}}
112
+ - Goal position: {{goal_pos}}
113
+ - Obstacles: {{obstacles}}
114
+ - Number of enemies: {{enemy_count}}`,
115
+ variables: ['level_type', 'difficulty', 'start_pos', 'goal_pos', 'obstacles', 'enemy_count'],
116
+ examples: [
117
+ 'Design a platformer level with: difficulty hard, player start [0,0,0], goal [10,5,0], obstacles spikes, 5 enemies',
118
+ ],
119
+ bestFor: 'Level layout and progression',
120
+ },
121
+
122
+ // =========================================================================
123
+ // INTERACTIONS
124
+ // =========================================================================
125
+
126
+ 'button-ui': {
127
+ id: 'button-ui',
128
+ name: 'Button UI',
129
+ description: 'Create interactive buttons',
130
+ category: 'ui',
131
+ template: 'Create a {{button_type}} button labeled "{{label}}" that {{action}} when pressed',
132
+ variables: ['button_type', 'label', 'action'],
133
+ examples: [
134
+ 'Create a play button labeled "Start Game" that loads the game scene when pressed',
135
+ 'Create a quit button labeled "Exit" that closes the application when pressed',
136
+ ],
137
+ bestFor: 'UI buttons and controls',
138
+ },
139
+
140
+ 'menu-system': {
141
+ id: 'menu-system',
142
+ name: 'Menu System',
143
+ description: 'Create a complete menu',
144
+ category: 'ui',
145
+ template: `Create a {{menu_type}} menu with buttons:
146
+ {{buttons}}
147
+ Position it {{position}} with {{styling}}`,
148
+ variables: ['menu_type', 'buttons', 'position', 'styling'],
149
+ examples: [
150
+ 'Create a main menu with buttons: Play, Settings, Credits, Quit. Position it centered with dark background',
151
+ ],
152
+ bestFor: 'Complete menu systems',
153
+ },
154
+
155
+ // =========================================================================
156
+ // CHARACTERS
157
+ // =========================================================================
158
+
159
+ 'player-controller': {
160
+ id: 'player-controller',
161
+ name: 'Player Controller',
162
+ description: 'Create a player character controller',
163
+ category: 'character',
164
+ template: `Create a player controller with:
165
+ - Geometry: {{geometry}}
166
+ - Movement: {{movement_type}}
167
+ - Health: {{health}}
168
+ - Abilities: {{abilities}}
169
+ - Equipment: {{equipment}}`,
170
+ variables: ['geometry', 'movement_type', 'health', 'abilities', 'equipment'],
171
+ examples: [
172
+ 'Create a player controller with: humanoid geometry, WASD movement, 100 health, jump/dash abilities, sword equipment',
173
+ ],
174
+ bestFor: 'Player character definition',
175
+ },
176
+
177
+ 'enemy-type': {
178
+ id: 'enemy-type',
179
+ name: 'Enemy Type',
180
+ description: 'Create an enemy character',
181
+ category: 'character',
182
+ template: `Create a {{enemy_type}} enemy with:
183
+ - Appearance: {{appearance}}
184
+ - Behavior: {{behavior}}
185
+ - Difficulty: {{difficulty}}
186
+ - Reward: {{reward}}`,
187
+ variables: ['enemy_type', 'appearance', 'behavior', 'difficulty', 'reward'],
188
+ examples: [
189
+ 'Create a goblin enemy with: green humanoid appearance, patrol behavior, medium difficulty, 50 gold reward',
190
+ ],
191
+ bestFor: 'Enemy definitions',
192
+ },
193
+
194
+ // =========================================================================
195
+ // EFFECTS & ANIMATION
196
+ // =========================================================================
197
+
198
+ 'visual-effect': {
199
+ id: 'visual-effect',
200
+ name: 'Visual Effect',
201
+ description: 'Create a visual effect',
202
+ category: 'effect',
203
+ template:
204
+ 'Create a {{effect_type}} effect with {{color}} color at {{position}} that {{behavior}}',
205
+ variables: ['effect_type', 'color', 'position', 'behavior'],
206
+ examples: [
207
+ 'Create a particle effect with blue color at [0,2,0] that explodes on impact',
208
+ 'Create a glow effect with yellow color at [1,1,1] that pulses continuously',
209
+ ],
210
+ bestFor: 'Visual effects and animations',
211
+ },
212
+
213
+ 'animation-sequence': {
214
+ id: 'animation-sequence',
215
+ name: 'Animation Sequence',
216
+ description: 'Create an animation',
217
+ category: 'animation',
218
+ template: `Create an animation that:
219
+ - Animates: {{target}}
220
+ - From: {{from_value}}
221
+ - To: {{to_value}}
222
+ - Duration: {{duration}}ms
223
+ - Loop: {{loop_type}}`,
224
+ variables: ['target', 'from_value', 'to_value', 'duration', 'loop_type'],
225
+ examples: [
226
+ 'Create an animation that: animates position.y, from 1.0 to 2.0, duration 1000ms, loop infinite',
227
+ ],
228
+ bestFor: 'Object animations',
229
+ },
230
+
231
+ // =========================================================================
232
+ // NETWORKING
233
+ // =========================================================================
234
+
235
+ 'networked-object': {
236
+ id: 'networked-object',
237
+ name: 'Networked Object',
238
+ description: 'Create a networked object',
239
+ category: 'networking',
240
+ template: `Create a networked {{object_type}} that:
241
+ - Syncs: {{synced_properties}}
242
+ - Rate: {{sync_rate}}Hz
243
+ - Owned by: {{owner_type}}`,
244
+ variables: ['object_type', 'synced_properties', 'sync_rate', 'owner_type'],
245
+ examples: [
246
+ 'Create a networked ball that: syncs position and rotation, rate 20Hz, owned by grabber',
247
+ ],
248
+ bestFor: 'Multiplayer objects',
249
+ },
250
+
251
+ 'multiplayer-scene': {
252
+ id: 'multiplayer-scene',
253
+ name: 'Multiplayer Scene',
254
+ description: 'Create a multiplayer environment',
255
+ category: 'networking',
256
+ template: `Create a multiplayer scene with:
257
+ - Max players: {{max_players}}
258
+ - Spawn points: {{spawn_points}}
259
+ - Shared objects: {{shared_objects}}
260
+ - Team support: {{team_support}}`,
261
+ variables: ['max_players', 'spawn_points', 'shared_objects', 'team_support'],
262
+ examples: [
263
+ 'Create a multiplayer scene with: max 4 players, 4 spawn points, shared ball, team support enabled',
264
+ ],
265
+ bestFor: 'Multiplayer game setup',
266
+ },
267
+ };
268
+
269
+ // =============================================================================
270
+ // TEMPLATE SYSTEM
271
+ // =============================================================================
272
+
273
+ export class PromptTemplateSystem {
274
+ private customTemplates: Map<string, PromptTemplate> = new Map();
275
+
276
+ /**
277
+ * Get all available templates
278
+ */
279
+ getAvailableTemplates(): PromptTemplate[] {
280
+ const builtIn = Object.values(PROMPT_TEMPLATES);
281
+ const custom = Array.from(this.customTemplates.values());
282
+ return [...builtIn, ...custom];
283
+ }
284
+
285
+ /**
286
+ * Get templates by category
287
+ */
288
+ getTemplatesByCategory(category: string): PromptTemplate[] {
289
+ return this.getAvailableTemplates().filter((t) => t.category === category);
290
+ }
291
+
292
+ /**
293
+ * Get a specific template
294
+ */
295
+ getTemplate(id: string): PromptTemplate | null {
296
+ return PROMPT_TEMPLATES[id] || this.customTemplates.get(id) || null;
297
+ }
298
+
299
+ /**
300
+ * Create a prompt from template with context
301
+ */
302
+ createPrompt(templateId: string, context: TemplateContext): string {
303
+ const template = this.getTemplate(templateId);
304
+ if (!template) {
305
+ throw new Error(`Template not found: ${templateId}`);
306
+ }
307
+
308
+ let prompt = template.template;
309
+
310
+ // Replace all variables
311
+ for (const [key, value] of Object.entries(context)) {
312
+ const pattern = new RegExp(`{{${key}}}`, 'g');
313
+ prompt = prompt.replace(pattern, String(value));
314
+ }
315
+
316
+ return prompt;
317
+ }
318
+
319
+ /**
320
+ * Validate context against template
321
+ */
322
+ validateContext(
323
+ templateId: string,
324
+ context: TemplateContext
325
+ ): { valid: boolean; missing: string[] } {
326
+ const template = this.getTemplate(templateId);
327
+ if (!template) {
328
+ return { valid: false, missing: ['Template not found'] };
329
+ }
330
+
331
+ const missing = template.variables.filter((v) => !(v in context));
332
+
333
+ return {
334
+ valid: missing.length === 0,
335
+ missing,
336
+ };
337
+ }
338
+
339
+ /**
340
+ * Register custom template
341
+ */
342
+ registerTemplate(template: PromptTemplate): void {
343
+ this.customTemplates.set(template.id, template);
344
+ }
345
+
346
+ /**
347
+ * Get template suggestions for a category
348
+ */
349
+ suggestTemplates(category: string, query?: string): PromptTemplate[] {
350
+ let suggestions = this.getTemplatesByCategory(category);
351
+
352
+ if (query) {
353
+ const lowerQuery = query.toLowerCase();
354
+ suggestions = suggestions.filter(
355
+ (t) =>
356
+ t.name.toLowerCase().includes(lowerQuery) ||
357
+ t.description.toLowerCase().includes(lowerQuery) ||
358
+ t.examples.some((e) => e.toLowerCase().includes(lowerQuery))
359
+ );
360
+ }
361
+
362
+ return suggestions.slice(0, 5);
363
+ }
364
+
365
+ /**
366
+ * Get all categories
367
+ */
368
+ getCategories(): string[] {
369
+ const categories = new Set<string>();
370
+ this.getAvailableTemplates().forEach((t) => categories.add(t.category));
371
+ return Array.from(categories).sort();
372
+ }
373
+
374
+ /**
375
+ * Create a batch of prompts from templates
376
+ */
377
+ createBatch(templates: Array<{ templateId: string; context: TemplateContext }>): string[] {
378
+ return templates.map((t) => this.createPrompt(t.templateId, t.context));
379
+ }
380
+ }
381
+
382
+ // =============================================================================
383
+ // FACTORY FUNCTIONS
384
+ // =============================================================================
385
+
386
+ /**
387
+ * Quick prompt creation helpers
388
+ */
389
+ export const QuickPrompts = {
390
+ /**
391
+ * Create prompt for a simple object
392
+ */
393
+ object(geometry: string, color: string, position: [number, number, number]): string {
394
+ const system = new PromptTemplateSystem();
395
+ return system.createPrompt('basic-object', {
396
+ geometry,
397
+ color,
398
+ position: JSON.stringify(position),
399
+ });
400
+ },
401
+
402
+ /**
403
+ * Create prompt for an interactive object
404
+ */
405
+ interactive(color: string, geometry: string, interaction: string, purpose: string): string {
406
+ const system = new PromptTemplateSystem();
407
+ return system.createPrompt('interactive-object', {
408
+ color,
409
+ geometry,
410
+ interaction,
411
+ purpose,
412
+ });
413
+ },
414
+
415
+ /**
416
+ * Create prompt for a physics object
417
+ */
418
+ physics(geometry: string, physics_type: string, mass: number, restitution: number): string {
419
+ const system = new PromptTemplateSystem();
420
+ return system.createPrompt('physics-object', {
421
+ geometry,
422
+ physics_type,
423
+ mass,
424
+ restitution,
425
+ });
426
+ },
427
+
428
+ /**
429
+ * Create prompt for a player controller
430
+ */
431
+ player(geometry: string, movement_type: string, health: number, abilities: string): string {
432
+ const system = new PromptTemplateSystem();
433
+ return system.createPrompt('player-controller', {
434
+ geometry,
435
+ movement_type,
436
+ health,
437
+ abilities,
438
+ });
439
+ },
440
+
441
+ /**
442
+ * Create prompt for networked object
443
+ */
444
+ networked(object_type: string, synced_properties: string, sync_rate: number): string {
445
+ const system = new PromptTemplateSystem();
446
+ return system.createPrompt('networked-object', {
447
+ object_type,
448
+ synced_properties,
449
+ sync_rate,
450
+ owner_type: 'first-grabber',
451
+ });
452
+ },
453
+ };
@@ -0,0 +1,80 @@
1
+ /**
2
+ * SemanticSearchService
3
+ *
4
+ * Provides vector-based search for HoloScript traits.
5
+ */
6
+
7
+ import type { AIAdapter } from './AIAdapter';
8
+
9
+ export interface SearchResult<T> {
10
+ item: T;
11
+ score: number;
12
+ }
13
+
14
+ export class SemanticSearchService<T extends { name: string; description: string }> {
15
+ private adapter: AIAdapter;
16
+ private items: T[];
17
+ private embeddings: Map<string, number[]> = new Map();
18
+
19
+ constructor(adapter: AIAdapter, items: T[]) {
20
+ this.adapter = adapter;
21
+ this.items = items;
22
+ }
23
+
24
+ /**
25
+ * Pre-calculate embeddings for all items
26
+ */
27
+ async initialize(): Promise<void> {
28
+ if (!this.adapter.getEmbeddings) {
29
+ throw new Error(`AI Adapter ${this.adapter.name} does not support embeddings.`);
30
+ }
31
+
32
+ const texts = this.items.map((item) => `${item.name}: ${item.description}`);
33
+ const embeddings = await this.adapter.getEmbeddings(texts);
34
+
35
+ this.items.forEach((item, i) => {
36
+ this.embeddings.set(item.name, embeddings[i]);
37
+ });
38
+ }
39
+
40
+ /**
41
+ * Search for items similar to the query
42
+ */
43
+ async search(query: string, limit: number = 5): Promise<SearchResult<T>[]> {
44
+ if (!this.adapter.getEmbeddings) {
45
+ throw new Error(`AI Adapter ${this.adapter.name} does not support embeddings.`);
46
+ }
47
+
48
+ const [queryEmbedding] = await this.adapter.getEmbeddings(query);
49
+
50
+ const results: SearchResult<T>[] = this.items.map((item) => {
51
+ const itemEmbedding = this.embeddings.get(item.name);
52
+ if (!itemEmbedding) return { item, score: 0 };
53
+
54
+ return {
55
+ item,
56
+ score: this.cosineSimilarity(queryEmbedding, itemEmbedding),
57
+ };
58
+ });
59
+
60
+ return results.sort((a, b) => b.score - a.score).slice(0, limit);
61
+ }
62
+
63
+ /**
64
+ * Calculate cosine similarity between two vectors
65
+ */
66
+ private cosineSimilarity(vecA: number[], vecB: number[]): number {
67
+ let dotProduct = 0;
68
+ let normA = 0;
69
+ let normB = 0;
70
+
71
+ for (let i = 0; i < vecA.length; i++) {
72
+ dotProduct += vecA[i] * vecB[i];
73
+ normA += vecA[i] * vecA[i];
74
+ normB += vecB[i] * vecB[i];
75
+ }
76
+
77
+ if (normA === 0 || normB === 0) return 0;
78
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
79
+ }
80
+ }